2014.04
目录
SDKEY 国密应用接口 ......................................................................................... 错误!未定义书签。
详细设计说明书.................................................................................................错误!未定义书签。
SDKEY 国密应用接口 .......................................................................................................................... 7
详细设计文档..................................................................................................................................... 7
1 数据类型定义............................................................................................................................ 8
1.1
算法标识 ................................................................................................................................8
1.1.1 分组算法标识...................................................................................................................8
1.1.2 非对称算法标识...............................................................................................................8
1.1.3 密码杂凑算法标识...........................................................................................................9
1.2
1.3
基本类型 ................................................................................................................................9
常量定义 ..............................................................................................................................10
2 结构体定义.............................................................................................................................. 11
2.1
2.2
版本......................................................................................................................................11
设备信息 ..............................................................................................................................11
2.3
RSA 公钥数据结构................................................................................................................... 13
2.4
RSA 私钥数据结构................................................................................................................... 14
2.5
ECC 公钥数据结构 ................................................................................................................... 15
2.6
ECC 私钥数据结构 ................................................................................................................... 16
2.7
ECC 密文数据结构 ................................................................................................................... 16
2.8
ECC 签名数据结构 ................................................................................................................... 17
2.9
分组密码参数......................................................................................................................18
2.10
ECC 加密密钥对保护结构 ...................................................................................................18
2.11 文件属性 ..............................................................................................................................19
2.12 权限类型 ..............................................................................................................................20
2.13 设备状态 ..............................................................................................................................20
3 设备管理函数.......................................................................................................................... 21
3.1
SKF_WaitForDevEvent...............................................................................................................21
3.2
SKF_CancelWaitForDevEvent....................................................................................................22
3.3
SKF_EnumDev........................................................................................................................... 23
3.4
SKF_ConnectDev.......................................................................................................................24
3.5
SKF_DisconnectDev...................................................................................................................25
3.6
SKF_GetDevState...................................................................................................................... 25
3.7
SKF_SetLabel.............................................................................................................................26
3.8
SKF_GetDevInfo........................................................................................................................ 27
3.9
SKF_LockDev ............................................................................................................................. 28
3.10
SKF_UnlockDev.................................................................................................................... 28
3.11
SKF_Transmit........................................................................................................................29
4 访问控制函数.......................................................................................................................... 30
4.1
SKF_ChangeDevAuthKey...........................................................................................................31
4.2
SKF_DevAuth.............................................................................................................................32
4.3
SKF_ChangePIN.........................................................................................................................33
4.4
SKF_GetPINInfo.........................................................................................................................34
4.5
SKF_VerifyPIN ............................................................................................................................36
4.6
SKF_UnblockPIN ........................................................................................................................37
4.7
SKF_ClearSecueState................................................................................................................ 38
5 应用管理函数.......................................................................................................................... 39
5.1
SKF_CreateApplication..............................................................................................................39
5.2
SKF_EnumApplication...............................................................................................................41
5.3
SKF_DeleteApplication..............................................................................................................42
5.4
SKF_OpenApplication................................................................................................................43
5.5
SKF_CloseApplication................................................................................................................44
6 文件管理函数.......................................................................................................................... 45
6.1
SKF_CreateFile.......................................................................................................................... 45
6.2
SKF_DeleteFile.......................................................................................................................... 47
6.3
SKF_EnumFile ............................................................................................................................48
6.4
SKF_GetForInfo......................................................................................................................... 49
6.5
SKF_ReadFile.............................................................................................................................50
6.6
SKF_WriteFile............................................................................................................................51
7 容器管理函数.......................................................................................................................... 53
7.1
SKF_CreateContainer ................................................................................................................ 53
7.2
SKF_DeleteContainer ................................................................................................................ 54
7.3
SKF_EnumContainer................................................................................................................. 55
7.4
SKF_OpenContainer..................................................................................................................56
7.5
SKF_CloseContainer.................................................................................................................. 57
7.6
SKF_GetContainerType............................................................................................................. 58
7.7
SKF_ImportCertificate...............................................................................................................59
7.8
SKF_ExportCertificate............................................................................................................... 60
8 密码服务函数.......................................................................................................................... 61
8.1
SKF_GenRandom.......................................................................................................................62
8.2
SKF_GenExtRSAKey................................................................................................................... 63
8.3
SKF_GenRSAKeyPair..................................................................................................................64
8.4
SKF_ImportRSAKeyPair............................................................................................................. 66
8.5
SKF_RSASignData...................................................................................................................... 67
8.6
SKF_RSAVerify........................................................................................................................... 69
8.7
SKF_RSAExportSessionKey........................................................................................................70
8.8
SKF_ExtRSAPubKeyOperation...................................................................................................72
8.9
SKF_ExtRSAPriKeyOperation.....................................................................................................73
8.10
SKF_GenECCKeyPair............................................................................................................. 75
8.11
SKF_ImportECCKeyPair.........................................................................................................76
8.12
SKF_ECCSignData................................................................................................................. 77
8.13
SKF_ECCVerify ...................................................................................................................... 78
8.14
SKF_ECCExportSessionKey................................................................................................... 80
8.15
SKF_ExtECCEncrypt.............................................................................................................. 81
8.16
SKF_ExtECCDecrypt..............................................................................................................82
8.17
SKF_ExtECCSign....................................................................................................................84
8.18
SKF_ExtECCVerify................................................................................................................. 85
8.19
SKF_GenerateAgreementDataWithECC............................................................................... 87
8.20
SKF_GenerateKeyWithECC...................................................................................................88
8.21
SKF_GenerateAgreementDataAndKeyWithECC...................................................................91
8.22
SKF_ExportPublicKey............................................................................................................92
8.23
SKF_ImportSessionKey.........................................................................................................93
8.24
SKF_SetSymmKey.................................................................................................................95
8.25
SKF_EncryptInit.................................................................................................................... 96
8.26
SKF_Encrypt..........................................................................................................................97
8.27
SKF_EncryptUpdate..............................................................................................................98
8.28
SKF_EncryptFinal................................................................................................................100
8.29
SKF_DecryptInit..................................................................................................................101
8.30
SKF_Decrypt....................................................................................................................... 102
8.31
SKF_DecryptUpdate........................................................................................................... 103
8.32
SKF_DecryptFinal............................................................................................................... 105
8.33
SKF_DigestInit.................................................................................................................... 106
8.34
SKF_Digest ..........................................................................................................................108
8.35
SKF_DigestUpdate..............................................................................................................109
8.36
SKF_DigestFinal.................................................................................................................. 110
8.37
SKF_MacInit ........................................................................................................................111
8.38
SKF_Mac.............................................................................................................................112
8.39
SKF_MacUpdate.................................................................................................................114
8.40
SKF_MacFinal..................................................................................................................... 115
8.41
SKF_CloseHandle................................................................................................................116
9 其他........................................................................................................................................117
SDKEY 国密应用接口
详细设计文档
本说明书供开发人员参考,文档的编写者、本系统的设计者与管理者都应自
觉按照此规范执行。
1 数据类型定义
1.1 算法标识
1.1.1 分组算法标识
分组密码算法标识包含密码算法的类型和加密模式。
分组密码算法标识的编码规则为:从低位到高位,第 0 位到第 7 位按位表示
分组密码算法工作模式,第 8 位到第 31 位按位表示分组密码算法类型,分组密
码算法的标识如表 1 所示。
表 1 分组密码算法标识表
标签
SGD_SM1_ECB
SGD_SM1_CBC
SGD_SM1_CFB
SGD_SM1_OFB
SGD_SM1_MAC
SGD_SSF33_ECB
SGD_SSF33_CBC
SGD_SSF33_CFB
SGD_SSF33_OFB
SGD_SSF33_MAC
SGD_SMS4_ECB
SGD_SMS4_CBC
SGD_SMS4_CFB
SGD_SMS4_OFB
SGD_SMS4_MAC
标识符
0x00000101
0x00000102
0x00000104
0x00000108
0x00000110
0x00000201
0x00000202
0x00000204
0x00000208
0x00000210
0x00000401
0x00000402
0x00000404
0x00000408
0x00000410
描述
SM1 算法ECB 加密模式
SM1 算法CBC 加密模式
SM1 算法CFB 加密模式
SM1 算法OFB 加密模式
SM1 算法MAC 运算
SSF33算法ECB加密模式
SSF33算法CBC加密模式
SSF33算法CFB加密模式
SSF33算法OFB加密模式
SSF33算法MAC运算
SMS4算法ECB加密模式
SMS4算法CBC加密模式
SMS4算法CFB加密模式
SMS4算法OFB加密模式
SMS4算法MAC运算
1.1.2 非对称算法标识
非对称密码算法标识仅定义了密码算法的类型,在使用非对称算法进行数字
签名运算时,可将非对称密码算法标识符与密码杂凑算法标识符进行“或”运算后
使用,如“RSA with SHA1”可表示为 SGD_RSA | SGD_SHA1,即 0x00010002,“|”
表示“或”运算。