using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VOL.Core.Configuration
{
///
/// 国密 SM2/SM3/SM4 配置(对应 appsettings.json 中 GmCrypto 节点)
///
public class GmCryptoOptions
{
///
/// SM2 密钥(十六进制字符串,与库 GenerateSecretKeyPair(true) 格式一致)
///
public GmSm2Options SM2 { get; set; } = new GmSm2Options();
///
/// SM3 为杂凑算法,标准实现无密钥;此处仅提供开关等可选项
///
public GmSm3Options SM3 { get; set; } = new GmSm3Options();
///
/// SM4 对称密钥与 IV(十六进制,密钥 32 个 hex 字符即 16 字节;CBC 时 IV 同长度)
///
public GmSm4Options SM4 { get; set; } = new GmSm4Options();
}
public class GmSm3Options
{
/// 是否允许通过 GmCryptoHelper 使用 SM3(默认 true)
public bool Enabled { get; set; } = true;
}
public class GmSm2Options
{
/// 公钥 Hex(可选,加密/验签用)
public string PublicKeyHex { get; set; }
/// 私钥 Hex(可选,解密/签名用)
public string PrivateKeyHex { get; set; }
/// C1C3C2 顺序(与 Arric 库 Encrypt 第三个参数一致)
public bool PreferC1C3C2 { get; set; } = true;
}
public class GmSm4Options
{
/// 16 字节密钥 Hex(32 字符)
public string KeyHex { get; set; }
/// CBC 模式 IV Hex(16 字节);ECB 可不填
public string IvHex { get; set; }
/// CBC 或 ECB,默认 CBC
public string Mode { get; set; } = "CBC";
}
}