GB∕T 43578-2023 信息安全技術(shù) 通 用密碼服務(wù)接口規(guī)范(正式版)_第1頁
GB∕T 43578-2023 信息安全技術(shù) 通 用密碼服務(wù)接口規(guī)范(正式版)_第2頁
GB∕T 43578-2023 信息安全技術(shù) 通 用密碼服務(wù)接口規(guī)范(正式版)_第3頁
GB∕T 43578-2023 信息安全技術(shù) 通 用密碼服務(wù)接口規(guī)范(正式版)_第4頁
GB∕T 43578-2023 信息安全技術(shù) 通 用密碼服務(wù)接口規(guī)范(正式版)_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

溫馨提示

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

評論

0/150

提交評論