cipher api參考海思半導(dǎo)體2017保留一切權(quán)利_第1頁(yè)
cipher api參考海思半導(dǎo)體2017保留一切權(quán)利_第2頁(yè)
cipher api參考海思半導(dǎo)體2017保留一切權(quán)利_第3頁(yè)
cipher api參考海思半導(dǎo)體2017保留一切權(quán)利_第4頁(yè)
cipher api參考海思半導(dǎo)體2017保留一切權(quán)利_第5頁(yè)
已閱讀5頁(yè),還剩64頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2017。保留一切權(quán)利。 何形式。商 注您的產(chǎn)品、服務(wù)或特性等應(yīng)受海思公司商業(yè)合同和條款的約束,本文檔中描述的全部或部分產(chǎn)市海思半導(dǎo) 客戶服務(wù)傳真客戶服務(wù)郵箱 概CIPHER是海思數(shù)字處理平臺(tái)提供的安全算法模塊,它提供了AES、DES、3DES三種對(duì)稱加算法,HASH及HMAC算法,隨機(jī)數(shù)算法,以及RSA不對(duì)稱算AESSM1、SM4,SHA224/384/512SM3算產(chǎn)品版讀者對(duì)本文檔(本指南)主要適用于以下工程師:符號(hào)約

符說(shuō)符說(shuō)表示能幫助您解決某個(gè)問(wèn)題或節(jié)省您的時(shí)間修訂記

00B01(2017-05- 概 概 HASH計(jì) HMAC計(jì) RSA加操作步 生成一個(gè)RSA私 API參 數(shù)據(jù)類 錯(cuò)誤 Proc調(diào)試信 CIPHER狀 圖1-1Cipher應(yīng)用場(chǎng)景1,每次調(diào)用都需要更新 圖1-2Cipher應(yīng)用場(chǎng)景2,只在第一次調(diào)用時(shí)配置 表4-1CIPHER模塊的錯(cuò)誤 概

CIPHER是海思數(shù)字 處理平臺(tái)提供的安全算法模塊,其提供了包括AES和DES/3DES等對(duì)稱加 算法,RSA不對(duì)稱加 HASH、HMAC等 碼流進(jìn)行加保護(hù),用戶認(rèn)對(duì)稱加算S:支持BFB/FBTRMM等工作模式,其中MM,模式下,結(jié)后需獲一次AG值SM1:支持ECB/CBC/CFB/OFB,其中CFB模式支持的位寬可為SM4:支持DES/3DES:ECB/CBC/CFB/OFB,其中CFB和OFB模式支持的位寬可為以上算法除了CTR/CCM/GCM,其它算法、模式的數(shù)據(jù)長(zhǎng)度必須按塊大小對(duì)齊;CCM/GCM的N、A需要靠軟件按標(biāo)準(zhǔn)把各個(gè)字段封裝成塊大小對(duì)齊的數(shù)據(jù)塊;各種算,最多可以申請(qǐng)7個(gè)通道。不對(duì)稱加算S:支持密鑰位寬104826;支持帶掩碼計(jì)算,安全性更高RNG:支持DRGB,以更高速率獲取隨機(jī)數(shù)HA1M4/6/AM2;支持軟件多通道,最多可以申請(qǐng)8AES算法的實(shí)現(xiàn)符合FIPS197ECB、CBC、1/8/128-CFB、128-OFB、CTR幾種工作模式符合NISTspecial800-38a標(biāo)準(zhǔn)CCM工作模式符合NISTspecial800-38c標(biāo)GCM工作模式符合NISTspecial800-38d 分組算法的實(shí)現(xiàn)符合國(guó)家管理局編制 分組標(biāo)準(zhǔn),支ECB、CBC、CFB、OFBSM4分組算法符合GM/T0002-2012標(biāo)準(zhǔn),支持ECB、CBC、CTR模DES/3DES算法的實(shí)現(xiàn)符合FIPS46-3支持ECB、CBC、1/8/64-CFB、1/8/64-OFB幾種工作模式,符合FIPS-81標(biāo)SM2橢圓曲線公鑰算法的實(shí)現(xiàn)符合GM/T0003-2012標(biāo)準(zhǔn),支持簽名及驗(yàn)證、SM3雜湊算法的實(shí)現(xiàn)符合GM/T0004-2012標(biāo)RSA支持公鑰加密私鑰、私鑰加密公鑰、簽名及驗(yàn)簽等功能,各種模式的數(shù)據(jù)填充方式符合PKCS#1標(biāo)準(zhǔn)RSA的加模式包括NOPADDING、BLOCKYTPE0、BLOCKYTPE1、BLOCKYTPE2、RSAESOAEPSHA1RSAESOAEPSHA224、RSAESOAEPSHA256、RSAESOAEPSHA384、RSAESOAEPSHA512、RSAESPKCS1V15等RSA的簽名及驗(yàn)簽?zāi)J桨≧SASSAPKCS1V15SHA1,RSASSAPKCS1V15SHA224、RSASSAPKCS1V15SHA256、RSASSAPKCS1V15SHA384、RSASSAPKCS1V15SHA512、RSASSAPKCS1PSSSHA256、RSASSAPKCS1PSSSHA384、RSASSAPKCS1PSSSHA512等ECB(Electroniccodebook,電子本模式)、CBC(Cipherblockchaining,分組模式)、CFB(Cipherfeedback,密文反饋模式)、OFB(Outputfeedback,輸出反饋模式)、CTR(Countermode,計(jì)數(shù)器模式)、CCM(counterwithCBCMAC,CTR加密模式和消息認(rèn)證碼CMAC算法的混合)、GCM(Galois/CounterMode,華域/計(jì)數(shù)器模式),主要由工作在計(jì)數(shù)器模式下的分組和在華域GF(2^128)上的哈希運(yùn)算組成。CCM和GCM在加的同時(shí)生成CMAC檢驗(yàn)值,時(shí)的CMAC要和時(shí)的CMAC一樣才說(shuō)明是正確的,常用在需要同時(shí)加密和認(rèn)證的領(lǐng)域,欲了解算法的詳細(xì)內(nèi)ECB模式中,對(duì)每個(gè)塊進(jìn)行獨(dú)立加密/,塊與塊之間沒(méi)有依賴;非ECB模式中,塊與塊之間有依賴性,并且為了保證每條消息的唯一性,在第一個(gè)塊中需要使用初始化向量IV使用流單包數(shù)據(jù)加場(chǎng)景說(shuō)明

物理地址后在用戶層調(diào)用CIPHER模塊實(shí)現(xiàn)加/。工作流程對(duì)數(shù)據(jù)進(jìn)行對(duì)稱的DES/3DES/AES加的過(guò)程如下1.CIPHER設(shè)備初始化HIUNFCIPHERInit完成2.創(chuàng)建一路CIPHER,并獲CIPHER句柄。調(diào)HIUNFCIPHER步驟3. 配置HR控制信息,包含密鑰、初始向量、加密算法、工作模式等信息。調(diào)用接口HIFHRnfiae或HIFHRonfiaeEx完成。步驟4.對(duì)數(shù)據(jù)進(jìn)行加。用戶可以調(diào)用以下任一接口進(jìn)行加單包加密--HIUNFCIPHER單包--HIUNFCIPHER5.如果是CCM、GCM模式HIUNFCIPHERGetTag獲取TAG值,否則執(zhí)行下步驟6.銷毀CIPHER句柄。調(diào)用接口HIUNFCIPHERDestroyHandle完成。7.關(guān)閉CIPHER設(shè)備。調(diào)用接口HIUNFCIPHERDeinit完成。----注意事項(xiàng)

使用CIPHER模塊時(shí),請(qǐng)?zhí)貏e注意以下幾點(diǎn)。該接口支持AES、DES/3DES、SM1、SM4、GCM、CMM對(duì)稱加算法各算法支持ECB/CBC/CFB/OFB/CTR等工作模式。在進(jìn)行加密、運(yùn)算前必須先獲取CIPHER句柄,當(dāng)長(zhǎng)時(shí)間不使用時(shí)可以釋放,建議加密、各獲取一個(gè)句柄,每個(gè)句柄只進(jìn)行加密或者只進(jìn)行操作。只支持對(duì)物理空間連續(xù)的內(nèi)存數(shù)據(jù)進(jìn)行加密、(用戶可以通過(guò)海思HIMMZNew接口獲取到物理內(nèi)存,并使用HIMMZMap對(duì)物理內(nèi)存進(jìn)行虛地CIPHER內(nèi)部采用DMA方式傳輸數(shù)據(jù),所以調(diào)用HIUNFCIPHEREncrypt或HIUNFCIPHERDecrypt接口進(jìn)行數(shù)據(jù)的加密或時(shí),傳入的地址參數(shù)為數(shù)據(jù)塊buffer)進(jìn)行數(shù)據(jù)的加密和。對(duì)稱加操作中每個(gè)數(shù)據(jù)包的長(zhǎng)度必須小于1MB。如果數(shù)據(jù)長(zhǎng)度大于或等于使用非ECB模式進(jìn)行CIPHER的加時(shí),需要使用初始化向量IV(Initialector【場(chǎng)景1CIPHERIVstChangeFlags.bit1IV2,并正確配置IV值。HIUNFCIPHERConfigHandle() //shouldsetstChangeFlags.bit1IV andupdateu32IVHIUNFCIPHERHIUNFCIPHERConfigHandle() //shouldsetstChangeFlags.bit1IV andupdateu32IVHIUNFCIPHERHIUNFCIPHERConfigHandle() //shouldsetstChangeFlags.bit1IV andupdateu32IVHIUNFCIPHER圖1-1Cipher應(yīng)用場(chǎng)景1,每次調(diào)用都需要更新【場(chǎng)景2只需第一次調(diào)用CIPHERIVstChangeFlags.bit1IV1,且配置IV值。HIUNFCIPHERConfigHandle() //shouldsetstChangeFlags.bit1IV andupdateu32IVHIUNFCIPHERDecrypt()HIUNFCIPHERDecrypt()….HIUNFCIPHERDecrypt()請(qǐng)結(jié)合實(shí)際場(chǎng)景進(jìn)行IV單包加的IV向量可繼承。創(chuàng)建一路CIPHER,配置屬性(假設(shè)配置的工作模式需要使用IV向量)之后,每次調(diào)用單包加接口時(shí),IV向量會(huì)依次輪流使0,數(shù)據(jù)1a,b,c,d0之后,數(shù)據(jù)0的最后一個(gè)分塊數(shù)據(jù)使用了IV向量中的b進(jìn)行加理;此時(shí),用戶再加11IVc進(jìn)行加密,然后依次為因此在加時(shí),必須要保證兩次向量使用的一致性。重新配置CIPHER控制信息將設(shè)置IV向量從第一個(gè)開(kāi)始HIUNFCIPHERCTRLSbKeyByCAHIFALSE時(shí),這是普通的使用模式,表示需要手動(dòng)配置key進(jìn)行數(shù)據(jù)的加,例如:詳細(xì)用法請(qǐng)參考Ciphersample如果bKeyByCA設(shè)置為HITRUE,表示使用內(nèi)置的Key進(jìn)行數(shù)據(jù)的加解SM1,SM4,AES-CCM,AES-GCM只能使用HIUNFCIPHERConfigHandleEx進(jìn)行配置,CCM、GCM在計(jì)算完成后需要獲取TAG值,的TAG要和加密時(shí)示多包數(shù)據(jù)加場(chǎng)景說(shuō)明

取物理地址后在用戶層調(diào)用CIPHER模塊實(shí)現(xiàn)加/。工作流程

對(duì)數(shù)據(jù)進(jìn)行對(duì)稱的DES/3DES/AES加的過(guò)程如下1.CIPHERHIUNFCIPHERInit2.創(chuàng)建一路CIPHER,并獲取CIPHERHIUNFCIPHER3.CIPHER控制信息,包含密鑰、初始向量、加密算法、工作模式等信息。調(diào)用接口HIUNFCIPHERConfigHandle或HIUNFCIPHERConfigHandleEx完成。步驟4.對(duì)數(shù)據(jù)進(jìn)行加。用戶可以調(diào)用以下任一接口進(jìn)行加多包加密--HIUNFCIPHER多包--HIUNFCIPHER5.CIPHERHIUNFCIPHERDestroyHandle完成。步驟6.關(guān)閉CIPHER設(shè)備。調(diào)用接口HIUNFCIPHERDeinit完成。----注意事項(xiàng)

進(jìn)行多包加時(shí),最多支持同時(shí)加128個(gè)包HIUNFCIPHERConfigHandleHIUNFCIPHERConfigHandleEx配置的向量進(jìn)行運(yùn)算,IV作用域是可配置的,IVIV都是獨(dú)立運(yùn)算其它注意事項(xiàng)同“單包數(shù)據(jù)加”章節(jié)示具體示例請(qǐng)參見(jiàn)發(fā)布包sample:samplemulticipher.cHASH場(chǎng)景說(shuō)明

值,可選擇工作流程1.CIPHERHIUNFCIPHERInit步驟2.創(chuàng)建一路HASH,獲取HASH句柄,選擇HASHHIUNFCIPHERHashInit3.HASHHIUNFCIPHERHashUpdate完步驟4.如 步驟5.完成 計(jì)算,結(jié)束輸入,獲取計(jì)算結(jié)果。調(diào)用接口HIUNFCIPHERHashFinal完6.CIPHERHIUNFCIPHERDeinit----注意事項(xiàng)

支持軟件多通道,可同時(shí)進(jìn)行多個(gè)HASH運(yùn)算,即執(zhí)行步驟2啟動(dòng)一個(gè)HASH運(yùn)個(gè)HASH運(yùn)算,直到申請(qǐng)不到通道為止。8個(gè)HASH軟件通道,8個(gè)通道可同時(shí)都被打開(kāi),但同一時(shí)間內(nèi)只有一個(gè)示具體示例請(qǐng)參見(jiàn)發(fā)布包sample:samplehash.cHMAC場(chǎng)景說(shuō)明

HMACHASH算法為SHA1、SHA224、SHA256、SHA384或SHA512。工作流程HMAC運(yùn)算1.調(diào)用HIUNFCIPHERInit初始化CIPHER步驟2.調(diào)用HIUNFCIPHERHashInit選擇使用的HASH算法HMAC計(jì)算的密鑰,初始化HASH模塊。步驟3.調(diào)用HIUNFCIPHERHashUpdate輸入BLOCKBLOCK輸步驟4.HIUNFCIPHERHashFinal結(jié)束輸入,并輸出HMAC值。5.調(diào)用HIUNFCIPHERDeinit去初始化CIPHER設(shè)備。----注意事項(xiàng)

支持軟件多通道,可同時(shí)進(jìn)行多個(gè)HMAC運(yùn)算,即執(zhí)行步驟2啟動(dòng)一個(gè)HMAC運(yùn)算,在本次HMAC計(jì)算未完成(即未執(zhí)行步驟5)之前,可申請(qǐng)一個(gè)新通道啟動(dòng)另一個(gè)HMAC運(yùn)算,直到申請(qǐng)不到通道為止。HMAC和HASH共用8個(gè)軟件通道,8個(gè)通道可同時(shí)都被打開(kāi),但同一時(shí)間內(nèi)只有一個(gè)通道在進(jìn)行運(yùn)算。示具體示例請(qǐng)參見(jiàn)發(fā)布包sample:samplehash.c產(chǎn)生隨機(jī)場(chǎng)景說(shuō)明

工作流程

1.CIPHERHIUNFCIPHERInit2.32bitsHIUNFCIPHERGetRandomNumber完成。步驟3.關(guān)閉CIPHER設(shè)備。調(diào)用接口HIUNFCIPHERDeinit完成。----注意事項(xiàng)無(wú)示具體示例請(qǐng)參見(jiàn)發(fā)布包sample:samplerng.cRSA加操作步場(chǎng)景說(shuō)明

該算法請(qǐng)參考:rfc3447.RSACryptographySpecifications工作流程對(duì)數(shù)據(jù)進(jìn)行不對(duì)稱的RSA加的過(guò)程如下1.CIPHERHIUNFCIPHERInit步驟2.對(duì)數(shù)據(jù)進(jìn)行加或簽名驗(yàn)證。根據(jù)使用的密鑰不同,分為6個(gè)接口,用戶可以調(diào)用公鑰加密--HIUNFCIPHER私鑰--HIUNFCIPHER私鑰加密--HIUNFCIPHER公鑰--HIUNFCIPHER私鑰簽名--HIUNFCIPHER公鑰驗(yàn)證--HIUNFCIPHER生成密鑰--HIUNFCIPHER步驟3.關(guān)閉CIPHER設(shè)備。調(diào)用接口HIUNFCIPHERDeinit完成----注意事項(xiàng)

RSA密鑰位寬可選1024、2048、3072及4096。根據(jù)RSA算法原理,明文和密必須比公鑰N小,所以待加的數(shù)據(jù)長(zhǎng)度必須小于或等于密鑰的長(zhǎng)度,慣用作法是在待加的數(shù)據(jù)的補(bǔ)0等,使其長(zhǎng)度和公鑰N相等,但其值比公鑰N小,PKCS#1標(biāo)準(zhǔn)定義了幾種填充數(shù)據(jù)的方式,分別是BlockType0,BlockType1,BlockType2,RSAES-OAEP和RSAES-PKCS1-v15等。示具體示例請(qǐng)參見(jiàn)發(fā)布包sample:samplersaenc.c 簽名及驗(yàn)簽操作步場(chǎng)景說(shuō)明

對(duì)數(shù)據(jù)進(jìn)行RSA簽名及驗(yàn)簽時(shí),使用私鑰進(jìn)行數(shù)據(jù)簽名,使用公鑰進(jìn)行數(shù)據(jù)驗(yàn)簽。該算法請(qǐng)參考:rfc3447.RSACryptographySpecifications。工作流程對(duì)數(shù)據(jù)進(jìn)行不對(duì)稱的RSA簽名及步驟1.CIPHER設(shè)備初始化。調(diào)用接口HIUNFCIPHERInit完成。步驟2.對(duì)數(shù)據(jù)進(jìn)行加或簽名驗(yàn)證,調(diào)用以下接口簽名驗(yàn)證。私鑰簽名--HIUNFCIPHER公鑰驗(yàn)證--HIUNFCIPHER步驟3.關(guān)閉CIPHER設(shè)備。調(diào)用接口HIUNFCIPHERDeinit完成----注意事項(xiàng)

RSA密鑰位寬可選1024、2048、3072及4096。根據(jù)RSA算法原理,明文和密必須比公鑰小,所以待加的數(shù)據(jù)長(zhǎng)度必須小于或等于密鑰的長(zhǎng)度,慣用作法是先計(jì)算待簽名數(shù)據(jù)的HASH值,接著將HASH值填充成長(zhǎng)度和公鑰N相等但其值比公鑰N小的數(shù)據(jù),然后再進(jìn)行加密,PKCS#1標(biāo)準(zhǔn)定義了幾種填充數(shù)據(jù)的方式,分別是RSASSA-PSS和SES-PKS1-v15等。示具體示例請(qǐng)參見(jiàn)發(fā)布包sample:samplersasign.cRSA場(chǎng)景說(shuō)明

生成一個(gè)RSA私鑰。該算法請(qǐng)參考:rfc3447.RSACryptographySpecifications工作流程

生成一個(gè)RSA私鑰的過(guò)程如下:步驟1.CIPHER設(shè)備初始化。調(diào)用接口HIUNFCIPHERInit完成。2.調(diào)用HIUNFCIPHERRsaGenKey步驟3.關(guān)閉CIPHER設(shè)備。調(diào)用接口HIUNFCIPHERDeinit完成----注意事項(xiàng)

示具體示例請(qǐng)參見(jiàn)發(fā)布包sample:samplersaenc.c 加操作步場(chǎng)景說(shuō)明

對(duì)數(shù)據(jù)進(jìn)行CCM加。該算法請(qǐng)參考:SP800-38Cupdated-July202007CCM.TheCCMModeforAuthenticationandity。對(duì)數(shù)據(jù)進(jìn)行GCM加。該算法請(qǐng)參考:SP-800-38D-GCM.Galois/CounterMode(GCM)andGMAC。工作流程

對(duì)數(shù)據(jù)進(jìn)行對(duì)稱的CCM/GCM加的過(guò)程如下1.CIPHERHIUNFCIPHERInit完成。2.調(diào)用HIUNFCIPHERCreateHandleCIPHER句柄。3.HIUNFCIPHERConfigHandleExCIPHER參數(shù)。步驟4.對(duì)數(shù)據(jù)進(jìn)行加。用戶可以調(diào)用以下接口進(jìn)行加/。加密--HIUNFCIPHER--HIUNFCIPHER5.HIUNFCIPHERGetTagCCM/GCMTAG數(shù)據(jù)。步驟6.調(diào)用HIUNFCIPHERDestroyHandle釋放CIPHER句柄。7.HIUNFCIPHERDeinitCIPHER----注意事項(xiàng)

值必須和加密時(shí)一樣,結(jié)果才是正確AES-CCM模式由AESCTR和AESCBC模式構(gòu)成,既可以保證數(shù)據(jù)的性,CCMIVu32IVLen可取{7,8,9,10,11,1213}byte,IV存放算法標(biāo)準(zhǔn)中的NonceNnByte表示,且應(yīng)滿足條件:u32IVLen+n=15,,所以u(píng)32IVLen為13時(shí),n為2,此時(shí)加密數(shù)據(jù)長(zhǎng)度最長(zhǎng)為65536byte,其它以此類推。CCM加密時(shí)的向量N、關(guān)聯(lián)數(shù)據(jù)A取值必須與時(shí)保持一致AES-GCM模式由AESCTR和GHASH構(gòu)成,既可以保證數(shù)據(jù)的性,也能保GCM算法原理,GCMIVu32IVLen可取范圍為[1~16]GCM加密時(shí)的關(guān)聯(lián)數(shù)據(jù)A取值必須與時(shí)保持一致示APICIPHER提供以下HIUNFCIPHERInit:初始化CIPHER模塊HIUNFCIPHERDeinit:去初始化CIPHERHIUNFCIPHEROpen:打開(kāi)CIPHER模塊HIUNFCIPHERClose:關(guān)閉CIPHER模塊HIUNFCIPHERCreateHandle:創(chuàng)建一路的Cipher句柄HIUNFCIPHERDestroyHandle:銷毀已存在的CIPHERHIUNFCIPHERConfigHandle:配置CIPHERHIUNFCIPHERConfigHandleEx:配置CIPHER控制信息(擴(kuò)展HIUNFCIPHEREncryptHIUNFCIPHERDecrypt:?jiǎn)伟鼣?shù)據(jù)功能HIUNFCIPHEREncryptMultiHIUNFCIPHERDecryptMulti:多包數(shù)據(jù)功能HIUNFCIPHERHashInit:HASH、 計(jì)算初始化功能HIUNFCIPHERHashUpdate:HASH、 計(jì)算數(shù)據(jù)輸入功能HIUNFCIPHERHashFinal:HASH、HMACHIUNFCIPHERGetRandomNumberHIUNFCIPHERGetTag:獲TAGHIUNFCIPHERRsaPublicEncryptHIUNFCIPHERRsaPrivateDecrypt:使用私鑰對(duì)密文進(jìn)行HIUNFCIPHERRsaPrivateEncryptHIUNFCIPHERRsaPublicDecrypt:使用公鑰對(duì)密文進(jìn)行HIUNFCIPHERRsaSignHIUNFCIPHERRsaVerify:使用公鑰對(duì)用戶數(shù)據(jù)進(jìn)行及完整性驗(yàn)證HIUNFCIPHERRsaGenKey:生成一個(gè)RSAHIUNFCIPHERKladEncryptKey:使用KLAD初始化CIPHERHIS32HIUNFCIPHERInit(HI返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhi參考samplecipher.c去初始化CIPHERHIS32HIUNFCIPHERDeInit(HI返回描0成功返回描頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhi參考samplecipher.c打開(kāi)CIPHER#defineHIUNFCIPHEROpen(HIVOID)HIUNFCIPHERInit(HI返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhi參考samplecipher.c關(guān)閉CIPHER#defineHIUNFCIPHERClose(HIVOID)HIUNFCIPHERDeInit(HI返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhi參考samplecipher.c創(chuàng)建一路的CipherHIS32HIUNFCIPHERCreateHandle(HIHANDLE*描輸入/CIPHER輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhiphCipher該句柄將用于數(shù)據(jù)加時(shí)的輸入最大支持7路cipher參考samplecipher.c銷毀一路CIPHERHIS32HIUNFCIPHERDestroyHandle(HIHANDLE描輸入/CIPHER輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhi參考samplecipher.c配置CIPHER控制信息。詳細(xì)配置請(qǐng)參見(jiàn)結(jié)構(gòu)體HIUNFCIPHERCTRLSHIS32HIUNFCIPHERConfigHandle(HIHANDLEhCipher,HIUNFCIPHERCTRLS*pstCtrl);描輸入/CIPHER輸輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhi控制信息指針不能為空。參考samplecipher.c配置CIPHER控制信息。詳細(xì)配置請(qǐng)參見(jiàn)結(jié)構(gòu)體HIUNFCIPHERCTRLEXSHIS32HIUNFCIPHERConfigHandleEx(HIHANDLEhCipher,HIUNFCIPHERCTRLEXS*pstExCtrl);描輸入/CIPHER輸CIPHER輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhiCIPHER參考samplecipher.cHIS32HIUNFCIPHEREncrypt(HIHANDLEhCipher,HIU32u32SrcPhyAddr,HIU32u32DestPhyAddr,HIU32u32Byength);描輸入/CIPHER輸源數(shù)據(jù)(待加密的數(shù)據(jù))的物理地址。輸描輸入/輸數(shù)據(jù)的長(zhǎng)度(單位:字節(jié))輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhiCIPHER數(shù)據(jù)的長(zhǎng)度至少為16字節(jié),且不能大于或等于1024*1024參考samplecipher.c對(duì)數(shù)據(jù)進(jìn)行HIS32HIUNFCIPHERDecrypt(HIHANDLEhCipher,HIU32u32SrcPhyAddr,HIU32u32DestPhyAddr,HIU32u32Byength);描輸入/CIPHER輸源數(shù)據(jù)(待的數(shù)據(jù))的物理地址輸存放結(jié)果的物理地址輸數(shù)據(jù)的長(zhǎng)度(單位:字節(jié))輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhiCIPHER數(shù)據(jù)的長(zhǎng)度至少為16字節(jié),且不能大于或等于1024x1024參考samplecipher.c進(jìn)行多個(gè)包數(shù)據(jù)的加密。HIS32HIUNFCIPHEREncryptMulti(HIHANDLEhCipher,HIUNFCIPHERDATA*pstDataPkg,HIU32描輸入/CIPHER輸輸輸返回描0成功返回描頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhiCIPHER每次加密的數(shù)據(jù)包個(gè)數(shù)最多不超過(guò)128對(duì)于多個(gè)包的操作,每個(gè)包都使用HIUNFCIPHERConfigHandle配置的向量進(jìn)參考samplemulticiphe.c進(jìn)行多個(gè)包數(shù)據(jù)的HIS32HIUNFCIPHERDecryptMulti(HIHANDLEhCipher,HIUNFCIPHERDATA*pstDataPkg,HIU32描輸入/CIPHER輸待的數(shù)據(jù)包輸待的數(shù)據(jù)包個(gè)數(shù)輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhiCIPHER每次加密的數(shù)據(jù)包個(gè)數(shù)最多不超過(guò)128對(duì)于多個(gè)包的操作,每個(gè)包都使用HIUNFCIPHERConfigHandle配置的向量進(jìn)參考samplemulticiphe.c初始化HASHHIS32HIUNFCIPHERHashInit(HIUNFCIPHERHASHATTSSHIHANDLE描輸入/用于計(jì)算hash輸輸出的hash句柄輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhi如果有其他程序正在使用HASHhash值HIS32HIUNFCIPHERHashUpdate(HIHANDLEhHashHandle,HI*pu8InputData,HIU32描輸入/Hash輸輸輸入數(shù)據(jù)的長(zhǎng)度,單位:byte輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhi輸入數(shù)據(jù)塊的長(zhǎng)度必須是64字節(jié)對(duì)齊,最后一個(gè)block無(wú)此限制。Hash可以分多次調(diào)用,每次計(jì)算若干個(gè)blocksamplehash.chash值HIS32HIUNFCIPHERHashFinal(HIHANDLEhHashHandle,HI描輸入/Hash輸輸出的hash輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhisamplehash.cHIS32HIUNFCIPHERGetRandomNumber(HIU32描輸入/輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhisamplerng.cCCM/GCM模式加后獲取TAG值HIS32HIUNFCIPHERGetTag(HIHANDLEhCipher,HIU8描輸入/輸TAG輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhi只有在CCM、GCM參考samplecipher.c使用RSA公鑰HIS32HIUNFCIPHERRsaPublicEncrypt(HIUNFCIPHERRSAPUBENC*pstRsaEnc,HIU8*pu8Input,HIU32u32InLen,HIU8*pu8Output,HI描輸入/輸輸待加密的數(shù)據(jù)長(zhǎng)度,單位:byte輸輸加密結(jié)果數(shù)據(jù)長(zhǎng)度,單位:byte輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhisamplersaenc.c使用RSA私鑰一段密文HIS32HIUNFCIPHERRsaPrivateDecrypt(HIUNFCIPHERRSAPRIKEY*pstRsaDec,HIU8*pu8Input,HIU32u32InLen,HIU8*pu8Output,HI描輸入/私鑰屬性結(jié)構(gòu)體輸待的數(shù)據(jù)輸待的數(shù)據(jù)長(zhǎng)度,單位:byte輸輸結(jié)果數(shù)據(jù)長(zhǎng)度,單位:byte輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhisamplersaenc.c使用RSAHIS32HIUNFCIPHERRsaPrivateEncrypt(HIUNFCIPHERRSAPRIKEY*pstRsaEnc,HIU8*pu8Input,HIU32u32InLen,HIU8*pu8Output,HI描輸入/輸輸待加密的數(shù)據(jù)長(zhǎng)度,單位:byte輸輸加密結(jié)果數(shù)據(jù)長(zhǎng)度,單位:byte輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhisamplersaenc.c使用RSA公鑰一段密文HIS32HIUNFCIPHERRsaPrivateDecrypt(HIUNFCIPHERRSAPUBENC*pstRsaDec,HIU8*pu8Input,HIU32u32InLen,HIU8*pu8Output,HI描輸入/公鑰屬性結(jié)構(gòu)體輸待的數(shù)據(jù)輸待的數(shù)據(jù)長(zhǎng)度,單位:byte輸輸結(jié)果數(shù)據(jù)長(zhǎng)度,單位:byte輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhisamplersaenc.c使用RSAHIS32HIUNFCIPHERRsaSign(HIUNFCIPHERRSASIGNS*pstRsaSign,HI*pu8InData,HIU32u32InDataLen,HIU8*pu8HashData,HIU8*pu8OutSign,HIU32*pu32OutSignLen);描輸入/輸待簽名的數(shù)據(jù)如果pu8HashData不為空,則使用pu8HashData進(jìn)行簽名,該參數(shù)將被忽略。輸待簽名的數(shù)據(jù)長(zhǎng)度,單位:byte輸待簽名文本的HASH 計(jì)算pu8InData的HASH 輸輸簽名結(jié)果數(shù)據(jù)長(zhǎng)度,單位:byte輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhisamplersasign.cRSAHIS32HIUNFCIPHERRsaVerify(HIUNFCIPHERRSAVERIFY*pstRsaVerify,HIU8*pu8InData,HIU32u32InDataLen,HI*pu8HashData,HIU8*pu8InSign,HIU32描輸入/輸待驗(yàn)證的數(shù)據(jù)如果pu8HashData不為空,則使用pu8HashData進(jìn)行驗(yàn)證,該參數(shù)將被忽略。輸待驗(yàn)證的數(shù)據(jù)長(zhǎng)度,單位:byte輸待驗(yàn)證文本的的HASH 動(dòng)計(jì)算pu8InData的HASH 輸輸待驗(yàn)證的簽名數(shù)據(jù)長(zhǎng)度,單位:byte輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhisamplersasign.c生成一個(gè)RSAHIS32HIUNFCIPHERRsaGenKey(HIU32u32NumBits,HIU32HIUNFCIPHERRSAPRIKEYS描輸入/RSA密鑰N的位寬輸RSAE輸RSA輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhi使用KLADHIS32HIUNFCIPHERKladEncryptKey(HIUNFCIPHERCATYPEEenRootKey,HIUNFCIPHERKLADTARGETEenTarget,HIU8*pu8CleanKey,HI ryptKey,HIU32描輸入/KLAD根密鑰選擇,只能選擇EFUSEKey輸輸描輸入/輸輸密鑰的長(zhǎng)度,必須是16整數(shù)輸返回描0成功頭文件:hierrormpi.h、hitype.h、hiunf庫(kù)文件:libhi請(qǐng)參考cipher 下的samplersaHIHANDLE:定CIPHERHIUNFCIPHERWORKMODEE:定CIPHER工作模式HIUNFCIPHERALGE:定義CIPHER加密算法HIUNFCIPHERKEYLENGTHE:定義CIPHERHIUNFCIPHERBITWIDTHE:定義CIPHERHIUNFCIPHERCTRLCHANGEFLAGS:定義CIPHERCCM構(gòu)體HIUNFCIPHERCATYPEE:定義CIPHERkey的來(lái)源HIUNFCIPHERKLADTARGETEKlad產(chǎn)生的KeyHIUNFCIPHERTYPEE:定義CIPHER加類型選擇HIUNFCIPHERATTSS:定義CIPHER加類型結(jié)構(gòu)HIUNFCIPHERSM1ROUNDE:SM1計(jì)算的輪數(shù)。HIUNFCIPHERCTRLS:定義CIPHERHIUNFCIPHERCTRLAESS:AESHIUNFCIPHERCTRLAESCCMGCMS:AES-CCM、AES-GCMHIUNFCIPHERCTRLDESS:DESHIUNFCIPHERCTRL3DESS:3DESHIUNFCIPHERCTRLSM1S:SM1HIUNFCIPHERCTRLSM4S:SM4HIUNFCIPHERCTRLEXS:加密控制信息擴(kuò)展結(jié)構(gòu)作為算法的參數(shù)HIUNFCIPHERDATAS:定義CIPHER加數(shù)據(jù)HIUNFCIPHERHASHTYPEE:定義CIPHERHIUNFCIPHERHASHATTSS:定義CIPHERHIUNFCIPHERRSAENCSCHEMEE:定義RSAHIUNFCIPHERRSASIGNSCHEMEE:定義RSA

HIUNFCIPHERRSAPUBKEYS:定義RSAHIUNFCIPHERRSAPRIKEYS:定義RSAHIUNFCIPHERRSAPUBENCS:定義RSA公鑰加算法參數(shù)結(jié)構(gòu)體HIUNFCIPHERRSAPRIENCS:定義RSA私鑰算法參數(shù)結(jié)構(gòu)體HIUNFCIPHERRSASIGNS:定義RSAHIUNFCIPHERRSAVERIFYS:定義RSACIPHERIVCHANGEONEPKG:CIPHER為數(shù)據(jù)包設(shè)置向量時(shí),僅更新一個(gè)數(shù)據(jù)包的IV。CIPHERIVCHANGEALLPKG:CIPHER為數(shù)據(jù)包設(shè)置向量時(shí),更新所有數(shù)據(jù)IV。定義CIPHER的句柄typedefHIU32HI定義CIPHER工作模式typedefenumhiHIUNFCIPHERWORKMODE{HIUNFCIPHERWORKMODEECB,HIUNFCIPHERWORKMODECBC,HIUNFCIPHERWORKMODECFB,HIUNFCIPHERWORKMODEOFB,HIUNFCIPHERWORKMODECTR,HIUNFCIPHERWORKMODECCM,HIUNFCIPHERWORKMODEGCM,HIUNFCIPHERWORKMODECBCHIUNFCIPHERWORKMODEHIUNFCIPHERWORKMODE }HIUNFCIPHERWORKMODE描ECB(ElectronicCodeBook)模CBC(CipherBlockChaining)CFB(CipherFeedBack)模式OFB(OutputFeedBack)CTR(Counter)模CCM(CounterwithCipherBlockChaining-MessageAuthentication)模式。GCM(Galois/CounterMode)模HIUNFCIPHERWORKMODECBCCHIUNFCIPHERWORKMODEINVAL值定義CIPHER加密算法typedefenumhiHIUNFCIPHERALG{HIUNFCIPHERALG HIUNFCIPHERALG HIUNFCIPHERALG HIUNFCIPHERALG HIUNFCIPHERALG HIUNFCIPHERALG HIUNFCIPHERALG HIUNFCIPHERALG }HIUNFCIPHERALG描HIUNFCIPHERALGDESHIUNFCIPHERALG3DESHIUNFCIPHERALGAESHIUNFCIPHERALGSM1HIUNFCIPHERALGSM4HIUNFCIPHERALGDMA直接拷貝,不做加運(yùn)HIUNFCIPHERALGHIUNFCIPHERALG值定義CIPHER密鑰typedefenumhiHIUNFCIPHERKEYLENGTH{HIUNFCIPHERKEYAES128BIT0x0,HIUNFCIPHERKEYAES192BIT0x1,HIUNFCIPHERKEYAES256BIT0x2,HIUNFCIPHERKEYDES3KEY0x2,HIUNFCIPHERKEYDES2KEY0x3,HIUNFCIPHERKEYDEFAULT0x0,HIUNFCIPHERKEYINVALID}HIUNFCIPHERKEYLENGTH描HIUNFCIPHERKEYAESAES運(yùn)算方式下采用128bit密鑰長(zhǎng)度HIUNFCIPHERKEYAESAES運(yùn)算方式下采用192bit密鑰長(zhǎng)度HIUNFCIPHERKEYAESAES運(yùn)算方式下采用256bit密鑰長(zhǎng)度HIUNFCIPHERKEYDES3DES3HIUNFCIPHERKEYDES3DES2HIUNFCIPHERKEYkey長(zhǎng)度,DES:8byte,SM1:48byte,SM4:16byteHIUNFCIPHERKEY值A(chǔ)ES的密鑰長(zhǎng)度可以為128bit,192bit或256bit3DES23key,一個(gè)keyDES加密所用的密鑰,它的長(zhǎng)度為64bit。DES定義CIPHER加密位寬typedefenumhiHIUNFCIPHERBITWIDTH{HIUNFCIPHERBITWIDTH64BIT0x0,HIUNFCIPHERBITWIDTH8BIT0x1,HIUNFCIPHERBITWIDTH1BIT0x2,HIUNFCIPHERBITWIDTH128BIT0x3,HIUNFCIPHERBITWIDTHINVALID}HIUNFCIPHERBITWIDTH描HIUNFCIPHERBITWIDTH64bit描HIUNFCIPHERBITWIDTH8bitHIUNFCIPHERBITWIDTH1bitHIUNFCIPHERBITWIDTH128bitHIUNFCIPHERBITWIDTH值定義CIPHERCCM模式的信typedefstructhiUNFCIPHERCTRLCHANGEFLAG{HI HI bitsResv:}HIUNFCIPHERCTRLCHANGEFLAG描向量變更:0不變更;1只為第一個(gè)變更;2保定義CIPHERkey的來(lái)源typedefenumhiHIUNFCIPHERCATYPE{HIUNFCIPHERKEYSRCUSER0x0,HIUNFCIPHERKEYSRCKLAD0,HIUNFCIPHERKEYSRCKLAD1,HIUNFCIPHERKEYSRCKLAD2,HIUNFCIPHERKEYSRCKLAD3,HIUNFCIPHERKEYSRCBUTT,HIUNFCIPHERKEYSRCINVALID}HIUNFCIPHERCATYPE描HIUNFCIPHERKEYSRC用戶配置的HIUNFCIPHERKEYSRCKLADKLAD1其RootKeyEfuse的第1組HIUNFCIPHERKEYSRCKLADKLAD2其RootKeyEfuse的第2組HIUNFCIPHERKEYSRCKLADKLAD3其RootKeyEfuse的第3組HIUNFCIPHERKEYSRCHIUNFCIPHERKEYSRC值定義Klad產(chǎn)生的Key送達(dá)的目標(biāo)typedef{HIUNFCIPHERKLADTARGETAES,HIUNFCIPHERKLADTARGETRSA,HIUNFCIPHERKLADTARGETBUTT,}HIUNFCIPHERKLADTARGET描HIUNFCIPHERKLADTARGETKladKey送到HIUNFCIPHERKLADTARGETKladKey送到HIUNFCIPHERKLADTARGET定義CIPHER加類型選擇typedef{HIUNFCIPHERTYPENORMAL HIUNFCIPHERTYPECOPYAVOID,HIUNFCIPHERTYPEBUTT,HIUNFCIPHERTYPE }HIUNFCIPHERTYPE描HIUNFCIPHERTYPE1-7通道DMAHIUNFCIPHERTYPECOPY0通道的CPUHIUNFCIPHERTYPEHIUNFCIPHERTYPE值定義CIPHER加類型結(jié)構(gòu)typedef{HIUNFCIPHERTYPEE}HIUNFCIPHERATTS描SM1typedefenumhiHIUNFCIPHERSM1ROUND{HIUNFCIPHERSM1ROUND080x00,HIUNFCIPHERSM1ROUND100x01,HIUNFCIPHERSM1ROUND120x02,HIUNFCIPHERSM1ROUND140x03,HIUNFCIPHERSM1ROUNDBUTT,}HIUNFCIPHERSM1ROUND描HIUNFCIPHERSM1ROUNDSM18HIUNFCIPHERSM1ROUNDSM110HIUNFCIPHERSM1ROUNDSM112HIUNFCIPHERSM1ROUNDSM114HIUNFCIPHERSM1ROUND無(wú)效定義CIPHER控制信typedefstructhiHIUNFCIPHERCTRL{HIU32u32Key[8];HIU32u32IV[4];HIBOOLbKeyByCA;HIUNFCIPHERCATYPEEenCaType;HIUNFCIPHERALGEenAlg;HIUNFCIPHERBITWIDTHEenBitWidth;HIUNFCIPHERWORKMODEEenWorkMode;HIUNFCIPHERKEYLENGTHEenKeyLen;HIUNFCIPHERCTRLCHANGEFLAGS}HIUNFCIPHERCTRL描密描加密或的位更新標(biāo)志位,表示IVECBAES加密控制信息結(jié)構(gòu)擴(kuò)展。typedefstructhiHIUNFCIPHERCTRLAES{HIU32u32EvenKey[8];HIU32u32OddKey[8];HIU32u32IV[4];HIUNFCIPHERBITWIDTHEenBitWidth;HIUNFCIPHERKEYLENGTHEenKeyLen;HIUNFCIPHERCTRLCHANGEFLAGS}HIUNFCIPHERCTRLAES描偶key(默認(rèn)使用偶向key長(zhǎng)描AES支持的工作模式為:ECB/CBC/CFB/OFB/CTR,其中CFB1、8、128bit,OFB模式僅支持128bit位寬。typedefstructhiHIUNFCIPHERCTRLAESCCMGCM{HIU32u32Key[8];HIU32u32IV[4];HIUNFCIPHERKEYLENGTHEenKeyLen;HIU32u32IVLen;HIU32HIU32HIU32}HIUNFCIPHERCTRLAESCCMGCM描key(默認(rèn)使用偶向keyIVTagA關(guān)聯(lián)數(shù)據(jù)ACCMIV長(zhǎng)度u32IVLen可取{7,8,910,11,12,13}byte,IV存放算法標(biāo)準(zhǔn)中的Nonce數(shù)據(jù)N。加密數(shù)據(jù)的長(zhǎng)度用n個(gè)Byte表示,且應(yīng)滿足條件:u32IVLen+n=15。因此,u32IVLen為13時(shí),n為2,此時(shí)加密數(shù)據(jù)長(zhǎng)度最長(zhǎng)為65536byte,其它以此類推。Tag的長(zhǎng)度u32TagLen可取{4,6,8,10,12,14,16}byte,CCM加密時(shí)的向量N、關(guān)聯(lián)數(shù)據(jù)A取值必須與時(shí)保持一致對(duì)于GCM:向量IV長(zhǎng)度u32IVLen可取范圍為[1~16]byte,Tag的長(zhǎng)度u32TagLen可為{12,13,14,15,16}byte4、8byte,GCMADES加密控制typedefstructhiHIUNFCIPHERCTRLDES{HIU32u32Key[2];HIU32u32IV[2];HIUNFCIPHERBITWIDTHEHIUNFCIPHERCTRLCHANGEFLAGS}HIUNFCIPHERCTRLDES描密向該算法不安全,不建議產(chǎn)品使用該種加算法3DES加密控制信息結(jié)構(gòu)typedefstructhiHIUNFCIPHERCTRL3DES{HIU32u32Key[6];HIU32u32IV[2];HIUNFCIPHERBITWIDTHEenBitWidth;HIUNFCIPHERKEYLENGTHEenKeyLen;HIUNFCIPHERCTRLCHANGEFLAGS}HIUNFCIPHERCTRL3DES描密向加密key長(zhǎng)3DES加密過(guò)程:使用3個(gè)不同的K1、K2、K3依次進(jìn)行加密、 當(dāng)?shù)谝淮渭用芎妥詈髸r(shí)使用的key相等并且不等于第二次 的key時(shí),即(K1=K3)!=K2,此時(shí)為使用2Key的情況,僅需設(shè)置K1,K2即可。DES/3DES支持的工作模式有:ECB、CBC、CFB、OFB,其中CFB和OFB支持的位寬可為1、8、64bitSM1加密控制信息結(jié)構(gòu)。typedefstructhiHIUNFCIPHERCTRLSM1{HIU32u32EK[4];HIU32u32AK[4];HIU32u32SK[4];HIU32HIUNFCIPHERSM1ROUNDEHIUNFCIPHERCTRLCHANGEFLAGS}HIUNFCIPHERCTRLSM1描SM1keySM1keySM1key向SM1SM4typedefstructhiHIUNFCIPHERCTRLSM4{HIU32u32Key[4];HIU32u32IV[4];HIUNFCIPHERCTRLCHANGEFLAGS}HIUNFCIPHERCTRLSM4描描向合。新增的SM1、SM4、CCM、GCM等算法,不適合用HIUNFCIPHERCTRLStypedefstructhiHIUNFCIPHERCTRLEX{HIUNFCIPHERALGEHIUNFCIPHERWORKMODEEenWorkMode;HIBOOLbKeyByCA;HIVOID}HIUNFCIPHERCTRLEX描加算是否使用硬件指向各種算法的CIPHER控制信息結(jié)構(gòu)HIUNFCIPHERConfigHandleExHIVOID*pParam參數(shù)分對(duì)于AES,指針應(yīng)指向HIUNFCIPHERCTRLAES對(duì)于AESCCM或AESGCM,指針應(yīng)指向HIUNFCIPHERCTRLAESCCMGCMS對(duì)于DES,指針應(yīng)指向HIUNFCIPHERCTRLDESS對(duì)于3DES,指針應(yīng)指向HIUNFCIPHERCTRL3DESS對(duì)于SM1,指針應(yīng)指向HIUNFCIPHERCTRLSM1S對(duì)于SM4,指針應(yīng)指向HIUNFCIPHERCTRLSM4S定義CIPHER加數(shù)據(jù)typedefstructhiHIUNFCIPHERDATA{HISIZETszSrcPhyAddr;HISIZETszDestPhyAddr;HIU32u32Byength;HIBOOLbOddKey;}HIUNFCIPHERDATA描加數(shù)據(jù)長(zhǎng)是否使用奇偶key(默認(rèn)使用偶定義CIPHER哈希算typedefenumhiHIUNFCIPHERHASHTYPE{HIUNFCIPHERHASHTYPESHA1,HIUNFCIPHERHASHTYPESHA224,HIUNFCIPHERHASHTYPESHA256,HIUNFCIPHERHASHTYPESHA384,HIUNFCIPHERHASHTYPEHIUNFCIPHERHASHTYPEHMACSHA1,HIUNFCIPHERHASHTYPEHMACSHA224,HIUNFCIPHERHASHTYPEHMACSHA256,HIUNFCIPHERHASHTYPEHMACSHA384,HIUNFCIPHERHASHTYPEHMACSHA512,HIUNFCIPHERHASHTYPESM3,HIUNFCIPHERHASHTYPEHIUNFCIPHERHASHTYPE }HIUNFCIPHERHASHTYPE描HIUNFCIPHERHASHTYPESHA1哈希HIUNFCIPHERHASHTYPESHA224哈希HIUNFCIPHERHASHTYPESHA256哈希HIUNFCIPHERHASHTYPESHA384哈希HIUNFCIPHERHASHTYPESHA512哈希HIUNFCIPHERHASHTYPEHMACHMACSHA1哈希算HIUNFCIPHERHASHTYPEHMACHMACSHA224哈希算HIUNFCIPHERHASHTYPEHMACHMACSHA256哈希算HIUNFCIPHERHASHTYPEHMACHMACSHA384哈希算HIUNFCIPHERHASHTYPEHMACHMACSHA512哈希算HIUNFCIPHERHASHTYPESM3雜湊HIUNFCIPHERHASHTYPEHIUNFCIPHERHASHTYPE值CIPHERtypedef{HIU8*pu8HMACKey;HIU32u32HMACKeyLen;HIUNFCIPHERHASHTYPEE}HIUNFCIPHERHASHATTS描HAMCHAMCRSAtypedefenumhiHIUNFCIPHERRSAENCSCHEME{HIUNFCIPHERRSAENCSCHEMENOPADDING,HIUNFCIPHERRSAENCSCHEMEBLOCKTYPE0,HIUNFCIPHERRSAENCSCHEMEBLOCKTYPE1,HIUNFCIPHERRSAENCSCHEMEBLOCKTYPE2,HIUNFCIPHERRSAENCSCHEMERSAESOAEPSHA1,HIUNFCIPHERRSAENCSCHEMERSAESOAEPSHA224,HIUNFCIPHERRSAENCSCHEMERSAESOAEPSHA256,HIUNFCIPHERRSAENCSCHEMERSAESOAEPSHA384,HIUNFCIPHERRSAENCSCHEMERSAESOAEPSHA512,HIUNFCIPHERRSAENCSCHEMERSAESPKCS1V15,HIUNFCIPHERRSAENCSCHEMEBUTT,HIUNFCIPHERRSAENCSCHEME }HIUNFCIPHERRSAENCSCHEME描HIUNFCIPHERRSAENCSCHEMENOPADDING不填HIUNFCIPHERRSAENCSCHEMEBLOCKTYPE0,PKCS#1blocktype0填充方HIUNFCIPHERRSAENCSCHEMEBLOCKTYPE1PKCS#1blocktype1填充方HIUNFCIPHERRSAENCSCHEMEBLOCKTYPE2PKCS#1blocktype2填充方HIUNFCIPHERRSAENCSCHEMERSAESOAEPSHA1PKCS#1的RSAES-OAEP-HIUNFCIPHERRSAENCSCHEMERSAESOAEPSHA224PKCS#1的RSAES-SHA224填充HIUNFCIPHERRSAENCSCHEMERSAESOAEPSHA256PKCS#1的RSAES-SHA256填充HIUNFCIPHERRSAENCSCHEMERSAESOAEPSHA384PKCS#1的RSAES-SHA384填充HIUNFCIPHERRSAENCSCHEMERSAESOAEPSHA512PKCS#1的RSAES-SHA512填充HIUNFCIPHERRSAENCSCHEMERSAESPKCS1V15PKCS#1的PKCS1V15方HIUNFCIPHERRSASCHEME無(wú)效HIUNFCIPHERRSAENCSCHEME值定義RSAtypedefenumhiHIUNFCIPHERRSASIGNSCHEME{HIUNFCIPHERRSASIGNSCHEMERSASSAPKCS1V15SHA1 HIUNFCIPHERRSASIGNSCHEMERSASSAPKCS1V15SHA224,HIUNFCIPHERRSASIGNSCHEMERSASSAPKCS1V15SHA256,HIUNFCIPHERRSASIGNSCHEMERSASSAPKCS1V15SHA384,HIUNFCIPHERRSASIGNSCHEMERSASSAPKCS1V15SHA512,HIU

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論