GB/T36322-2018

信息安全技术密码设备应用接口规范

Informationsecuritytechnology—Cryptographicdeviceapplicationinterfacespecifications

本文分享国家标准信息安全技术密码设备应用接口规范的全文阅读和高清PDF的下载,信息安全技术密码设备应用接口规范的编号:GB/T36322-2018。信息安全技术密码设备应用接口规范共有43页,发布于2019-01-01
  • 中国标准分类号(CCS)L80
  • 国际标准分类号(ICS)35.040
  • 实施日期2019-01-01
  • 文件格式PDF
  • 文本页数43页
  • 文件大小2.10M

以图片形式预览信息安全技术密码设备应用接口规范

信息安全技术密码设备应用接口规范


国家标准 GB/T36322一2018 信息安全技术 密码设备应用接口规范 nformationseeuritytechnology一 Cryptographiedevieeapplieationinterfacespecifieations 2018-06-07发布 2019-01-01实施 国家市场监督管理总局 发布 币国国家标准化管理委员会国家标准
GB/T36322一2018 目 次 前言 引言 范围 规范性引用文件 术语和定义 符号和缩略语 算法标识和数据结构 5.1算法标识定义 5.2基本数据类型定义 5.3设备信息定义 5.4密钥分类及存储定义 5.5RSA密钥数据结构定义 EcC密钥数据结构定义 5.6 5.7EcC加密数据结构定义 5.8cC签名数据结构定义 设备接口描述 6.1密码设备应用接口在公钥密码基础设施应用技术体系框架中的位置 设备管理类函数 6.2 6.3密钥管理类函数 6.4非对称算法运算类函数 27 6.5对称算法运算类函数 31 6.6杂凑运算类函数 33 6.7用户文件操作类函数 34 附录A规范性附录)函数返回代码定义 37 参考文献 39
GB/36322一2018 前 言 本标准按照GB/T1.1一2009给出的规则起草 请注意本文件的某些内容可能涉及专利 本文件的发布机构不承担识别这些专利的责任 本标准由全国信息安全标准化技术委员会(SAC/TC260)提出并归口 本标准起草单位:卫士通信息产业股份有限公司、无锡江南信息安全工程技术中心、四川大学、上海 格尔软件股份有限公司、北京数字认证股份有限公司、兴唐通信科技股份有限公司、山东得安信息技术 有限公司、北京三未信安科技发展有限公司、海泰方圆科技有限公司、山东大学 本标准主要起草人:刘平、罗俊、龚勋、李元正、徐强、郑强、李述胜、李玉峰、孔凡玉、马洪富、高志权、 徐明翼、柳增寿、蒋红宇
GB/T36322一2018 引 言 本标准的目标是为公钥密码基础设施应用体系框架下的服务类密码设备制定统一的应用接口标 准,通过该接口调用密码设备,向上层提供基础密码服务 为该类密码设备的开发、使用及检测提供标 准依据和指导,有利于提高该类密码设备的产品化、标准化和系列化水平 本标准中涉及密码算法的相关内容,按照国家有关法规实施
GB/36322一2018 信息安全技术 密码设备应用接口规范 范围 本标准规定了公钥密码基础设施应用技术体系下服务类密码设备的应用接口标准 本标准适用于服务类密码设备的研制使用,以及基于该类密码设备的应用开发,也可用于指导该 类密码设备的检测 规范性引用文件 下列文件对于本文件的应用是必不可少的 凡是注日期的引用文件,仅注日期的版本适用于本文 件 凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件 GB/T33560信息安全技术密码应用标识规范 术语和定义 下列术语和定义适用于本文件 3.1 算法标识algorithmidentifier 用于对密码算法进行唯一标识的符号 3.2 非对称密码算法asmmetriceryptographicalgorithm/publikeyeryptographicalgorithm 公钥密码算法 加解密使用不同密钥的密码算法 3.3 解密deeipherment/deeryption 加密过程对应的逆过程 3.4 设备密钥devicekepair 存储在设备内部的用于设备管理的非对称密钥对,包含签名密钥对和加密密钥对 3.5 加密eneipherent/eneryption 对数据进行密码变换以产生密文的过程 3.6 密钥加密密钥keyeneryptionkey 对密钥进行加密保护的密钥 3.7 公钥基础设施publiekeyinfrastructure 用公钥密码技术建立的普遍适用的基础设施,为用户提供证书管理和密钥管理等安全服务
GB/T36322一2018 3.8 私钥访问控制码privatekeyaccesspasword 用于验证私钥使用权限的口令字 3.9 对称密码技术symmetriccryptographicteehnique 对称密码体制 原发者和接收者均采用同一秘密密钥进行变换的密码技术(体制). 注:加密密钥与解密密钥相同,或者一个密钥可以从另一个密钥导出的密码体制 3.10 会话密钥sesionkey 处于层次化密钥结构中的最低层,仅在一次会话中使用的密钥 3.11 用户密钥userkey 存储在设备内部的用于应用密码运算的非对称密钥,包含签名密钥对和加密密钥对 符号和缩略语 下列符号和缩略诺适用于本文件 椭圆曲线算法(ElipticCurveCryptography Ecc EPK 外部加密公钥(ExternalPublicKey 内部加密公钥(InternmalPubieKey) PK ISK 内部加密私钥(InternalPrivateKey) KEK 密钥加密密钥(KeyEncryptKey) 算法标识和数据结构 S 5.1算法标识定义 本标准中所使用的算法其算法标识见GB/T33560 对称加密算法的算法标识包含其工作模式 5.2基本数据类型定义 本标准中的字节数组均为高位字节在前(Big-Endian)方式存储和交换 基本数据类型定义如表1 所示 表1基本数据类型 类型名称 描述 定义 ypedefuns还nedehaYTE 字节类型,无符号8位字符 BYTE CHAR 字符类型,无符号8位字符 ypedefunsignedcharCHAR LONG edefintL(ONG 长整数,有符号32位整数 yped UL(ONG 长整数,无符号32位整数 ypedefunsignedintUIONG ypedefunsignedintFLAGS FLAGS 标志类型,无符号32位整数 LPSTR 8位字符串指针,按照UTF8格式存储及交换 typedefCHAR×LPSTR HANDLE 句柄,指向任意数据对象的起始地址 ypedefvoid*HANDLE
GB/36322一2018 5.3设备信息定义 设备信息描述如表2所示 表2设备信息描述 字段名称 数据长度(字节 含义 ssuerName 40 设备生产厂商名称 16 设备型号 DeviceName 16 DeviceSerial 设备编号,包含:日期(8字符、批次号(3字符)、流水号(5字符 DeviceVersion 密码设备内部软件的版本号 StandardVersion 密码设备支持的接口规范版本号 前4字节表示支持的算法,表示方法为非对称算法标识按位或运算的 AsymAlgAbility 结果;后4字节表示算法的最大模长,表示方法为支持的模长按位或运 算的结果 symAgAblity 所有支持的对称算法,表示方法为对称算法标识按位或运算的结果 HashAgAbilhity 所有支持的杂凑算法,表示方法为杂凑算法标识按位或运算的结果 Bfters 支持的最大文件存储空间单位字节) 实际数据结构定义 structDevicelnfost ypede、 CHARIssuerName[40] CHARDevieeName[16] CHARDevieeSerial[16 ULONGDeviceVersion; ULONGStandardVersion; ULONGAsym.AlgAbility[2]; UIONGSymAlgAbility ULONGHashAlgAbility; ULONGBufferSize; DEVICEINFO; 5.4密钥分类及存储定义 5.4.1设备密钥与用户密钥 设备钥只能在设备初始化时生成或安装,用户密钥通过密码设备管理工具生成或安装 设备密钥和用户密钥存放于密钥存储区,索引号从0开始检索,每个索引号对应一个签名密钥对和 一个加密密钥对 其中,索引号为0表示设备密钥 索引号1开始表示用户密钥 设备密钥和用户密 钥存储描述如表3所示
GB/T36322一2018 表3设备密钥和用户密钥存储描述 密钥对索引号 私钥 公钥 设备签名公钥 设备签名私钥 0x00 设备加密公钥 设备加密私钥 用户签名公钥 用户签名私钥 0x01 用户加密公钥 用户加密私钥 .+ "* *=*" 5.4.2密钥加密密钥 密钥加密密钥通过密码设备管理工具生成或安装,密钥长度为128位,存放于密钥存储区,使用索 引号从1开始 密钥加密密钥存储描述如表4所示 表4密钥加密密钥存储描述 密钥索引号 密钥加密密俐 0x01 密钥加密密钥001 * * 5.4.3会话密钥 会话密钥使用设备接口函数生成或导人,会话密钥使用句柄检索 5.5RSA密钥数据结构定义 RSA密钥结构存储时顺序为从高到低,即密钥存放时从密钥结构数组的最高位开始,最高字节填 在最高位,不足位填充数据O RSA密钥数据结构如表5所示 表5RsA密钥数据结构 分类 字段名称 数据长度(字节 含义 bits 模长 公钥 256 模N m 256 公钥指数 模长 bits 256 模N m 256 公钥指数 私钥 256 私钥指数 prime[21 128×2 素数p和q pexp[2 128*2 Dp和Dg coef 28 系数i
GB/36322一2018 实际数据结构定义 2048 #defineRsAref_MAX_BITs #defineRSAref_MAX_LEN (RSAref_MAX_BITs十7)/ 8 #dfimeRsArL_MAx_PITs(RsANreL_MAX_Ts+1/2) #defineRsAref_MAX_PLEN((RsAref_MAX_PBITS十7/8 ypedef struct RSArefPubicKey_st ULONGbits:; BYTEm[RSAref_MAX_LEN; BYTEe[RSAref_MAX_LEN] RSArefPubliekKey; ypedefstruet RSArefPrivatekey_st ULONGbits BYTEm[RSAref_MAX_LEN; BYTEe[RSAref_MAX_LEN] BYTEd[RSAre_MAX_LEN]; BYTEprime[2][RSAref_MAx_PLEN] BYTEpexp[2][RSAref_MAX_PLEN] BYTEcoef[RSAreMAX_PLEN] RSArefPrivatekKey; 5.6EcC密钥数据结构定义 ECC密钥数据结构如表6所示 表6EcC密钥数据结构 分类 字段名称 数据长度(字节 含义 bits 密钥位长 公钥 ECCref_MAX_LEN 公钥x坐标 BCCreMAXLEN 公钥y坐标 密钥位长 bits 私钥 CCreMAXLEN 私钥 K 实际数据结构定义 512 #defineECCre_MAX_BITs #defineCCre_MAX_LEN (BCCref_MAX_B1TS+7/8) structECCrefPublicKer ypedef ey_st ULONGbits BYTEx[ECCre_MAX_LEN];
GB/T36322一2018 BYTEy[EECCreMAX_LEN] EcCrefPubliekey: BcCrelPivatekey_t yped struct ULONGbits; BYTEK[ECCref_MAX_LEN]; ECCrefPrivateKey; 5.7EcC加密数据结构定义 ECC加密数据结构如表7所示 表7ECC加密数据结构 字段名称 数据长度(字节 ECCre_MAX_LEN X分量 ECCref_MAX_LEN Y分量 32 M 明文的杂凑值 密文数据长度 密文数据 实际数据结构定义 ypedef struetECcCipher_st BYTEx[ECCref_MAX_LEN] BYTEy[ECCref_MAX_LEN]; BYTEM32]; UL(ONGL; BYTEc[1]; ECCCipher; 5.8Ecc签名数据结构定义 ECC签名数据结构如表8所示 表8cC签名数据结构 字段名称 数据长度(字节 含义 ECCref_MAX_LEN 签名的r部分 Eccre_MAx_LEN 签名的s部分 实际数据结构定义 tECCSignature ypedef struct st BYTEr[ECCref_MAX_LEN], BYTEs[ECCref_MAX_LEN];
GB/36322一2018 ECccsignature 设备接口描述 6.1密码设备应用接口在公钥密码基础设施应用技术体系框架中的位置 在公钥密码基础设施应用技术体系框架中,密码设备服务层由密码机、密码卡、智能密码终端等设 备组成,通过本标准规定的密码设备应用接口向通用密码服务层提供基础密码服务 如图1所示 基础密码服务包括密钥生成、单一的密码运算,文件管理等的服务 本标准采用C语言描述接口函数 如无特别说明,函数中参数的长度单位均为字节数 应用1 -应用N 时间戳 身份鉴别单点登录 访问控制 时间戳电子签章 系统 责任认定 典型密码服务层 属性证 书系统 通用密码服务 密码设备管理 电子证据 管理系统 通用率码服务层 密码设备应用接口 证书认 证系统 密码设备 基础设池 密码设备服务层 安全支撑 公钥密码基础设施应用技术体系框架 平台 图1密码设备应用接口在公钥密码基础设施应用技术体系框架中的位置 6.2设备管理类函数 6.2.1概述 设备管理类函数提供设备打开与关闭、会话创建与关闭设备信息获取、随机数产生、私钥权限获取 与释放等功能,如表9所示,各函数返回代码见附录A 表9设备管理类函数 函数名称 功能 SDF_OpenDevice 打开设备 关闭设备 SDFCloseDevice SDF_OpenSession 创建会话 SDF_CoseSession 关闭会话 SDF_GetDevieelnfo 获取设备信息 产生随机数 SDFGenerateRandom SDF_GetPrivateKeyAccessRight 获取私钥使用权限 SDF_ReleasePrivatekeyAccessRigh 释放私钥使用权限
GB/T36322一2018 6.2.2打开设备 原型 LONGSDF_OpenDevice(HANDLE*phDevieeHandle); 描述 打开密码设备 参数 phDevieeHandle[out 返回的设备句柄 0 返回值: 成功 非0 失败,返回错误代码 注:phDevieeHandle由函数初始化并填写内容 6.2.3关闭设备 原型 LONGSDF_CloseDevice(HANLEhDeviceHandle): 描述 关闭密码设备,并释放相关资源 参数 hDevieeHandle[in] 已打开的设备句柄 返回值 成功 0 非0 失败,返回错误代码 6.2.4创建会话 原型 LONGSDF_OpenSesion(HANDLEhDeviceeHandle,HANDLE*phSessionHandle) 描述 创建与密码设备的会话 参数 hDevieeHandle[in] 已打开的设备句柄 phSessionHandle[out] 返回与密码设备建立的新会话句柄 返回值 成功 失败,返回错误代码 非0 6.2.5关闭会话 原型 LONGSDF_CloseSession(HANDLEhSessionHHandle): 描述 关闭与密码设备已建立的会话,并释放相关资源 参数 hSessionHandle[in] 与密码设备已建立的会话句柄 返回值 成功 失败,返回错误代码 非0 6.2.6获取设备信息 原型 LONGSDF_GetDevicelnfo HANDLEhSessionHandle. DEVICEINF(O stDevicelnfo):; 关pst 描述 获取密码设备能力描述 参数 与设备建立的会话句柄 hSessionHandle[in pstDevieelnfo[oug 设备能力描述信息,内容及格式见设备信息定义 返回值 成功 非0 失败,返回错误代码 6.2.7产生随机数 renerateRandom 原型 LONGSDFGer
GB/36322一2018 HANDLEhSessionHandle, ULONGuil.ength. BYTE关pucRandom); 获取指定长度的随机数 描述 参数 hSessionHandle[in 与设备建立的会话句柄 uiLength[in 获取的随机数长度 缓冲区指针,用于存放获取的随机数 pucRandom[out 返回值: 成功 非0 失败,返回错误代码 6.2.8获取私钥使用权限 LONGSDF_GetPrivatekeyAccessRight 原型: HANDLESessionHandle. UIONGuiKeylndex, 1ssword PsTRpuePas ULONGuiPwdlL.ength); 描述 获取密码设备内部存储的指定索引私钥的使用权 参数: hSessionHandleCin] 与设备建立的会话句树 密码设备存储私钥的索引值 uikKeylndex[in puePassword[in 私钥访问控制码 uiPwdl.ength[in] 私钥访问控制码长度,不少于8字节 返回值 成功 非0 失败,返回错误代码 注:本标准涉及密码设备存储的密钥对索引值的起始索引值为1,最大为n,密码设备的实际存储容量决定n值 6.2.9释放私钥使用权限 原型: LONGSDF_ReleasePrivateKeyAccessRRight HANDLEhSessionHandle ULONGuiKeyIndex): 描述 释放密码设备存储的指定索引私钥的使用授权 参数 hSessionHandle[in 与设备建立的会话句柄 密码设备存储私钥索引值 uikKeylndex[in 返回值 成功 失败,返回错误代码 非0 6.3密钥管理类函数 6.3.1概述 密钥管理类函数提供密钥的生成和导人导出等功能,包括签名公钥和加密公钥的导出、非对称密钥 对的产生并输出、会话密钥的生成并输出、会话密钥的导人、数字信封转换、密钥协商参数的生成并输 出、会话密钥的计算、,IKE工作密钥的计算、IPSEC会话密钥的计算、SSL工作密钥的计算以及会话密 钥的销毁等函数,如表10所示,各函数返回代码见附录A
GB/T36322一2018 表10密钥管理类函数 功能 函数名称 SDF_ExportSignPublicKey_RSA 导出RRsA签名公钥 SDF_ExportEncPublicKey_RSA 导出RSA加密公钥 SDF_GeneratekKeyPair_RSA 产生RSA非对称密钥对并输出 SDF_GenerateKeywWithIPK_RSA 生成会话密钥并用内部RSA公钥加密输出 生成会话密钥并用外部RsA公钥加密输出 SDF_GenerateKeyWithEPK_RSA sywithISKRSA 导人会话密钥并用内部RSA私钥解密 SDF_lmportkey SDF_ExchangcDigitEnveopeBasecOnRsA 基于RSA算法的数字信封转换 SDF_ExportSignPubicKey_Ecc 导出EcC签名公钥 SDF_ExportEncPublicKey_ECC 导出ECC加密公钥 SDF_GenerateKeyPair_ECC 产生ECC非对称密钥对并输出 SDF_GenerateKeyWithlPK_ECC 生成会话密钥并用内部ECC公钥加密输出 生成会话密钥并用外部cc公钥加密输出 SDF_GenerateKeyWithEPK_CC ywith1SK_:cc 导人会话密钥并用内部EcC私钥解密 SDF_lmportkey GenerateAgreementDatawithEcc 生成密钥协商参数并输出 SDF_GenerateKeywithECcC 计算会话密钥 SDF_GenerateAgreementDataAndKeywWithECC 产生协商数据并计算会话密钥 SDF_ExchangeDigitEnveopeBaseOnECC 基于ECC算法的数字信封转换 SDF_GeneratekKeywithKEK 生成会话密钥并用密钥加密密钥加密输出 导人会话峦钥并用密钥加密密钥解憎 lmportKeywithKEK 计算IKE工作密钥 GeneratekKeywithlKE GenerateKeywithEPK_IKE 计算IKE工作密钥并用外部Ecc公钥加密输出 SDF_GenerateKeywithlPSEC 计算IPSEC会话密钥 SDF_GeneratekeywithEPK_IPSE 计算IPSEC会话密钥并用外部ECC公钥加密输出 SDF_GenerateKeywithSSl 计算SSL.工作密钥 SDF_GenerateKeywithEPK_SSL 计算SSL.工作密钥并用外部CC公钥加密输出 计算ssL工作密钥(ECDHE) SDF_GenerateKeywithECDHE_SSL sDFGetrtkwihEPK_BCDHESsL 计算ssL工作密钥并用外部Ecc公钥加密输出(EcDHE: SDFDestroykey 销毁会话密钥 6.3.2导出RSA签名公钥 L(ONGSDF_ExportSignPubliekKey_RSA( 原型: HANDLEhSessionHandle ULONGiKeylndex RSArefPublieKey*pucPublieKey); 描述 导出密码设备内部存储的指定索引位置的签名公钥 10
GB/36322一2018 参数: hSessionHandle[in 与设备建立的会话句柄 uiKeylndex[in 密码设备存储的RSA密钥对索引值 pucPubicKey[out] RSA公钥结构 返回值: 成功 0 非0 失败,返回错误代码 6.3.3导出RSA加密公钥 LoNGsDF_ExportEnePubieKey_RsA 原型: HANDLESessionHandle, UIONGuiKeylndex, RsArelPubieKey*puePubieKe); 描述 导出密码设备内部存储的指定索引位置的加密公钥 hSessionHandlein 参数: 与设备建立的会话句柄 uiKeylndexCin] 密码设备存储的RSA密钥对索引值 RSA公钥结构 puePublieKey[out 返回值: 成功 非0 失败,返回错误代码 6.3.4产生RSA密钥对并输出 原型 LONGsSDF_GeneratekeyPair_RSA( HANDLEhSessionHandle, UL(ONGuiKeyBits, RSArefPublickey*pucPublickey. RSArefPrivatekey关pucPrivatekey); 描述 请求密码设备产生指定模长的RsA密钥对 参数 hSessionHandle[inm 与设备建立的会话句柄 uikeyBits[in] 指定密钥模长 pucPublicKey[out] RsA公钥结构 puePrivateKey[out RsA私钥结构 返回值 0 成功 非o 失败,返回错误代码 6.3.5生成会话密钥并用内部RSA公钥加密输出 原型 LONNGSDF_GeneratekeywithIPK_RSA HANDLEhSessionHandle ULONGuiIPKIndex" ULONGuiKeyBits, BYTE关puekey ULONG*puikeyLength HANDLE关phKeyHandle); 描述: 生成会话密钥并用指定索引的内部加密公钥加密输出,同时返回密钥句柄 参数: hSessionHandle[in 与设备建立的会话句柄 uilPKIndex[in] 密码设备内部存储公钥的索引值 1
GB/T36322一2018 uikKeyBits[in 指定产生的会话密钥长度 pucKey[out 缓冲区指针,用于存放返回的密钥密文 puiKeyLength[out 返回的密钥密文长度 返回的密钥句柄 phKeyHandle[out] 返回值 成功 非0 失败,返回错误代码 注:公钥加密数据时填充方式与PKCS#1vl.5相同 6.3.6生成会话密钥并用外部RsA公钥加密输出 LONGsDF_GeneratekeywithEPK_RSA 原型 HANDLEhSessionHandle ULONGuikKeyBits, RSArefPublicKey*pucPublicKey. BYTE*puckKey UIONG *puikeyLength HANDLE关phKeyHandle); 生成会话密钥并用外部公钥加密输出,同时返回密钥句柄 描述 参数 hSessionHandle[in] 与设备建立的会话句柄 uiKeyBits[in] 指定产生的会话密钥长度 puePublickey[in] 输人的外部RSA公钥结构 pucKey[out 缓冲区指针,用于存放返回的密钥密文 puiKeylLength[out 返回的密钥密文长度 phKeyHandle[out] 返回的密钥句柄 返回值 成功 非0 失败,返回错误代码 注;公钥加密数据时填充方式与PKcs#1.5相同 6.3.7导入会话密钥并用内部RsA私钥解密 L(ONGSDF_Importkeywith1SK_RsA 原型: HANDLEhSessionHandle ULONGuiISKIndex BYTE*puckKey ULONGpuikeyLength HANDLE*phKeyHandle); 描述 导人会话密钥并用内部私钥解密,同时返回密钥句柄 与设备建立的会话句柄 参数 hSessionHandle[in] 密码设备内部存储加密私钥的索引值,对应于加 uiSKIndexin 密时的公钥 pueKey[Lin 缓冲区指针,用于存放输人的密钥密文 puiKeyL.ength[in 输人的密钥密文长度 phKeyHandle[out 返回的密钥句柄 返回值 成功 非0 失败,返回错误代码 注;填充方式与公钥加密时相同 12
GB/36322一2018 6.3.8基于RSA算法的数字信封转换 原型: LONGSDF_ExchangeDigitEnvelopeBaseOnRSA HANDLEhSessionHandle ULOGuiKeyIndex RSArefPublickey并pucPublicKey BYTE关pucDEInput, ULONGuiDELength, BYTE *pwDEou" utput, ULONG关puiDEL.ength) 描述: 将由内部加密公钥加密的会话密钥转换为由外部指定的公钥加密,可用于数字信封 转换 参数 hSessionHandle[in 与设备建立的会话句柄 uikKeylndex[in] 密码设备存储的内部RsA密钥对索引值 pucPublicKey[in] 外部RSA公钥结构 ucDEInput[in] 缓冲区指针,用于存放输人的会话密钥密文 puG uiDELength[inm] 输人的会话密钥密文长度 缓冲区指针,用于存放输出的会话密钥密文 pueDEOutput[out puiDEL.ength[out 输出的会话密钥密文长度 返回值 成功 非o 失败,返回错误代码 6.3.9导出BCC签名公钥 原型: LONGSDF_ExportSignPublieKey_ECC HANDLEhSessionHandle, ULONGuiKeylndex ECCrefPubieKey*puePublieKey); 描述 导出密码设备内部存储的指定索引位置的签名公钥 参数 hSessionHandle[in 与设备建立的会话句柄 uikeylndex[in] 密码设备存储的ECC密钥对索引值 pucPublicKeyLout ECC公钥结构 C 返回值 成功 非0 失败,返回错误代码 6.3.10导出EcC加密公钥 原型: LONGSDF_ExportEnePublicKey_ECC HANDLEhSessionHandle ULOGuiKeyIndex ECCrefPublicKey关pucPublicKey); 导出密码设备内部存储的指定索引位置的加密公钥. 描述: 参数: hSessionHandle[in 与设备建立的会话句柄 uikKeylndex[in 密码设备存储的ECC密钥对索引值 13
GB/T36322一2018 puePublicKey[out] ECC公钥结构 返回值 0 成功 非0 失败,返回错误代码 6.3.11产生CC密钥对并输出 原型 L.ONGSDF_GeneratekKeyPair_ECC HANDLESessionHandle, ULONGuiAlgID ULONGuiKeyBits, *pucPaubliekey. ECCrefPublicKey ECCrefPrivateKey*puePrivatekey); 描述 请求密码设备产生指定类型和模长的ECC密钥对 参数: hSessionHandle[in] 与设备建立的会话句柄 uiAlglDin] 指定算法标识 uiKeyBits[in] 指定密钥长度 pucPublicKey[out] E:CC公钥结构 pucPrivateKeyLout ECC私钥结构 返回值 成功 非0 失败,返回错误代码 6.3.12生成会话密钥并用内部ECC公钥加密输出 原型 L(ONGSDF_GeneratekeywithlPK_Ecc( HANDLEhSessionHandle ULONGuiPKIndex UIL.ONGuikeyBits ECCCipher关pucKey HANDLE*phKeyHandle); 描述 生成会话密钥并用指定索引的内部ECC加密公钥加密输出,同时返回密钥句柄 参数 hSessionHandle[in] 与设备建立的会话句柄 uilPKIndex[in] 密码设备内部存储公钥的索引值 uiKeyBits[in] 指定产生的会话密钥长度 puckey[out] 缓冲区指针,用于存放返回的密钥密文 phKeyHandle[out] 返回的密钥句柄 返回值 成功 非0 失败,返回错误代码 6.3.13生成会话密钥并用外部cC公钥加密输出 原型 LONGSDF_GeneratekKeywithEPK_EcC HANDLEhSessionHandle ULONGiKeyBits UL.ONGuiAlgID. ECCrefPublicKey*puePublieKey, ECCCipher*puckKey, 14
GB/36322一2018 HANDLE*phKeyHandle); 描述 生成会话密钥并用外部ECC公钥加密输出,同时返回密钥句柄 参数: hSessionHandle[in 与设备建立的会话句柄 uiKeyBits[in] 指定产生的会话密钥长度 外部ECC公钥的算法标识 uiAlgID[im pucPubickKey[in] 输人的外部ECC公钥结构 缓冲区指针,用于存放返回的密钥密文 pucKey[ou] phKeyHandle[ou 返回的密钥句柄 返回值 成功 非0 失败,返回错误代码 6.3.14导入会话密钥并用内部CC私钥解密 LONGSDF_ImportKeyWithISK_ECC 原型: HANDLEhSessionHandle, UIO)NGuiSKIndex, ECCCipher关pucKey, HANDLE*phKeyHandle); 导人会话密钥并用内部EcC加密私钥解密,同时返回密钥句柄 描述: 参数 与设备建立的会话句柄 hSessionHandlein] uiISKIndex[in] 密码设备内部存储加密私钥的索引值,对应于加 密时的公钥 缓冲区指针,用于存放输人的密钥密文 pucKeyin 返回的密钥句柄 phKeyHHandle[out] 返回值 成功 失败,返回错误代码 非0 6.3.15生成密钥协商参数并输出 原型 LONGsDF_GenerateAgreementDatawithECCc( HANDLEhSessionHandle UIOGuiSKIndex ULONGuiKeyBits BYTE*pucSponsorID. UIONGuiSponsorIDLength. ECCrefPubicKey*pueSponsorPubickey ECCrefPubliekey关pucSponsorTmpPubliekey. HANDLE*phAgreementHandle); 描述: 使用EEcC密钥协商算法,为计算会话密钥而产生协商参数,同时返回指定索引位置 的ECC公钥、临时ECC密钥对的公钥及协商句柄 参数 hSessionHandle[in 与设备建立的会话句柄 uiSKIndex[in 密码设备内部存储加密私钥的索引值,该私钥用 于参与密钥协商 要求协商的密钥长度 uikKeyBits[in] pucSponsorID[in 参与密钥协商的发起方ID值 15
GB/T36322一2018 uiSponsorIDL.ength[in] 发起方ID长度 pueSponsorPublieKey[ou] 返回的发起方ECC公钥结构 pucSponsorImpPublieKey[out 返回的发起方临时ECC公钥结构 phAgreementHandle[ou 返回的协商句柄,用于计算协商密钥 返回值 成功 非0 失败,返回错误代码 注协商会话密钥时,本函数首先由协商的发起方调用 6.3.16计算会话密钥 原型 IONGSDF_GenerateKeyWitECC( HANDLEhSessionHandle, BYTE关pucResponseID. UIONGiResponselDLength ECCrefPublicKey关pucResponsePublicKey ECCrefPublicKey关pucResponseTmpPublicKey, HANDLEhAgreementHandle HANDLE关phKeyHandle); 使用EcC密钥协商算法,使用自身协商句柄和响应方的协商参数计算会话密钥,同 描述 时返回会话密钥句柄 参数: hSessionHandle[in 与设备建立的会话句柄 pucResponselDin 外部输人的响应方ID值 外部输人的响应方D长度 uiResponseIDL.ength[in] 外部输人的响应方BcC公钥结构 pueResponsePubieKey[in] pucResponseTmpPubliKey[in] 外部输人的响应方临时ECC公钥结构 hAgreem nentHandle[in] 协商句柄用于计算协商密钥 phKeyHandlelout 返回的密钥句柄 返回值 成功 非0 失败,返回错误代码 注:本函数由协商的发起方在获得响应方的协商参数后调用 使用sM2算法计算会话密钥的过程参见GBT 35276 会话密钥计算完成后,协商句柄被销毁,为协商句柄分配的内存等资源也被释放 6.3.17产生协商数据并计算会话密钥 mentDataAndKeyWitECC 原型 LONGSDF_GenerateA green HANDLEhSessionHandle UONGuiSKIndex UL.ONGuiKeyBits BYTE seID. *pucRepons ULONGuiResponselIDL.e engh BYTE*pucSponsorlID. ULONGuiSponsorlDL ength, ECCrefPubliekKey关pucSponsorPubliekey, EcCCrefPublicKey*pucSponsorTmpPubieKey sePublieKey EcCrelPubieKeypucRe esponsG 16
GB/36322一2018 ECCrefPubliekKey关pue ucReponsecTmpPablicKey HANDLE*phKeyHandle); 描述: 使用ECC密钥协商算法,产生协商参数并计算会话密钥,同时返回产生的协商参数 和密钥句柄 参数: hSessionHandle[in 与设备建立的会话句柄 uiISKIndex[in] 密码设备内部存储加密私钥的索引值,该私钥用 于参与密钥协商 uiKeyBits[in] 协商后要求输出的密钥长度 pucResponselD[im 响应方ID值 uiResponseIDL.ength[in] 响应方ID长度 sponsorID[in 发起方ID值 pucS 发起方ID长度 isponsorIDL.ength[in] pucSponsorPublieKey[in 外部输人的发起方CC公钥结构 外部输人的发起方临时ECC公钥结构 pueSponsorIhpPubliekey[inm 1sePublicKey[out] 返回的响应方ECC公钥结构 pucReSponS neResponseTmpPobieKey[oul 返回的响应方临时CC公钥结构 Ppu phKeyHandle[out] 返回的密钥句柄 返回值 成功 非0 失败,返回错误代码 注:本函效由响应方调用 使用sM2算法计算会话密钥的过程参见GB/T35276, 6.3.18基于Ecc算法的数字信封转换 原型 LONGSDF_ExchangeDigitEnvelopeBaseOnECc HANDLEhSessionHandle ULONGiKeylndex, ULONGuiAlgID ECCrefPublieKey*puePubliekey ECCcCipher关pucEneDataln. Ecccipher"pucEmeDataOun). 描述 将由内部加密公钥加密的会话密钥转换为由外部指定的公钥加密,可用于数字信封 转换 参数 hSessionHandle[in 与设备建立的会话句柄 uikeylndex[in 密码设备存储的ECC密钥对索引值 uiAlgID[in] 外部ECC公钥的算法标识 puePubliekey[in 外部ECcC公钥结构 EneDataln[in] 缓冲区指针,用于存放输人的会话密钥密文 pucl 缓冲区指针,用于存放输出的会话密钥密文 rEncDataOut[out pucl 返回值 成功 非0 失败,返回错误代码 6.3.19生成会话密钥并用密钥加密密钥加密输出 原型: LONGSDF_GenerateKeywithKEK HANDLEhSessionHlandle 17
GB/T36322一2018 ULONGikKeyBits, UL.ONGuiAlgID. ULONGuiKEKIndex, BYTE *puekey. UL.ONG关puiKeyL.ength HANDLE*phKeyHandle); 描述 生成会话密钥并用密钥加密密钥加密输出,同时返回密钥句柄 参数 hSessionHandle[in] 与设备建立的会话句柄 uikKeyBits[in 指定产生的会话密钥长度 uiAlgID[in] 算法标识,指定对称加密算法 uiKEKIndex[inm] 密码设备内部存储密钥加密密钥的索引值 缓冲区指针,用于存放返回的密钥密文 pucKey[ou puiKeyl.ength[ou 返回的密钥密文长度 phKeyHandle[ou] 返回的密钥句柄 返回值: 成功 0 非0 失败,返回错误代码 注:加密模式为CB模式 导入会话密钥并用密钥加密密钥解密 6.3.20 原型 LONGsDF_ImportKeywithKEK HANDLEhSessionHandle. ULONGuiAlgID. UI.ONGuiKEKIndex BYTE关pueKey. UI.ONGpuiKeyl.ength, HANDLE关phKeyHandle); 描述 导人会话密钥并用密钥加密密钥解密,同时返回会话密钥句柄 参数 hessionHandle[in 与设备建立的会话句柄 uiAlglD[in] 算法标识,指定对称加密算法 uiKEKIndex[inm 密码设备内部存储密钥加密密钥的索引值 puckey[in] 缓冲区指针,用于存放输人的密钥密文 puiKeyl.ength[in 输人的密钥密文长度 返回的密钥句柄 phKeyHandle[Lout] 返回值: 成功 0 非0 失败,返回错误代码 注;加密模式为ECB模式 6.3.21计算IKE工作密钥 原型 L.ONGSDF_GenerateKeywithlKE essionHandle HANDLEhSee BYTE*pucSponsorNonce, U.ONGuiSponsorNonceL.ength. BYTE seNonce "pueRe espons 18
GB/36322一2018 UIoNGuiResponseNo oncelength BYTE*pueSponsorCookie, ULONGiSponsorCookieL lLength BYTE*pucResponseCookie, ULONGuReponscCookielength ULONGiPrfAlglD, ULONGiKeyBitsD. HANDLE*phKeyHandleD U1ONGuikeyBitsA. HANDLE关phkeyHandleA. U1ONGuikeyBitsE. HANDLE*phKeyHandleE) 描述: 使用IKE一阶段(主模式)交换得到的密钥计算参数计算IKE工作密钥,同时返回 工作密钥句柄 hSession s 参数: landle[Lin 与设备建立的会话句柄 pucSponsorNonce[in 发起方nonce载荷主体 uiSponsorNonceLength[in 发起方nonce载荷主体长度 pucResponseNonce[in] 响应方nonce载荷主体 iResponseNoneeLength[in 响应方nonce载荷主体长度 pueSponsorCookie[in 发起方cookie iSponsorCookiel.ength[in 发起方cookie长度 pucResponseCookie[in] 响应方cookie iResponseCookieLength[in 响应方cookie长度 uiPrfAlgID[in PRF算法标识 uikKeyEBitsD[in SKEYID_d密钥长度 返回的sKEYID_d密钥句柄 phkeyHandleD[out ikeyBitsA[in] SKEYID_a密钥长度 返回的SKEYID_a密钥句柄 phKeyHandleA[ou门 uiKeyBitsE[in] SKEYID_e密钥长度 phkeyHandleE[out 返回的SKEYID_e密钥句柄 返回值 成功 非0 失败,返回错误代码 注,IKE一阶段(主模式)消息3和消息4交互完成后,本丽数由参与通信的双方各自调用,计算后续工作密钥 sKEYD_d.sKEYD_a,sKEYDe IKE一阶段(主模式)计算IKE工作密钥的过程参见GNM/T0022,输人的 密钥参数按颗序为Lb.Nrb.cKY1.cKYR,返回的密钥句悄按顺序为skEYD.d.sKEYDA.sKEYD _e 6.3.22计算IKE工作密钥并用外部CC公钥加密输出 LONGSDFGenerateKeywithEPKIKE( 原型: HANDLEhSessionHandle, BYTE关pucSponsorNonce U1LONGuiSponsorNoneeLength, BYTE ;eNonce, ”pucRe espons6 ULONGuuiRes seNoneelength. espons 19
GB/T36322一2018 BYTE*pucSponsorCookie ULONGuiSponsorCookiel.ength, BYTE eCookie, 关pucResponse( ULONGuiRes kesponseCookieL. Lensgth ULONGuiPrfAlgID, UlONGiEccAlgID. ECCrefPubliekey*pucPubliekKey, ULONGuiKeyBitsD. ECCCipher*puckeyD HANDLE关phKeyHandleD. ULONGiKeyBitsA ECCCipher关puckKeyA. HANDLE*phKeyHandleA. ULONGikeyBitsE ECCCipher关puekeyE HANDLE*phKeyHandleE) 描述 使用IKE一阶段(主模式)交换得到的密钥计算参数计算IKE工作密钥,并用外部 ECC公钥加密输出,同时返回工作密钥句柄 参数 hSessionHandle[in 与设备建立的会话句柄 nNonee[in 发起方nonee载荷主体 DucSponsor uiSponsorNoncel Length[in 发起方nonee载荷主体长度 eNonce[in] 响应方nonee载荷主体 pucReSponse Length[in 响应方 载荷主体长度 uiResponseNonce nonce nCookie[in 发起方cookie DucSponsor iSponsorCookiel.ength[in] 发起方cookie长度 DucRe 响应方cookie kesponseCookie[in] uiRe 1seCookiel.ength[in 响应方cookie长度 espons PRF算法标识 uiPrfAgID[in iEccAlgID[in] 外部EcC公钥的算法标识 puePublicKey[inm 输人的外部ECC公钥结构 uiKeyBitsD[in] SKEYID_d密钥长度 pucKeyD[out 缓冲区指针,用于存放返回的SKEYID_d密钥密文 phKeyHandleD[out 返回的sSKEYID_d密钥句柄 uiKeyBitsA[in] SKEYID_a密钥长度 pucKeyA[ou 缓冲区指针,用于存放返回的SKEYIDA密钥密文 phKeyHandleA[ou 返回的SKEYDa密钥句柄 uikKeyBitsE[in] SKEYID_e密钥长度 puckKeyE[ou] 缓冲区指针,用于存放返回的SKEYIDE密钥密文 phKeyHandleE[ou] 返回的sSKEYID_e密钥句柄 0 返回值: 成功 非0 失败,返回错误代码 注:IKE一阶段(主模式)消息3和消息4交互完成后,本函数由参与通信的双方各自调用,计算后续工作密钥 SKEYIDd,.sKEYIDa,sKEYID IKE一阶段(主模式)计算IKE工作密钥的过程参见GM/T0022,输人的 _e 20
GB/36322一2018 密钥参数按顺序为Nb、Nr_b,CKY-I、CKY-R,返回的密钥密文及密钥句柄按顺序为SKEYID_d,SKEYID_a、 SKEYID_e 6.3.23计算IPSC会话密钥 原型 LONGsDF_GeneratekKeywithPSEC( HANDL.EhSessionHandle BYTE关pueProtocolD. ULONGuiProtocolDL.ength BYTE关pucSpi, ULONGuiSpiLength BYTE弟pueSponsorNonce ULONGuiSponsorNoneeLength BY'TE关pucResponseNonce, ULONGuiResponseNonceLength、 HANDLEphKeyHandle, UIONGuiPrfAlglD. ULONGuiKeyBitsEnc HANDLE*phKeyHandleEne. ULONGuikeyBitsMac HANDLE*phKeyHandleMac); 描述: 使用IKE二阶段(快速模式)交换得到的密钥计算参数计算IPSEC会话密钥,同时 返回会话密钥句柄 参数 hSessionHandle[in 与设备建立的会话句柄 pucProtocolID[in 协议ID uiProtocolDL.ength[in] 协议ID长度 安全参数索引SPI pucSpi[in iSpil.ength[in] 安全参数索引SP1长度 pucSponsorNonce[in 发起方nonee载荷主体 iS Length[in 发起方nonce载荷主体长度 SponsorNoneel pucResponseNonce[in] 响应方nonce载荷主体 uiResponseNoncel.ength[in 响应方nonce载荷主体长度 hKeyHandlle[in 输人的SKEYID_4密钥句柄 PRF算法标识 uiPrfAlgID[in uikeyBitsEnc[in] 加密密钥长度 phKeyHandleEnc[out] 返回的加密密钥句柄 uiKeyBitsMac[in 杂凑密钥长度 phKeyHandleMac[out 返回的杂凑密钥句柄 返回值: 成功 非o 失败,返回错误代码 注,lIKE二阶段(快速模式)消息交互完成后,本函数由参与通信的双方各自调用,计算IPSEC会话密钥,包括用于 加密的会话密钥和用于完整性校验的会话密钥 IKE二阶段(快速模式)计算IPSEC会话密钥的过程参见 GM/T0022,输人的密钥参数按顺序为protocol,SP1、N_b,Nr_b,返回的密钥句柄按顺序为加密密钥和杂凑密 钥(用于完整性校验) 本函数在6.3.21计算IKE工作密钥函数调用之后调用,该函数返回的密钥句柄之 21
GB/T36322一2018 SKEYID_d)作为本函数输人 6.3.24计算IPSEC会话密钥并用外部EcC公钥加密输出 LONGSDF_GeneratekeywithEPK_IPsEc 原型 HANDLEhSessionHandle BYTE*pucProtocolD ULONGuiProtocolDLength BYTE*pucSpi UIONGuiSpil.ength BYTE关pucSponsorNonce. UIONGuiSposorNoncelength, BYTE关pucResponseNonce UIONGiResponseNonceLength HANDLEphKeyHandle UI.OGiPrfAlgID ULONGuiEccAlgID. EcCrefPubickey*puePublickey., ULOGuiKeyBitsEnc. ECcCipher关pueKeyEnc HANDLE*phKeyHandleEnc. UL(ONGiKeyBitsMac. ECCCipher*puckKeyMace HANDLE*phKeyHandleMae); 描述 使用IKE二阶段(快速模式)交换得到的密钥计算参数计算IPSEC会话密钥,并用 外部EcC公钥加密输出,同时返回会话密钥句柄 参数 hSessionHandle[in 与设备建立的会话句柄 pueProtocolID[in] 协议ID uiProtocolIDLength[in 协议ID长度 pucSpi[in] 安全参数索引SPI1 uiSpil.ength[in 安全参数索引SPI长度 pucSponsorNonce[in 发起方nonce载荷主体 uiSponsorNoncel.ength[in呵 发起方nonce载荷主体长度 pueResponseNonce[inm 响应方nonce载荷主体 uiResponseNonceLengt[in 响应方nonee载荷主体长度 hkeyHandle[in 输人的SKEYI_d密钥句柄 uiPrfAlgID[in] PRF算法标识 外部ECC公钥的算法标识 uiEcecAlglID[in] puePublieKey[in] 输人的外部ECC公钥结构 uiKeyBitsEnc[in 加密密钥长度 pucKeyEnc[out] 缓冲区指针,用于存放返回的加密密钥密文 phKeyHandleEne[out 返回的加密密钥句柄 杂凑密钥长度 uiKeyBitsMac[in pucKeyMac[ou] 缓冲区指针,用于存放返回的杂凑密钥密文 22
GB/36322一2018 phKeyHandleMac[ou 返回的杂凑密钥句柄 返回值: 成功 非0 失败,返回错误代码 注,IKE二阶段(快速模式)消息交互完成后,本丽数由参与通信的双方各自调用,计算IPSEC会话密钥,包括用于 加密的会话密钥和用于完整性校验的会话密钥 IKE二阶段快速模式)计算IPSEC会话密钥的过程参见 GM/T0022,输人的密钥参数按顺序为protocol.sSP,Ni_b,Nr_b,返回的密钥密文和密钥句柄按顺序为加密密 钥和杂凑密钥用于完整性校验) 本函数在6.3.21计算IKE工作密钥函数调用之后调用,该函数返回的密钥 句柄之一(sKEYD_d)作为本函数输人 6.3.25计算sSL工作密钥 原型: LONGsDF_GeneratekKeywithSsL HANDLESessionHandle. BYTE*puckeyPreMaster UIONGuiKeyPreMasterl.ength BYTE*pucClientRandom ULONGuiClientRandoml.ength BYTE*pucServerRandom. ULONGuiServerRandomLength UIOGuiPrfAlgID UIONGuiKeyBitsClientMac, HANDLE关phKeyHandleClientMac, ULOGuikeyBitsServerMac HANDLE关phKeyHandleServerMac ULONGuiKeyBitsClientEnc HANDLE关pKeyHandleClientEnc ULONGuiKeyBitsServerEnc HANDLE*phKeyHlandleServerEne); 使用ssL握手协议得到的密钥计算参数计算ssL工作密钥,同时返回工作密钥 描述 句柄 参数: hSessionHandle[in] 与设备建立的会话句柄 puckKeyPreMaester[im 预主密钥pre-" masterseCret 预主密钥长度 uiKeyP'reMasterlLength[in] pucClientRandom[in 客户端随机数 客户端随机数长度 uiClientRandomlength[in] pucServerRandomin 服务端随机数 iServerRandomLengthCin 服务端随机数长度 PRF算法标识 iPrfAlgID[in] iKeyBitsClientMac[in 客户端杂凑密钥长度 phKeyHandleClientMac[out 返回的客户端杂凑密钥句柄 uiKeyEBitsServerMac[in] 服务端杂凑密钥长度 phKeyHandleServerMac[out 返回的服务端杂凑密钥句柄 客户端加密密钥长度 uiKeyBitsCientEnc[in phKeyHandleClientEnc[out 返回的客户端加密密钥句柄 23
GB/T36322一2018 uiKeyBitsServerEne[in 服务端加密密钥长度 phKeyHandleServerEnc[ou] 返回的服务端加密密钥句柄 返回值: 成功 非0 失败,返回错误代码 注:SSL握手协议消息交互完成后,本函数由参与通信的双方各自调用,计算SL记录层协议的工作密钥并返回密 钥句柄:client_write_MAc-cret(客户端杂凑密钥),serer_write_MAc_crt(服务端杂凑密钥),dlien_write key(客户端加密密钥)serer_write-_key(服务端加密密钥) ssL计算工作密钥的过程参见GMM/T0024 6.3.26计算SSL工作密钥并用外部CC公钥加密输出 原型 I(ONGSDF_GenerateKeywithEPK_SSL HANDLESessionHandle, ”pueKeyPreMaster BYTE uL.oNGuKsyPreMastelengh *pucChientRandom BYTE ULONGiClientRandoml.ength ”pucServerRandom BYTE ULONGuiServerRandomLength ULONGuiPrfAlgID, UIONGuiEccAlgID. EcCrelPabiekKey*puePblieKe ey, ULONGuikKeyBitsClientMac., ECCCipher*puckeyClientMae HANDLE*phKeyHandleClientMae. ULONGuiKeyBitsServerMac, ECCCipher ucKeyServerMac, *pu *phKeyHandleser HANDLE rverMac ULONGuiKeyBitsClientEnc, *puekeyClientEne ECCCipher HANDLE*phKeyHandleClientEnc. ULONGuikKeyBitsServerEnc., ECCCipher*puckKeyServerEne HANDLE*phKeyHandleServerEnc); 描述 使用SSL握手协议得到的密钥计算参数计算SSL工作密钥,并用外部ECC公钥加 密输出,同时返回工作密钥句柄 参数 hSessionHandle[in 与设备建立的会话句柄 pucKeyPreMaster[inm 预主密钥pre_ masterSecret csyPreMas uiKe 预主密钥长度 terlength[in icClientRandom[in 客户端随机数 puc uiClientRandoml.ength[in 客户端随机数长度 pueServerRandom[in 服务端随机数 uiServerRandoml.ength[in 服务端随机数长度 PRF算法标识 uiPrfAlgID[in uiEceAlgID[in] 外部ECC公钥的算法标识 24
GB/36322一2018 puePubliekey[in] 输人的外部ECC公钥结构 uikeyIBitsCientMac[in] 客户端杂凑密钥长度 yClient 缓冲区指针,用于存放返回的客户端杂凑密钥 Key nnMaec[Couu pucl phKeyHandleClientMac[out 返回的客户端杂凑密钥句柄 服务端杂凑密钥长度 iKeyBitsServerMac[in] pucKeyServerMac[out 缓冲区指针,用于存放返回的服务端杂凑密钥 phKeyHandleServerMac[out 返回的服务端杂凑密钥句柄 wkKeyBitsCihenEme[in 客户端加密密钥长度 puckKeyClientEne[ou] 缓冲区指针,用于存放返回的客户端加密密钥 phKeyHandleClientEnc[out 返回的客户端加密密钥句柄 ikeyBitsServerEnc[in 服务端加密密钥长度 pucKeyServerEne[out 缓冲区指针,用于存放返回的服务端加密密钥 phKeyHandleServerEne[out 返回的服务端加密密钥句柄 返回值 成功 非0 失败,返回错误代码 注;ssL.握手协议消息交互完成后,本函数由参与通信的双方各自调用,计算ssL.记录层协议的工作密钥并返回密 钥密文和密钥句柄:client_write_MAC_seeret(客户端杂凑密钥),server_write_MAC_secret(服务端杂凑密钥, dlent_write-_key客户端加密密钥),server_write_key(服务端加密密钥) ssL 计算工作密钥的过程参见 GM/T0024 6.3.27计算ssL工作密钥(ECDHE 原型: IONGSDFGenerateKeywithECDHE_SSL HANDLEhSessionHandle, HANDLEphKeyHandlePreMaster BYTE关pucClientRandom ULONGuiClientRandomlength. BYTE关pucServerRandom ULONGuiServerRandomlength, ULONGuiPrfAlglD. ULONGuiKeyBitsClientMac HANDLE*phKeyHandleClientMac. ULONGuiKeyBitsServerMac, HANDLE*phKeyHandleServerMac. UIONGuiKeyBitsClientEne HANDLE关phKeyHandleClientEnc, UL.ONGuiKeyBitsServerEnc. HANDLE*phKeyHandleServerEne) 描述 使用SSL握手协议得到的密钥计算参数计算SSL工作密钥,同时返回工作密钥 句柄 参数: hSessionHandle[in] 与设备建立的会话句柄 phKeyHandlePreMaster[in 预主密钥pre_master_secret '密钥句柄 pucCitemlRandom[im 客户端随机数 uiClientRandoml.ength[in 客户端随机数长度 25
GB/T36322一2018 pucSsererRandom[im 服务端随机数 uiServerRandoml.ength[in] 服务端随机数长度 uiPrfAlgID[inm PRF算法标识 uiKeyBitsClientMac[in 客户端杂凑密钥长度 返回的客户端杂凑密钥句柄 phKkeyHandleClientMac[out KeyBitsServerMac[in] 服务端杂凑密钥长度 uiKe phKkeyHandleServerMac[out 返回的服务端杂凑密钥句柄 uiKeyBitsClientEne[in] 客户端加密密钥长度 phkeyHandleClientEnec[out] 返回的客户端加密密钥句柄 uiKeyBtsServerEne[in 服务端加密密钥长度 phKeyHandleServerEne[out] 返回的服务端加密密钥句柄 返回值 成功 非0 失败,返回错误代码 注ssL握手协议消息交互完成后,本函数由参与通信的双方各自调用,计算ssL记录层协议的工作密钥并返回密 钥句柄:clien_write_MAC_secret(客户端杂凑密钥),server_write_MAC_seeret服务端杂凑密钥),client_write lkey(客户端加密密钥),server-write_key服务端加峦密钥) ssL.计算工作密钥的过程参见GM/0024 本丽 数适用于ECDHE的密钥交换方式,该方式的预主密钥采用sM2密钥协商产生并且密码设备只返回密钥 句柄 6.3.28计算SsL工作密钥并用外部Ecc公钥加密输出(E:CDE) 原型 LONGSDF_GeneratekeywithEPK_ECDHE_SsL( HANDLEhSessionHandle. HHANDIEphKeyHandlePreMaster, BYTE*pucClientRandom. UIONGuiClientRandomlength, BYTE*pucServerRandom ULONGuiServerRandomLength, ULONGiPrfAlgID UIONGiEccAlglID. pucPubieKey ECCrefPublicKey关 ULONGuiKeyBitsClientMac, ECCCipher *puekeycCiemtMae HANDLE关phKeyHandleClientMac ULONGuiKeyBitsServerMac, *pueKeyServerMae. ECCCipher HANDLE关phKeyHandleServerMac, UIONGuiKeyBitsClientEnc, ECCCipher *pucKeyClientEne. HANDLE*phKeyHandleClientEnc. ULONGuiKeyBitsServerEne ECCCipher*puckKeyServerEnc., HANDLE*phKeyHandleServerEne) 描述 使用sSL握手协议得到的密钥计算参数计算SSL工作密钥,并用外部ECcC公钥加 26
GB/36322一2018 密输出,同时返回工作密钥句柄 参数 hSessionHandle[in 与设备建立的会话句柄 phKeyHandlePreMaster[im 预主密钥pre-_master_secret密钥句柄 pucClientRandomCin 客户端随机数 客户端随机数长度 uiClientRandomlengthin 服务端随机数 pucServerRandom[in] iServerRandomlength[in] 服务端随机数长度 iPrfAlgID[in] PRF算法标识 外部ECC公钥的算法标识 iEcecAlgID[inm pucPubickKey[in] 输人的外部ECC公钥结构 客户端杂凑密钥长度 iKeyBitsClientMac[in puckKeyClientMac[oug 缓冲区指针,用于存放返回的客户端杂凑密钥 phKeyHandleClientMac[out 返回的客户端杂凑密钥句柄 服务端杂凑密钥长度 uiKeyBitsServerMacin] 缓冲区指针,用于存放返回的服务端杂凑密钥 pucKeyServerMac[out] 返回的服务端杂凑密钥句柄 phKeyHandleServerMac[out] uikeyBtsCientEnc[in] 客户端加密密钥长度 ClientEnc[out] 缓冲区指针,用于存放返回的客户端加密密钥 pucKey phKeyHandleCientEnc[ou 返回的客户端加密密钥句柄 KeyBitServerEne[in uiK 服务端加密密钥长度 pucKeyServerEnc[out 缓冲区指针,用于存放返回的服务端加密密钥 返回的服务端加密密钥句柄 phKeyHlandleServerEncLout 返回值 成功 非o 失败,返回错误代码 注;ssL握手协议消息交互完成后,本丽数由参与通信的双方各自调用,计算ssL记录层协议的工作密钥并返回密 钥密文和密钥句柄:client_write_MAC_secret(客户端杂凑密钥). )server_write_MAC_seere服务端杂凑密钥). (客户端加密密钥). rite_key服务端加密密钥 ssL计算工作密钥的过程参见 client_writekey ,server_wri GM/T0024 本函数适用于EcDHE的密钥交换方式,该方式的预主密钥采用sM2密钥协商产生并且密码设 备返回密钥密文和密钥句柄 6.3.29销毁会话密钥 原型 LONGSDF_Destroykey HANDLEhSessionHandle, HANDLEhKeyHandle); 描述 销毁会话密钥,并释放为密钥句柄分配的内存等资源 与设备建立的会话句柄 参数: hSessionHandlein] 输人的密钥句柄 hKeyHHandle[in 返回值 成功 0 失败,返回错误代码 非0 注:本函数在对称算法运算完成后调用 6.4非对称算法运算类函数 6.4.1概述 非对称算法运算类函数提供RSA公私钥运算、EECC签名验证和加密等功能,如表11所示,各函数 27
GB/T36322一2018 返回代码见附录A 表11非对称算法运算类函数 函数名称 功能 外部公钥RsA运算 SDF_ExternalPubliekeyOperation_RSA RsA sDF_InternalPubliekeyoperntion_ 内部公钥RsA运算 SDFInternalPrivateKeyOperationRSA 内部私钥RsA运算 SDFExternalVerify_CC 外部密钥ECC验证 SDF_InternaISign_ECC 内部密钥ECC签名 SDF_InternalVerify_ECC 内部密钥ECC验证 外部密钥ECC加密 SDF_ExternalEnerypt_CC 6.4.2外部公钥RsA运算 原型 LONGSDFExternalPublicKeyOperation_RSA HANDLEhSessionHandle. RSArefPubieKey*puePubliekey BYTE*pucDatalnput ULONGuilnputLength. BYTE*pucdDaouput ULONG Lngth); 关puiOutputl 描述: 指定使用外部公钥对数据进行运算 参数 hSessionHandle[in 与设备建立的会话句柄 uePabiekey[inm] 外部RSA公钥结构 puc 缓冲区指针,用于存放输人的数据 pucDatalnput[in 输人的数据长度 uilnapulength[in pucDataOutput[out 缓冲区指针,用于存放输出的数据 puiOutputLength[ou 输出的数据长度 0 返回值: 成功 非0 失败,返回错误代码 注:数据格式由应用层封装 6.4.3内部公钥RsA运算 原型 LONGSDF_InternalPubliekeyOperation_RSA HANL.EsesionHandle. ULONGiKeylndex BYTE*pucD )atalnput ULONGilnputLength, BYTE )ataO *pucDai )utput ULONG*puiOutputlLength); 描述 使用内部指定索引的公钥对数据进行运算 参数 hSessionHandle[in] 与设备建立的会话句柄 28
GB/36322一2018 uikeylndex[in] 密码设备内部存储公钥的索引值 pucDatalnput[in 缓冲区指针,用于存放外部输人的数据 uilnputL.ength[in] 输人的数据长度 pueDataOupu[ou] 缓冲区指针,用于存放输出的数据 输出的数据长度 puiOutputl.ength[ou 返回值 成功 失败,返回错误代码 非0 注:索引范围仅限于内部签名密钥对,数据格式由应用层封装 6.4.4内部私钥SA运算 LONGsSDF_lnternalPrivateKeyOperation_RSA 原型: HANDLEhSessionHandle, ULONGuikeylndex, BYTE关pucDatalnput ULONGuinputLength、 BYTE*pucDataOutput ULONG关puiOutputLength); 使用内部指定索引的私钥对数据进行运算 描述 参数 与设备建立的会话句柄 hSessionHandleCin] uikeylndex[in] 密码设备内部存储私钥的索引值 缓冲区指针,用于存放外部输人的数据 pucDatalnputCin] uilnputlength[in] 输人的数据长度 缓冲区指针,用于存放输出的数据 pucDataOutput[out] 输出的数据长度 puiOutputlength[out 返回值 成功 非0 失败,返回错误代码 注索引范围仅限于内部签名密钥对,数据格式由应用层封装 6.4.5外部密钥CC验证 原型: lONGSDF_ExternalVerify_ECcCc HANDLEhSessionHandle. UL.ONGuiAlglID. EcCrelPubiekey*puePbieke ey BYTE*pwDaali lnput ULONGuiln lple .ength ECCSignature *pueSignature); 描述 使用外部EcC公钥对EcC签名值进行验证运算 参数: hSessionHandle[in 与设备建立的会话句柄 uiAlgID[inm 算法标识,指定使用的EcC算法 puePublickKey[in 外部ECC公钥结构 pucData[inm 缓冲区指针,用于存放外部输人的数据 输人的数据长度 uiDatal.ength[in] pucSignature[inm 缓冲区指针,用于存放输人的签名值数据 29
GB/T36322一2018 返回值 成功 非0 失败,返回错误代码 注:输人数据为待签数据的杂凑值 当使用SM2算法时,该输人数据为待签数据经过SM2签名预处理的结果,预 处理过程参见GB/T35276 6.4.6内部密钥cC签名 原型 LONGsDF_Internalsign_ECC( HANDLEhSessionHHandle UL.ONGiSKIndex BYITE*pucData" UL.ONGuiDataL.ength. ECCSignature关pucSignature); 使用内部EcC私钥对数据进行签名运算 描述: 与设备建立的会话句俩 参数 hSessionHandlein] 密码设备内部存储的EcC签名私钥的索引值 uiSKIndex[in] pucData[Cin 缓冲区指针,用于存放外部输人的数据 uiDatalLength[in] 输人的数据长度 pucSignature[oul 缓冲区指针,用于存放输出的签名值数据 返回值 成功 非0 失败,返回错误代码 注:输人数据为待签数据的杂凑值 当使用SM2算法时,该输人数据为待签数据经过SM2签名预处理的结果,预 处理过程参见GB/"T35276. 6.4.7内部密钥ECC验证 原型 LONGSDF_InternalVerify_ECc HANDLEhSessionHandle UL(ONGuiISKIndex BYTE*pucData UIONGiDataLength ECCSignature*pucSignature) 描述 使用内部Ecc公钥对ECC签名值进行验证运算 参数 hSessionHandle[in] 与设备建立的会话句柄 uiISKIndex[in] 密码设备内部存储的ECC签名公钥的索引值 缓冲区指针,用于存放外部输人的数据 pucData[in] uiDataLength[in 输人的数据长度 pucSignature[inm 缓冲区指针,用于存放输人的签名值数据 返回值 成功 非0 失败,返回错误代码 注,输人数据为待签数据的杂凑值 当使用sM2算法时,该输人数据为待签数据经过sM2签名预处理的结果,预 处理过程参见GB/T35276. 6.4.8外部密钥ECC加密 原型 LONGSDF_Exte ternalEnerypt_EEcc( 30
GB/36322一2018 HANDLEhSessionHandle, UIL.ONGuiAlgID EcCrelPubieKey*puePubliekKey. BYTE ncData, 关puG ULONGuiDataLe -ength, EccCipher*pueEneData). 描述: 使用外部EcC公钥对数据进行加密运算 参数: hSessionHandle[in 与设备建立的会话句柄 uiAlgID[in] 算法标识,指定使用的ECC算法 pucPubickKey[in] 外部ECC公钥结构 pucData[i 缓冲区指针,用于存放外部输人的数据 输人的数据长度 uiDatal.ength[in] ucEncData[Lout] 缓冲区指针用于存放输出的数据密文 pul 返回值: C 成功 非0 失败,返回错误代码 6.5对称算法运算类函数 6.5.1概述 对称算法运算类函数提供对称加解密和MAc计算等功能,如表12所示,各函数返回代码见附 录A 表12对称算法运算类函数 函数名称 功能 SDFEncerypt 对称加密 SDF_Deerypt 对称解密 SDF_CaleulateMAC 计算MAC 6.5.2对称加密 原型 LONGSDF_Enerypt( HANDLEhSessionHandle HANDLEhKeyHandle ULONGuiAlgID BYTE关pucIV BYTE*pucD ata U1ONGuiDatal.ength BYTE*puceEneData, ULONG*puiEncDatalLength); 描述 使用指定的密钥句柄和IV对数据进行对称加密运算 参数 hSessionHandle[in 与设备建立的会话句柄 hKeyHHandle[in 指定的密钥句柄 uiAlgID[inm 算法标识,指定对称加密算法 31
GB/T36322一2018 pueIV[inlout 缓冲区指针,用于存放输人和返回的IV数据 pucData[in] 缓冲区指针,用于存放输人的数据明文 uiDataL.ength[in 输人的数据明文长度 pucEanDhta[ou呵 缓冲区指针,用于存放输出的数据密文 输出的数据密文长度 puiEnecDataL.ength[out 返回值 成功 非0 失败,返回错误代码 注:此函数不对数据进行填充处理,输人的数据是指定算法分组长度的整数倍 返回的IV数据用于多包数据对称 加密运算 6.5.3对称解密 原型 LONGSDF_Decrypt HANDLEhSessionHandle HANDLEhKeyHandle ULONGuiAlgID. BYTE*pueIV, BYTE*pueEncData UIONGuiEncDatalength, BYTE关puecData UIONG*puiDataLength); 描述 使用指定的密钥句柄和IV对数据进行对称解密运算 参数 hSessionHandle[in 与设备建立的会话句柄 指定的密钥句柄 hKeyHandlein uiAlglD[in] 算法标识,指定对称加密算法 pueV[inlout门 缓冲区指针,用于存放输人和返回的IV数据 缓冲区指针,用于存放输人的数据密文 pucEncDatain uiEneDataLength[in] 输人的数据密文长度 缓冲区指针,用于存放输出的数据明文 pucData[out 输出的数据明文长度 puiDatalength[out] 返回值 成功 非0 失败,返回错误代码 注此函数不对数据进行填充处理,输人的数据是指定算法分组长度的整数倍 返回的V数据用于多包数据对称 解密运算 6.5.4计算MAC 原型 LONGSDF_CaleulateMAC HANDLESessionHandle, HANDLEhKeyHandle, U.ONGuiAlgID. BYTE *puelv. YTE*pucDhta ULONGuiDataLe ngth BYTE ”pueMAc. 32
GB/36322一2018 ULONG ”puMACLength) 描述 使用指定的密钥句柄和IV对数据进行MAC运算 参数: hSessionHandle[in 与设备建立的会话句柄 hKeyHandle[in 指定的密钥句柄 算法标识,指定MAC加密算法 uiAlgID[in] pucIVinlout] 缓冲区指针,用于存放输人和返回的1V数据 pueData[m 缓冲区指针,用于存放输人的数据明文 uiDataLength[in 输人的数据明文长度 pucMAC[ou门 缓冲区指针,用于存放输出的MAC值 输出的MAC值长度 puiMACLength[ou 返回值 成功 0 非o 失败,返回错误代码 注:此函数不对数据进行分包处理,多包数据MAC运算由IVv控制最后的MAC值 6.6杂凑运算类函数 6.6.1概述 杂凑运算类函数提供杂凑运算功能,如表13所示,各函数返回代码见附录A 表13杂凑运算类函数 函数名称 功能 SDRHashlnit 杂凑运算初始化 SDFHas nAnae 多包杂凑运算 SDFHashFinal 杂凑运算结束 6.6.2杂凑运算初始化 原型 LONGSDF_Hashlnit( HANDLEhSessionHandle, ULONGuiAlgID EcCrePubliekey*puePubiakey BYTE*puelD. ULONGuiDL.ength); 描述 三步式数据杂凑运算第一步 参数 与设备建立的会话句柄 hSessionHandlein] 指定杂凑算法标识 uiAlglDin] pucPublickKey[in] 签名者公钥 当iAlgID为sGD_SM3时有效 pueDLimm 签名者的I值,当iAlgID为SG;D_SM3时有效 uiDL.ength[in 签名者D的长度,当iAgID为SGDSM3时有效 返回值 成功 失败,返回错误代码 非0 注;wnLaeh非零且田AkD为汉nsM6时本丽数执行的是s起的预处理1操作 计算过程参见c出T品27 33
GB/T36322一2018 6.6.3多包杂凑运算 原型 LONGSDF_HashUpdate( HANDLEhSessionHandle, BYTE*pucData UL.ONGiDatalength); 描述 三步式数据杂凑运算第二步,对输人的明文进行杂凑运算 参数 hSessionHandle[in] 与设备建立的会话句柄 pucData[Cin] 缓冲区指针,用于存放输人的数据明文 uiDatal.ength[in] 输人的数据明文长度 返回值 成功 非0 失败,返回错误代码 6.6.4杂凑运算结束 LONGSDFHashFinalG 原型 HANDLEhSessionHandle BYTE*pucHash. UL.OG关*puiHashLength); 描述 三步式数据杂凑运算第三步,杂凑运算结束返回杂凑数据并清除中间数据 参数 hSessionHandle[in] 与设备建立的会话句柄 pueHash[out 缓冲区指针,用于存放输出的杂凑数据 piHashL.ength[ou 返回的杂凑数据长度 返回值 成功 非0 失败,返回错误代码 6.7用户文件操作类函数 6.7.1概述 用户文件操作类函数提供文件的创建、读写和删除功能,如表14所示,各函数返回代码见附录A 表14用户文件操作类函数 函数名称 功能 SDFCreateFile 创建文件 SDFReadlFile 读取文件 SDF_WriteFile 写文件 SDF_DeleteFile 删除文件 6.7.2创建文件 原型 LONGSDFCreateFile( HANDLEhSessionHandle. LPSTRpucFileName uL.oNGiNameL.en. 34
GB/36322一2018 ULONGuiFileSize); 描述 在密码设备内部创建用于存储用户数据的文件 参数: hSessionHandle[in 与设备建立的会话句柄 rFileName[in 缓冲区指针,用于存放输人的文件名,最大长度 pucl 128字节 uiNameL.en[in] 文件名长度 文件所占存储空间的长度 uiFileSize[in] 返回值 成功 0 非0 失败,返回错误代码 6.7.3读取文件 原型: LONGSDFReadFile HANDLEhSessionHandle, LPSTRpucFileName UIO)NGuiNameLen, ULONGuiOffset, UILONG*puiFileLength BYTE弟pueBuffer); 读取在密码设备内部存储用户数据的文件的内容 描述 与设备建立的会话句柄 参数: hSessionHandlein] 缓冲区指针,用于存放输人的文件名,最大长度 pucFileNameCin 128字节 文件名长度 uiNamelen[in] uiOffset[in 指定读取文件时的偏移值 puiFilelength[inlout] 人参时指定读取文件内容的长度;出参时返回实 际读取文件内容的长度 pucBuffer[out] 缓冲区指针,用于存放读取的文件数据 返回值: 成功 非o 失败,返回错误代码 6.7.4写文件 原型 LONGSDF_writeFile( HANDLEhSessionHandle PSTRpueFileName ULONGuiNammeL.en ULONGuiOfset. ULONGiFileLength. BYTE*pueBuffer); 描述: 向密码设备内部存储用户数据的文件中写人内容 参数: hSessionHandle[in 与设备建立的会话句柄 pucFileName[in 缓冲区指针,用于存放输人的文件名,最大长度 128字节 uiNameL.en[in] 文件名长度 35
GB/T36322一2018 uiOfset[in] 指定写人文件时的偏移值 uiFilelength[in 指定写人文件内容的长度 pucBuffer[in 缓冲区指针,用于存放输人的写文件数据 返回值: 成功 0 非0 失败,返回错误代码 6.7.5删除文件 原型 LONGSDF_DeleteFile( HANDLESessionHandle, pueFleName LPSTR ULONGiNameLen); 描述 删除指定文件名的密码设备内部存储用户数据的文件 与设备建立的会话句柄 hSessionHandle[in” 参数: pucFileNamein 缓冲区指针,用于存放输人的文件名,最大长度 128字节 uiNamelen[Cinm] 文件名长度 返回值 成功 失败,返回错误代码 非0 36
GB/36322一2018 附 录 A 规范性附录) 函数返回代码定义 本标准定义的各函数返回代码如表A.1所示 表A.1函数返回代码定义 宏描述 预定义值 说明 井defineSDR_OK 0x0O 操作成功 #definesDR_BAsE 错误码基础值 0x01000000 SDRBASE十0x00000001 SsDR_UNKNowERR 未知错误 井define #defineSDRNOTsUPpORT SDRBASE十0x00000002 不支持的接口调用 × 井defineSDR_COMMFAIL SDR_BASE 0x00000003 与设备通信失败 #defineSDR_HARDFAI SDR_BASE 0x00000004 运算模块无响应 SDR_BASE 十 0x00000005 打开设备失败 #defineSDR_OPENDEVICE #defineSDROPENSESSION SDR_BASE 0x00000006 创建会话失败 #defnesDR_PARDENY SDRBASE 0x00000007 无私钥使用权限 SDRBASE #defineSDR_KEYNoTExIST 不存在的密钥调用 0x00000008 井defineSDR_ALGNOTsUPPORT SDRBASE 不支持的算法调用 0x00000009 井definesDR_ALGMoDNOTsUPPO)RT SDR_BASE 0x0000000A 不支持的算法模式调用 井defineSDR_PKOPERR SDR_BASE十0x0000000B 公钥运算失败 井defineSDR_SKOPERR SDR_BASE 0x0000000C 私钥运算失败 #defineSDR_SIGNERR SDR_BASE 0x0000000D 签名运算失败 SDRBAsE SDR_VERIFYERR 0x0000000E #define 验证签名失败 SDRBAsE SsDR_sYMoPERR 对称算法运算失败 井define 0x0000000 #defineSDR_STE:PERR SDR_BASE 0x0000001o 多步运算步骤错误 井defineSDR_FILESIZEERR SDR_BASE 0x0000001l 文件长度超出限制 × 井defineSDR_FILENOEXIST SDR_BASE 0x00000012 指定的文件不存在 十 井defineSDR_FILE(OFSERR SDR_BASE 0x00000013 文件起始位置错误 SDR_BASE 0x00000014 密钥类型错误 #defineSDR_KEYTYPEERR #definesDR_KEYERR 0x00000015 密钥错误 SDRBASE SDRBAsE #defineSDR_ENCDATAERR 0x00000016 Ecc加密数据错误 井defineSDRRANDERR SDRBASE十0x00000017 随机数产生失败 井defineSDR_PRKRERR SDR_BASE0x00000018 私钥使用权限获取失败 #defineSDR_MACERR SDDR_BASE十0x00000019 MAC运算失败 #defineSDR_FLEEXISTs SDR_BASE十0x0000001A 指定文件已存在 #defineSDRFILEWERR SDR_BASE十0x0000001B 文件写人失败 37
GB/T36322一2018 表A.1(续) 宏描述 预定义值 说明 存储空间不足 井defineSDR_NOBUFFER SDR_BASE十0x0000001C SDRBASE 0x0000001D eSDR_INARGERR 输人参数错误 井define #definesDR_OUTARGERR SDR_BASE十0x0000001E 输出参数错误 SDRBAsE十0x0000001F +- 至 预留 0x00FFFFFF SDRBASE 38
GB/36322一2018 考文 参 献 GB/T17901.1一1999信息技术安全技术密钥管理第1部分;框架 [2]GB/T17903.2-2008信息技术安全技术抗抵赖第2部分;采用对称技术的机制 [3]GB/T17903.3一2008信息技术安全技术抗抵赖第了部分;采用非对称技术的机制 [4]GB/T17964一2008信息安全技术分组密码算法的工作模式 [5幻 GB/T18238.1一2000信息技术安全技术散列函数第1部分;概述 [们 G;B/T18238.22002信息技术安全技术散列函数第2部分采用"位块密码的散 列函数 [7]GB/T18238.3一2002信息技术安全技术散列函数第3部分;专用散列函数 [[8]GB/T35276信息安全技术SM2密码算法使用规范 [[9]GM/T0022IPSecVPN技术规范 [10]GM/T0024SSLVPN技术规范

简介GB/T36322-2018信息安全技术密码设备应用接口规范

信息安全技术是保障信息系统安全的重要手段之一。密码设备是信息安全技术的一种重要支撑,它们在信息系统中承担着重要的保护作用。

为了保障密码设备在不同应用场景下的互通性和安全性,国家标准化管理委员会发布了GB/T36322-2018《信息安全技术密码设备应用接口规范》,以规范密码设备在应用接口层面的设计和实现。

标准的背景

随着信息化建设的深入推进,各类信息系统得到广泛应用,而这些信息系统中都存在密码设备的应用。然而,由于密码设备的生产厂商、应用系统供应商等的不同,导致密码设备在应用接口方面存在互操作性和兼容性问题,这给信息系统的安全性和稳定性带来了很大的隐患。

为了解决这些问题,GB/T36322-2018《信息安全技术密码设备应用接口规范》应运而生。

标准的目的

GB/T36322-2018的主要目的是规范密码设备在应用接口层面的设计和实现,以保证不同密码设备在各种应用场景下的互通性、兼容性和安全性。

具体来说,该标准的目的包括以下几个方面:

  • 定义密码设备在应用接口层面的功能要求和安全要求;
  • 规范密码设备应用接口的设计和实现,确保互通性和兼容性;
  • 提供密码设备应用接口测试方法和测试要求,确保安全性和可靠性;
  • 为密码设备的生产厂商和应用系统供应商提供统一的应用接口规范,降低开发和应用成本。

标准的适用范围

GB/T36322-2018适用于数字认证、数据加密、安全存储、密钥管理等多种密码设备的应用接口规范。

具体涉及的密码设备类型包括:

  • USB密钥令牌
  • 智能卡
  • 密码器
  • 移动存储设备
  • 安全模块
  • 其他嵌入式密码设备

术语和定义

GB/T36322-2018中涉及到的术语和定义如下:

  • 应用接口:用户应用程序和密码设备之间的通信接口;
  • 公共应用接口:适用于同一类密码设备的应用接口;
  • 私有应用接口:适用于特定密码设备的应用接口;
  • 应用接口协议:规定应用接口互通时通信规范和数据格式的协议。

规范引用

GB/T36322-2018中引用了以下标准:

  • GB/T 13954-2018 信息安全技术 安全评估术语和定义
  • GB/T 20081-2006 信息技术 通用标记语言符号与文档结构(DSSSL)
  • GB/T 2828.1-2012 抽样检验程序 第1部分:按计划加以抽样的程序
  • GB/T 2829-2012 检验抽样程序及表格
  • GB/T 32905-2016 信息安全技术 基于密码设备的用户身份认证技术 要求和测试方法
  • GB/T 32918-2016 信息安全技术 基于密码设备的用户身份认证 协议规范
  • GB/T 35273-2017 信息技术 安全技术 安全审计日志规范

总结

GB/T36322-2018《信息安全技术密码设备应用接口规范》是一项非常重要的标准,它为密码设备在应用接口层面的设计和实现提供了详细规范,保障了密码设备在不同应用场景下的互通性、兼容性和安全性。同时,该标准还为生产厂商和应用系统供应商提供了统一的应用接口规范,降低了开发和应用成本,促进了密码设备产业的健康发展。

信息安全技术密码设备应用接口规范的相关资料

    和信息安全技术密码设备应用接口规范类似的标准

    特种机器人分类、符号、标志
    上一篇 本文分享国家标准特种机器人分类、符号、标志的全文阅读和高清PDF的下载,特种机器人分类、符号、标志的编号:GB/T36321-2018。特种机器人分类、符号、标志共有14页,发布于2019-01-01
    信息安全技术工业控制系统安全管理基本要求
    本文分享国家标准信息安全技术工业控制系统安全管理基本要求的全文阅读和高清PDF的下载,信息安全技术工业控制系统安全管理基本要求的编号:GB/T36323-2018。信息安全技术工业控制系统安全管理基本要求共有49页,发布于2019-01-01 下一篇
    相关推荐