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