加密API实现与测试

学习GMT 0018-2012密码设备应用接口规范原始文档

数据结构:

 

设备管理

/*
功能:打开密码设备。返回设备句柄
参数:phDeviceHandle[out]
返回值:0 成功; 非0 失败,返回错误码
*/
int SDF_OpenDevice(void ** phDeviceHandle);

 

/*
功能:关闭密码设备,并释放相关资源
参数:hDeviceHandle[in] 已打开的设备句柄
返回值:0 成功; 非0 失败,返回错误代码
*/
int SDF_CloseDevice(void ** hDeviceHandle);

 

/*
功能:获取设备信息
参数:hSessionHandle[in] 与设备建立的会话句柄
           pstDevcenfo [our] 设备能力描述信息,内容及格式见设备信息定义成功
返回值∶0 成功;非0 失败,返回错误代码
*/
int SDF_GeitDevicelnfo(void * hSesionHandle,DEVICEINFO * pstDevicelnfo);

 

/*

功能:获取指定长度的随机数
参数:hSessionHandle[in] 与设备建立的会话句柄

           uiLength[in] 欲获取的随机数长度

           pucRandom[out] 缓冲区指针,用于存放获取的随机数
返回值:0 成功;非0 失败,返回错误代码

int SDF_GetDeviceInfo(void * hSessionHandle, DEVICEINFO * pstDeviceInfo);

*/

密钥管理类函数

/*

功能:导出密码设备内部存储的指定索引位置的签名公钥

参数:hSessionHandle[in]  与设备建立的会话句柄

           uiKeyIndex[in]  密码设备存储的ECC密钥对索引

           pucPublicKey[out]  ECC公钥结构

返回值:0 成功;非0 失败,返回错误代码

int SDF_ExportSignPublicKey_ECC(void * hSessionHandle, unsigned int uiKeyIndex, ECCrefPublicKey * pucPublicKey);

*/

 

/*

功能:导出密码设备内部存储的指定索引位置的加密公钥

参数:hSessionHandle[in]  与设备建立的会话句柄

           uiKeyIndex[in]  密码设备存储的ECC密钥对索引

           pucPublicKey[out]  ECC公钥结构

返回值:0 成功;非0 失败,返回错误代码

int SDF_ExportEncPublicKey_ECC(void * hSessionHandle, unsigned int uiKeyIndex, ECCrefPublicKey * pucPublicKey);

*/

 

/*

功能:请求密码设备产生指定类型和模长的ECC密钥对

参数:hSessionHandle[in]  与设备建立的会话句柄

           uiAlgID[in]  指定算法标识

           uiKeyBits[in]  指定密钥长度

           pucPublicKey  ECC公钥结构

           pucPrivateKey  ECC私钥结构

返回值:0 成功;非0 失败,返回错误代码

int SDF_GenerateKeyPair_ECC(void * hSessionHandle, unsigned int uiAlgID, unsigned int uiKeyBits, ECCrefPublicKey * pucPublicKey, ECCrefPrivateKey * pucPrivateKey);

*/

非对称算法

/*

功能:使用外部ECC公钥对ECC签名值进行验证运算

参数:hSessionHandle[in]  与设备建立的会话句柄

           uiAlgID[in]  算法标识,指定使用的ECC算法

           pucPublicKey[in]  外部ECC公钥结构

           pucDataInput[in]  缓冲区指针,用于存放外部输入的数据

           uiInputLength[in]  输入的数据长度

           pucSignatre[in]  缓冲区指针,用于存放输入的签名值数据

返回值:0 成功;非0 失败,返回错误代码

int SDF_ExternalVerify_ECC(void * hSessionHandle, unsigned int uiAlgID, ECCrefPublicKey * pucPublicKey, unsigned char * pucDataInput, unsigned int uiInputLength, ECCSignature * pucSignatre);

*/

 

/*

功能:使用内部ECC私钥对数据进行签名运算

参数:hSessionHandle[in]  与设备建立的会话句柄

           uiISKIndex[in]  密码设备内部存储的ECC签名私钥的索引值

           pucData[in]  缓冲区指针,用于存放外部输入的数据

           uiDataLength[in]  输入的数据长度

           pucSignature[in]  缓冲区指针,用于存放输入的签名值数据

返回值:0 成功;非0 失败,返回错误代码

int SDF_InternalSign_ECC(void * hSessionHandle, unsigned int uiISKIndex, unsigned char * pucData, unsigned int uiDataLength, ECCSignature * pucSignature);

*/

 

/*

功能:使用内部ECC公钥对ECC签名值进行验证运算

参数:hSessionHandle[in]  与设备建立的会话句柄

           uiISKIndex[in]  密码设备内部存储的ECC签名公钥的索引值

           pucData[in]  缓冲区指针,用于存放外部输入的数据

           uiDataLength[in]  输入的数据长度

           pucSignature[in]  缓冲区指针,用于存放输入的签名值数据

返回值:0 成功;非0 失败,返回错误代码

int SDF_InternalVerify_ECC(void * hSessionHandle, unsigned int uiISKIndex, unsigned char * pucData, unsigned int uiDataLength, ECCSignature * pucSignature);

*/

 

/*

功能:使用外部ECC公钥对数据进行加密运算

参数:hSessionHandle[in]  与设备建立的会话句柄

           uiAlgID[in]  算法标识,指定使用的ECC算法

           pucPublicKey[in]  外部ECC公钥结构

           pucData[in]  缓冲区指针,用于存放外部输入的数据

           uiDataLength[in]  输入的数据长度

           pucEncData[out]  缓冲区指针,用于存放输出的数据密文

返回值:0 成功;非0 失败,返回错误代码

int SDF_ExternalEncrypt_ECC(void * hSessionHandle, unsigned int uiAlgID, ECCrefPublicKey * pucPublicKey, unsigned char * pucData, unsigned int uiDataLength, ECCCipher * pucEncData);

*/

对称算法

/*

功能:使用指定的密钥句柄和IV对数据进行对称加密运算

参数:hSessionHandle[in]  与设备建立的会话句柄

           hKeyHandle[in]  指定的密钥句柄

           uiAlgID[in]  算法标识,指定对称加密算法

           pucIV[in|out]  缓冲区指针,用于存放输入和返回的IV数据

           pucData[in]  缓冲区指针,用于存放输入的数据明文

           uiDataLength[in]  输入的数据明文长度

           pucEncData[out]  缓冲区指针,用于存放输出的数据密文

           puiEncDataLength[out]  输出的数据密文长度

返回值:0 成功;非0 失败,返回错误代码

int SDF_Encrypt(void * hSessionHandle, void * hKeyHandle, unsigned int uiAlgID, unsigned char * pucIV, unsigned char * pucData, unsigned int uiDataLength, unsigned char * pucEncData, unsigned int * puiEncDataLength);

*/

 

/*

功能:使用指定的密钥句柄和IV对数据进行对称解密运算

参数:hSessionHandle[in]  与设备建立的会话句柄

           hKeyHandle[in]  指定的密钥句柄

           uiAlgID[in]  算法标识,指定对称加密算法

           pucIV[in|out]  缓冲区指针,用于存放输入和返回的IV数据

           pucEncData[in]  缓冲区指针,用于存放输出的数据密文

           uiEncDataLength[in]  输入的数据密文长度

           pucData[out]  缓冲区指针,用于存放输出的数据明文

           puiDataLength[out]  输出的数据明文长度

返回值:0 成功;非0 失败,返回错误代码

int SDF_Decrypt(void * hSessionHandle, void * hKeyHandle, unsigned int uiAlgID, unsigned char * pucIV, unsigned char * pucEncData, unsigned int uiEncDataLength, unsigned char * pucData, unsigned int * puiDataLength);

*/

 

/*

功能:使用指定的密钥句柄和IV对数据进行MAC运算

参数:hSessionHandle[in]  与设备建立的会话句柄

           hKeyHandle[in]  指定的密钥句柄

           uiAlgID[in]  算法标识,指定MAC加密算法

           pucIV[in|out]  缓冲区指针,用于存放输入和返回的IV数据

           pucData[in]  缓冲区指针,用于存放输出的数据明文

           uiDataLength[in]  输出的数据明文长度

           pucMAC[out]  缓冲区指针,用于存放输出的MAC值

           pucMACLength[out]  输出的MAC值长度

返回值:0 成功;非0 失败,返回错误代码

int SDF_CalculateMAC(void * hSessionHandle, void * hKeyHandle, unsigned int uiAlgID, unsigned char * pucIV, unsigned char * pucData, unsigned int uiDataLength, unsigned char * pucMAC, unsigned int * puiMACLength);

*/

 运行截图:

 

posted @ 2022-05-12 11:16  爱吃土豆的洋芋  阅读(87)  评论(0编辑  收藏  举报