![GBT 43578-2023 信息安全技術 通用密碼服務接口規(guī)范_第1頁](http://file4.renrendoc.com/view10/M00/00/17/wKhkGWW7sayANvBQAACs2e1UKL0567.jpg)
![GBT 43578-2023 信息安全技術 通用密碼服務接口規(guī)范_第2頁](http://file4.renrendoc.com/view10/M00/00/17/wKhkGWW7sayANvBQAACs2e1UKL05672.jpg)
![GBT 43578-2023 信息安全技術 通用密碼服務接口規(guī)范_第3頁](http://file4.renrendoc.com/view10/M00/00/17/wKhkGWW7sayANvBQAACs2e1UKL05673.jpg)
![GBT 43578-2023 信息安全技術 通用密碼服務接口規(guī)范_第4頁](http://file4.renrendoc.com/view10/M00/00/17/wKhkGWW7sayANvBQAACs2e1UKL05674.jpg)
![GBT 43578-2023 信息安全技術 通用密碼服務接口規(guī)范_第5頁](http://file4.renrendoc.com/view10/M00/00/17/wKhkGWW7sayANvBQAACs2e1UKL05675.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
信息安全技術通用密碼服務接口規(guī)范2023-12-28發(fā)布國家標準化管理委員會I l2規(guī)范性引用文件 13術語和定義 14縮略語 15通用密碼服務接口描述 25.1通用密碼服務接口在公鑰密碼應用技術體系框架中的位置 25.2通用密碼服務接口組成和功能說明 26通用密碼服務接口函數定義 36.1算法標識和數據結構 36.2環(huán)境類函數 56.3證書類函數 86.4密碼運算類函數 6.5消息類函數 7驗證方法 7.1驗證環(huán)境 7.2密碼服務環(huán)境操作驗證 7.3證書類函數功能驗證 7.4簽名驗簽驗證 7.5摘要計算驗證 7.6非對稱加解密驗證 7.7對稱加解密驗證 7.8生成密鑰對驗證 7.9PKCS#7運算驗證 7.10SM2消息類運算驗證 7.11Base64編碼驗證 附錄A(資料性)通用密碼服務接口函數匯總 附錄B(規(guī)范性)SM9密碼算法數據結構和接口函數 附錄C(規(guī)范性)通用密碼服務接口錯誤代碼定義 參考文獻 ⅢGB/T43578—2023本文件按照GB/T1.1—2020《標準化工作導則第1部分:標準化文件的結構和起草規(guī)則》的規(guī)定起草。請注意本文件的某些內容可能涉及專利。本文件的發(fā)布機構不承擔識別專利的責任。本文件由全國信息安全標準化技術委員會(SAC/TC260)提出并歸口。本文件起草單位:北京數字認證股份有限公司、無錫江南信息安全工程技術中心、中國電力科學研究院、中國電子技術標準化研究院、博雅中科(北京)信息技術有限公司、山東得安信息技術有限公司、上海市數字證書認證中心有限公司、北京信安世紀科技股份有限公司、智巡密碼(上海)檢測技術有限公司、格爾軟件股份有限公司、中科信息安全共性技術國家工程研究中心有限公司、數安時代科技股份有限公司、阿里云計算有限公司、鄭州信大捷安信息技術股份有限公司、中電科網絡安全科技股份有限公司、中移(杭州)信息技術有限公司、浙江九州量子信息技術股份有限公司、航天信息股份有限公司、OP-PO廣東移動通信有限公司、深圳市不動產登記中心。本文件主要起草人:趙松、王銀平、程磊、夏魯寧、侯鵬亮、李述勝、劉平、李智虎、黃晶晶、程科偉、1信息安全技術通用密碼服務接口規(guī)范本文件規(guī)定了通用密碼服務接口的數據結構、接口描述、函數定義要求,描述了相應驗證方法。本文件適用于公開密鑰應用技術體系下密碼應用服務的開發(fā),密碼應用支撐平臺的研制及檢測,密碼設備的應用系統(tǒng)的開發(fā)。2規(guī)范性引用文件下列文件中的內容通過文中的規(guī)范性引用而構成本文件必不可少的條款。其中,注日期的引用文件,僅該日期對應的版本適用于本文件;不注日期的引用文件,其最新版本(包括所有的修改單)適用于本文件。GB/T20518信息安全技術公鑰基礎設施數字證書格式GB/T25069信息安全技術術語GB/T32918.1信息安全技術SM2橢圓曲線公鑰密碼算法第1部分:總則GB/T33560信息安全技術密碼應用標識規(guī)范GB/T35275信息安全技術SM2密碼算法加密簽名消息語法規(guī)范GB/T35276信息安全技術SM2密碼算法使用規(guī)范GB/T35291信息安全技術智能密碼鑰匙應用接口規(guī)范GB/T36322信息安全技術密碼設備應用接口規(guī)范GB/T41389信息安全技術SM9密碼算法使用規(guī)范GM/T0094—2020公鑰密碼應用技術體系框架規(guī)范GM/Z4001密碼術語PKCS#1RSA密碼編譯標準(RSACryptographyStandard)PKCS#7密碼消息語法標準(CryptographicMessageSyntaxStandard)3術語和定義GB/T25069、GM/Z4001界定的以及下列術語和定義適用于本文件。密鑰容器keycontainer密碼設備中用于保存密鑰唯一性存儲空間。4縮略語下列縮略語適用于本文件。CA:證書認證機構(CertificationAuthority)2CSP:加密服務提供者(CryptographicServiceProvider)DER:可區(qū)分編碼規(guī)則(DistinguishedEncodingRules)ECB:電子密碼本(ElectronicCodeBook)IV:初始化向量(initializationvector)LDAP:輕量級目錄訪問協議(LightweightDirectoryAccessProtocol)MAC:消息鑒別碼(MessageAuthenticationCode)OCSP:在線證書狀態(tài)協議(OnlineCertificateStatusProtocol)OID:對象標識符(ObjectIdentifier)RSA:非對稱加密算法(Rivest-Shamir-AdlemanAlgorithm)5通用密碼服務接口描述5.1通用密碼服務接口在公鑰密碼應用技術體系框架中的位置公鑰密碼應用技術體系框架由應用層、典型密碼應用支撐層、通用密碼應用支撐層、基礎設施安全支撐平臺、密碼設備服務層組成。通用密碼服務接口屬于通用密碼應用支撐層中通用密碼服務,向典型密碼服務層和應用層提供證書解析、證書認證、信息的機密性、完整性和不可否認性通用密碼服務,將上層應用的密碼服務請求轉化為具體的基礎密碼操作請求,通過統(tǒng)一的密碼設備應用接口調用相應的密碼設備實現具體的密碼運算和密鑰操作,通用密碼服務在公鑰密碼應用技術框架內的位置應遵循GM/T0094—2020的第4章。5.2通用密碼服務接口組成和功能說明通用密碼服務接口由以下部分組成:a)環(huán)境類函數;b)證書類函數;c)密碼運算類函數;d)消息類函數。通用密碼服務接口函數匯總信息詳見附錄A。本文件中的相關接口,均采用C語言形式定義,作為參考。5.2.2環(huán)境類函數環(huán)境類函數負責創(chuàng)建和管理程序空間中所需的各種資源、信號,并確保程序空間在應用程序運行期間不會被非法訪問,造成信息泄露。環(huán)境類函數負責完成與密碼設備的安全連接,確保后續(xù)的操作是在安全的程序空間中進行。環(huán)境類函數還負責在用戶與密碼設備之間創(chuàng)建和管理應用接口句柄??蓜?chuàng)建兩種類型的應用接口句柄,一類是普通用戶,該類型的應用接口句柄標識該用戶是普通用戶,只能訪問密碼設備中屬于自己的信息和數據;另一類是管理員,該類型的應用接口句柄標識該用戶是管理員,管理員可管理普通用戶的應用接口句柄。應用程序在使用通用密碼服務接口時,首先要調用初始化環(huán)境函數(SAF_Initialize)創(chuàng)建和初始化安全的程序空間,完成與密碼設備連接和初始化工作。應用程序在調用任何密碼服務函數前應確保運行環(huán)境安全,可采用白名單機制或對接入設備進行認證的方式,進行任何私鑰運算之前應首先調用用戶3GB/T43578—2023登錄函數(SAF_Login),創(chuàng)建應用接口句柄。當不再調用密碼服務函數時,應調用注銷登錄函數(SAF_Logout)注銷安全訪問令牌,防止密碼設備被非法訪問。在終止應用程序之前,應調用清除環(huán)境函數(SAF_Finalize),中止與密碼設備的連接,銷毀所創(chuàng)建的安全的程序空間,防止由于內存殘留所帶來的安全風險。5.2.3證書類函數證書類函數負責將各類數字證書設置到應用接口會話環(huán)境中,實現證書獲取、CRL獲取、CA根證書設置、用戶證書驗證和用戶證書信息獲取功能。應用程序通過調用證書類函數,實現基于數字證書的身份認證、授權管理、訪問控制安全機制。本文件中涉及的數字證書格式應符合GB/T20518的規(guī)定。5.2.4密碼運算類函數密碼運算類函數負責與密碼設備交互并實現密碼運算,并將密碼運算后的結果返回給應用程序,是應用程序實現數據機密性、完整性和不可否認性等安全機制的基礎。密碼運算類函數提供包括Base64編解碼、隨機數生成、密碼雜湊以及各種對稱和非對稱密碼運算等。密碼運算函數支持定長數據和不定長數據的密碼運算,對于定長數據可直接調用相關函數進行處理;對于不定長數據,需要先創(chuàng)建相應的密碼運算對象,然后調用相應的函數對數據進行持續(xù)處理。當數據處理完時,要調用相應的函數表示數據處理完,最后要調用相應函數銷毀相應的密碼運算對象。5.2.5消息類函數消息類函數的功能是將數據按照數字信封格式進行封裝,實現應用系統(tǒng)互聯互通和信息共享,使用RSA算法時遵循PKCS#7,使用國密算法時遵循GB/T35275。消息類函數提供了數據編解碼、簽名數據編解碼和數字信封編解碼,能夠非常方便應用程序實現真實性、機密性、完整性和不可否認性等安全措施。6通用密碼服務接口函數定義6.1算法標識和數據結構6.1.1算法標識與常量定義本文件所使用常量定義、各類算法標識和證書解析標識的具體定義符合GB/T33560。6.1.2通用密碼服務接口數據結構定義和說明數據常量標識定義了常量的取值。數據常量標識的定義符合表1的規(guī)定。表1常量定義常量名取值描述SGD_MAX_COUNT枚舉出的對象數量最大值SGD_MAX_NAME_SIZE證書某項信息的字符串長度最大值4用戶證書列表定義了用戶證書傳遞結構。用戶證書列表定義符合表2的規(guī)定。表2用戶證書列表字段名稱含義certCount證書總數CertificateDER編碼的數字證書certificateLen數字證書的長度containerName密鑰容器名稱containerNameLen密鑰容器名稱的長度keyUsage密鑰用途C語言的數據結構定義:typedefstructSGD_USR_CERT_ENunsignedchar*certificate[SGD_MAXunsignedchar*containeunsignedintkeyUsage[SGD_MAX_COUNT];密鑰容器信息列表定義了密鑰容器信息。密鑰容器信息列表定義符合表3的規(guī)定。表3密鑰容器信息列表字段名稱含義keyPairCount密鑰容器信息總數密鑰容器名稱密鑰容器名稱的長度密鑰用途,1:加密;2:簽名;3:密鑰交換密鑰類型,1:SM2;2:RSA1024(存在安全風險);3:RSA2048;4:RSA3072;5:RSA4096;6:SM9(SM9密碼算法定義應符合附錄B的規(guī)定)C語言的數據結構定義:typedefstructSGD_KEYCONTAINERINFO_ENUMLIST_{5unsignedchar*containerName[SGD_unsignedintcontainerNameLen[SGD_MAX_COUNT];unsignedintkeyUsage[SGD_MAX_COUNT];unsignedintkeyType[SGD_MAX_COUNT];}SGD_KEYCONTAINERINFO_ENUMLIST;環(huán)境類函數負責創(chuàng)建和管理程序空間中所需的各種資源、信號,并確保程序空間在應用程序運行期初始化環(huán)境函數定義應符合表4的規(guī)定。表4初始化環(huán)境函數定義原型intSAF_Initialize(void**phAppHandle,unsignedchar*pucCfgFilePath)描述初始化密碼服務程序空間參數phAppHandle[in,out](輸入并返回應用接口句柄)pucCfgFilePath[in](配置文件全路徑名,配置信息自定義,宜包括:密碼設備類型、密碼設備動態(tài)庫名稱、設備的配置文件、應用策略等)返回值0(成功)非0(失敗,返回附錄C中表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)清除環(huán)境函數定義應符合表5的規(guī)定。表5清除環(huán)境函數定義原型描述清除應用程序空間參數hAppHandle[in](應用接口句柄)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)獲取接口版本信息函數定義應符合表6的規(guī)定。6GB/T43578—2023表6獲取接口版本信息函數定義原型描述取接口對應標準的版本號參數puiVersion[out](版本號)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)備注版本號的格式為OxAABBCCCC,其中AA為主版本號,BB為次版本號,CCCC為修改號6.2.5用戶登錄用戶登錄函數定義應符合表7的規(guī)定。表7用戶登錄函數定義原型unsignedchar*pucContainer描述用戶登錄密碼設備,建立安全令牌參數hAppHandle[in](應用接口句柄)uiUsrType[in](用戶類型,當為0時表示管理員登錄,為1時表示用戶登錄)pucContainerName[in][密鑰容器名(或多個參數的拼接值,多個參數時用###拼接)或密鑰檢索uiContainerNameLen[in](密鑰容器名或密鑰檢索號的長度)pucPin[in](設備口令)uiPinLen[in](設備口令長度)puiRemainCount[out](口令剩余重試次數)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)規(guī)則在服務器端使用加密機或加密卡時,加密機或加密卡應遵循GB/T36322或GB/T35291,對遵循GB/T35291的設備,pucContainerName用于標識指定的密鑰容器名或多個參數的拼接值,對遵循GB/T36322的設備,pucContainerName用于標識密碼設備內部的密鑰位置6.2.6修改口令修改口令函數定義應符合表8的規(guī)定。7GB/T43578—2023表8修改口令函數定義原型unsignedchar*pucContainer描述修改設備口令,本函數僅適用于遵循GB/T35291的客戶端密碼設備參數hAppHandle[in](應用接口句柄)uiUsrType[in](用戶類型,當為0時表示管理員登錄,為1時表示用戶登錄)pucContainerName[in](密鑰容器名或密鑰檢索號)uiContainerNameLen[in](密鑰容器名或密鑰檢索號的長度)pucOldPin[in](設備當前口令)uiOldPinLen[in](設備當前口令長度)pucNewPin[in](設備新口令)uiNewPinLen[in](設備新口令長度)puiRemainCount[out](口令剩余重試次數)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.2.7注銷登錄注銷登錄函數定義應符合表9的規(guī)定。表9注銷登錄函數定義原型描述設備注銷登錄參數hAppHandle[in](應用接口句柄)uiUsrType[in](用戶類型,當為0時表示管理員登錄,為1時表示用戶登錄)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)86.3證書類函數證書類函數設置各類數字證書到應用接口會話環(huán)境中、驗證用戶證書和獲取數字證書或CRL,提供包括證書獲取、CRL獲取、CA根證書設置、用戶證書驗證和用戶證書信息獲取等一系列具體函數。添加根CA證書函數定義應符合表10的規(guī)定。表10添加根CA證書函數定義原型intSAF_AddTrustedRootCaCertificate(void*hAppHandle,unsignedchar*pucCertificate,unsignedintuiCertificateLen,unsignedintuilndex)描述添加信任的CA根證書參數hAppHandle[in](應用接口句柄)pucCertificate[in](DER編碼的證書)uiCertificateLen[in](證書長度)uilndex[out](CA根證書索引)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)備注本函數僅限于管理員使用獲取根CA證書個數函數定義應符合表11的規(guī)定。表11獲取根CA證書個數函數定義原型intSAF_GetRootCaCerti描述獲取信任根CA證書的個數參數hAppHandle[in](應用接口句柄)puiCount[out](信任根CA證書個數)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)9獲取根CA證書函數定義應符合表12的規(guī)定。表12獲取根CA證書函數定義原型intSAF_GetRootCaCertificate(void*hAppHandle,unsignedintuilndex.unsignedchar*pucCertificate,unsignedint*puiCertificateLen)描述獲取指定位置CA根證書參數hAppHandle[in](應用接口句柄)uilndex[in](根證書索引)pucCertificate[out](DER編碼的證書)puiCertificateLen[in,out](證書長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)刪除根CA證書函數定義應符合表13的規(guī)定。表13刪除根CA證書函數定義原型intSAF_RemoveRootCaCertificate(void*hAppHandle,unsignedintuilndex)描述刪除指定位置CA根證書參數hAppHandle[in](應用接口句柄)uilndex[in](根證書索引)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)備注本函數僅限于管理員使用添加CA證書函數定義應符合表14的規(guī)定。表14添加CA證書函數定義原型intSAF_AddCaCertificate(void*hAppHandle,unsignedchar*pucCertificate,unsignedintuiCertificateLen,unsignedintuiIndex)描述參數hAppHandle[in](應用接口句柄)pucCertificate[in](DER編碼的證書)uiCertificateLen[in](證書長度)uiIndex[out](CA證書索引)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)備注本函數僅限于管理員使用獲取CA證書個數函數定義應符合表15的規(guī)定。表15獲取CA證書個數函數定義原型描述獲取信任CA證書的個數參數hAppHandle[in](應用接口句柄)puiCount[out](信任CA證書個數)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)獲取CA證書函數定義應符合表16的規(guī)定。GB/T43578—2023表16獲取CA證書函數定義原型intSAF_GetCaCertificate(void*hAppHandle,unsignedintuilndex,unsignedchar*pucCertificate,unsignedint*puiCertificateLen)描述獲取指定位置CA證書參數hAppHandle[in](應用接口句柄)uilndex[in](CA證書索引)pucCertificate[out](DER編碼的證書)puiCertificateLen[in,out](證書長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)刪除CA證書函數定義應符合表17的規(guī)定。表17刪除CA證書函數定義原型描述刪除指定位置CA證書hAppHandle[in](應用接口句柄)參數uilndex[in](證書位置索引)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)備注本函數僅限于管理員使用添加CRL函數定義應符合表18的規(guī)定。GB/T43578—2023表18添加CRL函數定義原型intSAF_AddCrl(void*hAppHandle,unsignedchar*pucDerCrl,unsignedintuiDerCrlLen)描述參數hAppHandle[in](應用接口句柄)pucDerCrl[in](DER編碼的CRL)uiDerCrlLen[in](DER編碼CRL的長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)備注本函數僅限于管理員使用6.3.11驗證用戶證書驗證用戶證書函數定義應符合表19的規(guī)定。表19驗證用戶證書函數定義原型intSAF_VerifyCertificate(void*hAppHandle,unsignedchar*pucUsrCertificate,unsignedintuiUsrCertificateLen)描述驗證用戶證書的有效性,包括驗證有效期、證書信任列表、吊銷狀態(tài)等參數hAppHandle[in](應用接口句柄)pucUsrCertificate[in](DER編碼的證書)uiUsrCertificateLen[in](證書長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.3.12根據CRL文件獲取用戶證書注銷狀態(tài)根據CRL文件獲取用戶證書注銷狀態(tài)函數定義應符合表20的規(guī)定。GB/T43578—2023表20根據CRL文件獲取用戶證書注銷狀態(tài)函數定義原型intSAF_VerifyCertificateByCrl(void*hAppHandle,unsignedchar*pucUsrCertificate,unsignedintuiUsrCertificateLen,unsignedchar*pucDerCrl,unsignedintuiDerCrlLen,unsignedchar*pucRevokeDate)描述根據CRL文件驗證用戶證書是否被注銷參數hAppHandle[in](應用接口句柄)pucUsrCertificate[in](DER編碼的證書)uiUsrCertificateLen[in](證書長度)pucDerCrl[in](DER編碼的CRL)uiDerCrlLen[in](CRL長度)pucRevokeDate[out](若證書有效此參數不返回,若證書被注銷,則返回注銷日期,格式為YYYY-MM-DDHH:MM:SS)返回值0(成功)非0(失敗,返回附錄C.1的錯誤代碼,應符合附錄C的規(guī)定)6.3.13根據OCSP獲取用戶證書注銷狀態(tài)根據OCSP獲取用戶證書注銷狀態(tài)函數定義應符合表21的規(guī)定。表21根據OCSP獲取用戶證書注銷狀態(tài)函數定義原型intSAF_GetCertificateunsignedchar*pucOcspHunsignedchar*pucUsrCertificunsignedchar*pucCACertifi描述從OCSP獲取用戶證書的實時狀態(tài)參數hAppHandle[in](應用接口句柄)pucOcspHostURL[in](OCSP服務的URL)uiOcspHostURLLen[in](URL長度)pucUsrCertificate[in](DER編碼證書)uiUsrCertificateLen[in](證書長度)pucCACertificate[in](DER編碼頒發(fā)者證書)uiCACertificateLen[in](頒發(fā)者證書長度)pucRevokeDate[out](若證書有效此參數不返回,若證書被吊銷,則返回吊銷日期,格式為YYYY-MM-DDHH:MM:SS)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.3.14通過LDAP方式獲取證書通過LDAP方式獲取證書函數定義應符合表22的規(guī)定。表22通過LDAP方式獲取證書函數定義原型描述通過LDAP方式獲取證書參數hAppHandle[in](應用接口句柄)pcLdapHostURL[in](LDAP服務器IP地址)uiLdapHostURLLen[in](LDAP服務器端口)pucQueryDN[in](需要查找的證書的查詢條件)uiQueryDNLen[in](查詢條件長度)pucOutCert[out](查詢到的Base64編碼的證書,如查詢出多證書,則證書信息中間以“&.”分割)puiOutCertLen[in,out](找到的證書長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.3.15通過LDAP方式獲取證書對應的CRL通過LDAP方式獲取證書對應的CRL函數定義應符合表23的規(guī)定。表23通過LDAP方式獲取證書對應的CRL函數定義原型intSAF_GetCrlFromLdap(void*hAppHandle,char*pcLdapHostURL,unsignedintuiLdapHostURLLen,unsignedchar*pucCertificate,unsignedintuiCertificateLen,unsignedchar*pucCrlData,unsignedint*puiCrlDataLen)描述通過LDAP方式根據證書獲取對應的CRLGB/T43578—2023表23通過LDAP方式獲取證書對應的CRL函數定義(續(xù))參數hAppHandle[in](應用接口句柄)pcLdapHostURL[in](LDAP服務URL)uiLdapHostURLLen[in](URL長度)pucCertificate[in](DER編碼的數字證書)uiCertificateLen[in](證書長度)pucCrlData[out](獲取的DER編碼的CRL文件)puiCrlDataLen[in,out](CRL文件長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.3.16獲取證書信息獲取證書信息函數定義應符合表24的規(guī)定。表24獲取證書信息函數定義原型intSAF_GetCertificatelnfo(void*hAppHandle,unsignedchar*pucCertificate,unsignedintuiCertificateLen,unsignedintuilnfoType,unsignedchar*puclnfo,unsignedint*puilnfoLen)描述解析證書,獲取證書中的信息參數hAppHandle[in](應用接口句柄)pucCertificate[in](DER編碼的證書)uiCertificateLen[in](證書長度)uilnfoType[in](指定的證書解析標識,應符合GB/T33560的規(guī)定)puclnfo[out](獲取的證書信息)puilnfoLen[in,out](獲取的證書信息長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.3.17獲取證書擴展信息獲取證書擴展信息函數定義應符合表25的規(guī)定。GB/T43578—2023表25獲取證書擴展信息函數定義原型描述獲取證書的擴展信息參數hAppHandle[in](應用接口句柄)pucDerCert[in](DER格式的數字證書)uiDerCertLen[in](數字證書長度)uilnfoType[in](指定的證書擴展項解析標識,應符合GB/T33560的規(guī)定)pucPriOid[in](擴展項的OID,如果不是私有擴展項類型,該參數無效)uiPriOidLen[in](擴展項OID長度,如果不是私有擴展項類型,該參數無效)puclnfo[out](獲取的證書信息)puilnfoLen[in,out](獲取的證書信息長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.3.18列舉用戶證書列舉用戶證書函數定義應符合表26的規(guī)定。表26列舉用戶證書函數定義原型intSAF_EnumCertificates(void*hAppHandle,SGD_USR_CERT_ENUMLIST*usrCerts)描述列舉出插入當前計算機的所有密碼設備內的有效證書參數hAppHandle[in](應用接口句柄)usrCerts[out](返回的用戶證書列表)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)備注usrCerts結構內的對象數據由本函數分配空間。本函數用于客戶端枚舉證書6.3.19列舉用戶的密鑰容器信息列舉用戶的密鑰容器信息函數定義應符合表27的規(guī)定。GB/T43578—2023表27列舉用戶的密鑰容器信息函數定義原型IntSAF_EnumKeyContainerlnfo(void*hAppHandle,SGD_KEYCONTAINERINFO_ENUMLIST*keyContainerlnfo)描述列舉插入當前計算機的所有密碼設備的密鑰容器信息參數hAppHandle[in](應用接口句柄)keyContainerlnfo[out](返回的密鑰容器信息)返回值SAR_OK(成功)其他(失敗)備注keyContainerInfo結構內的對象數據由本函數分配空間。僅在客戶端使用6.3.20釋放列舉用戶證書的內存釋放列舉用戶證書的內存函數定義應符合表28的規(guī)定。表28釋放列舉用戶證書的內存函數定義原型intSAF_EnumCertificatesFree(void*hAppHandle,SGD_USR_CERT_ENUMLIST*usrCerts)描述釋放SAF_EnumCertificates函數中分配的內存參數hAppHandle[in](應用接口句柄)usrCerts[in](證書信息)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.3.21釋放列舉密鑰容器信息的內存釋放列舉密鑰容器信息的內存函數定義應符合表29的規(guī)定。表29釋放列舉密鑰容器信息的內存函數定義原型intSAF_EnumkeyContainerInfoFree(void*hAppHandle,SGD_KEYCONTAINERINFO_ENUMLIST*keyContainerInfo)描述釋放SAF_EnumKeyContainerlnfo函數中分配的內存參數hAppHandle[in](應用接口句柄)keyContainerInfo[in](密鑰容器信息)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)GB/T43578—20236.4密碼運算類函數密碼運算類函數通過與密碼設備交互實現具體的密碼運算,并將密碼運算后的結果返回給應用程序,是應用程序實現數據保密性、完整性和不可抵賴性等安全機制的基礎。單塊Base64編碼函數定義應符合表30的規(guī)定。表30單塊Base64編碼函數定義原型intSAF_Base64_Encode(unsignedchar*pucInData,unsignedintuilnDataLen,unsignedchar*pucOutData,unsignedint*puiOutDataLen)描述對輸入的數據進行Base64編碼,編碼格式參考IETFRFC4648參數puclnData[in](編碼前的數據)uilnDataLen[in](編碼前的數據長度)pucOutData[out](編碼后的數據)puiOutDataLen[in,out](編碼后的數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.3單塊Base64解碼單塊Base64解碼函數定義應符合表31的規(guī)定。表31單塊Base64解碼函數定義原型描述對輸入的數據進行Base64解碼,編碼格式參考IETFRFC4648參數puclnData[in](解碼前的數據)uilnDataLen[in](解碼前的數據長度)pucOutData[out](解碼后的數據)puiOutDataLen[in,out](解碼后的數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)GB/T43578—2023創(chuàng)建Base64對象函數定義應符合表32的規(guī)定。表32創(chuàng)建Base64對象函數定義原型intSAF_Base64_CreateBase64Obj(void*hAppHandle,void**phBase64Obj)描述為任意長度數據的Base64編解碼創(chuàng)建Base64對象,編碼格式參考IETFRFC4648參數hAppHandle[in](應用句柄)phBase64Obi[out](指向創(chuàng)建的Base64對象句柄的指針)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)備注本函數與SAF_Base64_DestroyBase64Obj,SAF_Base64_EncodeUpdate,SGD_Base64_EncodeFinal,SAF_Base64_DecodeUpdate,SAF_Base64_DecodeFinal等函數共同使用以支持任意長度數據的Base64編解碼銷毀Base64對象函數定義應符合表33的規(guī)定。表33銷毀Base64對象函數定義原型intSAF_Base64_DestroyBase64Obj(void*hAppHandle,void*hBase64Obj)描述刪除Base64對象參數hAppHandle[in](應用句柄)hBase64Obj[in](需要刪除的Base64對象句柄)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.6通過Base64對象多塊編碼通過Base64對象多塊編碼函數定義應符合表34的規(guī)定。GB/T43578—2023表34通過Base64對象多塊編碼函數定義原型unsignedchar*pucOutData,描述通過Base64對象對數據多塊Base64編碼,編碼格式參考IETFRFC4648參數hBase64Obj[in](Base64對象)puclnData[in](編碼前的數據)uilnDataLen[in](編碼前的數據長度)pucOutData[out](編碼后的數據)puiOutDataLen[in,out](返回編碼后的數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)備注編碼完成后,需調用SAF_Base64_EncodeFinal6.4.7通過Base64對象編碼結束通過Base64對象編碼結束函數定義應符合表35的規(guī)定。表35通過Base64對象編碼結束函數定義原型unsignedchar*pucOutData,描述通過Base64對象對數據編碼結束,編碼格式參考IETFRFC4648參數hBase64Obi[in](Base64對象)pucOutData[out](編碼后的數據)puiOutDataLen[in,out](返回編碼后的數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.8通過Base64對象多塊解碼通過Base64對象多塊解碼函數定義應符合表36的規(guī)定。表36通過Base64對象多塊解碼函數定義原型unsignedchar*puclnDatunsignedchar*pucOutData,描述通過Base64對象對數據多塊Base64解碼,編碼格式參考IETFRFC4648參數hBase64Obj[in](Base64對象)puclnData[in](解碼前的數據)uilnDataLen[in](解碼前的數據長度)pucOutData[out](解碼后的數據)puiOutDataLen[in,out](返回解碼后的數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)備注解碼完成后,需調用SAF_Base64_DecodeFinal結束6.4.9通過Base64對象解碼結束通過Base64對象解碼結束函數定義應符合表37的規(guī)定。表37通過Base64對象解碼結束函數定義原型描述通過Base64對象對數據解碼結束,編碼格式參考IETFRFC4648參數hBase64Obj[in](Base64對象)pucOutData[out](解碼后的數據)puiOutDataLen[in,out](返回解碼后的數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.10生成隨機數生成隨機數函數定義應符合表38的規(guī)定。表38生成隨機數函數定義原型描述生成指定長度的隨機數參數hAppHandle[in](應用句柄)uiRandLen[in](隨機數長度)pucRand[out](指定長度的隨機數,內存由外部調用者分配。)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)HASH運算函數定義應符合表39的規(guī)定。表39HASH運算函數定義原型intSAF_Hash(void*hAppHandle,unsignedintuiAlgoType,unsignedchar*puclnData,unsignedintuilnDataLen,unsignedchar*pucPublicKey,unsignedintuiPublicKeyLen,unsignedchar*pucID,unsignedintuilDLen,unsignedchar*pucOutData,unsignedint*puiOutDataLen)描述HASH運算,對給定長度數據的HASH運算參數hAppHandle[in](應用句柄)uiAlgoType[in](HASH算法)pucInData[in](輸入數據)uilnDataLen[in](輸入數據長度)pucPublicKey[in](簽名者公鑰。當uiAlgoType為SGD_SM3時有效)uiPublicKeyLen[in](簽名者公鑰長度)pucID[in](簽名者的ID值,當uiAlgoType為SGD_SM3時有效)uiIDLen[in](簽名者ID的長度,當uiAlgoType為SGD_SM3時有效)pucOutData[out](HASH)puiOutDataLen[out](HASH長度)表39HASH運算函數定義(續(xù))返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)規(guī)則當uiAlgoType為SGD_SM3且uilDLen不為0的情況下pucPublicKey、pucID有效,執(zhí)行SM2算法簽名預處理1和預處理2操作。計算過程應按照GB/T35276的要求創(chuàng)建HASH對象函數定義應符合表40的規(guī)定。表40創(chuàng)建HASH對象函數定義原型intSAF_CreateHashObj(void*hAppHandle,void**phHashObj,unsignedintuiAlgorithmTypeunsignedchar*pucPublicKey,unsignedintuiPublicKeyLen,unsignedchar*pucIDunsignedintuilDLen)描述創(chuàng)建HASH對象,對任意長度數據的HASH運算參數hAppHandle[in](應用句柄)phHashObj[out](創(chuàng)建的HASH對象)uiAlgorithmType[in](HASH算法)pucPublicKey[in](簽名者公鑰。當uiAlgoType為SGD_SM3時有效)uiPublicKeyLen[in](簽名者公鑰長度)pucID[in](簽名者的ID值,當uiAlgoType為SGD_SM3時有效)uiIDLen[in](簽名者ID的長度,當uiAlgoType為SGD_SM3時有效)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)規(guī)則當uiAlgoType為SGD_SM3且uilDLen不為0的情況下pucPublicKey、pucID有效,執(zhí)行SM2算法簽名預處理1操作。計算過程應按照GB/T35276的要求刪除HASH對象函數定義應符合表41的規(guī)定。GB/T43578—2023表41刪除HASH對象函數定義原型void*hAppHandle,void*hHashObj)描述刪除HASH對象參數hAppHandle[in](應用句柄)hHashObj[in](需要刪除的HASH對象)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.14通過對象進行多塊HASH運算通過對象進行多塊HASH運算函數定義應符合表42的規(guī)定。表42通過對象進行多塊HASH運算函數定義原型描述參數hHashObj[in](HASH對象)puclnData[in](輸入數據)uilnDataLen[in](輸入數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)備注運算完成后,需調用SAF_HashFinal結束6.4.15結束HASH運算結束HASH運算函數定義應符合表43的規(guī)定。表43結束HASH運算函數定義原型void*hHashObj,unsignedchar*pucOutData,描述結束HASH運算參數hHashObj[in](HASH對象)pucOutData[out](輸出的HASH值)puiOutDataLen[out](HASH值的長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)GB/T43578—2023生成RSA密鑰對函數定義應符合表44的規(guī)定。表44生成RSA密鑰對函數定義原型void*hAppHandle.unsignedchar*pucContainer描述產生指定名稱的密鑰容器并在該密鑰容器內生成RSA密鑰對參數hAppHandle[in](應用接口句柄)pucContainerName[in](密鑰容器名)uiContainerNameLen[in](密鑰容器名長度)uiKeyBits[in](密鑰模長)uiKeyUsage[in](密鑰用途)SGD_KEYUSAGE_SIGN(表示簽名)SGD_KEYUSAGE_KEYEXCHANGE(表示密鑰交換(加密))uiExportFlag[in](1表示生成的密鑰對可導出,0表示不應導出)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)備注如果指定的密鑰容器名已存在,則在該密鑰容器內增加或者替換密鑰對6.4.17獲取RSA公鑰獲取RSA公鑰函數定義應符合表45的規(guī)定。表45獲取RSA公鑰函數定義原型unsignedchar*pucContainer描述取出符合PKCS#1的RSA公鑰表45獲取RSA公鑰函數定義(續(xù))參數hAppHandle[in](應用接口句柄)pucContainerName[in](密鑰容器名或密碼機的密碼號)uiContainerLen[in](密鑰容器名長度)uiKeyUsage[in](密0鑰用途)SGD_KEYUSAGE_SIGN(表示簽名)SGD_KEYUSAGE_KEYEXCHANGE(表示加密)pucPublicKey[out](輸出的DER格式的公鑰數據)puiPublicKeyLen[in,out](輸出公鑰數據的長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.18RSA簽名運算RSA簽名運算函數定義應符合表46的規(guī)定。表46RSA簽名運算函數定義原型unsignedchar*pucContainer描述按照PKCS#1的要求對一定長度的字符串進行簽名運算參數hAppHandle[in](應用接口句柄)pucContainerName[in](密鑰容器名或密鑰號)uiContainerNameLen[in](密鑰容器名長度)uiHashAlgorithmID[in](HASH算法)puclnData[in](簽名原文)uilnDataLen[in](簽名原文的長度)pucSignData[out](輸出的DER格式簽名結果數據)puiSignDataLen[in,out](輸出的簽名結果數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.19對文件進行RSA簽名運算對文件進行RSA簽名運算函數定義應符合表47的規(guī)定。表47對文件進行RSA簽名運算函數定義原型unsignedchar*pucContainer描述按照PKCS#1的要求對指定的文件進行簽名運算參數hAppHandle[in](應用接口句柄)pucContainerName[in](密鑰容器名)uiContainerNameLen[in](密鑰容器名長度)uiHashAlgorithmID[in](HASH算法)pucFileName[in](要簽名的全路徑文件名)pucSignData[out](輸出的DER格式的簽名結果數據)puiSignDataLen[in,out](輸出的簽名結果數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)備注此函數主要用于對附件的簽名,也適用于對大文件的簽名RSA驗證簽名運算函數定義應符合表48的規(guī)定。表48RSA驗證簽名運算函數定義原型intSAF_RsaVerifySign(void*hAppHandle,unsignedintuiHashAlgorithmID,unsignedchar*pucPublicKey,unsignedintuiPublicKeyLen,unsignedchar*puclnData,,unsignedintuilnDataLen,unsignedchar*pucSignData,unsignedintuiSignDataLen)描述符合PKCS#1的驗證簽名運算表48RSA驗證簽名運算函數定義(續(xù))參數hAppHandle[in](應用句柄)uiHashAlgorithmID[in](HASH算法)pucPublicKey[in](DER編碼的公鑰)uiPublicKeyLen[in](DER編碼的公鑰長度)puclnData[in](簽名原文)uilnDataLen[in](簽名原文的長度)pucSignData[in](DER編碼的簽名數據)uiSignDataLen[in](簽名數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.21對文件及其簽名進行RSA驗證對文件及其簽名進行RSA驗證函數定義應符合表49的規(guī)定。表49對文件及其簽名進行RSA驗證函數定義原型void*hAppHandle描述對文件及其簽名值,進行符合PKCS#1的驗證簽名運算參數hAppHandle[in](應用句柄)uiHashAlgorithmID[in](HASH算法)pucPublicKey[in](DER編碼的公鑰)uiPublicKeyLen[in](DER編碼的公鑰長度)pucFileName[in](需要驗證簽名的文件名)pucSignData[in](DER編碼的簽名數據)uiSignDataLen[in](簽名數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)備注本函數用于對附件的簽名進行驗證,也可對大文件的簽名進行驗證GB/T43578—20236.4.22基于證書的RSA公鑰驗證基于證書的RSA公鑰驗證函數定義應符合表50的規(guī)定。表50基于證書的RSA公鑰驗證函數定義原型unsignedchar*pucCerti描述按照PKCS#1的要求使用數字證書對簽名值進行驗證參數hAppHandle[in](應用句柄)uiHashAlgorithmID[in](HASH算法標識)pucCertificate[in](DER編碼的數字證書)uiCertificateLen[in](DER編碼的數字證書長度)puclnData[in](簽名原文)uilnDataLen[in](簽名原文的長度)pucSignData[in](DER編碼簽名數據)uiSignDataLen[in](簽名數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.23生成SM2密鑰對生成SM2密鑰對函數定義應符合表51的規(guī)定。表51生成SM2密鑰對函數定義原型intSAF_GenSm2KeyPair(void*hAppHandle,unsignedchar*pucContainerName,unsignedintuiContainerLen,unsignedintuiKeyBits.unsignedintuiKeyUsage,unsignedintuiExportFlag)描述生成指定名稱的密鑰容器,并在該密鑰容器內生成SM2密鑰對表51生成SM2密鑰對函數定義(續(xù))參數hAppHandle[in](應用接口句柄)pucContainerName[in](密鑰容器名)uiContainerLen[in](密鑰容器名長度)uiKeyBits[in](密鑰模長)uiKeyUsage[in](密鑰用途)SGD_SM2_1(表示橢圓曲線簽名)SGD_SM2_2(表示橢圓曲線密鑰交換協議)SGD_SM2_3(表示橢圓曲線加密)uiExportFlag[in](1表示生成的密鑰對可導出,0表示不應導出)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)獲取SM2公鑰函數定義應符合表52的規(guī)定。表52獲取SM2公鑰函數定義原型void*hAppHandleunsignedchar*pucContainer描述取出Sm2公鑰參數hAppHandle[in](應用接口句柄)pucContainerName[in](密鑰容器名)uiContainerLen[in](密鑰容器名長度)uiKeyUsage[in](密鑰用途)SGD_SM2_1(表示簽名公鑰)SGD_SM2_3(表示加密公鑰)pucPublicKey[out](輸出的DER編碼的公鑰數據)puiPublicKeyLen[in,out](輸出公鑰數據的長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)SM2簽名函數定義應符合表53的規(guī)定。表53SM2簽名函數定義原型unsignedchar*pucContainer描述使用SM2私鑰對數據進行簽名運算參數hAppHandle[in](應用接口句柄)pucContainerName[in](密鑰容器名)uiContainerNameLen[in](密鑰容器名長度)uiAlgorithmID[in](簽名算法標識)puclnData[in](簽名原文)uilnDataLen[in](簽名原文的長度)pucSignData[out](輸出的DER編碼的簽名數據)puiSignDataLen[in,out](輸出的簽名結果數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)SM2驗證函數定義應符合表54的規(guī)定。表54SM2驗證函數定義原型intSAF_Sm2VerifySign(void*hAppHandle,unsignedchar*pucPublicKey,unsignedintuiPublicKeyLen,unsignedintuiAlgorithmID,unsignedchar*puclnData,unsignedintuilnDataLen,unsignedchar*pucSignData,unsignedintuiSignDataLen)表54SM2驗證函數定義(續(xù))描述利用SM2公鑰驗證簽名參數hAppHandle[in](應用句柄)pucPublicKey[in](DER編碼的公鑰)uiPublicKeyLen[in](公鑰長度)uiAlgorithmID[in](SM2簽名算法)puclnData[in](待驗證數據)uilnDataLen[in](待驗證數據的長度)pucSignData[in](DER編碼的簽名數據)uiSignDataLen[in](簽名數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)SM2公鑰加密函數定義應符合表55的規(guī)定。表55SM2公鑰加密函數定義原型void*hAppHandle描述SM2公鑰加密運算參數hAppHandle[in](應用句柄)pucPublicKey[in](DER編碼的公鑰)uiPublicKeyLen[in](DER編碼的公鑰長度)uiAlgorithmID[in](SM2算法標識)puclnData[in](輸入數據)uilnDataLen[in](輸入數據長度)pucOutData[out](輸出數據,DER編碼)puiOutDataLen[in,out](輸出數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.28基于證書的SM2公鑰加密基于證書的SM2公鑰加密函數定義應符合表56的規(guī)定。表56基于證書的SM2公鑰加密函數定義原型intSAF_Sm2PublicKeyEncByCert(void*hAppHandle,unsignedchar*pucCertificate,unsignedintuiCertificateLen,unsignedintuiAlgorithmID,unsignedchar*puclnData,unsignedintuilnDataLen,unsignedchar*pucOutData,unsignedint*puiOutDataLen)描述基于證書的SM2公鑰加密,證書為外部導入參數hAppHandle[in](應用句柄)pucCertificate[in](DER編碼的數字證書)uiCertificateLen[in](數字證書長度)uiAlgorithmID[in](SM2算法標識)puclnData[in](輸入數據)uilnDataLen[in](輸入數據長度)pucOutData[out](輸出DER編碼的數據)puiOutDataLen[in,out](輸出數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.29基于證書的SM2公鑰解密基于證書的SM2公鑰解密函數定義應符合表57的規(guī)定。表57基于證書的SM2公鑰解密函數定義原型intSAF_Sm2PublicKeyDecByCert(void*hAppHandle,unsignedchar*pucCertificate,unsignedintuiAlgorithmID,unsignedchar*puclnData,unsignedintuilnDataLen.unsignedchar*pucOutData,unsignedint*puiOutDataLen)描述基于證書的SM2公鑰解密表57基于證書的SM2公鑰解密函數定義(續(xù))參數hAppHandle[in](應用句柄)pucCertificate[in](DER編碼的數字證書)uiAlgorithmID[in](SM2算法標識)puclnData[in](輸入DER編碼密文,符合GB/T35276中加密數據格式的定義)uilnDataLen[in](輸入數據長度)pucOutData[out](輸出明文)puiOutDataLen[in,out](輸出數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.30基于證書的SM2公鑰驗證基于證書的SM2公鑰驗證函數定義應符合表58的規(guī)定。表58基于證書的SM2公鑰驗證函數定義原型unsignedchar*pucCertiunsignedchar*pucSignData,描述基于證書的SM2公鑰驗證參數hAppHandle[in](應用句柄)uiAlgorithmID[in](SM2簽名算法標識)pucCertificate[in](DER編碼的數字證書)uiCertificateLen[in](數字證書長度)puclnData[in](待驗證數據)uilnDataLen[in](待驗證數據的長度)pucSignData[in](DER編碼的簽名數據)uiSignDataLen[in](簽名數據長度)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.31創(chuàng)建對稱算法對象創(chuàng)建對稱算法對象函數定義應符合表59的規(guī)定。表59創(chuàng)建對稱算法對象函數定義原型intSAF_CreateSymmAlgoObj(*hAppHandle,**phSymmKeyObj,unsignedchar*pucContainerName,uiContainerLen,unsignedchar*pucIV,uilVLen,uiEncOrDec,uiCryptoAlgID)描述本地產生對稱算法對象參數hAppHandle[in](應用接口句柄)phSymmKeyObj[out](返回的對稱算法對象)pucContainerName[in](密鑰容器名)uiContainerLen[in](密鑰容器名長度)pucIV[in](初始向量,ECB模式時此參數忽略)uiIVLen[in](初始向量長度,ECB模式時此參數忽略)uiEncOrDec[in](1加密,0解密)uiCryptoAlgID[in](加密算法標識)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.32生成會話密鑰并用外部公鑰加密輸出生成會話密鑰并用外部公鑰加密輸出函數定義應符合表60的規(guī)定。表60生成會話密鑰并用外部公鑰加密輸出函數定義原型intSAF_GenerateKeyWithEPK(void*hSymmKeyObj,unsignedchar*pucPublicKey,unsignedintuiPublicKeyLen,unsignedchar*pucSymmKey,unsignedintuiSymmKeyLen,void**phKeyHandle)描述生成會話密鑰并用外部公鑰加密輸出表60生成會話密鑰并用外部公鑰加密輸出函數定義(續(xù))參數hSymmKeyObj[in](對稱算法對象)pucPublicKey[in](輸入的DER編碼的公鑰數據)uiPublicKeyLen[in](輸入公鑰數據的長度)pucSymmKey[out](輸出的加密后的會話密鑰)uiSymmKeyLen[out](輸出的加密會話密鑰長度)phKeyHandle[out](輸出會話密鑰的句柄)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.33導入加密的會話密鑰導入加密的會話密鑰函數定義應符合表61的規(guī)定。表61導入加密的會話密鑰函數定義原型intSAF_ImportEncedKey(void*hSymmKeyObj,unsignedchar*pucSymmKey,unsignedintuiSymmKeyLen,void**phKeyHandle描述導入加密的會話密鑰,使用指定的私鑰解密,產生會話密鑰句柄并輸出參數hSymmKeyObj[in](對稱算法對象)pucSymmKey[in](輸入的加密后的會話密鑰)uiSymmKeyLen[in](輸入的加密會話密鑰長度)phKeyHandle[out](輸出會話密鑰的句柄)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)6.4.34生成密鑰協商參數并輸出生成密鑰協商參數并輸出函數定義應符合表62的規(guī)定。表62生成密鑰協商參數并輸出函數定義原型intSAF_GenerateAgreementDataunsignedchar*pucSponsorPublicKey,unsignedint*puiSponsounsignedchar*pucSponsorTmpPublicKey,unsignedint*puiSponsorTmpPuvoid**phAgreementHandle)描述使用SM2密鑰協商算法,為計算會話密鑰而產生協商參數,同時返回指定索引位置的SM2公鑰、臨時SM2密鑰對的公鑰及協商句柄參數hSymmKeyObj[in](對稱算法對象)uiISKIndex[in](密碼設備內部存儲加密私鑰的索引值,該私鑰用于參與密鑰協商)uiKeyBits[in](要求協商的密鑰長度)pucSponsorlD[in](參與密鑰協商的發(fā)起方ID值)uiSponsorlDLength[in](發(fā)起方ID長度)pucSponsorPublicKey[out](返回的發(fā)起方SM2公鑰)puiSponsorPublicKeyLen[in,out](返回的發(fā)起方SM2公鑰長度)pucSponsorTmpPublicKey[out](返回的發(fā)起方臨時SM2公鑰)puiSponsorTmpPublicKeyLen[in,out](返回的發(fā)起方臨時SM2公鑰長度)phAgreementHandle[out](返回的密鑰協商句柄)返回值0(成功)非0(失敗,返回表C.1定義的錯誤代碼,應符合附錄C的規(guī)定)規(guī)則為協商會話密鑰,協商的發(fā)起方應首先調用本函數計算協商參數。協商參數的計算過程應按照GB/T35276的要求6.4.35計算會話密鑰計算會話密鑰函
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文山2025年云南文山市公安局第一批警務輔助人員招聘47人筆試歷年參考題庫附帶答案詳解
- 怒江2025年云南怒江州財政局公益性崗位招聘筆試歷年參考題庫附帶答案詳解
- 廣州2024年廣東廣州市海珠區(qū)江海街道基層公共就業(yè)創(chuàng)業(yè)服務崗位招募筆試歷年參考題庫附帶答案詳解
- 2025年納豆香菇絲項目可行性研究報告
- 2025年電動橋式圓角擋閘項目可行性研究報告
- 2025至2031年中國潔凈吹淋傳遞窗行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國朱雀系列外墻磚行業(yè)投資前景及策略咨詢研究報告
- 2025年插件式鋁基板項目可行性研究報告
- 2025年定柱懸臂起重機項目可行性研究報告
- 2025至2031年中國保爾塑像行業(yè)投資前景及策略咨詢研究報告
- 醫(yī)學教程 常見急腹癥的超聲診斷課件
- DB11T 1481-2024生產經營單位生產安全事故應急預案評審規(guī)范
- 《氓》教學設計 2023-2024學年統(tǒng)編版高中語文選擇性必修下冊
- 《網店運營與管理》第3版 課件全套 白東蕊 第1-11章 網上開店概述- 移動網店運營
- 2024年全國國家電網招聘之電網計算機考試歷年考試題(附答案)
- 化學元素周期表注音版
- 藥物過敏性休克
- T-GDASE 0042-2024 固定式液壓升降裝置安全技術規(guī)范
- 2024福建省廈門市總工會擬錄用人員筆試歷年典型考題及考點剖析附答案帶詳解
- 四川省康定市大槽門金礦資源儲量核實報告
- DL-T-805.1-2011火電廠汽水化學導則第1部分:鍋爐給水加氧處理導則
評論
0/150
提交評論