




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
代替GM/T0016—2012智能密碼鑰匙密碼應用接口規范國家密碼管理局發布I 12規范性引用文件 13術語和定義 1 25結構模型 25.1層次關系 2 36數據類型定義 46.1算法標識 46.2基本數據類型 46.3常量定義 46.4復合數據類型 57接口函數 7.1設備管理 7.3應用管理 7.4文件管理 7.5容器管理 7.6密碼服務 7.7驗證調試 8接口使用要求 438.1設備使用階段 8.2權限管理 8.3其他安全要求 附錄A(規范性)錯誤代碼定義 45附錄B(規范性)SM9應用接口 附錄D(資料性)SM9編程范例 參考文獻 75Ⅲj)增加了VPN相關接口(見附錄C);本文件的目標是為公鑰密碼基礎設施應用體系框架下的智能密碼鑰匙設備制定統一的應用接口12管理員PINadministratorPIN管理員的口令,為ASCII字符串。用戶的個人口令,為ASCIⅡ字符串。包括容器和文件的一種結構,具備獨立的管理權限。4縮略語下列縮略語適用子禾文件API:應用編程接口(ApplicationProgrammingInterface)ASCII:美國信息交換標準碼(AmericanStandardCodeforInformationInterchange)PKI:公朗基研設施PaubicKeyhntfastuctmc)PIN:個人身份識別碼CPersonalIdentheafonkanber)5結構模型圖1所示。智能密碼鑰匙硬件接日所符合GM/f0027-20+E中6工的規定圖1接口在應用層次關系中的位置3終端設備應具有一個設備認證密鑰。終端設備應支持一個或多個應用。應用之間應相互獨立。設備的邏輯結構如圖2所示。應用1應用2應用n權限狀態。管理員PIN和用戶PIN的校驗操作可改變應用權限狀態。一個應用的邏輯結構如圖3鑰對用于數字簽名和驗證,會話密鑰用于數據加解密和MAC運算。容器中存放SM2算法的密鑰對用戶PIN文件m會話密鑰容器146數據類型定義密碼算法標識應符合GM/T0006—2023中第6章的規定。字節數組應使用高位字節在前(Big-Endian)的方式存儲和交換。基本數據類型定義見表1。表十一基本數據類型備注有符號16位整數例如,typedefunslgnedc字行型九在號8位整設備句柄數據常量標識定義了在規范中用到的常量的取值。數據常量標識的定義如表2所示。5常量名_stdcall函數調用方式01typedefstructStruct_Version{數據項應符合表3的規定。意義次版本號typedefstruct6ULONGAlgSULONGAlgAULONGAlgHaULONGDevAULONGULONGFULONGMaxECCBuULONGMaxBu數據項應符合表4的規定。數據項意義設備廠商信息以‘\0’為結束符的ASCII字符串發行廠商信息以‘\0'為結束符的ASCII字符串以‘\0'為結束符的ASCII字符串以‘\O'為結束符的ASCII字符串分組密碼算法標識非對稱密碼算法標識一設備總空間大小用戶可用空間大小能夠處理的ECC加密數據大小數據大小—typedefstructStruct_RSAPUBLICKEYBLOB{7BYTEModulus[MAX_RSA_MODULUS_LEN];BYTEPublicExponent[MAX_RSA_EXPONENT_數據項類型意義備注算法標識號模數n=p*q實際長度為BitLen/8字節#defineMAX_RSA_MODULU#defineMAXRSAEXPONENT_LEN公開密鑰c一般為00010001typedefstructStruct_RSAPRIVATEKEYBLOB{BYTEModulus[MAX_RSA_MODULUS_LEN];BYTEPublicExponent[MAX_RSA_EXPONENT_BYTEPrivateExponent[MAX_RSA_MODULUS_LEN];BYTEPrimel[MAX_RSA_MODULUS_LEN/2];BYTEPrime2[MAX_RSA_MODULUS_LEN/2];BYTEPrimelExponent[MAX_RSA_MODULUS_LEN/2];BYTEPrime2Exponent[MAX_RSA_MODULUS_LEN/2];BYTECoefficient[MAX_RSA_MODULUS_LEN/2];8數據項意義算法標識號實際長度為BitLen/8字節一般為00010001實際長度為BitLen/8字節typedefstructStruct_ECCPUBLICKEYBLOB{BYTEXCoordinate[ECC_MAX_XCOORDINATE_BITS_LEN/8];BYTEYCoordinate[ECC_MAX_YCOORDINATE_BITS_LEN/8];ECC_MAX_XCOORDINATE_LEN為ECC算法X坐標的最大長度;ECC_MAX_YCOORDINATE_LEN為ECC算法Y坐標的最大長度。數據項描述見表7。數據項意義曲線上點的X坐標#defineECC_MAX_XCOORDINATE_BITS_LEN曲線上點的Y坐標#defineECC_MAX_YCOORDINATE_BITS_LEN9typedefstructStruct_ECCPRIVATEKEYBLOB{BYTEPrivateKey[ECC_MAX_MODULUS_BITECC_MAX_MODULUS_BITS_LEN為E表8ECC私鑰數據結構數據項意義私有密鑰#defineECC_MAX_MODULUS_BITS_LENtypedefstructStruct_ECCCIPHERBBYTEXCoordinate[ECC_MAX_XCOORDINATE_BITS_LEN/8];BYTEYCoordinate[ECC_MAX_XCOORDINATE_BITS_LEN/8];BYTEHASH[32];數據項描述見表9。數據項意義與y組成橢圓曲線上的點(x,y)與x組成橢圓曲線上的點(x,y)明文的雜湊值 6.4.9ECC簽名數據結構typedefstructStruct_ECCSIGNATUREBLOB{BYTEr[ECC_MAX_XCOORDINATE_BITS_LEN/8];BYTEs[ECC_MAX_XCOORDINATE_BITS_LEN/8];ECC_MAX_MODULUS_BITS_LEN為ECC算法模數的最大長度。數據項描述見表10。表10ECC簽名數據結構數據項類型意義備注rtypedefstructStruciBEOCRCIPHEReARAM數據項描述見表11。表11分組密碼參數數據項意義初始向量實際長度(按字節計算)反饋值的位長度(按位計算)只針對OFB、CFB模式typedefstructStruct_ENVELOPEDKEYBLOB數據項意義的原文為ECCPRIVATEKEYBLOB加密密鑰對的公鑰一typedefstructStruct_FILEAT表13文件屬性意義文件名以‘\O'結束的ASCII字符串,最大長度為32文件大小創建文件時定義的文件大小寫入權限寫入文件應已取得的權限權限類型的定義見表14表14權限類型權限類型值說明理員權限用主權限設備狀態的定義見表表設備狀態設備狀態值說明設備不存在設備存在設備狀態未知接口函數所返回的錯誤代碼應符合附錄A中的規定。7接口函數7.1設備管理設備管理主要完成設備的插拔事件處理、枚舉設備、連接設備、斷開連標簽、獲取設備信息、鎖定設備、解鎖設備的操作。設備管理系列函數見表16。表16設備管理系列函數函數名稱斷開連接獲取設備信息原型ULONGDEVAPISKF_WaitForDevEvent(LPSTRszDevName,ULONGNameLen,ULONG*pulEv參數szDevName[OUT]pulEvent返回值SAR_OK:成功。原型ULONGDEVAPISKF_Cancel功能描述該函數取消等待設備插入或者拔除事件。原型ULONGDEVAPISKF_EnumDev(BOOLbPresent,LPSTRszNbPresent[IN]為TRUE表示取當前設備狀態為存在的設備列表。為FALSE[OUT]設備名稱列表。如果該參數為NULL,將由pulSize返回該列原型ULONGDphDev[OUT]原型ULONGDEVAPISKF_DisConnectDev(DEVHANDLEhDev)原型ULONGDEVAPISKF_GetDevState(LPSTRszDpulDevState[OUT]返回設備狀態。原型ULONGDEVAPISKF_SetLabel(DEVHANDLEhDev,LPSTRszLabel)功能描述設置設備標簽。參數hDevszLabel[IN]設備標簽字符串。該字符串應小于32字節。ULONGDEVAPISKF_GetDevInfo(DEVHANULONGDEVAPISKF_LockDev(DEVHANDLEhDev,ULONG函數名稱修改設備認證密鑰獲得PIN碼信息原型ULONGDEVAPISKF_ChangeDevAuthKey(DEVHANDLEhDev,BYTE*pbKeyCi-pher,ULONGulKeyCipherLen,BYTE*pbKeyMac,UL原型ULONGDEVAPISKF_DevAuth(DEVHANDLEhDev,BYTE*pbAut原型ULONGDEVAPISKF_ChangePIN(HAPPLICATIONhApplication,ULONGulPIN-Type,LPSTRszOldPin,LPSTRszNewPin,ULONG原型ULONGDEVAPISKF_GetPINInfo(HAPPLIType,ULONG*pulMaxRetryCount,ULONG*pulRemainRetryCount,BOOL*pbDe-原型ULONGDEVAPISKF_VerifyPIN(HAPPLIType,LPSTRszPIN,ULONG*pulRetryCou原型ULONGDEVAPISKF_UnblockPIN(HAPPLICATIONhA原型ULONGDEVAPISKF_Cl表18應用管理系列函數創建應用關閉應朋原型ULoNGDEVAPISKF_CPSTRszAdminPin,DWORDdwAdminPinRetryCount,LPSTRdwOserPinBetryCount,DWORDdwCreateFileRights,HAPPLiCATiON*phApplszAppNameN]應用名稱szAdminPin[IN]管理員PIN。phApplication[OUT]應用的句柄。返回值SAR_OK:原型ULONGDEVAPISKF_EnumApplication(參數hDev[IN]連接設備時返回的設備句柄。原型ULONGDEVAPISKF_DeleteApplication(DEV參數hDev原型ULONGDEVAPISKF_OpenApplication(DEVHAN參數hDevphApplication原型ULONGDEVAPISKF_CloseApplication(HAPPLICATI函數名稱獲取文件信息原型ULONGDEVAPName,ULQNGaieSize,Gulrights,功能描述創建文件時要指定文件的名稱大小,以及義件的讀寫權限。szFileName文件名稱。度不應人132個字ulFleSize文件大小種權限的或值。ulWritekoghts[IN]文件寫權限,權限類型應符合6.41的要求。取值可為各原型ULONGDEVAPISKF_DeleteFile(HAPPLICATIONhApplication,LPSName)參數hApplication[IN]要刪除文件所在的應用句柄。szFileName[IN]要刪原型ULONGDEVAPISKF_EnumFiles(HAPPLICATIONhApplication,LPSTRszFile原型ULONGDEVAPISKF_GetFileInfo(HAPPLICATIONhApplication,LPSTRszFile-Namc,FILEATTRIBUTE*pFileInf原型ULONGDEVAPISKF_ReadFile(HAPPLICATIONhApplication,LPSTRszFile-Name,ULONGulOffset,ULONGulSize,BYTE*pbOutData,ULONG原型ULONGDEVAPISKF_WriteFile(HName,ULONGulOffset,BYTE*pbData,ULONGulSize)返回值SAR_OK:成功。其他:錯誤碼。出數字證書操作。容器管理函數見表20。表20容器管理系列函數函數名稱獲得容器類型導入數字證書導出數字證書原型ULONGDEVAPISKF_CreateContainer(HAContainerName,HCONTAINER*phContainer)原型ULONGDEVAPISKF_DeleteContain原型ULONGDEVAPISKF_OpenContaitainerName,HCONTAINERphContainer原型ULONGDEVAPISKF_CloseContain原型ULONGDEVAPISKF_EnumContaincr(HAPPLICATIONhApplicatio原型ULONGDEVAPISKF_GelContainerType(HCONTAINERhContainer,ULONG*pul-功能描述獲取容器的類型。原型ULONGDEVAPISKF_ImportCertificate(HCONTFlag,BYTE*pbCert,ULONGul原型ULONGDEVAPISKF_ExportCertificate(HCONTAINERhContaFlag,BYTE*pbCert,ULONG*pulCertLen)成功。錯誤碼。功能。密碼服務系列函數見表21。表21密碼服務系列函數函數名稱功能RSA簽名ECC簽名SKF_GenerateAgreementDECC生成密鑰協商參數并輸出SKF_GenerateAgreementDataAnd導出公鑰導入會話密鑰單包數據加密多包數據加密結束加密表21密碼服務系列函數(續)函數名稱功能單包數據解密多包數據解密結束解密多包數據密碼雜湊結束密碼雜湊多包數據消息鑒別碼運算帶密鑰的雜湊運算初始化帶密銅的單包雜淡運算帶密鑰包雜湊運算帶密釩的湊運算結策原型UONCDEVAPISKF_GenRandom(DEVHANDLEhDev,BXTE*ULONGunRandomLen)功能描述產生指定長度的隨機數。參數hDev[IN]設備句柄。pbRandom[OUT]返回的隨機數。ulRandomLen[IN]隨機數長度返回值SAR_OK:成功。其他:錯誤碼。7.6.3生成RSA簽名密鑰對原型ULONGDEVAPISKF_GenRSAKeyPair(HCONTAINERhContainer,ULONGulBit-功能描述生成RSA簽名密鑰對并輸出簽名公鑰。參數hContainer[IN]容器句柄。ulBitsLen[IN]密鑰模長。pBlob[OUT]返回的RSA公鑰數據結構。返回值SAR_OK:成功。7.6.4導入RSA加密密鑰對HCONTAINERhContainer,ULONGulSymAlgId,BYTE*pbWrappedKey,ULONGulWrapBYTE*pbEncryptedData,ULO功能描述導入RSA加密公私鑰對。參數hContainer[IN]容ulSymAlgIdpbWrappedKey[IN]使用該容器內簽名公鑰保護的對稱算法密鑰。ulWrappedKeyLen[IN]保pbEncryptedDataulEncryptedDataLcn[IN]對稱算法密鑰保護的RSA加密公私鑰對長度。返回值SAR_OK:成功。7.6.5RSA簽名原型ULONGDEVAPISKF_RSASignDaULONGulDataLen,BYTE*pbSignature,ULONG功能描述[IN]簽名數據長度,應不大于RSA密鑰模長-11。成功。原型ULONGDEVAPISKF_RSAVerify(HCONTAINERhCULONGulDataLen,BYTE*pbSignature,ULONGulSignLen)功能描述使用hContainer指定容器的簽名公鑰,進行驗證RSA簽名操作。參數hDev[IN]設備句柄。pRSAPubKeyBlob[IN]RSA公鑰數據結構。pbData[IN]待驗證簽名的數據。ulDataLen[IN]數據長度,應不大于公鑰模長-11。pbSignature[IN]待驗證的簽名值。ulSignLen[IN]簽名值長度,應為公鑰模長。返回值SAR_OK:成功。其他:錯誤碼。7.6.7RSA生成導出會話密鑰原型ULONGDEVAPISKF_RSAExportSessionKey(HCONTAINERhContainer,ULONGulAlgId,RSAPUBLICKEYBLOB*pPubKey,BYTE*pbData,UIONG*pulDataLen,HANDLEphSessionKey)功能描述牛成會話密鑰并用外部RSA公鑰加密輸出。參數hConzginerTN容器句柄。ulAigIdNI會話密班算法標。封pulDataLen[INT]輸人表示會話密鑰密文數據緩沖區長度,輸出時表公話密鑰密文的實際長度phSessionKeyIQUT]導出的密鑰年病返回值SAR_OK:疲功。其他借誤碼。7.6.8外來RSA公鑰運算原型ULONGDEVAPISKF_ExtRSAPubKeyOperation(DEyHANDLEhDev,RSAPUBLICKEYBLOB*pRSAPubKeyBlob,BYTEpbInput,ULONGulInputLen,BYTE*pbOutput,ULONG*pulOut功能描述使用外部傳入的RSA公鑰對輸入數據做公鑰運算并輸出結果。參數hDev[IN]設備句柄。pRSAPubKeyBlob[IN]RSA公鑰數據結構。pbInput[IN]指向待運算的原始數據緩沖區。ulInputLen[IN]待運算原始數據的長度,應為公鑰模長。pbOutput[OUT]指向RSA公鑰運算結果緩沖區,如果該參數為NULL,則由pulOutputLen返回運算結果的實際長度。pulOutputLen[IN,OUT]輸入時表示pbOutput緩沖區的長度,輸出時表示RSA公鑰運算結果的實際長度。返回值SAR_OK:成功。其他:錯誤碼。功能描述ULONGDEVAPISKF_GenECCKeyPair(HCONTAINERhContainer,ULONGulAl-hContainer[IN]密鑰容器句柄。pBlob[OUT]返回ECC公鑰數據結構。7.6.10導入ECC加密密鑰對原型ULONGDEVAPISKF_ImportECCKeyPaiPENVELOPEDKEYBLOBpEnvelopedKeyBlob)功能描述導入ECC公私鑰對。參數hContainerpEnvelopedKeyBlob[IN]受保護的原型ULONGDEVAPISKF_ECCSignData(ULONGulDataLen,PECCSIGNATUREBLOBpSig功能描述ECC數字簽名。采用ECC算法和指定私鑰hKey,對指定數據pbData進行數字簽名。簽名后的結果存放到pSignature中。參數hContainer[IN]原型ULONGDEVAPISKF_ECCVerify(DEVHANDLEhDev,pECCPubKeyBlob,BYTE*pbData,ULONGulDataLen,PECCSIGNATURpECCPubKeyBlob[IpSignature原型ULONGDEVAPISKF_ECCExportSessionKey(HCONTulAlgId,ECCPUBLICKEYBLOB*pPubKey,PECCCIPHERBLOBpData,HAN功能描述生成會話密鑰并用外部公鑰加密導出。ulAlgIdpPubKey[IN]外部輸入的公鑰結構。pData[OUT]會話密鑰密文。phSessionKey[OUT]返回值SAR_OK:成功。其他:錯誤碼。原型ULONGDEVAPISKF_ExtECCEncrypt(DEVHANDLEhDECCPUBLICKEYBLOB*pECCPubKeyBlob,BYTE*pbPlainText,ULONGulPlain-TextLen,PECCCIPHERBLOBpCipherText)功能描述使用外部傳入的ECC公鑰對輸入數據做加密運算并輸出結果。參數hDevpECCPubKeyBlob[IN]pbPlainTextulPlainTextLen[IN]pCipherText[其他:錯誤碼。原型ULONGDEVAPISKF_GenerateAgreementDataWithECC(HCONTAINERhCon-ULONGulAlgId,ECCPUBLICKEYBLOB*pContaincrECCPubKeyBlob,ECCPUBLICKEYBLOB*pTempECCPubKeyBlob,BYTE*pbID,ULONGulIDLen,ulAlgIdpTempECCPubKeyBlob[OUT]發起方臨時ECC公鑰。pbID[IN]發起方的ID。phAgreementHandle[OUT]返回的密鑰協商句柄。原型:ULONGDEVAPISKF_GenerateKeyWithECC(HANDLEhAgreementHandle,ECCPUBLICKEYBLOB*pECCPuECCPUBLICKEYBLOB*pTempECCPBYTE*pbID,ULONGulIDLen,HAND參數:hAgreementHandlepECCPubKeyBlob[IN]外部輸入的響應方ECC公鑰。pTempECCPubKeyBlob[IN]外部輸入的響應方臨時ECC公鑰。pbID[IN]響應方的ID。phKeyHandle[OUT]返回的密鑰句柄。原型:ULONGDEVAPISKF_GenerateAgreementDataAndKeyWithECC(HANDLEhCon-tainer,ULONGulAlgId,ECCPUBLICKEYBLOB*pSponsorECCPubKeyBlob,ECCPUBLICKEYBLOB*pSponsorTempECCPECCPUBLICKEYBLOB*pTempECCPBYTE*pbID,ULONGulIDLen,BYTE*pbSponsorID,ULONGulSponsorIDLen,參數:hContainerulAlgId[IN]會話密鑰算法標識。pSponsorECCPubKeyBlob[IN]發起方的ECC公鑰。pSponsorTempECCPubKeyBlob[IN]發起方的臨時ECC公鑰。pTempECCPubKeyBlob[OUT]響應方的臨時ECC公鑰。pbSponsorID[IN]發起方的ID。phKeyHandle[OUT]返回的對稱算法密鑰句柄。返回值SAR_OK:成功。原型ULONGDEVAPISKF_ExportPublicKey(HCONTAINERFlag,BYTE*pbBlob,ULONG*pulBpbBlob[OUT]指向RSA公鑰結構(RSAPUBLICKEYBLOB),或ECC公鑰結構(ECCPUBLICKEYBLOB),或SM9用戶標識(BYTE數組),如果見附錄D。pulBlobLen[IN,O原型ULONGDEVAPISKF_ImportSessionKey(HCONTAINERhContainer,ULONGulAl-gId,BYTE*pbWrapedData,ULONGulWrapedLen,HANDLE*phKey)參數hContainerulAlgId[IN]會話密鑰算法標識。密文數據PAIRKEYPACKAGEBLOB。原型ULONGDEVAPISKF_EncryptInit(HANDLEhKey,BLOCKCIPHERPARAMEn-ULONGDEVAPISKF_Encrypt(HANDLEhKey,BYTE*pbData,ULONGulDat-aLen,BYTE*pbEncryptedData,ULONG*pulEncryptedLen)于先調用SKF_EncryptUpda返回值SAR_OK:成功。其他:錯誤碼。原型ULONGDEVAPISKF_EncryptUpdate(HANDLEhKey,BYTE*pbData,ULONGul-DataLen,BYTE*pbEncryptedData,ULONG功能描述多個數據包的加密操作。用指定加密密鑰對指定數據進行加密,被加密的數據包含多個數據包,加密后的密文保存到指定的緩沖區中。SKF_EncryptUpdate對數據進行加密,SKF_EncryptUpdate處理全部數據包之后,應調用SKF_EncryptFinal結束加密操作。參數N]待加密數據。pbEncryptedData[OUT]加密后的數據緩沖區指針。pulEncryptedLen[OUT]返回加密后的數據長度。其他:錯醫碼原型功能描述結束多個分維數擁的加密,返,余加一果。先調用SKFBncryptmit初始化加密操作,再調用SkTErptOpdate對多個分組數據進行加密取后調用SkFEncryptFinal結束多個分組數的加藍參數返回值[OUT]加密結果的緩沖區。[OUT]加密結果的長度。原型ULONGDEVAPISKF_DecryptInit(HANDLEhKey,BLOCKCIPHERPARAMDe-功能描述數據解密初始化,設置解密密鑰相關參數。調用SKF_DecryptInit之后,可調用SKF_De-crypt對單個分組數據進行解密,也可多次調用SKF_DecryptUpdate之后再調用SKF_De-cryptFinal完成對多個分組數據的解密。參數hKey[IN]解密密鑰句柄。的位長度。返回值SAR_OK:成功。其他:錯誤碼。原型ULONGDEVAPISKF_DecrypulEncryptedLen,BYTE*pbData,ULONG*pulDa于先調用SKF_DecryptUpda參數hKcy[IN]返回值SAR_OK:原型ULONGDEVAPISKF_DecryptUpdate(HANULONGulEncryptedLen,BYTE*pbData,ULONG*pulDapbData[OUT]指向解密后的數據緩沖區指針。返回值SAR_OK:原型ULONGDEVAPISKF_D參數hKey[I[OUT]指向解密結果的緩沖區,如果此參數為NUpulDecryptedDataLen返回解密結果的長度。[IN,OUT]輸入時表示pbDecryptedData緩沖區的長度,輸出時表示解密結果的長度。返回值SAR_OK:成功。其他:錯誤碼。原型ULONGDEVAPISKF_DigestInit(DEVHANDLEhDev,ULONGulAlgID,功能描述初始化密碼雜湊計算操作,指定計算密碼雜湊的算法。參數hDev[IN]連接設備時返回的設備句柄。ulAlgID[IN]密碼雜湊算法標識。pFubKey[IN]簽名者公鑰。當ulAlgID為SGD_SM3時有效。phHash00T]密碼雜湊對象何柄。其他:儲誤明。。7.6.29單包數據密碼雜湊uloNGIEVAPISKEDgstIHANDEEhlasb,BYTIGspbData,uLoNGulDat-原型aLen,BYTE*pbHashD功能描述對單包的消息進行密碼雜湊計算。調用SKF_Digest之前,應調用SKF_DigestInit初始化密碼雜湊計算操作。SKF_Digest等價于多次調用SKFDigestUpdate之后再調用SKF參數hHash[IN]密碼雜湊對象何柄。pbDataN]指向消息數據的緩神區。ulDataLen[IN]消息數據的長度。pbHashData[OUT]密碼雜湊數據緩沖區指針,當此參數為NULL時,由pul-HashLen返回密碼雜湊結果的長度。pulHashLen[IN,OUT]輸入時表示結果數據緩沖區長度,輸出時表示結果數據實際長度。返回值SAR_OK:成功。其他:錯誤碼。原型ULONGDEVAPISKF_DigestUpdate(HANDLEhHash,BYTE*pbData,ULONG功能描述對多個分組的消息進行密碼雜湊計算。調用SKF_DigestUpdate之前,應調用SKF_Di-gestInit初始化密碼雜湊計算操作;調用SKF_DigestUpdate之后,應調用SKF_DigestFi-nal結束密碼雜湊計算操作。參數hHash[IN]密碼雜湊對象句柄。pbData[IN]指向消息數據的緩沖區。ulDataLen[IN]消息數據的長度。原型ULONGbpEVAPISKF_DigestFinal(HANDLEhHash,BYTE*pHashDala,ULONG功能描述結束多個分組消息的密碼雜淡引算操作函密碼雜淡結果保存到脂定的緩沖區。LtasHLcn返回雜決的長度果的長度原型ULONGDEVARISKF_MacInit(HANDLEhKey,BLOCKCIPHERPARAM*pMa功能描述初始化消息鑒別碼計算操作,設置計算消息鑒別碼的初始參數,并返回消息鑒別碼句柄。參數hKey[IN]計算消息鑒別碼的密鑰句柄。pMacParam[IN]phMac[OUT]消息鑒別碼對象句柄。返回值SAR_OK:成功。其他:錯誤碼。原型ULONGDEVAPISKF_Mac(HANDLEhMac,BYTE*pbData,ULONGulDataLen,BYTE*pbMacData,其他:錯誤碼。原型ULONGDEVAPISKF_MacUpdate(HANDLEhMac,BYT原型ULONGDEVAP原型ULONGDEVAPISKF_HMACInit(HANDLE功能描述三步式帶密鑰的數據雜湊運算的第一步。參數hKey[IN]密鑰句柄。phHMac[OUT]HMAC對象句柄。返回值SAR_OK:成功。其他:錯誤碼。原型ULONGDEVAPISKF_HMAC(HANDLEhHMac,BYTE*pbData,ULONGulDataLength,BYTE*pbHashData,ULONG*pulHashLen)功能描述單包數據的帶密鑰的數據雜湊運算,對輸入的明文進行雜湊運算。緩沖區指針,指向明文數據。明文數據的長度。返回值puiHashLen其他:[OUT]密碼雜湊數據緩沖區指針,當此參數為NULL時,由pulHash-Lcn返回密碼雜湊結果的長度。fIN,OUT]輸人時表示結果數據緩沖區長度,輸出時表示結果數據實際長度。原型功能描述三步式帶密鑰的數據泵淡運算的郅步對輸人的明文進行雜淡運算。參數HHMacDNIHMAC對象句柄。ulDataLength[IN]明文數據的長度。返回值SAR_OK:成功。原型ULONGDEVAPISKF_HMACFinal(HANDLEhHMac,BYTE*pbHMac,ULONG功能描述三步式帶密鑰的數據雜湊運算的第三步,雜湊運算結束返回結果。參數hHMac[IN]HMAC對象句柄。pbHMac[OUT]緩沖區指針,指向雜湊計算結果。pulHMacLength[OUT]雜湊計算結果的長度。返回值SAR_OK:成功。其他:錯誤碼。參數hHandle[IN原型ULONGDEVAPISKF_GenExtRSAKey(DEVHANDLEhDev,ULONGulBitsLen,功能描述由設備生成RSA密鑰對并明文輸出。參數hDevpBlob[OUT]返回的私鑰數據結構。功能描述ULONGDEVAPISKF_GenExtECCKey(DEVHANDLEhDev,ULONGulBitsLen,ECCPRIVATEKEYBLOB*pPrivate_key,ECCPUBLICKEYBLOB*pPhDev函數原型ULONGDEVAPISKF_ExtRSAPriKeyOperation(DEVHANDRSAPRIVATEKEYBLOB*pRSAPriKeyBlob,BYTE*pblnput,ULONGulInputLen,BYTE*pbOutput,ULONG*pulOutpRSAPriKeyBlob[IN]pbInput[IN]指向待運算putLen返回運算結果的實際長度。pulOutputLenRSA私鑰運算結果的實際長度。返回值SAR_OK:成功。7.7.5ECC外來私鑰解密ECCPRIVATEKEYBLOB*pECCPriKeyBlob,PECCCIPHERBLOBBYTE*pbPlainText,ULONG*pulPlai功能描述使用外部傳入的ECC私鑰對輸入數據pbPlainText[IN]待解密的密文數據。pulPlainTextLen返回明返回值SAR_OK:成功。函數原型ULONGDEVAPISKF_ExtECECCPRIVATEKEYBLOB*pECCPriKeyBlob,BYTE*pbData,ULONGulDataLen,PECCSIGNATUREBLOBpSignaturc)參數hDevpECCPriKeyBlob[INpbData[IN]待簽名數據。函數原型ULONGDEVAPISKF_ExtKeyEncrypt(HANDLEhDev,BYTE*pbKey,ULONGulKeyLen,BYTE*pbData,ULONGulDataLen,BYTE*pbEncryptedData,ULONG參數hDevpbData[IN]待加密數據。函數原型ULONGDEVAPISKF_ExtKeyDecrypt(HANDLEhDev,BYTE*pbKey,ULONGulKeyLen,BYTE*pbData,ULONGulDataLen,BYTE*pbEncryptedData,ULONG參數hDev[IN]設備句柄。pbKeypbData原型ULONGDEVAPISKF_ExtHmac(HANDLEhDev,BYTE*pLength,BYTE*pbData,ULONGulDataLength,ULONGuAlgID,BYTE*pbHash-Data,ULONG*pulHashLen)ulDataLength[IN]明原型ULONGDEVAPISKF_Transmit(DEVHANDLEULONGulCommandLen,BYTE*pbData,ULONG*pulDataL參數hDevpbCommand[IN]ulCommandLen[IN]命令長度。pbDatac)管理員權限:管理員PIN碼驗證通過后,獲得管理員權限,管理員權限只作用于其所在的1)用戶PIN碼和管理員PIN碼均具有最大重試次數,在創建應用時設定。當驗證PIN碼錯誤h)用戶PIN碼的修改應已取得用戶權限,管理員PIN碼的修改應已a)被認證方調用SKF_GenRandom函數從設備獲取8字節隨機數RND,并用0x00將其填充至a)PIN碼長度應不少于6個字符;障方面應符合GM/T0028—2014中第8章的規定。 (規范性)本文件定義的錯誤代碼如表A.1所示。表A.1錯誤代碼定義和說明說明成功失敗異常鋯誤不支持的服務文件操作錯誤文件錯誤未初始化內存錯誤生成隨機數錯誤表A.1錯誤代碼定義和說明(續)說明對象未導出無事件錯誤設備已移除沒有初始化用戶口令文件已經存在空間不足文件不存在已達到最大可管理容器數密鑰已被鎖住容器不存在容器已存在密鑰未被使用文件操作權限錯誤設備未認證 (規范性)#defineSM9_MODULUS_BYTESLEN((SM9_MODULUSBITS_LEN+7)/8)typedefSM9MAsTPRIVATEKEYBLOBSM9SIGNMASTPRIVATEKEYBLOBtypedefSM9MASTPRIVATEREYBEOBSMOENCMASTPRIVATEKEYBLOB,*PSM9ENCMASTPRIV座Kb)數據項晶述見表B壓數據項意義模數的位長度#defineSM9_XCOQRDINATE_BITS_LENSM9_MODULUSBITSLEN#defineSM9_XCOORDINATE_BYTESLEN((SM9xcOORDINATE_BITS_LEN+7)/8)=defineSM9_YCOORDINATEBITS_LEN=defineSM9_YCOORDINATE_BYTES_LEN((SM9_YCOORDINATE_BITS_LEN+7)/8)typedefstructStruct_SM9KEYBLOB2{ULONGulCompressTypc;ULONGulBitLen;BYTEcbXACoordinate[SM9_XCOORDINATE_BYTES_LEN];BYTEcbXBCoordinate[SM9_XCOORDINATE_BYTES_LEN];BYTEcbYACoordinate[SM9_YCOORDINATE_BYTES_LEN];BYTEcbYBCoordinate[SM9_YCOORDINATE_BYTES_LEN];typedefSM9KEYBLOB2SM9SIGNMASTPUBLICKEYBLOB,其中,SM9_XCOORDINATE_BYTES_LEN為SM9簽名主公鑰X坐標的字節長度,值為32;SM9_YCOORDINATE_BYTES_LEN為SM9簽名主公鑰Y坐b)數據項描述見表B.2。意義值為2、3或4。當為4時cbYACoordinate、cbYACoordinate、cbYBBYTE數組曲線上點的X坐標高維BYTE數組曲線上點的X坐標低維BYTE數組曲線上點的Y坐標高維BYTE數組曲線上點的Y坐標低維a)類型定義typedefstructStruct_SM9KULONGulBitLen;BYTEcbXCoordinate[SM9_XCOORDINATE_BYTES_LBYTEcbYCoordinate[SM9_YCOORDINATE_BYTES_LtypedefSM9KEYBLOB1SM9ENCMASTPUBLICKE表B.3SM9加密主公鑰數據結構意義值為2、3或4。當為4時cbYCoordiBYTE數組曲線上點的X坐標BYTE數組曲線上點的Y坐標typedefSM9KEYBLOB1SM9USERSIGNPRIVATEKEYBLOB,b)數據項描述見表B.4。表B.4SM9用戶簽名密鑰數據結構意義值為2、3或4。當為4時cbYCoordinatc有效,當BYTE數組曲線上點的X坐標BYTE數組曲線上點的Y坐標a)類型定義typedefSM9KEYBLOB2SM9USERENCPRIVATEKEYBLOB,b)數據項描述見表B.5。表B.5SM9用戶加密密鑰數據結構意義值為2、3或4。當為4時cbYACoordinate、cbYBCoordinate有效,當為其他值時cbYACoordinate、cbYBBYTE數組曲線上點的X坐標高維BYTE數組曲線上點的X坐標低維BYTE數組曲線上點的Y坐標高維BYTE數組曲線上點的Y坐標低維typedefstructh[SM9_MODULUS_BYTES_LcbSXCoordinate[SM9_XCOORDINATEcbSYCoordinate[SM9_XCOORDINATEb)數據項描述見表B.6。意義hBYTE數組BYTE數組typedefstructStruct_SM9CIPHERBLOB{ULONGulAsymAlgId;BYTEcbXCoordinate[SM9_XCOORDINATE_BYTES_LEN];BYTEcbYCoordinate[SM9_YCOORDINATE_BYTES_LEN];BYTEcbC3[32];ULONGulC2Len;b)數據項描述見表B.7。數據項意義typedefstructStruct_SM9KEYPACKAGEBLOB{BYTEcbXCoordinate[SM9_XCOORDINATE_BYTES_LEN];BYTEcbYCoordinate[SM9_YCOORDINAb)數據項描述見表B.8。意義BYTE數組BYTE數組typedefstructSM9KEYPACKAGEBLOBkey}SM9SIGNENCAPSULATEDKEYBLOB,*PSM9b)數據項描述見表B.9。數據項意義版本號,本版本為1一補滿)對稱算法加密的用戶簽名私鑰KGC用于生成用戶簽名私鑰的簽名主公鑰公鑰用戶標識用戶標識長度用臨時加密主公鑰和用戶的對稱密鑰的封裝密文度的對稱密鑰typedefstructStruct_SM9SIGNENVELOPEDKEYBLOB{}SM9SIGNENVELOPEDKEYBLOB,*Pb)數據項描述見表B.10。數據項類型意義備注應為ECB模式(不填充補滿)KGC用于生成用主公鑰密主公鑰用戶標識用戶標識長度typedefstructSKF_SM9ENCENCAPS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 嵌入式應用場景試題及答案
- 計算機三級考試注意事項試題及答案
- 2024–2025年中國數據標注產業深度分析報告
- 組織中的沖突管理與領導策略試題及答案
- 電子商城銷售商品采購合同
- 家庭學習計劃(4篇)
- 環境工程水處理技術實務試題
- 物流管理理論及應用測試題
- 測試工具的性能評估方法試題及答案
- 數據庫表的設計與增強方法試題及答案
- 個人所得稅 個人所得稅財產租賃所得應納稅額計算
- 加工中心點檢表
- MT 754-1997小型煤礦地面用抽出式軸流通風機技術條件
- GB/T 3863-2008工業氧
- GB/T 18391.1-2002信息技術數據元的規范與標準化第1部分:數據元的規范與標準化框架
- 護理科研選題與論文寫作
- 2023年河北泓杉供水有限責任公司招聘筆試模擬試題及答案解析
- 施工現場臨電講解課件
- 淘寶網-信息披露申請表
- 小微型客車租賃經營備案表
- 教育培訓機構辦學許可證申請書(樣本)
評論
0/150
提交評論