GMT 0018-2023 密码设备应用接口规范_第1页
GMT 0018-2023 密码设备应用接口规范_第2页
GMT 0018-2023 密码设备应用接口规范_第3页
GMT 0018-2023 密码设备应用接口规范_第4页
GMT 0018-2023 密码设备应用接口规范_第5页
已阅读5页,还剩155页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

密码设备应用接口规范国家密码管理局发布I Ⅲ 1 1 1 1 25.1算法标识定义 2 25.3设备信息定义 25.4密钥分类及存储定义 3 4 5 5 6 6 76.1密码设备应用接口在公钥密码基础设施应用技术体系框架中的位置 7 86.3密钥管理类函数 6.4非对称算法运算类函数 6.5对称算法运算类函数 6.6杂凑运算类函数 6.7用户文件操作类函数 6.8验证调试类函数 附录A(规范性)函数返回代码定义 附录B(规范性)SM9算法相关数据结构和接口函数 附录C(规范性)VPN设备相关接口函数 Ⅲb)删除了基于RSA算法的数字信封转换和基于ECC算法的数字信封转换两个接口函数(见本文件的目标是为公钥密码基础设施应用体系框架下的服务端密码设备制定统一的应用接口标1GB/T15852.2信息技术安全技术消息鉴别GB/T36624信息技术安全技术可鉴别的加密机制GB/T38635(所有部分)信息安全技术SM9标识密码算法2本文件中的基本数据类型均为高位字节在前(Big-Endian)方式存储和交换。表1定义了基本数据定义句柄,指面数据对象的起始地址表2定义了设备信息。字节)设备型号设备编号,包含:日期(8字符)、批次号(3字符)、流水号(5字符)448前4字节表示支持的算法,表示方法为非对称算法标识按位或运算的结果;4所有支持的对称算法,表示方法为对称算法标识4所有支持的杂凑算法,表示方法为杂凑算法标识4支持的最大文件存储空间(单位字节)typedefstructDeviceInfo_st{3CHARDcviceScrial[16];一个加密密钥对。其中,索引号为0表示设备密钥。索引号1开始表示用户密钥。表3描述了设备密公钥设备签名公钥设备签名私钥设备加密公钥设备加密私钥……密钥加密密钥密钥加密密钥0014在最高位,不足位从高位向低位填充数据0。表5定义了RSA密钥数据结构。公钥数据结构定义数据长度(字节)4me公钥指数数据长度4md素数p和系数i#defineRSAref_MAX_PLtypedefstruciRSAreIRublicKey_st{BYTEe[RSAref_MAX_LEN];typedefstructRSArefPrivateKey_st{prime[2][RSAref_MAX_PLpexp[2][RSAref_MAX_PLEN5表6定义了ECC密钥数据结构。公钥数据结构定义数据长度(字节)4Xy数据长度(字节)4K私钥#defineECCref_MAX_LEN((ECCretypedefstructECCrcfPublicKey_st{typedefstructECCrefPrivateKey_st{表7定义了ECC加密数据结构。数据长度(字节)Xy6表7ECC加密数据结构(续)数据长度(字节)M明文的杂凑值L4CLtypedefstructECCCipher_stBYTEx[ECCref_MAX_LEN];BYTEy[ECCref_MAX_LEN];ULONGL表8定义了ECC签名数据结构。数据长度(字节)r签名的r部分s签名的s部分typedefstructECCSignature_st{密钥管理系统下发到设备中的ECC加密密钥对使用本结构保护,表9定义了ECC密钥对保护数据长度(字节)4版本号,本版本为17数据长度(字节)4对称算法标识(必须为ECB模式)4用保护公钥加密过的对称密钥密文结构typedefstructEnvelopedECCKey_st{BYTEcbEncryptedPriKey[ECCref_MAX_LE8应用1——应用N密码设备密码资源管理(云环境表10设备管理类函数函数名称获取设备信息SDF_GetPrivateKeyAcSDF_ReleasePrivateKeyAc90000DEVICEINFO*pstDevic00与段备建的会所命脑成HANDLEhSessionHandle,LPSTRpucPassword,对索引值的起始索引值为1,最大为n,密码设备的实际存储容量决定n值。私钥访问控制码不少于8字节。ULONGuiKeyIndex);uiKeyIndex[in]密码设备存储的密钥对的索引值表11密钥管理类函数函数名称功能导出RSA签名公钥导出RSA加密公钥生成会话密钥并用内部RSA公钥加密输出生成会话密钥并用外部RSA公钥加密输出导出ECC签名公钥导出ECC加密公钥生成会话密钥并用内部ECC公钥加密输出生成会话密钥并用外部ECC公钥加密输出SDF_GenerateAgreementD生成密钥协商参数并输出计算会话密钥SDF_GenerateAgreementDataAnd产生协商数据并计算会话密钥生成会话密钥并用密钥加密密钥加密输出表11密钥管理类函数(续)函数名称导入会话密钥并用密钥加密密钥解密销毁会话密钥6.3.2导出RSA签名公钥HANDLEhsessionHandle,描述:导排密码设备内部存储的指定索引位置的RSA签名公钥。参数:与设备建立的会话句柄密码设备存储的密钥对的素引值ULONGuiKeyIndexRSArefPublicKey*pucPubl描述:导出密码设备内部存储的指定索引位置的RSA加密公钥与设备建立的会话句柄密码设备存储的密钥对的索引值RSA公钥结构6.3.4生成会话密钥并用内部RSA公钥加密输出HANDLEhSessionHandle,ULONGuiIPKIndex,ULONGuiKeyBits,pucKcy[out]pucKey[out]pucKey[in]ECC公钥结构HANDLEhScssionHandle,ULONGuiIPKIndex,pucKey[out]HANDLEhSessionHandle,ULONGuiAlgID,ECCrefPublicKey*pucPupucKey[out]输入的外部ECC公钥结构phKeyHandle[out]HANDLEhSessionHandle,pucKey[in]HANDLEhSessionHandle,ULONGuiSponsorIDLenECCrefPublicKey*pucSponsorPubECCrefPublicKey*pucSponHANDLE*phAgrpucSponsorID[in]pucSponsorPublicKey[oupucSponsorTmpPublicKey[o0HANDLEhSessionHandle,ULONGuiResponseIDLeECCrefPublicKey*uiResponseIDLength[pucResponsePublicKey[pucResponseTmpPublicKey[外部输入的响应方临时ECC公钥结构phKeyHandlc[out]返回的密钥0HANDLEhSessionHandle,UEONGuiISKIndex,uiONGuResonscIDrcngECConauhekeyponso钥句柄。使用SM2算法计算会话密钥的过程应符合GB/T35276。本函数由响应方uiResponseIDLength[pucSponsorID[in]pucSponsorPublicKey[ipucSponsorTmpPublicKey[pucResponsePublicKey[o响应方ID值响应方ID长度发起方ID值发起方ID长度外部输入的发起方ECC公钥结构外部输入的发起方临时ECC公钥结构返回的响应方ECC公钥结构pucResponseTmpPublicKey[oHANDLEhSessionHandle,pucKey[out]HANDLEhSessionHandle,导入会话密钥并用密钥加密密钥解密,同时返回会话密钥句柄。加密模式为ECB模式。hSessionHandle[in]与设备建立的会话句柄pucKey[in]算法标识,指定分组密码算法和工作模式密码设备存储的密钥加密密钥的索引值缓冲区指针,用于存放输入的密钥密文输入的密钥密文长度返回的密钥句柄成功6.3.17销毁会话密钥销毁会话密钥开释放密钥句极分配的对存资源本面数在对称算法运算完成后调用。6.4非对称算法运算类函数非对称算法运算类函数提供RSA公私钥运算、ECC签名验证和加密功能,表12列出了非对称算法运算类函数,附录A定义了函数返国代码。表12非对称算法运算类函数函数名称SDF_ExternalPublicKeyOperSDF_InternalPublicKeyOper内部公钥RSA运算SDF_InternalPrivateKeyOper内部私钥RSA运算内部私钥ECC签名内部公钥ECC验证外部公钥ECC加密HANDLEhSessionHandle,ULONG*puiOutputL外部RSA公钥结构0HANDLEhSessionHandle,ULONGuiInputLength,ULONG*puiOutputLHANDLEhSessionHandle,ULONG*puiOutputLength);0HANDLEhSessionHandle,ECCrefPublicKey*pucPublicKey,ECCSignature*pucSignatu描述:使用外部公钥对ECC签名值进行验证运算。输入数据为待签数据的杂凑值。当使用应符合GB/T35276。外部ECC公钥结构ECCSignature*pucSignature);描述:使用内部指定索引的私钥对数据进行ECC签名运算。输入数据为待签数据的杂凑值。处理过程应符合GB/T35276。ULONGuiISKIndex,ECCSignature*pucSignatu0ECCrefPublicKey*pucPu外部ECC公钥结构0函数名称计算单包MAC多包对称加密初始化多包对称加密多包对称加密结束多包对称解密初始化多包对称解密多包对称解密结束多包MAC初始化多包MAC计算多包可鉴别加密初始化多包可鉴别加密多包可鉴别加密结束多包可鉴别解密初始化多包可鉴别解密多包可鉴别解密结束HANDLEhKeyHandle,描述:使用指定的密钥句柄和IV对数据进行对称加密运算。此函数不对数据进行填充处理。此函数的IV数据长度与算法分组长度相同。与设备建立的会话句柄指定的密钥句柄法,指定分组密码算法和工作模式缓冲区指针,用于存放输入的数据明文输入的数据明文长度缓冲区指钆,用于存放输出的数据密文输画的数据密文长度HANDLEbSessionHandleNANDLEhKeyHandle,ULONGuiAlgID,ULONG*puiD描述:使用指定的密钥句柄和IV对数据进行对称解密运算。此函数的IV数据长度与算法分组长度相同。pucIV[in]与设备建立的会话句柄指定的密钥句柄算法标识,指定分组密码算法和工作模式缓冲区指针,用于存放输入的IV数据0HANDLEhSessionHandle,HANDLEhKeyHandle,pucIV[in]0HANDLEhKeyHandle,ULONGuiStartVarLength,使用指定的密钥句栖对数据进行可鉴加密之算。此函数应用于可鉴别加密的CCM和设备建会话句硒法标指定分组密码算法和二作模式pueAadn]puiAuthDataLength[o0输入的开始变量长度ULONGuiAadLength,0HANDLEhSessionHandle,pucIV[in]输入的IV数据长度0HANDLEhSessionHandle,00HANDLEhSessionHandle,ULONG*puiLastEncDataLpuiLastEncDataLength[o0HANDLEhSessionHandle,pucIV[in]输入的IV数据长度0HANDLEhSessionHandle,ULONGuiEncDataLength,0HANDLEhSessionHandle,ULONG*puiLastDatpuiLastDataLength[o0HANDLEhSessionHandle,HANDLEhKeyHandle,pucIV[in0HANDLEhSessionHandle,ULONGuiDataLength);HANDLEhSessionHandlc,HANDLEhSessionHandle,HANDLEhKeyHandle,UAONGyiAadLengthULONGuiDataLength);据。此函数应用于可鉴别加密的CCM和GCM模式,输入输出数据应接照GM/T0006hReyHandle备uiSartVarLengih信0没备建立的会话的法标识分组密偶算法和工作模输入的开始变长度HANDLEhSessionHandle,ULONGuiDataLength,ULONG*puiEncDataLen0HANDLEhSessionHandle,ULONG*puiLastEncDataLength,ULONG*puiAuthDataLpuiLastEncDataLength[opuiAuthDataLength[o0HANDLEhSessionHandle,HANDLEhKeyHandle,ULONGuiAadLength,ULONGuiDataLength);据。此函数应用于可鉴别解密的CCM和GCM模式,输入输出数据应按照GM/T0006定义的算法标识和GB/T36624的规定进行确定。GCM模式下的数据明文总长度参数pucAad[in]uiAuthDatafength帘输入的额外的再鉴数居长度入的数据文总长愈HANDLEhSessionHa0HANDLEhScssionHandlc,ULONG*puiLastDataLen0函数名称带密钥的多包杂凑运算带密钥的杂凑运算结束多包杂凑运算HANDLEhSessionHandle,HANDLEhKeyHandle,描述:三步式带密钥的数据杂凑运算第一步。本函数执行带密钥的杂凑运算过程应符0HANDLEhSessionHandle,0HANDLEhSessionHandle,0HANDLEhScssionHandlc,ECCrefPublicKey*pucPublicKey,pucID[in]HANDLEhSessionHandle,ULONGuiDataLength);HANDLEhSessionHandle,pucHash[out0函数名称LPSTRpucFileName,0HANDLEhSessionHandle,ULONGuiNameIenBYTE*pucBuffer);hSessionHandlein]入参谢指啶读取文作内容的长度出参时返回实际读取非0失败返圆错误代码ULONGuiFileLength,0非0HANDLEhSessionHandle,ULONGuiNameLen);函数名称产生RSA非对称密钥对并输出产生ECC非对称密钥对并输出SDF_ExternalPrivateKeyOpcr外部私钥ECC签名外部私钥ECC解密外部私钥SM9签名外部私钥SM9解密外部密钥单包对称加密表16验证调试类函数(续)函数名称外部密钥单包对称解密RSArefPublicKey*pucPublicKey,RSArefPrivateKey*pucPrivateKe0ECC公钥结构成功ULONGuilnputLength,ULONGuiInputLength,外部ECC私钥结构0外部ECC私钥结构0SM9SignMasterPublicKey*pSignMastPublicSM9SignUserPrivateKey*ULONGuiDataLengthpSignMastPublicKey[pSignUserPrivateKey[0pEncUserPrivateKey[0ULONGuiIVLength,ULONG*puiEncDataLength);使用外部密钥和IVpucKcy[in]pucIV[in]0pucKey[in]pucIV[in|out0非0ULONGuiKeyLength,pucKey[in]pucIV[in]0ULONGuiKeyLength,pucKcy[in]pucIV[in]输入的IV数据长度描述:主步式带密钥的数据集法运算第一二步。本函数执行形密研丽杂凑运算过程应符(规范性)说明操作成功未知错误不支持的接口调用SDR_BASE十0x00000003与设备通信失败打开设备失败无私钥使用权限不存在的密钥调用不支持的算法调用井defineSDR_ALGMODN不支持的算法模式调用公钥运算失败多步运算步骤错误文件长度超出限制指定的文件不存在SDR_BASE十0x00000013随机数产生失败说明指定文件已存在用户标识错误至预留数据长度(字节)4s主私钥#defineSM9ref_MAX_LEN((SM9ref_MAX_BITS+7)/8)typedefstructSM9refMasterPrivateKey_st{ULONGbits;BYTEs[SM9ref_MAX_LEN];表B.2定义了SM9签名主公钥数据结构。数据长度(字节)4曲线上点X坐标高维曲线上点X坐标低维曲线上点Y坐标高维曲线上点Y坐标低维typedefstructSM9refSignMasterPublicKey_st{ULONGbits;BYTExa[SM9ref_MAX_LEN];BYTExb[SM9ref_MAX_LEN];BYTEya[SM9rcf_MAX_BYTEyb[SM9ref_MAX_LEN];B.1.3SM9加密主公钥数据结构定义表B.3定义了SM9加密主公钥数据结构。数据长度(字节)4X曲线上点X坐标y曲线上点Y坐标typedefstructSM9refEncMasterPublicKey_st{数据长度(字节)4X曲线上点X坐标y曲线上点Y坐标typcdcfstructSM9refSignUserPriva{表B.5定义了SM9用户加密私钥数据结构。数据长度(字节)4曲线上点X坐标高维曲线上点X坐标低维曲线上点Y坐标高维曲线上点Y坐标低维typedefstructSM9refEncUserPrivateKey_st{BYTExa[SM9ref_MAX_LEN];BYTExb[SM9ref_MABYTEya[SM9ref_MAX_LEN];BYTEyb[SM9ref_MA表B.6定义了SM9加密数据结构。数据长度(字节)4XyhL4CLtypedcfstructSM9refCipher_st{表B.7定义了SM9签名数据结构。表B.7SM9签名数据结构数据长度(字节)hXytypedefstructSM9refSignaturc_stBYTEh[SM9ref_MAX_LENBYTEx[SM9ref_MAX_LENBYTEy[SM9ref_MAX_LEN表B.8SM9密钥封装数据结构数据长度(字节)XytypcdefstructSM9rcfKcyPackage_stBYTEx[SM9ref_MAX_LENBYTEy[SM9ref_MAX_LEN表B.9定义了SM9用户加密密钥对保护结构。表B.9SM9用户加密密钥对保护结构数据长度(字节)444数据长度(字节)SM9EncUserPrivateKey结构体中除去长产生对称密钥的密钥封装数据的主公钥44typedefstructSM9refEncEnvclopcdK{ULONGversion;BYTEencryptedPriKey[SM9ref_MAX_LEN*SM9EncMastPublicKeytmpMa数据长度(字节)444SM9SignUserPrivateK数据长度(字节)产生对称密钥的密钥封装数据的主公钥44SM9KeyPackagc类型{enc:sptedPrikoyISM⁹aIMAXEBYTEuserID[256];函数名称功能SDF_GenerateEncMasterK装并输出装并输出使用SM9密钥封装结构导入会话密钥并用表B.11SM9算法相关接口函数(续)函数名称功能SDF_GenerateAgreementDSM9生成密钥协商参数并输出SDF_GenerateAgreementDataAnd内部主公钥SM9验证SDF_InternalSignWithMas外部主公钥SM9签名SDF_InternalSignWithMas内部主公钥SM9签名内部主公钥SM9加密HANDLEhSessionHandle,ULONGuiKeyIndex,uiKeyIndex[in]输出的用户标识缓冲区,若该项为NULL,则puiUse-rIDLen输出所需缓冲区长度输入为pucUserID的缓冲区长度,输出为pucUserID实际长度HANDLEhSessionHandle,SM9EncMastcrPublicKcy*pEncMasterPucli护结构。当输入的SM9主密钥索引值为0xFFFFFFFF时,输出的主密钥索引值由密码pEncMasterPaclicKeyfout]输出的SM9主公钥数据结构0B.2.4生成会话密钥并用SM9外部加密主公钥和用户标进行密钥封装并输出HANDLFhSesfonfa钥封装的具体过程应符合GB/T38635。密钥封装和解封装函数输入的对称密钥长度值输出的SM9密钥封装结构HANDLEhSessionHandle,ULONGuiISKIndex,0ULONGuiKeyBits,ULONGulResponseIDSM9EncMastPublicKey*pSponHANDLE*phAgreementHpSponsorID[in]pSponsorTempPublicKey[ophAgreementHandle[o00HANDLEhSessionHandle,ULONGuiKeyBits,ULONGulResponseIDLen,ULONGulSponsorIDLen,SM9EncMastPublicKcySM9EncMastPublicKeypSponsorID[in]响应方id响应方id长度发起方id发起方id长度pPublicKey[in]发起方主公钥pSponsorTempPublicKey[in]发起pResponseTempPublicKey[out]返回的响应方临时主公钥phKeyHandlc[out]返回的密钥句柄HANDLEhSessionHandle,SM9SignMasterPublicK描述:使用外部签名主公钥和用户标识对SM9签名进行验证运算。输入数据为待签数据的用户标识ULONGuiSignMasterKeyIndULONGuiDataLength,描述:使用内部签名主公钥和用户标识对SM9签名进行验证运算。输入数据为待签数据的ULONGuiISKInd描述:使用外部签名主公钥和SM9用户签名私钥对数据进行签名运算。输入数据为待签数据输人的数据长度缓河指键用于存放输出的签径值数据HANDLEhScssionHLanULONGuiISKInd描述:使用内部签名主公钥和SM9用户签名私钥对数据进行签名运算。输入数据为待签数据0ULONGuiMasterKeyIULONGuiUserIDLeULONGuiDataLengthulAlgID[in]uiDalaLength[in相际识的长度加密明文的算法标识通区指钋于存放外部输人的数据缓冲区指针、川工存放偷的数据密文HANDLEhSessionHandle,ULONGuiUscrIDLen,应符合GB/T38635。IV数据长度为16个字节,仅当uiAlgID为SGD_SM98CBC、SGD_SM98OFB、SGD_输入的IV数据函数名称功能计算IKE工作密钥并用外部ECC公钥加密输出计算IPSEC会话密钥并用外部ECC公钥加密输出计算SSL工作密钥并用外部ECC公钥加密输出HANDLEhSessionHandle,ULONGuiSponsorNonceLenULONGuiResponseNonceLeULONGuiSponsorCookieLeULONGuiResponseCookieLeuiSponsorNonceLength[uiResponseNonceLengthuiSponsorCookieLength[uiResponscCookicLength0HANDLEhSessionHandle,ULONGuiSponsorNonceLength,ULONGuiResponseNonceLength,ULONGuiSponsorCookieLeULONGuiResponseCookieLeULONGuiEccAlgIDECCrefPublicKey*pucPublicKey,ULONGuiKeyBitsE);息3和消息4交互完成后,本函数由参与通信的双方各白调用,计算后续工作密钥uiSponsorNonceLength[uiResponseNonceLengthuiSponsorCookicLength[uiResponseCookieLength发起方cookie输入的外部ECC公钥结构SKEYID_d密钥长度0ULONGuiProtocolIDLength,ULONGuiSponsorNonceLenULONGuiResponseNonceLeHANDLEhKeyHandle,pucProtocolID[in]协议IDuiProtocolIDLength[uiSponsorNonceLength[uiRespo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论