GBXX/T ××××-2009
ulDataLen [IN] 数据长度,应不大于公钥模长-11。 pbSignature [IN] 待验证的签名值 ulSignLen [IN] 签名值长度,必须为公钥模长
返回值 SAR_OK表示成功,其它表示失败。
可能的错误值:
SAR_MEMORYERR 发生内存错误; SAR_UNKNOWNERR 发生未知错误; SAR_INVALIDHANDLEERR 句柄无效; SAR_INVALIDPARAMERR 参数无效 ; SAR_KEYNOTFOUNTERR 密钥未发现; SAR_INDATAERR输入数据错误。
7.6.7 RSA生成并导出会话密钥
函数原型 ULONG DEVAPI SKF_RSAExportSessionKey (HCONTAINER hContainer, ULONG ulAlgId,
RSAPUBLICKEYBLOB *pPubKey, BYTE *pbData, ULONG *pulDataLen, HANDLE *phSessionKey)
功能描述 生成会话密钥并用外部公钥加密输出。 参数 hContainer [IN] 容器句柄
ulAlgId [IN] 会话密钥算法标识 pPubKey [IN]加密会话密钥的RSA公钥数据结构 pbData [OUT]导出的加密会话密钥密文,按照PKCS#1v1.5的要求封装 pulDataLen [IN,OUT] 返回导出数据长度 phSessionKey [OUT] 导出的密钥句柄
返回值 SAR_OK表示成功,其它表示失败。
可能的错误值:
SAR_MEMORYERR 发生内存错误; SAR_UNKNOWNERR 发生未知错误; SAR_INVALIDHANDLEERR 句柄无效; SAR_INVALIDPARAMERR 参数无效; SAR_KEYNOTFOUNTERR密钥未发现 。
7.6.8 RSA外来公钥运算
函数原型 ULONG DEVAPI SKF_ExtRSAPubKeyOperation (DEVHANDLE hDev,
RSAPUBLICKEYBLOB* pRSAPubKeyBlob,BYTE* pbInput, ULONG ulInputLen, BYTE* pbOutput, ULONG* pulOutputLen)
功能描述 使用外部传入的RSA公钥对输入数据做公钥运算并输出结果。 参数 hDev [IN] 设备句柄
pRSAPubKeyBlob [IN] RSA公钥数据结构 pbInput [IN] 指向待运算的原始数据缓冲区 ulInputLen [IN] 待运算原始数据的长度,必须为公钥模长。 pbOutput [OUT] 指向RSA公钥运算结果缓冲区,如果该参数为
NULL,则由pulOutputLen返回运算结果的实际长度。
pulOutputLen [IN,OUT] 调用前表示pbOutput缓冲区的长度,返回
RSA公钥运算结果的实际长度。
返回值 SAR_OK: 成功
其他: 错误
7.6.9 RSA外来私钥运算 函数原型 ULONG DEVAPI SKF_ExtRSAPriKeyOperation (DEVHANDLE hDev, 30
GBXX/T ××××-2009
RSAPRIVATEKEYBLOB* pRSAPriKeyBlob,BYTE* pbInput, ULONG ulInputLen, BYTE* pbOutput, ULONG* pulOutputLen)
功能描述 直接使用外部传入的RSA私钥对输入数据做私钥运算并输出结果。 参数 hDev [IN] 设备句柄
pRSAPriKeyBlob [IN] RSA私钥数据结构 pbInput [IN] 指向待运算数据缓冲区 ulInputLen [IN] 待运算数据的长度,必须为公钥模长。 pbOutput [OUT] RSA私钥运算结果,如果该参数为NULL,则由
pulOutputLen返回运算结果的实际长度。
pulOutputLen [IN,OUT] 调用前表示pbOutput缓冲区的长度,返回
RSA私钥运算结果的实际长度。
返回值 SAR_OK: 成功
其他: 错误码
7.6.10 生成ECC签名密钥对
函数原型 ULONG DEVAPI SKF_GenECCKeyPair (HCONTAINER hContainer, ULONG ulAlgId,ECCPUBLICKEYBLOB *pBlob)
功能描述 生成ECC签名密钥对并输出签名公钥。 参数 hContainer [IN] 密钥容器句柄
ulAlgId [IN] 算法标识,只支持SGD_SM2_1算法 pBlob [OUT] 返回ECC公钥数据结构
返回值 SAR_OK表示成功,其它表示失败。
可能的错误值:
SAR_MEMORYERR 发生内存错误; SAR_UNKNOWNERR 发生未知错误; SAR_INVALIDHANDLEERR 句柄无效; SAR_INVALIDPARAMERR 参数无效 ; SAR_TIMEOUTERR 超时。
备注 权限要求:用户权限。 7.6.11 导入ECC加密密钥对
函数原型 ULONG DEVAPI SKF_ImportECCKeyPair (
HCONTAINER hContainer, ULONG ulSymAlgId, BYTE *pbWrappedKey, ULONG ulWrappedKeyLen,
BYTE *pbEncryptedData, ULONG ulEncryptedDataLen)
功能描述 导入ECC公私钥对。 参数 hContainer [IN] 容器句柄
ulSymAlgId [IN] 对称算法密钥标识 pbWrappedKey [IN] 使用该容器内签名公钥保护的对称算法密钥 ulWrappedKeyLen [IN] 保护的对称算法密钥长度 pbEncryptedData [IN] 对称算法密钥保护的ECC加密公私钥对 ulEncryptedDataLen [IN] 对称算法密钥保护的ECC加密公私钥对长度
返回值 SAR_OK表示成功,其它表示失败。
可能的错误值:
SAR_MEMORYERR 发生内存错误; SAR_UNKNOWNERR 发生未知错误; SAR_INVALIDHANDLEERR 句柄无效; SAR_INVALIDPARAMERR 参数无效 ;
31
GBXX/T ××××-2009
SAR_OBJERR 对象错误;
SAR_KEYNOTFOUNTERR 密钥未发现。
备注 权限要求:用户权限。 7.6.12 ECC签名
函数原型 ULONG DEVAPI SKF_ECCSignData (HCONTAINER hContainer, BYTE *pbData, ULONG
ulDataLen, BYTE *pbSignature, ULONG *pulSignLen)
功能描述 ECC数字签名。采用ECC算法和指定私钥hKey,对指定数据pbData进行数字签名。
签名后的结果存放到pbSignature缓冲区,设置pulSignLen为签名值的长度。
参数 hContainer [IN] 密钥容器句柄 pbData [IN] 待签名的数据
ulDataLen [IN] 待签名数据长度,必须小于密钥模长
pbSignature [OUT] 签名值,为NULL时用于获得签名值的长度。 pulSignLen [IN,OUT] 返回签名值长度的指针
返回值 SAR_OK表示成功,其它表示失败。
可能的错误值:
SAR_MEMORYERR 发生内存错误; SAR_UNKNOWNERR 发生未知错误; SAR_INVALIDHANDLEERR 句柄无效; SAR_INVALIDPARAMERR 参数无效 ; SAR_KEYNOTFOUNTERR 密钥未发现; SAR_INDATAERR输入数据错误。
备注 权限要求:用户权限。 7.6.13 ECC验签
函数原型 ULONG DEVAPI SKF_ECCVerify (DEVHANDLE hDev , ECCPUBLICKEYBLOB* pECCPubKeyBlob,
BYTE *pbData, ULONG ulDataLen, BYTE *pbSignature, ULONG ulSignLen)
功能描述 用ECC公钥对数据进行验签。 参数 hDev [IN] 设备句柄
pECCPubKeyBlob [IN] ECC公钥数据结构 pbData [IN] 待验证签名的数据 ulDataLen [IN] 数据长度 pbSignature [IN] 待验证签名值 ulSignLen [IN] 签名值长度
返回值 SAR_OK表示成功,其它表示失败。
可能的错误值:
SAR_MEMORYERR 发生内存错误; SAR_UNKNOWNERR 发生未知错误; SAR_INVALIDHANDLEERR 句柄无效; SAR_INVALIDPARAMERR 参数无效 ; SAR_KEYNOTFOUNTERR 密钥未发现; SAR_INDATAERR输入数据错误。
7.6.14 ECC生成并导出会话密钥
函数原型 ULONG DEVAPI SKF_ECCExportSessionKey (HCONTAINER hContainer, ULONG ulAlgId,
ECCPUBLICKEYBLOB *pPubKey, BYTE *pbData, ULONG *pulDataLen, HANDLE *phSessionKey)
功能描述 生成并导出会话密钥。 参数 hContainer [IN] 容器句柄 32
GBXX/T ××××-2009
ulAlgId [IN] 会话密钥算法标识 pPubKey [IN] 用来导出密钥的密钥结构 pbData [OUT]导出的加密会话密钥密文 pulDataLen [IN,OUT] 返回导出数据长度 phSessionKey [OUT] 会话密钥句柄
返回值 SAR_OK表示成功,其它表示失败。
可能的错误值:
SAR_MEMORYERR 发生内存错误; SAR_UNKNOWNERR 发生未知错误; SAR_INVALIDHANDLEERR 句柄无效; SAR_INVALIDPARAMERR 参数无效; SAR_KEYNOTFOUNTERR密钥未发现 。
7.6.15 ECC外来公钥加密
函数原型 ULONG DEVAPI SKF_ExtECCEncrypt (DEVHANDLE hDev, ECCPUBLICKEYBLOB*
pECCPubKeyBlob,BYTE* pbPlainText, ULONG ulPlainTextLen, BYTE* pbCipherText, ULONG* pulCipherTextLen)
功能描述 使用外部传入的ECC公钥对输入数据做加密运算并输出结果。 参数 hDev [IN] 设备句柄
pECCPubKeyBlob [IN] ECC公钥数据结构 pbPlainText [IN] 待加密的明文数据 ulPlainTextLen [IN] 待加密明文数据的长度 pbCipherText [OUT] 指向密文数据缓冲区,如果该参数为NULL,则
由pulCipherTextLen返回密文数据的实际长度。
pulCipherTextLen [IN,OUT] 调用前表示pbCipherText缓冲区的长度,返
回密文数据的实际长度。
返回值 SAR_OK: 成功
其他: 错误
7.6.16 ECC外来私钥解密
函数原型 ULONG DEVAPI SKF_ExtECCDecrypt (DEVHANDLE hDev, ECCPRIVATEKEYBLOB*
pECCPriKeyBlob, BYTE* pbCipherText, ULONG ulCipherTextLen, BYTE* pbPlainText, ULONG* pulPlainTextLen)
功能描述 使用外部传入的ECC私钥对输入数据做解密运算并输出结果。 参数 hDev [IN] 设备句柄
pECCPriKeyBlob [IN] ECC私钥数据结构 pbCipherText [IN] 待解密的密文数据 ulCipherTextLen [IN] 待解密密文数据的长度 pbPlainText [OUT] 返回明文数据,如果该参数为NULL,则由
pulPlainTextLen返回明文数据的实际长度
pulPlainTextLen [IN,OUT] 调用前表示pbPlainText缓冲区的长度,返
回明文数据的实际长度
返回值 SAR_OK: 成功
其他: 错误
7.6.17 ECC外来私钥签名
函数原型 ULONG DEVAPI SKF_ExtECCSign (DEVHANDLE hDev, ECCPRIVATEKEYBLOB*
pECCPriKeyBlob, BYTE* pbData, ULONG ulDataLen, BYTE* pbSignature, ULONG* pulSignatureLen)
33
GBXX/T ××××-2009
功能描述 使用外部传入的ECC私钥对输入数据做签名运算并输出结果。 参数 hDev [IN] 设备句柄
pECCPriKeyBlob [IN] ECC私钥数据结构 pbData [IN] 待签名数据 ulDataLen [IN] 待签名数据的长度。 pbSignature [OUT]签名值,如果该参数为NULL,则由
pulSignatureLen返回签名结果的实际长度。
pulSignatureLen [IN,OUT] 调用前表示pbSignature缓冲区的长度,返
回签名结果的实际长度。
返回值 SAR_OK: 成功
其他: 错误
7.6.18 ECC外来公钥验签
函数原型 ULONG DEVAPI SKF_ExtECCVerify (DEVHANDLE hDev, ECCPUBLICKEYBLOB*
pECCPubKeyBlob,BYTE* pbData, ULONG ulDataLen, BYTE *pbSignature, ULONG ulSignLen)
功能描述 外部使用传入的ECC公钥做签名验证。 参数 hDev [IN] 设备句柄
pECCPubKeyBlob [IN] ECC公钥数据结构 pbData [IN] 待验证数据 ulDataLen [IN] 待验证数据的长度。 pbSignature [IN] 签名值 ulSignLen [IN] 签名值的长度。 返回值
SAR_OK: 成功 SAR_ BAD_SIGNATURE: 验证失败 其他: 错误 ECC生成密钥协商参数并输出
ULONG DEVAPI SKF_GenerateAgreementDataWithECC (HCONTAINER hContainer, ULONG ulAlgId,ECCPUBLICKEYBLOB* pTempECCPubKeyBlob,BYTE* pbID, ULONG ulIDLen,HANDLE *phAgreementHandle)
使用ECC密钥协商算法,为计算会话密钥而产生协商参数,返回临时ECC密钥对的公钥及协商句柄。 hContainer [IN] 容器句柄 ulAlgId [IN] 会话密钥算法标识 pTempECCPubKeyBlob [OUT] 发起方临时ECC公钥
pbID ulIDLen
[IN] 发起方的ID
[IN] 发起方ID的长度,不大于32
7.6.19
原型:
描述: 参数:
phAgreementHandle [OUT] 返回的密钥协商句柄
返回值: SAR_OK表示成功,其它表示失败。 备注: 为协商会话密钥,协商的发起方应首先调用本函数。 7.6.20 ECC产生协商数据并计算会话密钥 原型: ULONG DEVAPI SKF_GenerateAgreementDataAndKeyWithECC(
HANDLE hContainer, ULONG ulAlgId,
ECCPUBLICKEYBLOB* pSponsorECCPubKeyBlob, ECCPUBLICKEYBLOB* pSponsorTempECCPubKeyBlob, ECCPUBLICKEYBLOB* pTempECCPubKeyBlob, 34