API標准


密碼引擎API的主要標准和規范包括:

  1. 微軟的Crypto API
  2. RSA公司的PKCS#11標准
  3. 中國商用密碼標准:GM/T 0016-2012 智能密碼鑰匙密碼應用接口規范GM/T 0018-2012密碼設備應用接口規范等

 

一、Crypto API

Crypto API作為一部分 Microsoft Windows 提供的應用程序編程接口(API) ,提供了一組允許應用程序在對用戶的敏感私鑰數據提供保護時,以靈活的方式對數據進行加密或數字簽名的函數,而實際的加密操作是由稱為加密服務提供程序 (CSP) 的獨立模塊執行。

Crypto API函數使用“加密服務提供者”(CSP) 完成數據加密、解密以及密鑰的存儲管理、所有的CSP都是相互獨立的模塊。CSP與應用程序之間的關系類似於Windows GDI模型,CSP就類似於圖形硬件驅動程序。

 

Crypto API使用兩種密鑰:會話密鑰與公共/私人密鑰對。會話密鑰使用相同的加密和解密密鑰,這種算法較快,但必須保證密鑰的安全傳遞。公共/私人密鑰對使用一個公共密鑰和一個私人密鑰,私人密鑰只有專人才能使用,公共密鑰可以廣泛傳播。如果密鑰對中的一個用於加密,另一個一定用於解密。公共/私人密鑰對算法很慢,一般只用於加密小批數據,例如用於加密會話密鑰。

Crypto API支持兩種基本的編碼方法:流式編碼和塊編碼。流式編碼在明碼文本的每一位上創建編碼位,速度較快,但安全性較低。塊編碼在一個完整的塊上(一般為64位)工作,需要使用填充的方法對要編碼的數據進行舍入,以組成多個完整的塊。這種算法速度較慢,但更安全。

Crypto API運行的環境。

首先需要Crypt32.lib,將它加到project>setting->link下面,當然你也可以在程序中用#pragma comment (lib, "crypt32.lib")加入。
  在程序開頭,你要加入兩個頭文件 windows.h  Wincrypt.h,和一個#define MY_ENCODING_TYPE  (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)

Crypto API函數

基本加密函數

PROV_RSA_FULL

RSA

RSA

RC2
RC4

MD5
SHA

PROV_RSA_SIG

none

RSA

none

MD5
SHA

PROV_RSA_SCHANNEL

RSA

RSA

RC4
DES
Triple DES

MD5
SHA

PROV_DSS

DSS

none

DSS

MD5
SHA

PROV_DSS_DH

DH

DSS

CYLINK_MEK

MD5
SHA

PROV_DH_SCHANNEL

DH

DSS

DES
Triple DES

MD5
SHA

PROV_FORTEZZA

KEA

DSS

Skipjack

SHA

PROV_MS_EXCHANGE

RSA

RSA

CAST

MD5

PROV_SSL

 

 

 

 

服務提供者函數:

CryptAcquireContext

獲得指定CSP 的密鑰容器的句柄

CryptContextAddRef

對HCRYPTPROV 句柄增加一個應用計數

CryptEnumProviders

枚舉當前計算機中的CSP

CryptEnumProviderTypes

枚舉CSP 的類型

CryptGetDefaultProvider

對於指定CSP 類型的卻省CSP

CryptGetProvParam

得到一個CSP 的屬性

CryptInstallDefaultContext

安裝先前得到的HCRYPTPROV 上下文作為當前卻省的上下文

CryptReleaseContext

釋放由CryptAcquireContext 得到的句柄

CryptSetProvider 和

CryptSetProviderEx

為指定CSP 類型指定一個卻省的CSP

CryptSetProvParam

指定一個CSP 的屬性

CryptUninstallDefaultContext

刪除先前由CryptInstallDefaultContext 安裝的卻省上下文

密鑰的產生和交換函數:

CryptAcquireCertificatePrivateKey

對於指定證書上下文得到一個HCRYPTPROV 句柄和dwKeySpec

CryptDeriveKey

從一個密碼中派生一個密鑰

CryptDestoryKey

銷毀密鑰

CryptDuplicateKey

制作一個密鑰和密鑰狀態的精確復制

CryptExportKey

把CSP 的密鑰做成BLOB 傳送到應用程序的內存空間中

CryptGenKey

創建一個隨機密鑰

CryptGenRandom

產生一個隨機數

CryptGetKeyParam

得到密鑰的參數

CryptGetUserKey

得到一個密鑰交換或簽名密鑰的句柄

CryptImportKey

把一個密鑰BLOB 傳送到CSP中

CryptSetKeyParam

指定一個密鑰的參數

編碼/解碼函數:

CryptDecodeObject

對lpszStructType 結構進行解碼

CryptDecodeObjectEx

對lpszStructType 結構進行解碼,此函數支持內存分配選項

CryptEncodeObject

對lpszStructType 結構進行編碼

CyptEncodeObjectEx

對lpszStructType 結構進行編碼,此函數支持內存分配選項

數據加密/解密函數

CryptDecrypt

使用指定加密密鑰來解密一段密文

CryptEncrypt

使用指定加密密鑰來加密一段明文

CryptProtectData

執行對DATA_BLOB 結構的加密

CryptUnprotectData

執行對DATA_BLOB 結構的完整性驗證和解密

哈希和數字簽名函數:

CryptCreateHash

創建一個空哈希對象

CryptDestoryHash

銷毀一個哈希對象

CryptDuplicateHash

復制一個哈希對象

CryptGetHashParam

得到一個哈希對象參數

CryptHashData

對一塊數據進行哈希,把它加到指定的哈希對象中

CryptHashSessionKey

對一個會話密鑰進行哈希,把它加到指定的哈希對象中

CryptSetHashParam

設置一個哈希對象的參數

CryptSignHash

對一個哈希對象進行簽名

CryptVerifySignature

校驗一個數字簽名

證書和證書庫函數:

CertAddStoreToCollection

在證書庫中增加一個證書

CertCloseStore

關閉一個證書庫句柄

CertControlStore

如果證書緩沖區和證書本身內容不相符時,允許給應用程序發一個通知

CertDuplicateStore

通過增加引用計數來復制證書庫句柄

CertEnumPhysicalStore

對於指定系統庫枚舉物理庫

CertEnumSystemStore

枚舉所有可用的系統庫

CertEnumSystemStoreLocation

枚舉可用系統庫的所有位置

CertGetStoreProperty

得到一個庫的屬性

CertOpenStore

使用指定庫類型來打開證書庫

CertOpenSystemStore

打開一個系統證書庫

CertRegisterPhysicalStore

在一個注冊系統庫里增加一個物理庫

CertRegisterSystemStore

注冊一個系統庫

CertRemoveStoreFromCollection

從一個庫集合里刪除證書庫

CertSaveStore

保存證書庫

CertSetStoreProperty

設置證書屬性

CertUnregisterPhysicalStore

從系統庫中刪除一個物理庫

CertUnregisterSystemStore

反注冊一個指定系統庫

維護函數:

CertAddSerializeElementToStore

在庫中增加一系列證書或CRL

CertCreateContext

從編碼字節中創建指定上下文

CertEnumSubjectInSortedCTL

在CTL 庫中枚舉信任主題

CertFindSubjectInCTL

在CTL 中尋找指定主題

CertFindSubjectInSortedCTL

在分類CTL 中尋找指定主題

 證書函數:

CertAddCertificateContextToStore

在證書庫里增加一個證書上下文

CertAddCertificateLinkToStore

在證書庫里增加一個對不同庫里的證書上下文的鏈接

CertAddEncodedCertificateToStore

把編碼證書轉換成證書上下文並且把它加到證書庫里

CertCreateCertificateContext

從編碼證書中創建一個證書上下文。但這個上下文並不放到證書庫里

CertCreateSelfSignCertificate

創建一個自簽名證書

CertDeleteCertificateFromStore

從證書庫里刪除一個證書

CertDuplicateCertificate

通過增加引用計數來復制證書上下文

CertEnumCertificateInStore

在證書庫里枚舉證書上下文

CertFindCertificateInStore

在證書庫里尋找證書上下文

CertFreeCertificateContext

釋放一個證書上下文

CertGetIssuerCertificateFromStore

在證書庫里得到指定主題證書的發行者

CertGetSubjectCertificateFromStore

獲得主題證書的上下文

CertGetValidUsages

返回所有證書的用法

CertSerializeCertificateStoreElement

串行化編碼證書的證書上下文

CertVerifySubjectCertificateContext

使用發行者來驗證主題證書

CryptUIDlgViewContext

顯示證書、CRL 或CTL

CryptUIDlgSelectCertificateFromStore

從指定庫中顯示對話框,可以從中選擇證書

證書撤銷列表函數:

CertAddCRLContextToStore

在證書庫里增加一個CRL 上下文

CertAddCRLLinkToStore

在不同的庫里增加一個CRL 上下文鏈接

CertAddEncodedCRLToStore

把編碼CRL 轉化成CRL 上下文然后把它加入到證書庫中

CertCreateCRLContext

從編碼CRL 中創建CRL 句柄,但不把它加到庫中

CertDeleteCRLFromStore

從證書庫里刪除一個CRL

CertDuplicateCRLContext

通過增加引用計數來復制CRL 上下文

CertEnumCRLsInStore

枚舉庫里的CRL 句柄

CertFindCertificateInCRL

從指定證書里尋找CRL 列表

CertFindCRLInStore

在庫里尋找CRL 上下文

CertFreeCRLContext

釋放CRL 上下文

CertGetCRLFromStore

從庫里得到CRL 上下文句柄

CertSerializeCRLStoreElement

串行化CRL 上下文的編碼CRL 和它的屬性

 

證書信任列表函數:

CertAddCTLContextToStore

把一個CTL 上下文加入到證書庫里

CertAddCTLLinkToStore

給不同庫里的CRL 上下文添加鏈接

CertAddEncodedCTLToStore

把編碼CTL 轉化成CTL 上下文並且把它加到證書庫里

CertCreateCTLContext

從編碼CTL 中創建CTL 上下文

CertDeleteCTLFromStore

從證書庫里刪除CTL

CertDuplicateCTLContext

通過增加引用計數來復制CTL 上下文

CertEnumCTLsInStore

在證書庫里枚舉CTL 上下文

CertFindCTLInStore

在證書庫里查找CTL 上下文

CertFreeCTLContext

釋放CTL 上下文

CertSerializeCTLStoreElement

串行化CTL 上下文的編碼CTL 和屬性

 

擴展屬性函數:

CertEnumCertificateContextProperties

枚舉指定證書上下文的屬性

CertEnumCRLContextProperties

枚舉指定CRL 上下文的屬性

CertEnumCTLContextProperties

枚舉指定CTL 上下文的屬性

CertGetCertificateContextProperty

得到證書屬性

CertGetCRLContextProperty

得到CRL 屬性

CertGetCTLContextProperty

得到CTL 屬性

CertSetCertificateContextProperty

設置證書屬性

CertSetCRLContextProperty

設置CRL 屬性

CertSetCTLContextProperty

設置CTL 屬性

 

3、證書驗證函數

證書驗證是通過CTL 和證書列表進行的。

使用CTL 的函數:

CertVerifyCTLUsage

驗證CTL 用法

CryptMsgEncodeAndSignCTL

編碼和驗證CTL

CryptMsgGetAndVerifySigner

從一個消息中獲得和驗證CTL

CryptMsgSignCTL

對包含CTL 的消息進行簽名

證書鏈驗證函數:

CertCreateCertificateChainEngine

為應用程序創建一個新的非卻省的鏈引擎

CertCreateCTLEntryFromCertificateContextProperties

創建一個CTL 入口

CertDuplicateCertificateChain

通過增加引用計數來復制證書鏈

CertFindChainInStore

在證書庫里查找證書鏈

CertFreeCertificateChain

釋放證書鏈

CertFreeCertificateChainEngine

釋放證書鏈引擎

CertGetCertificateChain

從最后一個證書建立一個上下文鏈表

CertSetCertificateContextPropertiesFromCTLEntry

通過CTL 入口屬性來設置證書上下文的屬性

CertIsValidCRLForCertificate

通過檢查CRL 來確定CRL 是否包括指定被撤銷的證書

CertVerifyCertificateChainPolicy

通過檢查證書鏈來確定它的完整性

 4、消息函數

CryptoAPI 消息函數包括兩組:低級消息函數和簡化消息函數。

低級消息函數直接和PKCS#7 消息工作。這些函數對傳輸的PKCS#7 數據進行編碼,對接收到的PKCS#7 數據進行解碼,並且對接收到的消息進行解密和驗證。

簡化消息函數是比較高級的函數,是對幾個低級消息函數和證書函數的封裝,用來執行指定任務。這些函數在完成一個任務時,減少了函數調用的數量,因此簡化了CryptoAPI的使用。

低級消息函數:

CryptMsgCalculateEncodedLength

計算加密消息的長度

CryptMsgClose

關閉加密消息的句柄

CryptMsgControl

執行指定的控制函數

CryptMsgCountersign

標記消息中已存在的簽名

CryptMsgCountersignEncoded

標記已存在的簽名

CryptMsgDuplicate

通過增加引用計數來復制加密消息句柄

CryptMsgGetParam

對加密消息進行編碼或者解碼后得到的參數

CryptMsgOpenToDecode

打開加密消息進行解碼

CryptMsgOpenToEncode

打開加密消息進行編碼

CryptMsgUpdate

更新加密消息的內容

CryptMsgVerifyCountersignatureEncoded

驗證SignerInfo 結構中標記時間

CryptMsgVerifyCountersignatureEncodedEx

驗證SignerInfo 結構中標記時間簽名者可以是CERT_PUBLIC_KEY_INFO 結構

簡化消息函數:

CryptDecodeMessage

對加密消息進行解碼

CryptDecryptAndVerifyMessageSignature

對指定消息進行解密並且驗證簽名者

CryptDecryptMessage

解密指定消息

CryptEncryptMessage

加密指定消息

CryptGetMessageCertificates

返回包含消息的證書和CRL 的證書庫

CryptGetMessageSignatureCount

返回簽名消息的簽名者數量

CryptHashMessage

創建消息的哈希

CryptSignAndEncryptMessage

對消息進行簽名並且加密

CryptSignMessage

對消息進行簽名

CryptVerifyDetachedMessageHash

驗證包含已解邦定哈希的哈希消息

CryptVerifyDetachedMessageSignature

驗證包含已解邦定簽名的簽名消息

CryptVerifyMessageHash

驗證一個哈希消息

CryptVerifyMessageSignature

驗證一個簽名消息

 5、輔助函數

數據管理函數 

CertCompareCertificate

比較兩個證書是否相同

CertCompareCertificateName

通過比較兩個證書名稱來決定他們是否相同

CertCompareIntegerBlob

比較兩個整數BLOB

CertComparePublicKeyInfo

通過比較兩個證書公鑰來決定他們是否相同

CertFindAttribute

通過OID 來查找屬性

CertFindExtension

通過OID 來查找擴展

CertFindRDNAttr

通過OID 來查找RDN 屬性

CertGetIntendedKeyUsage

從證書中取得相關密鑰用法

CertGetPublicKeyLength

從公鑰BLOB 中取得公鑰/私鑰長度

CertIsRDNAttrsInCertificateName

通過指定RDN 數組屬性比較證書名稱屬性來決定證書是否已包含了所有屬性

CertVerifyCRLRevocation

驗證主題證書是否在CRL 中

CertVerifyCRLTimeValidity

驗證CRL 的有效時間

CertVerifyRevocation

驗證主題證書是否在CRL 中

CertVerifyTimeValidity

驗證CRL 的有效時間

CertVerifyValidityNesting

驗證主題時間的有效性是否在發行者有效時間內

CryptExportPublicKeyInfo

導出公鑰信息

CryptExportPublicKeyInfoEx

導出公鑰信息(用戶可以指定算法)

CryptFindCertificateKeyProvInfo

枚舉CSP 和它的密鑰容器來查找對應於公鑰的相應私鑰

CryptFindLocalizedName

查找指定名字的局部化名稱

CryptHashCertificate

哈希證書內容

CryptHashPublicKeyInfo

計算公鑰信息的哈希

CryptHashToBeSigned

計算簽名內容的信息哈希值

CryptImportPublicKeyInfo

把公鑰信息導入CSP 並且返回它的句柄

CryptImportPublicKeyInfoEx

把公鑰信息導入CSP 並且返回它的句柄

CryptMemAlloc

分配內存

CryptMemFree

釋放內存

CryptMemRealloc

重新分配內存

CryptQueryObject

得到BLOB 或文件的內容信息

CryptSignAndEncodeCertificate

對信息進行簽名並且編碼

CryptSignCertificate

對證書進行簽名

CryptVerifyCertificateSignature

使用公鑰信息對主題證書或CRL 的簽名進行驗證

CryptVerifyCertificateSignatureEx

使用公鑰信息對主題證書或CRL 的簽名進行驗證

 數據轉換函數

CertAlgIdToOID

把CSP 算法標示符轉換成OID

CertGetNameString

得到證書的主題或頒發者名稱並且把它轉換成字符串

CertNameToStr

把證書名稱BLOB 轉換成字符串

CertOIDToAlgId

把OID 轉換成CSP 算法表示符

CertRDNValueToStr

把名稱值轉換成字符串

       

CertStrToName

把字符串轉換成編碼證書名稱

CryptBinaryToString

把二進制序列轉換成字符串

CryptFormatObject

格式化編碼數據,返回Unicode 字符串

CryptStringToBinary

把格式化的字符串轉換成二進制序列

 增強密鑰用法函數

CertAddEnhancedKeyUsageIdentifier

在證書EKU 屬性中增加一個用法標示符

CertGetEnhancedKeyUsage

獲得證書的EKU 擴展或屬性信息

CertRemoveEnhancedKeyUsageIdentifier

從證書EKU 擴展屬性中刪除用法標示符OID

CertSetEnhancedKeyUsage

設置證書的EKU 屬性

 密鑰標示函數

CryptCreateKeyIdentifierFromCSP

創建CSP 公鑰的密鑰標示符

CryptEnumKeyIdentifierProperties

枚舉標示符和其屬性

CryptGetKeyIdentifierProperty

從指定密鑰標示符中獲得指定屬性

CryptSetKeyIdentifierProperty

設置指定密鑰標示符的屬性

 證書庫回調函數

CertDllOpenStoreProv

定義庫提供者打開函數

CertStoreProvCloseCallback

決定當證書庫引用計數為0 時將發生的動作

CertStoreProvDeleteCertCallback

決定當從證書庫中刪除一個證書之前的動作

CertStoreProvDeleteCRLCallback

決定當從證書庫中刪除一個CRL 之前的動作

CertStoreProvReadCertCallback

保留

CertStoreProvReadCRLCallback

保留

CertStoreProvSetCertPropertyCallback

決定在CertSetCertificateContextProperty 和CertGetCertificateContext 調用之前的動作

CertStoreProvSetCRLPropertyCallback

決定在CertSetCRLContextProperty 和CertGetCRLContextProperty 調用之前的動作

CertStoreProvWriteCertCallback

決定在證書庫中加入一個證書前的動作

CertStoreProvWriteCRLCallback

決定在證書庫中加入一個CRL 前的動作

CertStoreProvReadCTL

讀CSP 的CTL 上下文

CertStoreProvWriteCTL

決定CTL 是否可被加入到證書庫中

CertStoreProvDeleteCTL

決定CTL 是否可被刪除

CertStoreProvSetCTLProperty

決定是否可以設置CTL 的屬性

CertStoreProvControl

當緩沖庫和存儲庫不同時,通知應用程序

CertStoreProvFindCert

在證書庫中查找下一個證書

CertStoreProvFreeFindCert

釋放前一個找到的證書上下文

CertStoreProvGetCertProperty

得到指定的證書屬性

CertStoreProvFindCRL

查找第一個或下一個匹配的CRL

CertStoreProvFreeFindCRL

釋放前一個找到的CRL 上下文

CertStoreProvGetCRLProperty

得到指定CRL 屬性

CertStoreProvFindCTL

查找第一個或下一個匹配的CTL

CertStoreProvFreeFindCTL

釋放前一個找到的CTL 上下文

CertStoreProvGetCTLProperty

得到指定CTL 屬性

OID支持函數

CryptEnumOIDFuction

枚舉由編碼類型、函數名和OID 指定注冊的OID 函數

CryptEnumOIDInfo

枚舉注冊的OID 信息

CryptEnumOIDInfo

使用指定的密鑰和組查找OID 信息

CryptFreeOIDFuctionAddress

釋放OID 函數地址句柄

CryptGetDefaultOIDDllList

對於指定的函數結合和類型獲得卻省注冊的DLL 入口

CryptGetDefaultOIDFuctionAddress

獲得已安裝的第一次或下一個卻省函數或者加載包含卻省函數的DLL

CryptGetOIDFuctionAddress

搜索匹配指定編碼類型和OID 函數列表,如果沒有找到,就查找注冊表

CryptGetOIDFuctionValue

獲得指定編碼類型、函數名稱和OID 的值

CryptInitOIDFuctionSet

初始化OID 函數集合的句柄

CryptInstallOIDFuctionAddress

安裝可調用的OID 函數地址集合

CryptRegisterDefaultOIDFuction

注冊包含卻省函數的DLL

CryptRegisterOIDFuction

注冊包含指定函數的DLL

CryptRegisterOIDInfo

注冊由CRYPT_OID_INFO 指定的OID 信息

CryptSetOIDFuctionValue

設置編碼類型、函數名稱等的值

CryptUnregisterDefaultOIDFunction

卸載包含卻省函數的DLL

CryptUnregisterOIDFuction

卸載包含函數的DLL

CryptUnregisterOIDInfo

卸載指定OID 的信息

遠程對象恢復函數

CryptGetObjectUrl

從證書、CTL 或CRL 中取得遠程對象的URL

CryptRetrieveObjectByUrl

由URL 指定位置恢復PKI 對象

PFX 函數

PFXExportCertStore

從證書庫中導出證書或證書和私鑰

PFXExportCertStoreEx

從證書庫中導出證書或證書和私鑰

PFXImportCertStore

從PFX BLOB 導入到指定證書庫

PFXIsPFXBlob

把外層BLOB 像pfx 包那樣解碼

PFXVerifyPassword

把外層BLOB 像pfx 包那樣解碼,並且用指定口令解密

 

二、PKCS# 11

PKCS# 11標准定義了與密碼令牌(如硬件安全模塊(HSM)和智能卡)的獨立於平台的APIAPI定義了最常用的加密對像類型(RSA密鑰,X.509證書,DES / 三重DES密鑰等)以及使用,創建/生成,修改和刪除這些對象所需的所有功能。

PKCS# 11只提供了接口的定義, 不包括接口的實現,一般接口的實現是由設備提供商提供的。

插入Usbkey,使用11這個端口,只能導出公鑰和證書,在加密解密,簽名驗證的過程,都是在usbkey內部進行操作,然后將結果導出到外部。

PKCS#11函數類:

CKF_ENCRYPT:加密類

CKF_DECRYPT:解密類

CKF_DIGEST:摘要類

CKF_SIGN:簽名類

CKF_SIGN_RECOVER:可恢復簽名類

CKF_VERIFY:驗證類

CKF_VERIFY_RECOVER:可恢復驗證類

CKF_GENERATE:密鑰產生

CKF_GENERATE_KEY_PAIR:密鑰對產生

CKF_WRAP:密鑰封裝

CKF_UNWRAP:密鑰解封

CKF_DERIVE:密鑰派生

各類函數

 

 

 

 

三、GM/T 0016-2012 智能密碼鑰匙密碼應用接口規范

本標准規定了基於PKI密碼體制的智能密碼鑰匙密碼應用接口,描述了密碼應用接口的函數數據類型、參數的定義和設備的安全要求。

本標准適用於智能密碼鑰匙產品的研制、使用和檢測。

智能密碼鑰匙密碼應用接口位於智能密碼鑰匙應用程序與設備之間,如下圖所示。

 

 

 

 

設備管理系列函數:

 

 

 

 

應用管理系列函數:

 

 

 

 

容器管理系列函數:

 

 

 

 

密碼服務系列函數:

 

 

 

 

 

 

 

 

四、GM/T 0018-2012密碼設備應用接口規范

本標准規定了公鑰密碼基礎設施應用技術體系下服務類密碼設備的應用接口標准。

本標准適用於服務類密碼設備的研制、使用,以及基於該類密碼設備的應用開發,也可用於指導該類密碼設備的檢測。

設備管理類函數:

 

 

 

密鑰管理類函數:

 

 

 

 

 

非對稱算法運算類函數

 

 

 

對稱算法運算類函數

 

 

 

雜湊運算類函數

 

 

 

用戶文件操作類函數

 

 

差異:Crypto APIPKCS#11

CryptoAPI是通過容器來組織密鑰。一個容器可以存放兩個RSA密鑰對,一個用於簽名驗證,一個用於加解密。此外每個用戶在加密對話其間還會隨機產生許多會話密鑰。

PKCS#11有容器概念,它對密鑰數據的保存和組織主要通過對象。p11定義了三種對象類型:數據對象,證書對象和密鑰對象。

CryptoAPI中的證書和證書庫函數對應着PKCS#11中槽和令牌管理函數,其中CryptoAPI中多了證書庫回調函數,可以進行返回操作。

同的地方:

肯定要有最基本的加解密函數,以及簽名和驗證函數,以及證書的管理函數、密鑰管理函數、信息處理函數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM