• 加密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);

    */

     运行截图:

  • 相关阅读:
    用指针方法排序数组
    struct和typedef struct
    结构体类型定义的一般式
    HDOJ1020 Encoding
    malloc函数详解
    新手入门 acm 输入输出练习
    【算法入门】广度/宽度优先搜索(BFS)
    C++栈和队列
    hdu畅通工程
    codevs 2639 约会计划
  • 原文地址:https://www.cnblogs.com/zhaojingle/p/16261667.html
Copyright © 2020-2023  润新知