GM-T 0018-2023 密碼設(shè)備應(yīng)用接口規(guī)范_第1頁
GM-T 0018-2023 密碼設(shè)備應(yīng)用接口規(guī)范_第2頁
GM-T 0018-2023 密碼設(shè)備應(yīng)用接口規(guī)范_第3頁
GM-T 0018-2023 密碼設(shè)備應(yīng)用接口規(guī)范_第4頁
GM-T 0018-2023 密碼設(shè)備應(yīng)用接口規(guī)范_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

密碼設(shè)備應(yīng)用接口規(guī)范國(guó)家密碼管理局發(fā)布I Ⅲ 1 1 1 1 25.1算法標(biāo)識(shí)定義 2 25.3設(shè)備信息定義 25.4密鑰分類及存儲(chǔ)定義 3 4 5 5 6 6 76.1密碼設(shè)備應(yīng)用接口在公鑰密碼基礎(chǔ)設(shè)施應(yīng)用技術(shù)體系框架中的位置 7 86.3密鑰管理類函數(shù) 6.4非對(duì)稱算法運(yùn)算類函數(shù) 6.5對(duì)稱算法運(yùn)算類函數(shù) 6.6雜湊運(yùn)算類函數(shù) 6.7用戶文件操作類函數(shù) 6.8驗(yàn)證調(diào)試類函數(shù) 附錄A(規(guī)范性)函數(shù)返回代碼定義 附錄B(規(guī)范性)SM9算法相關(guān)數(shù)據(jù)結(jié)構(gòu)和接口函數(shù) 附錄C(規(guī)范性)VPN設(shè)備相關(guān)接口函數(shù) Ⅲb)刪除了基于RSA算法的數(shù)字信封轉(zhuǎn)換和基于ECC算法的數(shù)字信封轉(zhuǎn)換兩個(gè)接口函數(shù)(見本文件的目標(biāo)是為公鑰密碼基礎(chǔ)設(shè)施應(yīng)用體系框架下的服務(wù)端密碼設(shè)備制定統(tǒng)一的應(yīng)用接口標(biāo)1GB/T15852.2信息技術(shù)安全技術(shù)消息鑒別GB/T36624信息技術(shù)安全技術(shù)可鑒別的加密機(jī)制GB/T38635(所有部分)信息安全技術(shù)SM9標(biāo)識(shí)密碼算法2本文件中的基本數(shù)據(jù)類型均為高位字節(jié)在前(Big-Endian)方式存儲(chǔ)和交換。表1定義了基本數(shù)據(jù)定義句柄,指面數(shù)據(jù)對(duì)象的起始地址表2定義了設(shè)備信息。字節(jié))設(shè)備型號(hào)設(shè)備編號(hào),包含:日期(8字符)、批次號(hào)(3字符)、流水號(hào)(5字符)448前4字節(jié)表示支持的算法,表示方法為非對(duì)稱算法標(biāo)識(shí)按位或運(yùn)算的結(jié)果;4所有支持的對(duì)稱算法,表示方法為對(duì)稱算法標(biāo)識(shí)4所有支持的雜湊算法,表示方法為雜湊算法標(biāo)識(shí)4支持的最大文件存儲(chǔ)空間(單位字節(jié))typedefstructDeviceInfo_st{3CHARDcviceScrial[16];ULONGStandardVersion;ULONGAsymAlgAbility[2];一個(gè)加密密鑰對(duì)。其中,索引號(hào)為0表示設(shè)備密鑰。索引號(hào)1開始表示用戶密鑰。表3描述了設(shè)備密公鑰設(shè)備簽名公鑰設(shè)備簽名私鑰設(shè)備加密公鑰設(shè)備加密私鑰……密鑰加密密鑰密鑰加密密鑰0014在最高位,不足位從高位向低位填充數(shù)據(jù)0。表5定義了RSA密鑰數(shù)據(jù)結(jié)構(gòu)。公鑰數(shù)據(jù)結(jié)構(gòu)定義數(shù)據(jù)長(zhǎng)度(字節(jié))4me公鑰指數(shù)數(shù)據(jù)長(zhǎng)度4md素?cái)?shù)p和系數(shù)i#defineRSAref_MAX_PLtypedefstruciRSAreIRublicKey_st{BYTEe[RSAref_MAX_LEN];typedefstructRSArefPrivateKey_st{BYTEm[RSAref_MAX_LEN];BYTEe[RSAref_MAX_LEN];BYTEd[RSAref_MAX_LENBYTEprime[2][RSAref_MAX_PLEN];BYTEpexp[2][RSAref_MAX5表6定義了ECC密鑰數(shù)據(jù)結(jié)構(gòu)。公鑰數(shù)據(jù)結(jié)構(gòu)定義數(shù)據(jù)長(zhǎng)度(字節(jié))4Xy數(shù)據(jù)長(zhǎng)度(字節(jié))4K私鑰typedefstructECCrcfPublicKey_st{typedefstructECCrefPrivateKey_st{表7定義了ECC加密數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)長(zhǎng)度(字節(jié))Xy6表7ECC加密數(shù)據(jù)結(jié)構(gòu)(續(xù))數(shù)據(jù)長(zhǎng)度(字節(jié))M明文的雜湊值L4CLtypedefstructECCCipher_stBYTEx[ECCref_MAX_LEN];BYTEy[ECCref_MAX_LEN];ULONGL表8定義了ECC簽名數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)長(zhǎng)度(字節(jié))r簽名的r部分s簽名的s部分typedefstructECCSignature_st{密鑰管理系統(tǒng)下發(fā)到設(shè)備中的ECC加密密鑰對(duì)使用本結(jié)構(gòu)保護(hù),表9定義了ECC密鑰對(duì)保護(hù)數(shù)據(jù)長(zhǎng)度(字節(jié))4版本號(hào),本版本為17數(shù)據(jù)長(zhǎng)度(字節(jié))4對(duì)稱算法標(biāo)識(shí)(必須為ECB模式)4用保護(hù)公鑰加密過的對(duì)稱密鑰密文結(jié)構(gòu)typedefstructEnvelopedECCKey_st{BYTEcbEncryptedPriKey[ECCref_MAX_LE8密碼設(shè)備密碼資源管理(云環(huán)境表10設(shè)備管理類函數(shù)函數(shù)名稱獲取設(shè)備信息SDF_GetPrivateKeyAcSDF_ReleasePrivateKeyAc900原型:LONGSDF_OpenSession(HANDLEhDeviceHandle,HANDLE*phSessionHandle);0原型:LONGSDF_CloseSes返回值:0DEVICEINFO*pstDevic0與段備建的會(huì)所命腦返回值:0原型:lONGSDF_GetPrivateKeyAccessRight(HANDLEhSessionHandle,LPSTRpucPassword,對(duì)索引值的起始索引值為1,最大為n,密碼設(shè)備的實(shí)際存儲(chǔ)容量決定n值。私鑰訪問控制碼不少于8字節(jié)。返回值:0成功原型:LONGSDF_ReleasePrivateKeyULONGuiKeyIndex);參數(shù):hSessionHandle[in]與設(shè)備建立的會(huì)話句柄uiKeyIndex[in]密碼設(shè)備存儲(chǔ)的密鑰對(duì)的索引值返回值:0成功表11密鑰管理類函數(shù)函數(shù)名稱功能導(dǎo)出RSA簽名公鑰導(dǎo)出RSA加密公鑰生成會(huì)話密鑰并用內(nèi)部RSA公鑰加密輸出生成會(huì)話密鑰并用外部RSA公鑰加密輸出導(dǎo)出ECC簽名公鑰導(dǎo)出ECC加密公鑰生成會(huì)話密鑰并用內(nèi)部ECC公鑰加密輸出生成會(huì)話密鑰并用外部ECC公鑰加密輸出SDF_GenerateAgreementD生成密鑰協(xié)商參數(shù)并輸出計(jì)算會(huì)話密鑰SDF_GenerateAgreementDataAnd產(chǎn)生協(xié)商數(shù)據(jù)并計(jì)算會(huì)話密鑰生成會(huì)話密鑰并用密鑰加密密鑰加密輸出表11密鑰管理類函數(shù)(續(xù))函數(shù)名稱導(dǎo)入會(huì)話密鑰并用密鑰加密密鑰解密銷毀會(huì)話密鑰6.3.2導(dǎo)出RSA簽名公鑰原型:LONGSDF_ExpHANDLEhsessionHandle,描述:導(dǎo)排密碼設(shè)備內(nèi)部存儲(chǔ)的指定索引位置的RSA簽名公鑰。參數(shù):HSessionHandle[in]與設(shè)備建立的會(huì)話句柄密碼設(shè)備存儲(chǔ)的密鑰對(duì)的素引值返回值:0成ULONGuiKeyIndexRSArefPublicKey*pucPubl描述:導(dǎo)出密碼設(shè)備內(nèi)部存儲(chǔ)的指定索引位置的RSA加密公鑰與設(shè)備建立的會(huì)話句柄密碼設(shè)備存儲(chǔ)的密鑰對(duì)的索引值RSA公鑰結(jié)構(gòu)返回值:06.3.4生成會(huì)話密鑰并用內(nèi)部RSA公鑰加密輸出原型:LONGSDF_GHANDLEhSessionHandle,ULONGuiIPKIndex,ULONGuiKeyBits,pucKcy[out]返回值:0原型:LONGSDF_GenerateKeyWithEpucKey[out]pucKey[in]返回值:0返回值:0ECC公鑰結(jié)構(gòu)HANDLEhScssionHandle,pucKey[out]返回值:0HANDLEhSessionHandle,ULONGuiAlgID,ECCrefPublicKey*pucPupucKey[out]返回值:0輸入的外部ECC公鑰結(jié)構(gòu)成功原型:LONGSDF_ImpHANDLEhSessionHandle,pucKey[in]返回值:0成功原型:LONGSDF_GeneraHANDLEhSessionHandle,ULONGuiSponsorIDLenECCrefPublicKey*pucSponsorPubECCrefPublicKey*pucSponHANDLE*phAgrpucSponsorID[in]pucSponsorPublicKey[oupucSponsorTmpPublicKey[ophAgreementHandle[o返回值:0HANDLEhSessionHandle,ULONGuiResponseIDLeECCrefPublicKey*uiResponseIDLength[pucResponsePublicKey[pucResponseTmpPublicKey[in]外部輸入的響應(yīng)方臨時(shí)ECC公鑰結(jié)構(gòu)phKeyHandlc[out]返回的密鑰返回值:0原型:LONGSDF_GenerateAgneementDataHANDLEhSessionHandle,UEONGuiISKIndex,uiONGuResonscIDrcngECConauhekeyponso鑰句柄。使用SM2算法計(jì)算會(huì)話密鑰的過程應(yīng)符合GB/T35276。本函數(shù)由響應(yīng)方uiResponseIDLength[pucSponsorID[in]pucSponsorPublicKey[ipucSponsorTmpPublicKey[pucResponsePublicKey[o響應(yīng)方ID值響應(yīng)方ID長(zhǎng)度發(fā)起方ID值發(fā)起方ID長(zhǎng)度外部輸入的發(fā)起方ECC公鑰結(jié)構(gòu)外部輸入的發(fā)起方臨時(shí)ECC公鑰結(jié)構(gòu)返回的響應(yīng)方ECC公鑰結(jié)構(gòu)pucResponseTmpPublicKey[out返回值:0原型:LONGSDF_GenerateKcyWithKEK(HANDLEhSessionHandle,pucKey[out]返回值:0HANDLEhSessionHandle,描述:導(dǎo)入會(huì)話密鑰并用密鑰加密密鑰解密,同時(shí)返回會(huì)話密鑰句柄。加密模式為ECB模式。參數(shù):hSessionHandle[in]與設(shè)備建立的會(huì)話句柄pucKey[in]返回值:0算法標(biāo)識(shí),指定分組密碼算法和工作模式密碼設(shè)備存儲(chǔ)的密鑰加密密鑰的索引值緩沖區(qū)指針,用于存放輸入的密鑰密文輸入的密鑰密文長(zhǎng)度返回的密鑰句柄成功6.3.17銷毀會(huì)話密鑰銷毀會(huì)話密鑰開釋放密鑰句極分配的對(duì)存資源本面數(shù)在對(duì)稱算法運(yùn)算完成后調(diào)用。返回值:06.4非對(duì)稱算法運(yùn)算類函數(shù)非對(duì)稱算法運(yùn)算類函數(shù)提供RSA公私鑰運(yùn)算、ECC簽名驗(yàn)證和加密功能,表12列出了非對(duì)稱算法運(yùn)算類函數(shù),附錄A定義了函數(shù)返國(guó)代碼。表12非對(duì)稱算法運(yùn)算類函數(shù)函數(shù)名稱SDF_ExternalPublicKeyOperSDF_InternalPublicKeyOper內(nèi)部公鑰RSA運(yùn)算SDF_InternalPrivateKeyOper內(nèi)部私鑰RSA運(yùn)算內(nèi)部私鑰ECC簽名內(nèi)部公鑰ECC驗(yàn)證外部公鑰ECC加密原型:LONGSDF_ExternalPublicKeyOperHANDLEhSessionHandle,ULONG*puiOutputL外部RSA公鑰結(jié)構(gòu)返回值:0原型:LONGSDF_InternalPHANDLEhSessionHandle,ULONGuiInputLength,ULONG*puiOutputL原型:LONGSDF_InternalPrivateKeyOperaHANDLEhSessionHandle,ULONG*puiOutputLength);0HANDLEhSessionHandle,ECCrefPublicKey*pucPublicKey,ECCSignature*pucSignatu描述:使用外部公鑰對(duì)ECC簽名值進(jìn)行驗(yàn)證運(yùn)算。輸入數(shù)據(jù)為待簽數(shù)據(jù)的雜湊值。當(dāng)使用應(yīng)符合GB/T35276。外部ECC公鑰結(jié)構(gòu)返回值:0原型:LONGSDF_InterECCSignature*pucSignature);描述:使用內(nèi)部指定索引的私鑰對(duì)數(shù)據(jù)進(jìn)行ECC簽名運(yùn)算。輸入數(shù)據(jù)為待簽數(shù)據(jù)的雜湊值。處理過程應(yīng)符合GB/T35276。返回值:0原型:LONGSDF_InteECCSignature*pucSignatu0ECCrefPublicKey*pucPu外部ECC公鑰結(jié)構(gòu)返回值:0函數(shù)名稱計(jì)算單包MAC多包對(duì)稱加密初始化多包對(duì)稱加密多包對(duì)稱加密結(jié)束多包對(duì)稱解密初始化多包對(duì)稱解密多包對(duì)稱解密結(jié)束多包MAC初始化多包MAC計(jì)算多包可鑒別加密初始化多包可鑒別加密多包可鑒別加密結(jié)束多包可鑒別解密初始化多包可鑒別解密多包可鑒別解密結(jié)束HANDLEhKeyHandle,描述:使用指定的密鑰句柄和IV對(duì)數(shù)據(jù)進(jìn)行對(duì)稱加密運(yùn)算。此函數(shù)不對(duì)數(shù)據(jù)進(jìn)行填充處理。此函數(shù)的IV數(shù)據(jù)長(zhǎng)度與算法分組長(zhǎng)度相同。與設(shè)備建立的會(huì)話句柄指定的密鑰句柄法,指定分組密碼算法和工作模式緩沖區(qū)指針,用于存放輸入的數(shù)據(jù)明文輸入的數(shù)據(jù)明文長(zhǎng)度緩沖區(qū)指釓,用于存放輸出的數(shù)據(jù)密文輸畫的數(shù)據(jù)密文長(zhǎng)度返回值:0HANDLEbSessionHandleULONGuiAlgID,ULONG*puiD描述:使用指定的密鑰句柄和IV對(duì)數(shù)據(jù)進(jìn)行對(duì)稱解密運(yùn)算。此函數(shù)的IV數(shù)據(jù)長(zhǎng)度與算法分組長(zhǎng)度相同。pucIV[in]與設(shè)備建立的會(huì)話句柄指定的密鑰句柄算法標(biāo)識(shí),指定分組密碼算法和工作模式緩沖區(qū)指針,用于存放輸入的IV數(shù)據(jù)HANDLEhSessionHandle,HANDLEhKeyHandle,pucIV[in]0HANDLEhKeyHandle,ULONGuiStartVarLength,使用指定的密鑰句棲對(duì)數(shù)據(jù)進(jìn)行可鑒加密之算。此函數(shù)應(yīng)用于可鑒別加密的CCM和設(shè)備建會(huì)話句硒法標(biāo)指定分組密碼算法和二作模式輸入的開始變量長(zhǎng)度pueAadn]puiAuthDataLength[o返回值:0ULONGuiAadLength,返回值:0HANDLEhSessionHandle,pucIV[in]輸入的IV數(shù)據(jù)長(zhǎng)度返回值:0成功HANDLEhSessionHandle,返回值:0成功HANDLEhSessionHandle,ULONG*puiLastEncDataLpuiLastEncDataLength[o返回值:0HANDLEhSessionHandle,pucIV[in]輸入的IV數(shù)據(jù)長(zhǎng)度返回值:0HANDLEhSessionHandle,ULONGuiEncDataLength,返回值:0HANDLEhSessionHandle,ULONG*puiLastDatpuiLastDataLength[o返回值:0HANDLEhSessionHandle,HANDLEhKeyHandle,pucIV[inHANDLEhSessionHandle,ULONGuiDataLength);返回值:0HANDLEhSessionHandlc,返回值:0HANDLEhSessionHandle,HANDLEhKeyHandle,UAONGyiAadLengthULONGuiDataLength);據(jù)。此函數(shù)應(yīng)用于可鑒別加密的CCM和GCM模式,輸入輸出數(shù)據(jù)應(yīng)接照GM/T0006uiSartVarLengih信0沒備建立的會(huì)話的法標(biāo)識(shí)分組密偶算法和工作模輸入的開始變長(zhǎng)度原型:LONGSDF_AuthEncUpdate(HANDLEhSessionHandle,ULONGuiDataLength,ULONG*puiEncDataLen0HANDLEhSessionHandle,ULONG*puiLastEncDataLength,ULONG*puiAuthDataLpuiLastEncDataLength[puiAuthDataLength[o返回值:0HANDLEhSessionHandle,HANDLEhKeyHandle,ULONGuiAadLength,ULONGuiDataLength);據(jù)。此函數(shù)應(yīng)用于可鑒別解密的CCM和GCM模式,輸入輸出數(shù)據(jù)應(yīng)按照GM/T0006定義的算法標(biāo)識(shí)和GB/TpucAad[in]36624的規(guī)定進(jìn)行確定。GCM模式下的數(shù)據(jù)明文總長(zhǎng)度參數(shù)輸入的額外的再鑒數(shù)居長(zhǎng)度uiDataLength入的數(shù)據(jù)文總長(zhǎng)愈原型:LONGSDF_AuthDecUpdHANDLEhScssionHandlc,ULONG*puiLastDataLen返回值:0函數(shù)名稱帶密鑰的多包雜湊運(yùn)算帶密鑰的雜湊運(yùn)算結(jié)束多包雜湊運(yùn)算HANDLEhSessionHandle,HANDLEhKeyHandle,描述:三步式帶密鑰的數(shù)據(jù)雜湊運(yùn)算第一步。本函數(shù)執(zhí)行帶密鑰的雜湊運(yùn)算過程應(yīng)符HANDLEhSessionHandle,0HANDLEhSessionHandle,返回值:0HANDLEhScssionHandlc,ECCrefPublicKey*pucPublicKey,pucID[in]0HANDLEhSessionHandle,ULONGuiDataLength);HANDLEhSessionHandle,pucHash[out返回值:0函數(shù)名稱LPSTRpucFileName,返回值:0HANDLEhSessionHandle,ULONGuiNameIenBYTE*pucBuffer);描述:讀取在密碼設(shè)備內(nèi)部存儲(chǔ)用戶數(shù)據(jù)的文件的內(nèi)容。hSessionHandlein]入?yún)⒅x指啶讀取文作內(nèi)容的長(zhǎng)度出參時(shí)返回實(shí)際讀取返回值:0非0失敗返圓錯(cuò)誤代碼ULONGuiFileLength,非0HANDLEhSessionHandle,ULONGuiNameLen);返回值:0函數(shù)名稱產(chǎn)生RSA非對(duì)稱密鑰對(duì)并輸出產(chǎn)生ECC非對(duì)稱密鑰對(duì)并輸出SDF_ExternalPrivateKeyOpcr外部私鑰ECC簽名外部私鑰ECC解密外部私鑰SM9簽名外部私鑰SM9解密外部密鑰單包對(duì)稱加密表16驗(yàn)證調(diào)試類函數(shù)(續(xù))函數(shù)名稱外部密鑰單包對(duì)稱解密RSArefPublicKey*pucPublicKey,RSArefPrivateKey*pucPrivateKe返回值:0ECC公鑰結(jié)構(gòu)返回值:0成功原型:LONGSDF_ExternalPrivateULONGuilnputLength,ULONGuiInputLength,pucPrivateKey[in]外部ECC私鑰結(jié)構(gòu)返回值:0外部ECC私鑰結(jié)構(gòu)返回值:0SM9SignMasterPublicKey*pSignMastPublicSM9SignUserPrivateKey*ULONGuiDataLengthpSignUserPrivateKey[非0pEncUserPrivateKey[返回值:0ULONGuiIVLength,ULONG*puiEncDataLength);描述:使用外部密鑰和IV對(duì)數(shù)據(jù)進(jìn)行對(duì)稱加密運(yùn)算。此函數(shù)不對(duì)數(shù)據(jù)進(jìn)行填充處理。pucKcy[in]pucIV[in]返回值:0成功原型:LONGSDF_Ext描述:使用外部密鑰和IV對(duì)數(shù)據(jù)進(jìn)行對(duì)稱解密運(yùn)算。pucKey[in]pucIV[in|out非0ULONGuiKeyLength,pucKey[in]pucIV[in]返回值:0ULONGuiKeyLength,pucKcy[in]pucIV[in]輸入的IV數(shù)據(jù)長(zhǎng)度返回值:0描述:主步式帶密鑰的數(shù)據(jù)集法運(yùn)算第一二步。本函數(shù)執(zhí)行形密研麗雜湊運(yùn)算過程應(yīng)符uiAlgID[inuiKeyLcngth[in返回值:0(規(guī)范性)說明操作成功未知錯(cuò)誤不支持的接口調(diào)用SDR_BASE十0x00000003與設(shè)備通信失敗打開設(shè)備失敗無私鑰使用權(quán)限不存在的密鑰調(diào)用不支持的算法調(diào)用井defineSDR_ALGMODN不支持的算法模式調(diào)用公鑰運(yùn)算失敗多步運(yùn)算步驟錯(cuò)誤文件長(zhǎng)度超出限制指定的文件不存在SDR_BASE十0x00000013隨機(jī)數(shù)產(chǎn)生失敗說明指定文件已存在用戶標(biāo)識(shí)錯(cuò)誤至預(yù)留表B.1定義了SM9主私鑰數(shù)據(jù)結(jié)構(gòu),用于SM9簽名主私鑰和SM9加密主私鑰。數(shù)據(jù)長(zhǎng)度(字節(jié))4s主私鑰#defineSM9ref_MAX_LEN((SM9ref_MAX_BITS+7)/8)typedefstructSM9refMasterPrivateKey_st{ULONGbits;BYTEs[SM9ref_MAX_LEN];表B.2定義了SM9簽名主公鑰數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)長(zhǎng)度(字節(jié))4曲線上點(diǎn)X坐標(biāo)高維曲線上點(diǎn)X坐標(biāo)低維曲線上點(diǎn)Y坐標(biāo)高維曲線上點(diǎn)Y坐標(biāo)低維typedefstructSM9refSignMasterPublicKey_st{ULONGbits;BYTExa[SM9ref_MAX_LEN];BYTExb[SM9ref_MAX_LEN];BYTEya[SM9rcf_MAX_BYTEyb[SM9ref_MAX_LEN];B.1.3SM9加密主公鑰數(shù)據(jù)結(jié)構(gòu)定義表B.3定義了SM9加密主公鑰數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)長(zhǎng)度(字節(jié))4X曲線上點(diǎn)X坐標(biāo)y曲線上點(diǎn)Y坐標(biāo)typedefstructSM9refEncMasterPublicKey_st{數(shù)據(jù)長(zhǎng)度(字節(jié))4X曲線上點(diǎn)X坐標(biāo)y曲線上點(diǎn)Y坐標(biāo)typcdcfstructSM9refSignUserPriva{表B.5定義了SM9用戶加密私鑰數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)長(zhǎng)度(字節(jié))4曲線上點(diǎn)X坐標(biāo)高維曲線上點(diǎn)X坐標(biāo)低維曲線上點(diǎn)Y坐標(biāo)高維曲線上點(diǎn)Y坐標(biāo)低維typedefstructSM9refEncUserPrivateKey_st{BYTExa[SM9ref_MAX_LEN];BYTExb[SM9ref_MABYTEya[SM9ref_MAX_LEN];BYTEyb[SM9ref_MA表B.6定義了SM9加密數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)長(zhǎng)度(字節(jié))4XyhL4CLtypedcfstructSM9refCipher_st{表B.7定義了SM9簽名數(shù)據(jù)結(jié)構(gòu)。表B.7SM9簽名數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)長(zhǎng)度(字節(jié))hXytypedefstructSM9refSignaturc_st表B.8SM9密鑰封裝數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)長(zhǎng)度(字節(jié))XytypcdefstructSM9rcfKcyPackage_st表B.9定義了SM9用戶加密密鑰對(duì)保護(hù)結(jié)構(gòu)。表B.9SM9用戶加密密鑰對(duì)保護(hù)結(jié)構(gòu)數(shù)據(jù)長(zhǎng)度(字節(jié))444數(shù)據(jù)長(zhǎng)度(字節(jié))SM9EncUserPrivateKey結(jié)構(gòu)體中除去長(zhǎng)產(chǎn)生對(duì)稱密鑰的密鑰封裝數(shù)據(jù)的主公鑰44typedefstructSM9refEncEnvclopcd{ULONGversion;BYTEencryptedPriKey[SM9ref_MAX_LENSM9EncMastPublicKeytmpMa數(shù)據(jù)長(zhǎng)度(字節(jié))444SM9SignUserPrivateK數(shù)據(jù)長(zhǎng)度(字節(jié))產(chǎn)生對(duì)稱密鑰的密鑰封裝數(shù)據(jù)的主公鑰44SM9KeyPackagc類型{enc:sptedPrikoyISM?aIMAXEBYTEuserID[256];函數(shù)名稱功能SDF_GenerateEncMasterK裝并輸出裝并輸出使用SM9密鑰封裝結(jié)構(gòu)導(dǎo)入會(huì)話密鑰并用表B.11SM9算法相關(guān)接口函數(shù)(續(xù))函數(shù)名稱功能SDF_GenerateAgreementDSM9生成密鑰協(xié)商參數(shù)并輸出SDF_GenerateAgreementDataAnd內(nèi)部主公鑰SM9驗(yàn)證SDF_InternalSignWithMas外部主公鑰SM9簽名SDF_InternalSignWithMas內(nèi)部主公鑰SM9簽名內(nèi)部主公鑰SM9加密HANDLEhSessionHandle,ULONGuiKeyIndex,參數(shù):hSessionHandle[in]uiKeyIndex[in]輸出的用戶標(biāo)識(shí)緩沖區(qū),若該項(xiàng)為NULL,則puiUse-rIDLen輸出所需緩沖區(qū)長(zhǎng)度輸入為pucUserID的緩沖區(qū)長(zhǎng)度,輸出為pucUserID實(shí)際長(zhǎng)度原型:intSDF_GenerateEncMasterKeyPHANDLEhSessionHandle,SM9EncMastcrPublicKcy*pEncMasterPucli護(hù)結(jié)構(gòu)。當(dāng)輸入的SM9主密鑰索引值為0xFFFFFFFF時(shí),輸出的主密鑰索引值由密碼pEncMasterPaclicKeyfout]輸出的SM9主公鑰數(shù)據(jù)結(jié)構(gòu)0B.2.4生成會(huì)話密鑰并用SM9外部加密主公鑰和用戶標(biāo)進(jìn)行密鑰封裝并輸出原型:intSDF_GeneratcEezWEMIk_SM9(HANDLFhSesfonfa鑰封裝的具體過程應(yīng)符合GB/T38635。密鑰封裝和解封裝函數(shù)輸入的對(duì)稱密鑰長(zhǎng)度值輸出的SM9密鑰封裝結(jié)構(gòu)返回值:0HANDLEhSessionHandle,ULONGuiISKIndex,返回值:0原型:intSDF_GenerateAgreementDataWithSM9(ULONGuiKeyBits,ULONGulResponseIDSM9EncMastPublicKey*pSponHANDLE*phAgreementHpSponsorID[in]pSponsorTempPublicKey[ophAgreementHandle[o原型:intSDF_GenerateAgreementDataAndKeyWithSM9(HANDLEhSessionHandle,ULONGuiKeyBits,ULONGulResponseIDLen,ULONGulSponsorIDLen,SM9EncMastPublicKcySM9EncMastPublicKeypSponsorID[in]響應(yīng)方id響應(yīng)方id長(zhǎng)度發(fā)起方id發(fā)起方id長(zhǎng)度pPublicKey[in]發(fā)起方主公鑰pSponsorTempPublicKey[in]發(fā)起pResponseTempPublicKey[out]返回的響應(yīng)方臨時(shí)主公鑰phKeyHandlc[out]返回的密鑰句柄返回值:0HANDLEhSessionHandle,SM9SignMasterPublicK描述:使用外部簽名主公鑰和用戶標(biāo)識(shí)對(duì)SM9簽名進(jìn)行驗(yàn)證運(yùn)算。輸入數(shù)據(jù)為待簽數(shù)據(jù)的用戶標(biāo)識(shí)0非0ULONGuiSignMasterKeyIndULONGuiDataLength,描述:使用內(nèi)部簽名主公鑰和用戶標(biāo)識(shí)對(duì)SM9簽名進(jìn)行驗(yàn)證運(yùn)算。輸入數(shù)據(jù)為待簽數(shù)據(jù)的返回值:0原型:intSDF_InternalSiULONGuiISKInd描述:使用外部簽名主公鑰和SM9用戶簽名私鑰對(duì)數(shù)據(jù)進(jìn)行簽名運(yùn)算。輸入數(shù)據(jù)為待簽數(shù)據(jù)輸人的數(shù)據(jù)長(zhǎng)度緩河指鍵用于存放輸出的簽徑值數(shù)據(jù)0成原型:ntSDF_InternalSigrVMaHANDLEhScssionHLanULONGuiISKInd描述:使用內(nèi)部簽名主公鑰和SM9用戶簽名私鑰對(duì)數(shù)據(jù)進(jìn)行簽名運(yùn)算。輸入數(shù)據(jù)為待簽數(shù)據(jù)非0ULONGulAlgID,0原型:intSDF_EncryptWithMastULONGuiMasterKeyIULONGuiUserIDLeULONGuiDataLengthulAlgID[in]uiDalaLength[in相際識(shí)的長(zhǎng)度加密明文的算法標(biāo)識(shí)通區(qū)指釙于存放外部輸人的數(shù)據(jù)緩沖區(qū)指針、川工存放偷的數(shù)據(jù)密文0非HANDLEhSessionHandle,ULONGuiUscrIDLen,應(yīng)符合GB/T38635。IV數(shù)據(jù)長(zhǎng)度為16個(gè)字節(jié),僅當(dāng)uiAlgID為SGD_SM98CBC、SGD_SM98OFB、SGD_輸入的IV數(shù)據(jù)返回值:0函數(shù)名稱功能計(jì)算IKE工作密鑰并用外部ECC公鑰加密輸出計(jì)算IPSEC會(huì)話密鑰并用外部ECC公鑰加密輸出計(jì)算SSL工作密鑰并用外部ECC公鑰加密輸出原型:LONGSDF_GenerateHANDLEhSessionHandle,ULONGuiSponsorNonceLenULONGuiResponseNonceLeULONGuiSponsorCookieLeULONGuiResponseCookieLeuiSponsorNonceLength[uiResponseNonceLengthuiSponsorCookieLength[uiResponscCookicLength返回值:0HANDLEhSessionHandle,ULONGuiSponsorNonceLength,ULONGuiResponseNonceLength,ULONGuiSponsorCookieLeULONGuiResponseCookieLeULONGuiEccAlgIDECCrefPublicKey*pucPublicKey,ULONGuiKeyBitsE);息3和消息4交互完成后,本函數(shù)由參與通信的雙方各白調(diào)用,計(jì)算后續(xù)工作密鑰uiSponsorNonceLength[uiResponseNonceLengthuiSponsorCookicLength[uiResponseCookieLength發(fā)起方cookie輸入的外部ECC公鑰結(jié)構(gòu)SKEYID_d密鑰長(zhǎng)度原型:LONGSDF_GeneratULONGuiProtocolIDLength,ULONGuiSponsorNonceLenULONGuiResponseNonceLeHANDLEhKeyHandle,協(xié)議IDuiProtocolIDLength[uiSponsorNonceLength[uiResponseNonceLength協(xié)議ID長(zhǎng)度發(fā)起方nonce載荷主體發(fā)起方n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論