智能IC卡及智能密码钥匙密码应用接口规范修订版 - 图文(8)

2019-08-30 14:06

GBXX/T ××××-2009

BYTE* pbID, ULONG ulIDLen, BYTE *pbSponsorID, ULONG ulSponsorIDLen, HANDLE *phKeyHandle)

描述: 使用ECC密钥协商算法,产生协商参数并计算会话密钥,输出临时ECC密钥对公钥,

并返回产生的密钥句柄。

参数: hContainer [IN] 容器句柄

ulAlgId [IN] 会话密钥算法标识 pSponsorECCPubKeyBlob [IN] 发起方的ECC公钥 pSponsorTempECCPubKeyBlob [IN] 发起方的临时ECC公钥 pTempECCPubKeyBlob [OUT] 响应方的临时ECC公钥 pbID [IN] 响应方的ID ulIDLen [IN] 响应方ID的长度,不大于32 pbSponsorID [IN] 发起方的ID ulSponsorIDLen [IN] 发起方ID的长度,不大于32 phKeyHandle [OUT] 返回的对称算法密钥句柄

返回值: SAR_OK表示成功,其它表示失败。 备注: 本函数由响应方调用。 7.6.21 ECC计算会话密钥 原型: ULONG DEVAPI SKF_GenerateKeyWithECC (HANDLE hAgreementHandle,

ECCPUBLICKEYBLOB* pECCPubKeyBlob, ECCPUBLICKEYBLOB* pTempECCPubKeyBlob,

BYTE* pbID, ULONG ulIDLen, HANDLE *phKeyHandle)

描述: 使用ECC密钥协商算法,使用自身协商句柄和响应方的协商参数计算会话密钥,同

时返回会话密钥句柄。

参数: hAgreementHandle [IN] 密钥协商句柄

pECCPubKeyBlob [IN] 外部输入的响应方ECC公钥 pTempECCPubKeyBlob [IN] 外部输入的响应方临时ECC公钥 pbID [IN] 响应方的ID ulIDLen [IN] 响应方ID的长度,不大于32 phKeyHandle [OUT] 返回的密钥句柄

返回值: SAR_OK表示成功,其它表示失败。 备注: 协商的发起方获得响应方的协商参数后调用本函数,计算会话密钥。 7.6.22 导出公钥

函数原型 ULONG DEVAPI SKF_ExportPublicKey (HCONTAINER hContainer, BOOL bSignFlag,

BYTE* pbBlob, ULONG* pulBlobLen)

功能描述 导出容器中的签名公钥或者加密公钥 参数 hContainer [IN] 密钥容器句柄

bSignFlag [IN] TRUE表示导出签名公钥,FALSE表示导出加密公钥 pbBlob [OUT] 指向RSA公钥结构(RSAPUBLICKEYBLOB)或者ECC公钥结构

(ECCPUBLICKEYBLOB),如果此参数为NULL时,由pulBlobLen返回pbBlob的长度

pulBlobLen [IN,OUT] 调用时表示pbBlob的长度,返回导出公钥结构的大小

返回值 SAR_OK表示成功,其它表示失败。

可能的错误值:

SAR_MEMORYERR 发生内存错误; SAR_UNKNOWNERR 发生未知错误; SAR_INVALIDHANDLEERR 句柄无效;

35

GBXX/T ××××-2009

SAR_INVALIDPARAMERR 参数无效 ; SAR_TIMEOUTERR 超时。

7.6.23 导入会话密钥

函数原型 ULONG DEVAPI SKF_ImportSessionKey (HCONTAINER hContainer, ULONG

ulAlgId,BYTE *pbWrapedData,ULONG ulWrapedLen,HANDLE *phKey)

功能描述 导入会话密钥。 参数 hContainer [IN] 容器句柄

ulAlgId [IN] 密钥算法标识 pbWrapedData [IN] 要导入的会话密钥 ulWrapedLen [IN] 数据长度 phKey [OUT] 返回会话密钥句柄

返回值 SAR_OK表示成功,其它表示失败。

可能的错误值:

SAR_MEMORYERR 发生内存错误; SAR_UNKNOWNERR 发生未知错误; SAR_INVALIDHANDLEERR 句柄无效; SAR_INVALIDPARAMERR 参数无效 。

备注 权限要求:用户权限。 7.6.24 明文导入会话密钥

函数原型 ULONG DEVAPI SKF_SetSymmKey (DEVHANDLE hDev, BYTE* pbKey, ULONG

ulAlgID, HANDLE* phKey)

功能描述 设置明文对称密钥,返回密钥句柄。 参数 hDev [IN] 设备句柄

pbKey [IN] 指向会话密钥值的缓冲区 ulAlgID [IN] 会话密钥算法标识 phKey [OUT] 返回会话密钥句柄

返回值 SAR_OK: 成功

其他: 错误

7.6.25 加密初始化

函数原型 ULONG DEVAPI SKF_EncryptInit (HANDLE hKey, BLOCKCIPHERPARAM EncryptParam) 功能描述 数据加密初始化。设置数据加密的算法相关参数。 参数 hKey [IN] 加密密钥句柄

EncryptParam [IN] 分组密码算法相关参数:初始向量、初始向量长度、填充方

法、反馈值的位长度

返回值 SAR_OK表示成功,其它表示失败。

可能的错误值:

SAR_UNKNOWNERR发生未知错误; SAR_MEMORYERR发生内存错误; SAR_INVALIDPARAMERR 参数无效。

7.6.26 单组数据加密

函数原型 ULONG DEVAPI SKF_Encrypt(HANDLE hKey, BYTE * pbData, ULONG ulDataLen, BYTE

*pbEncryptedData, ULONG *pulEncryptedLen)

功能描述 单一分组数据的加密操作。用指定加密密钥对指定数据进行加密,被加密的数据只

包含一个分组,加密后的密文保存到指定的缓冲区中。SKF_Encrypt只对单个分组数据进行加密,在调用SKF_Encrypt之前,必须调用SKF_EncryptInit初始化加密操作。SKF_Encypt等价于先调用SKF_EncryptUpdate再调用SKF_EncryptFinal。 36

GBXX/T ××××-2009

参数

hKey

[IN] 加密密钥句柄

pbData [IN] 待加密数据 ulDataLen [IN] 待加密数据长度

pbEncryptedData [OUT] 加密后的数据缓冲区指针,可以为NULL,用于获得加密

后数据长度。

pulEncryptedLen [IN,OUT] 输入,给出的缓冲区大小;输出,返回加密后的数据

长度。

返回值 SAR_OK表示成功,其它表示失败。

可能的错误值:

SAR_UNKNOWNERR发生未知错误; SAR_MEMORYERR发生内存错误; SAR_INVALIDPARAMERR 参数无效; SAR_BUFFER_TOO_SMALL 缓冲区不足。

7.6.27 多组数据加密

函数原型 ULONG DEVAPI SKF_EncryptUpdate(HANDLE hKey, BYTE * pbData, ULONG ulDataLen,

BYTE *pbEncryptedData, ULONG *pulEncryptedLen)

功能描述 多个分组数据的加密操作。用指定加密密钥对指定数据进行加密,被加密的数据包

含多个分组,加密后的密文保存到指定的缓冲区中。SKF_EncryptUpdate对多个分组数据进行加密,在调用SKF_EncryptUpdate之前,必须调用SKF_EncryptInit初始化加密操作;在调用SKF_EncryptUpdate之后,必须调用SKF_EncryptFinal结束加密操作。

参数 hKey [IN] 加密密钥句柄

pbData [IN] 待加密数据 ulDataLen [IN] 待加密数据长度

pbEncryptedData [OUT] 加密后的数据缓冲区指针 pulEncryptedLen [OUT] 返回加密后的数据长度

返回值 SAR_OK表示成功,其它表示失败。

可能的错误值:

SAR_UNKNOWNERR发生未知错误; SAR_MEMORYERR发生内存错误; SAR_INVALIDPARAMERR 参数无效; SAR_BUFFER_TOO_SMALL 缓冲区不足。

7.6.28 结束加密

函数原型 ULONG DEVAPI SKF_EncryptFinal (HANDLE hKey, BYTE *pbEncryptedData, ULONG

*ulEncryptedDataLen )

功能描述 结束多个分组数据的加密,返回剩余加密结果。先调用SKF_EncryptInit初始化加密

操作,再调用SKF_EncryptUpdate对多个分组数据进行加密,最后调用SKF_EncryptFinal结束多个分组数据的加密。

参数 hKey [IN] 加密密钥句柄

pbEncyptedData [OUT] 加密结果的缓冲区 ulEncyptedDataLen [OUT] 加密结果的长度

返回值 SAR_OK表示成功,其它表示失败。

可能的错误值:

SAR_UNKNOWNERR发生未知错误; SAR_MEMORYERR发生内存错误; SAR_INVALIDPARAMERR 参数无效。

37

GBXX/T ××××-2009 7.6.29 解密初始化

函数原型 ULONG DEVAPI SKF_DecryptInit (HANDLE hKey, BLOCKCIPHERPARAM DecryptParam) 功能描述 数据解密初始化,设置解密密钥相关参数。调用SKF_DecryptInit之后,可以调用

SKF_Decrypt对单个分组数据进行解密,也可以多次调用SKF_DecryptUpdate之后再调用SKF_DecryptFinal完成对多个分组数据的解密。

参数 hKey [IN] 解密密钥句柄 DecryptParam [IN] 分组密码算法相关参数:初始向量、初始向量长度、填充方法、

反馈值的位长度

返回值 SAR_OK表示成功,其它表示失败。

可能的错误值:

SAR_UNKNOWNERR发生未知错误; SAR_MEMORYERR发生内存错误; SAR_INVALIDPARAMERR 参数无效。

7.6.30 单组数据解密

函数原型 ULONG DEVAPI SKF_Decrypt(HANDLE hKey, BYTE * pbEncryptedData, ULONG

ulEncryptedLen, BYTE * pbData, ULONG * pulDataLen)

功能描述 单个分组数据的解密操作。用指定解密密钥对指定数据进行解密,被解密的数据只

包含一个分组,解密后的明文保存到指定的缓冲区中。SKF_Decrypt只对单个分组数据进行解密,在调用SKF_Decrypt之前,必须调用SKF_DecryptInit初始化解密操作。SKF_Decypt等价于先调用SKF_DecryptUpdate再调用SKF_DecryptFinal。

参数 hKey [IN] 解密密钥句柄 pbEncryptedData [IN] 待解密数据

ulEncryptedLen [IN] 待解密数据长度 pbData [OUT] 指向解密后的数据缓冲区指针,当为NULL时可获得解密

后的数据长度。

pulDataLen [IN,OUT] 返回解密后的数据长度

返回值 SAR_OK表示成功,其它表示失败。

可能的错误值:

SAR_UNKNOWNERR发生未知错误; SAR_MEMORYERR发生内存错误; SAR_INVALIDPARAMERR 参数无效。

7.6.31 多组数据解密

函数原型 ULONG DEVAPI SKF_DecryptUpdate(HANDLE hKey, BYTE * pbEncryptedData, ULONG

ulEncryptedLen, BYTE * pbData, ULONG * pulDataLen)

功能描述 多个分组数据的解密操作。用指定解密密钥对指定数据进行解密,被解密的数据包

含多个分组,解密后的明文保存到指定的缓冲区中。SKF_DecryptUpdate对多个分组数据进行解密,在调用SKF_DecryptUpdate之前,必须调用SKF_DecryptInit初始化解密操作;在调用SKF_DecryptUpdate之后,必须调用SKF_DecryptFinal结束解密操作。

参数 hKey [IN] 解密密钥句柄

pbEncryptedData [IN] 待解密数据 ulEncryptedLen [IN] 待解密数据长度 pbData [OUT] 指向解密后的数据缓冲区指针 pulDataLen [IN,OUT] 返回解密后的数据长度

返回值 SAR_OK表示成功,其它表示失败。

可能的错误值: 38

GBXX/T ××××-2009

SAR_UNKNOWNERR发生未知错误; SAR_MEMORYERR发生内存错误; SAR_INVALIDPARAMERR 参数无效; SAR_BUFFER_TOO_SMALL 缓冲区不足。

7.6.32 结束解密

函数原型 ULONG DEVAPI SKF_DecryptFinal (HANDLE hKey, BYTE *pbDecryptedData, ULONG

*pulDecryptedDataLen)

功能描述 结束多个分组数据的解密。 参数 hKey [IN] 解密密钥句柄

pbDecryptedData [OUT] 指向解密结果的缓冲区,如果此参数为NULL时,由

pulDecryptedDataLen返回解密结果的长度

pulDecryptedDataLen [IN,OUT] 输入时表示pbDecryptedData缓冲区的长度,返

回解密结果的长度

返回值 SAR_OK: 成功

其他: 错误

备注 先调用SKF_DecryptInit初始化解密操作,再调用SKF_DecryptUpdate对多个分组数

据进行解密,最后调用SKF_DecryptFinal结束多个分组数据的解密。

7.6.33 杂凑初始化

函数原型 ULONG DEVAPI SKF_DigestInit (DEVHANDLE hDev, ULONG ulAlgID, HANDLE *phHash) 功能描述 初始化消息杂凑计算操作,指定计算消息杂凑的算法。 参数 hDev [IN] 连接设备时返回的设备句柄

ulAlgID [IN] 杂凑算法标识 phHash [OUT] 杂凑对象句柄

返回值 SAR_OK: 成功

其他: 错误

备注 调用SKF_DigestInit之后,可以调用SKF_Digest对单一分组数据计算消息杂凑,

也可以多次调用SKF_DigestUpdate之后再调用SKF_DigestFinal对多个分组数据计算消息杂凑。

7.6.34 单组数据杂凑

函数原型 ULONG DEVAPI SKF_Digest (HANDLE hHash, BYTE *pbData, ULONG ulDataLen, BYTE

*pbHashData, ULONG *pulHashLen)

功能描述 对单一分组的消息进行杂凑计算。 参数 hHash [IN] 杂凑对象句柄

pbData [IN] 指向消息数据的缓冲区 ulDataLen [IN] 消息数据的长度

pbHashData [OUT] 杂凑数据缓冲区指针,当此参数为NULL时,由pulHashLen

返回杂凑结果的长度

pulHashLen [IN,OUT] 调用时表示pbHashData缓冲区的长度,返回杂凑结果的

长度

返回值 SAR_OK: 成功

其他: 错误

备注 调用SKF_Digest之前,必须调用SKF_DigestInit初始化杂凑计算操作。SKF_Digest

等价于多次调用SKF_DigestUpdate之后再调用SKF_DigestFinal。

7.6.35 多组数据杂凑

函数原型 ULONG DEVAPI SKF_DigestUpdate (HANDLE hHash, BYTE *pbData, ULONG

ulDataLen)

39


智能IC卡及智能密码钥匙密码应用接口规范修订版 - 图文(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:石油一个案例关于配送

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: