1. 程式人生 > 其它 >加密API實現與測試

加密API實現與測試

裝置管理

/*
功能:開啟密碼裝置。返回裝置控制代碼
引數: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);

*/