package identifier

type AlgorithmID = uint32

const (
	SGDSM1Mask AlgorithmID = 0x00000100
	SGDSM4Mask AlgorithmID = 0x00000400 // SM4算法
	SGDSM2Mask AlgorithmID = 0x00020000 // SM2算法
)

const (
	//分组密码算法的标识
	SGDSM1ECB   AlgorithmID = 0x00000101 //nolint
	SGDSM1CBC   AlgorithmID = 0x00000102 //nolint // SM1算法CBC加密模式
	SGDSM1CFB   AlgorithmID = 0x00000104 //nolint // SM1算法CFB加密模式
	SGDSM1OFB   AlgorithmID = 0x00000108 //nolint // SM1算法OFB加密模式
	SGDSM1Mac   AlgorithmID = 0x00000110 //nolint // SM1算法MAC运算
	SGDSSF33ECB AlgorithmID = 0x00000201 //nolint // SSF33算法ECB加密模式
	SGDSSF33CBC AlgorithmID = 0x00000202 //nolint // SSF33算法CBC加密模式
	SGDSSF33CFB AlgorithmID = 0x00000204 //nolint // SSF33算法CFB加密模式
	SGDSSF33OFB AlgorithmID = 0x00000208 //nolint // SSF33算法OFB加密模式
	SGDSSF33Mac AlgorithmID = 0x00000210 //nolint // SSF33算法MAC运算
	SGDSM4ECB   AlgorithmID = 0x00000401 //nolint // SMS4算法ECB加密模式
	SGDSM4CBC   AlgorithmID = 0x00000402 //nolint // SMS4算法CBC加密模式
	SGDSM4CFB   AlgorithmID = 0x00000404 //nolint // SMS4算法CFB加密模式
	SGDSM4OFB   AlgorithmID = 0x00000408 //nolint // SMS4算法OFB加密模式
	SGDSM4GCM   AlgorithmID = 0x02000400 //nolint // SMS4算法OFB加密模式
	SGDSM4Mac   AlgorithmID = 0x00000410 //nolint // SMS4算法MAC运算
	SGDZUCEEA3  AlgorithmID = 0x00000801 // nolint
	SGDZUCEIA3  AlgorithmID = 0x00000802 // nolint

	//非对称密码算法标识
	SGDRSA  AlgorithmID = 0x00010000 //RSA算法
	SGDSM2  AlgorithmID = 0x00020100
	SGDSM21 AlgorithmID = 0x00020200 //椭圆曲线签名算法
	SGDSM22 AlgorithmID = 0x00020400 //椭圆曲线密钥交换协议
	SGDSM23 AlgorithmID = 0x00020800 //椭圆曲线加密算法

	//密码杂凑算法标识
	SGDSM3        AlgorithmID = 0x00000001 //SM3杂凑算法
	SGDSHA1       AlgorithmID = 0x00000002 //SHA1杂凑算法
	SGDSHA256     AlgorithmID = 0x00000004 //SHA256杂凑算法
	SGDSM3HMAC    AlgorithmID = 0x00000008 //SM3HMAC杂凑算法
	SGDSHA256HMAC AlgorithmID = 0x00000004 //SHA256HMAC杂凑算法

	//签名算法的标识
	SGDSM3RSA    AlgorithmID = 0x00001001 //基于SM3算法和RSA算法的签名
	SGDSHA1RSA   AlgorithmID = 0x00001002 //基于SHA1算法和RSA算法的签名
	SGDSHA256RSA AlgorithmID = 0x00001004 //基于SHA256算法和RSA算法的签名
	SGDSM3SM2    AlgorithmID = 0x00020101 //基于SM2算法和SM3算法的签名

	//SM9 GB/T 33560
	SGDSM9   AlgorithmID = 0x00040100 // SM9标识密码算法
	SGDSM91  AlgorithmID = 0x00040200 //SM9数字签名算法
	SGDSM92  AlgorithmID = 0x00040400 //SM9密钥交换协议
	SGDSM93  AlgorithmID = 0x00040800 //SM9 IBC加密算法 - KDF模式
	SGDSM931 AlgorithmID = 0x00040801 //基于SM4ECB加密模式的SM9 IBC加密
	SGDSM932 AlgorithmID = 0x00040802 //基于SM4CBC加密模式的SM9 IBC加密
	SGDSM933 AlgorithmID = 0x00040804 //基于SM4CFB加密模式的SM9 IBC加密
	SGDSM934 AlgorithmID = 0x00040808 //基于SM4OFB加密模式的SM9 IBC加密
	SGDSM94  AlgorithmID = 0x00041000 //SM9 IBC密钥封装机制

	SGDDEVICESORTSJ AlgorithmID = 0x02000000 //通过网络提供服务的密码设备
	SGDDEVICESORTSK AlgorithmID = 0x03000000 //不支持热拔插功能的密码设备,如PCI 密码卡
	SGDDEVICESORTSM AlgorithmID = 0x04000000 //支持热拔插的智能密码钥匙或智能卡类密码设备

)
