加密功能

加密函数按使用情况进行分类,如下所示:

CryptXML 函数

加密 XML 函数提供用于使用 XML 格式化数据创建和表示数字签名的 API。 For information about XML formatted signatures, see the XML-Signature Syntax and Processing specification at https://go.microsoft.com/fwlink/p/?linkid=139649.

函数 说明
A_SHAFinal 计算 MD5Update 函数输入的数据的最终哈希。
A_SHAInit 启动数据流的哈希。
A_SHAUpdate 将数据添加到指定的哈希对象。
CryptXmlCreateReference 创建对 XML 签名的引用。
CryptXmlAddObject Object 元素添加到打开的用于编码的文档上下文中的签名。
CryptXmlClose 关闭加密 XML 对象句柄。
CryptXmlDigestReference 应用程序用来消化解析的引用。 此函数在更新摘要之前应用转换。
CryptXmlDllCloseDigest 释放 CryptXmlDllCreateDigest 函数分配的CRYPT_XML_DIGEST。
CryptXmlDllCreateDigest 为指定方法创建摘要对象。
CryptXmlDllCreateKey 分析 KeyValue 元素并创建加密 API:下一代 (CNG) BCrypt 密钥句柄来验证签名。
CryptXmlDllDigestData 将数据放入摘要中。
CryptXmlDllEncodeAlgorithm 使用默认参数对敏捷算法的 SignatureMethodDigestMethod 元素进行编码。
CryptXmlDllEncodeKeyValue KeyValue 元素进行编码。
CryptXmlDllFinalizeDigest 检索摘要值。
CryptXmlDllGetAlgorithmInfo 解码 XML 算法并返回有关该算法的信息。
CryptXmlDllGetInterface 检索指向指定算法的加密扩展函数的指针。
CryptXmlDllSignData 对数据进行签名。
CryptXmlDllVerifySignature 验证签名。
CryptXmlEncode 使用提供的 XML 编写器回调函数对签名数据进行编码。
CryptXmlGetAlgorithmInfo 解码CRYPT_XML_ALGORITHM结构并返回有关算法的信息。
CryptXmlGetDocContext 返回由提供的句柄指定的文档上下文。
CryptXmlGetReference 返回所提供的句柄指定的 Reference 元素。
CryptXmlGetSignature 返回 XML Signature 元素。
CryptXmlGetStatus 返回一个 CRYPT_XML_STATUS 结构,该结构包含有关所提供的句柄指定的对象的状态信息。
CryptXmlGetTransforms 返回有关默认转换链引擎的信息。
CryptXmlImportPublicKey 导入所提供的句柄指定的公钥。
CryptXmlOpenToEncode 打开 XML 数字签名进行编码,并返回打开的 Signature 元素的句柄。 句柄使用单个 CRYPT_XML_SIGNATURE 结构封装文档上下文,并在调用 CryptXmlClose 函数之前保持打开状态。
CryptXmlOpenToDecode 打开 XML 数字签名以解码并返回封装 CRYPT_XML_SIGNATURE 结构的文档上下文的句柄。 文档上下文可以包含一个或多个 Signature 元素。
CryptXmlSetHMACSecret 在调用 CryptXmlSignCryptXmlVerify 函数之前,在句柄上设置 HMAC 机密。
CryptXmlSign 创建 SignedInfo 元素的加密签名。
CryptXmlVerifySignature SignedInfo 元素执行加密签名验证。
PFN_CRYPT_XML_WRITE_CALLBACK 为指定的数据提供程序创建转换。
PFN_CRYPT_XML_CREATE_TRANSFORM 写入加密 XML 数据。
PFN_CRYPT_XML_DATA_PROVIDER_READ 读取加密 XML 数据。
PFN_CRYPT_XML_DATA_PROVIDER_CLOSE 释放加密 XML 数据提供程序。
PFN_CRYPT_XML_ENUM_ALG_INFO 枚举预定义和已注册 的CRYPT_XML_ALGORITHM_INFO 项。

 

签名者函数

提供用于签名和时间戳数据的函数。

函数 说明
SignerFreeSignerContext 释放上一次对 SignerSignEx 函数的调用分配的SIGNER_CONTEXT结构。
SignError 调用 GetLastError 函数并将返回代码转换为 HRESULT
SignerSign 对指定的文件进行签名。
SignerSignEx 对指定的文件进行签名,并返回指向已签名数据的指针。
SignerSignEx2 对指定文件进行签名和时间戳,从而允许多个嵌套签名。
SignerTimeStamp 时间戳指定主题。 此函数支持 Authenticode 时间戳。 若要执行 X.509 公钥基础结构 (RFC 3161) 时间戳,请使用 SignerTimeStampEx2 函数。
SignerTimeStampEx 时间戳指定主题,并选择性地返回指向包含指向 BLOB 的指针SIGNER_CONTEXT结构的指针。 此函数支持 Authenticode 时间戳。 若要执行 X.509 公钥基础结构 (RFC 3161) 时间戳,请使用 SignerTimeStampEx2 函数。
SignerTimeStampEx2 时间戳指定主题,并选择性地返回指向包含指向 BLOB 的指针SIGNER_CONTEXT结构的指针。 此函数可用于执行 X.509 公钥基础结构、符合 RFC 3161 的时间戳。
SignerTimeStampEx3 时间戳指定主题,并支持在多个签名上设置时间戳。

 

基本加密函数

基本加密函数提供开发加密应用程序的最灵活方式。 与加密服务提供商的所有通信 (云解决方案提供商) 都通过这些函数进行。

云解决方案提供商是执行所有加密操作的独立模块。 每个使用加密函数的应用程序至少需要一个云解决方案提供商。 单个应用程序偶尔可以使用多个云解决方案提供商。

如果使用多个云解决方案提供商,则可以在 CryptoAPI 加密函数调用中指定要使用的云解决方案提供商。 一个云解决方案提供商(Microsoft 基础加密提供程序)与 CryptoAPI 捆绑在一起。 如果未指定其他云解决方案提供商,则此云解决方案提供商由许多 CryptoAPI 函数用作默认提供程序。

每个云解决方案提供商都提供对 CryptoAPI 提供的加密支持的不同实现。 有些提供更强的加密算法;其他组件包含硬件组件,例如 智能卡。 此外,某些 CSP 偶尔可以与用户直接通信,例如使用用户的签名私钥执行数字签名时。

基本加密函数位于以下广泛的组中:

  • 服务提供程序函数
  • 密钥生成和Exchange函数
  • 对象编码和解码函数
  • 数据加密和解密函数
  • 哈希和数字签名函数

服务提供程序函数

应用程序使用以下服务函数来连接和断开加密服务提供程序 (云解决方案提供商) 。

函数 描述
CryptAcquireContext
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

获取特定云解决方案提供商中当前用户密钥容器的句柄。
CryptContextAddRef
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

递增 HCRYPTPROV 句柄上的引用计数
CryptEnumProviders
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

枚举计算机上的提供程序。
CryptEnumProviderTypes
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

枚举计算机上支持的提供程序类型。
CryptGetDefaultProvider
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

确定当前用户或指定提供程序类型的计算机的默认云解决方案提供商。
CryptGetProvParam
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

检索控制云解决方案提供商操作的参数。
CryptInstallDefaultContext
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

安装以前获取的 HCRYPTPROV 上下文以用作默认上下文。
CryptReleaseContext
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

释放 CryptAcquireContext 函数获取的句柄。
CryptSetProviderCryptSetProviderEx
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

指定特定云解决方案提供商类型的用户默认云解决方案提供商。
CryptSetProvParam
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

指定云解决方案提供商的属性。
CryptUninstallDefaultContext
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

删除 以前由 CryptInstallDefaultContext 安装的默认上下文。
FreeCryptProvFromCertEx 将句柄发布到加密服务提供程序 (云解决方案提供商) 或加密 API:下一代 (CNG) 密钥。

 

密钥生成和Exchange函数

密钥生成和交换函数与其他用户 交换密钥 ,并创建、配置和销毁 加密密钥

函数 说明
CryptDeriveKey
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

创建从密码派生的密钥。
CryptDestroyKey
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

销毁密钥。
CryptDuplicateKey
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

创建密钥的确切副本,包括密钥 的状态
CryptExportKey
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

将密钥从云解决方案提供商传输到应用程序的内存空间中的密钥 BLOB
CryptGenKey
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

创建随机密钥。
CryptGenRandom
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

生成随机数据。
CryptGetKeyParam
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

检索密钥的参数。
CryptGetUserKey
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

获取密钥交换或签名密钥的句柄。
CryptImportKey
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

将密钥从密钥 BLOB 传输到云解决方案提供商。
CryptSetKeyParam
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

指定键的参数。

 

对象编码和解码函数

这些是通用编码和解码函数。 它们用于编码和解码 证书证书吊销列表 (CRL) 、 证书请求和证书扩展。

函数 描述
CryptDecodeObject 解码 lpszStructType 类型的结构。
CryptDecodeObjectEx 解码 lpszStructType 类型的结构。 CryptDecodeObjectEx 支持单传递内存分配选项。
CryptEncodeObject lpszStructType 类型的结构进行编码。
CryptEncodeObjectEx lpszStructType 类型的结构进行编码。 CryptEncodeObjectEx 支持单传递内存分配选项。

 

数据加密和解密函数

以下函数支持加密和解密操作。 在调用之前,CryptEncryptCryptDecrypt 需要加密密钥。 这是通过使用 CryptGenKeyCryptDeriveKeyCryptImportKey 函数完成的。 创建密钥时指定加密算法。 CryptSetKeyParam 可以设置其他加密参数。

函数 说明
CryptDecrypt
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

使用指定的加密密钥解密 密码文本 部分。
CryptEncrypt
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

使用指定的加密密钥加密 纯文本 部分。
CryptProtectData DATA_BLOB 结构中的数据执行加密。
CryptProtectMemory 加密内存以保护敏感信息。
CryptUnprotectData DATA_BLOB中的数据执行解密和完整性检查。
CryptUnprotectMemory 解密使用 CryptProtectMemory 加密的内存。

 

哈希和数字签名函数

这些函数计算数据的 哈希 ,并创建和验证 数字签名。 哈希也称为消息摘要。

函数 说明
CryptCreateHash
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

创建空哈希对象。
CryptDestroyHash
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

销毁哈希对象。
CryptDuplicateHash 复制哈希对象。
CryptGetHashParam 检索哈希对象参数。
CryptHashData
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

对数据块进行哈希处理,并将其添加到指定的哈希对象。
CryptHashSessionKey
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

对会话密钥进行哈希处理,并将其添加到指定的哈希对象。
CryptSetHashParam
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

设置哈希对象参数。
CryptSignHash
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

对指定的哈希对象进行签名。
CryptUIWizDigitalSign 显示对文档或 BLOB 进行数字签名的向导。
CryptUIWizFreeDigitalSignContext 释放指向 CRYPTUI_WIZ_DIGITAL_SIGN_CONTEXT 结构的指针。
CryptVerifySignature
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

验证数字签名,给定哈希对象的句柄。
PFNCFILTERPROC 筛选 CryptUIWizDigitalSign 函数显示的数字签名向导中显示的证书。

 

证书和证书Microsoft Store函数

证书和证书存储函数管理 证书的使用、存储和检索、 证书吊销列表 (CCL) ,以及 证书信任列表 (CCL) 。 这些函数分为以下组:

  • 证书Microsoft Store函数
  • 证书和证书Microsoft Store维护功能
  • 证书函数
  • 证书吊销列表函数
  • 证书信任列表函数
  • 扩展属性函数
  • MakeCert 函数

证书Microsoft Store函数

用户站点可以随着时间的推移收集许多证书。 通常,站点具有站点用户的证书以及描述用户与之通信的个人和实体的其他证书。 对于每个实体,可以有多个证书。 对于每个单独的证书,应该有一个验证证书链,该链提供指向受信任的 根证书的跟踪。 证书存储 及其相关功能提供用于存储、检索、枚举、验证和使用证书中存储的信息的功能。

函数 说明
CertAddStoreToCollection 将同级证书存储添加到集合证书存储中。
CertCloseStore 关闭证书存储句柄。
CertControlStore 允许应用程序在缓存存储的内容与保存到存储的存储的内容之间存在差异时通知应用程序。 此外,它还提供缓存存储的反同步(如有必要)并提供了一种将缓存存储中所做的更改提交到持久存储的方法。
CertDuplicateStore 通过递增 引用计数来复制存储句柄。
CertEnumPhysicalStore 枚举指定系统存储的物理存储。
CertEnumSystemStore 枚举所有可用的系统存储。
CertEnumSystemStoreLocation 枚举具有可用系统存储的所有位置。
CertGetStoreProperty 获取存储属性。
CertOpenStore 使用指定的存储提供程序类型打开证书存储。
CertOpenSystemStore 基于子系统协议打开系统证书存储。
CertRegisterPhysicalStore 将物理存储添加到注册表系统存储集合。
CertRegisterSystemStore 注册系统存储。
CertRemoveStoreFromCollection 从集合存储中删除同级证书存储。
CertSaveStore 保存证书存储。
CertSetStoreProperty 设置存储属性。
CertUnregisterPhysicalStore 从指定的系统存储集合中删除物理存储。
CertUnregisterSystemStore 取消注册指定的系统存储。
CryptUIWizExport 提供导出证书、证书信任列表 (CTL) 、证书吊销列表 (CRL) 或证书存储的向导。
CryptUIWizImport 提供导入证书、证书信任列表 (CTL) 、证书吊销列表 (CRL) 或证书存储的向导。

 

证书和证书Microsoft Store维护功能

CryptoAPI 提供一组常规证书和证书存储维护功能。

函数 描述
CertAddSerializedElementToStore 将序列化的证书或 CRL 元素添加到存储区。
CertCreateContext 从编码的字节创建指定的上下文。 新上下文未放入存储区。
CertEnumSubjectInSortedCTL 枚举排序的 CTL 上下文中的 TrustedSubject。
CertFindSubjectInCTL 在 CTL 中查找指定的主题。
CertFindSubjectInSortedCTL 在排序的 CTL 中查找指定的主题。
OpenPersonalTrustDBDialogOpenPersonalTrustDBDialogEx 显示“ 证书 ”对话框。

 

证书函数

大多数 证书 函数都有相关函数来处理 CRLCCL。 有关相关 CRL 和 CTL 函数的详细信息,请参阅证书吊销列表函数和证书信任列表函数。

函数 说明
CertAddCertificateContextToStore 将证书上下文添加到证书存储中。
CertAddCertificateLinkToStore 将证书存储中的链接添加到不同存储中的证书上下文。
CertAddEncodedCertificateToStore 将编码的证书转换为证书上下文,然后将上下文添加到证书存储中。
CertAddRefServerOcspResponse 递增 HCERT_SERVER_OCSP_RESPONSE 句柄的引用计数。
CertAddRefServerOcspResponseContext 递增 CERT_SERVER_OCSP_RESPONSE_CONTEXT 结构的引用计数。
CertCloseServerOcspResponse 关闭 (OCSP) 服务器响应句柄 的联机证书状态协议
CertCreateCertificateContext 从编码的证书创建证书上下文。 创建的上下文未放入证书存储中。
CertCreateSelfSignCertificate 创建自签名证书。
CertDeleteCertificateFromStore 从证书存储中删除证书。
CertDuplicateCertificateContext 通过递增证书 引用计数来复制证书上下文。
CertEnumCertificatesInStore 枚举证书存储中的证书上下文。
CertFindCertificateInStore 在满足搜索条件的证书存储中查找第一个或下一个证书上下文。
CertFreeCertificateContext 释放证书上下文。
CertGetIssuerCertificateFromStore 从证书存储中获取指定使用者证书的第一个或下一个颁发者的证书上下文。
CertGetServerOcspResponseContext 检索指定句柄 (OCSP) 响应上下文的非阻塞、有效的 联机证书状态协议
CertGetSubjectCertificateFromStore 从证书存储使用者证书上下文,该上下文由其颁发者和序列号唯一标识。
CertGetValidUsages 返回一个用法数组,该数组包含证书数组中所有证书的有效用法的交集。
CertOpenServerOcspResponse 打开与服务器证书链关联的 联机证书状态协议 (OCSP) 响应的句柄。
CertRetrieveLogoOrBiometricInfo 执行 在szOID_LOGOTYPE_EXTszOID_BIOMETRIC_EXT 证书扩展中指定的徽标或生物识别信息的 URL 检索。
CertSelectCertificate 显示一个对话框,允许用户从与给定条件匹配的一组证书中选择证书。
CertSelectCertificateChains 根据指定的选择条件检索证书链。
CertSelectionGetSerializedBlob 用于从CERT_SELECTUI_INPUT结构检索序列化证书 BLOB 的帮助程序函数。
CertSerializeCertificateStoreElement 序列化证书上下文的编码证书及其属性的编码表示形式。
CertVerifySubjectCertificateContext 使用颁发者对使用者证书执行启用的验证检查。
CryptUIDlgCertMgr 显示允许用户管理证书的对话框。
CryptUIDlgSelectCertificate 显示允许用户选择证书的对话框。
CryptUIDlgSelectCertificateFromStore 显示一个对话框,该对话框允许从指定存储区选择证书。
CryptUIDlgViewCertificate 显示显示指定证书的对话框。
CryptUIDlgViewContext 显示证书、CRL 或 CTL。
CryptUIDlgViewSignerInfo 显示一个对话框,其中包含已签名消息的签名者信息。
GetFriendlyNameOfCert 检索证书的显示名称。
RKeyCloseKeyService 关闭密钥服务句柄。
RKeyOpenKeyService 在远程计算机上打开密钥服务句柄。
RKeyPFXInstall 在远程计算机上安装证书。

 

证书吊销列表函数

这些函数管理 证书吊销列表 的存储和检索, (CCL) 。

函数 说明
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 及其属性。

 

证书信任列表函数

这些函数管理 证书信任列表 的存储和检索, (CCL) 。

函数 说明
CertAddCTLContextToStore 将 CTL 上下文添加到证书存储。
CertAddCTLLinkToStore 将存储区中的链接添加到其他存储中的 CRL 上下文。
CertAddEncodedCTLToStore 将编码的 CTL 转换为 CTL 上下文,然后将上下文添加到证书存储中。
CertCreateCTLContext 从编码的证书信任列表创建 CTL 上下文。 创建的上下文未放入证书存储中。
CertDeleteCTLFromStore 从证书存储中删除 CTL。
CertDuplicateCTLContext 通过递增引用计数来复制 CTL 上下文。
CertEnumCTLsInStore 枚举证书存储中的 CTL 上下文。
CertFindCTLInStore 查找与特定条件匹配的证书存储中的第一个或下一个 CTL 上下文。
CertFreeCTLContext 释放 CTL 上下文。
CertModifyCertificatesToTrust 根据给定目的修改 CTL 中的证书集。
CertSerializeCTLStoreElement 序列化 CTL 上下文的编码 CTL 及其属性。

 

扩展属性函数

以下函数适用于证书、CCL 和 CCL 的扩展属性。

函数 描述
CertEnumCertificateContextProperties 枚举指定证书上下文的属性。
CertEnumCRLContextProperties 枚举指定 CRL 上下文的属性。
CertEnumCTLContextProperties 枚举指定 CTL 上下文的属性。
CertGetCertificateContextProperty 检索证书属性。
CertGetCRLContextProperty 检索 CRL 属性。
CertGetCTLContextProperty 检索 CTL 属性。
CertSetCertificateContextProperty 设置证书属性。
CertSetCRLContextProperty 设置 CRL 属性。
CertSetCTLContextProperty 设置 CTL 属性。

 

MakeCert 函数

以下函数支持 MakeCert 工具。

函数 说明
FreeCryptProvFromCert 释放加密服务提供程序的句柄 (云解决方案提供商) ,并选择性地删除 GetCryptProvFromCert 函数创建的临时容器。
GetCryptProvFromCert 获取证书上下文的云解决方案提供商和密钥规范的句柄。
PvkFreeCryptProv 释放云解决方案提供商句柄,并选择性地删除 PvkGetCryptProv 函数创建的临时容器。
PvkGetCryptProv 根据私钥文件名或密钥容器名称获取对云解决方案提供商的句柄。
PvkPrivateKeyAcquireContextFromMemory 在云解决方案提供商中创建临时容器,并将私钥从内存加载到容器中。
PvkPrivateKeySave 将私钥及其相应的 公钥 保存到指定文件。
SignError 调用 GetLastError 并将返回代码转换为 HRESULT

 

证书验证函数

证书是使用 CCL 或证书链进行验证的。 这两个函数都提供:

  • 使用 CCL 的验证函数
  • 证书链验证函数

使用 CCL 的验证函数

这些函数在验证过程中使用 CCL。 可以在证书信任列表函数和扩展属性函数中找到用于处理 CCL 的其他函数。

以下函数直接使用 CCL 进行验证。

函数 描述
CertVerifyCTLUsage 验证 CTL 的使用。
CryptMsgEncodeAndSignCTL 将 CTL 编码并签名为消息。
CryptMsgGetAndVerifySigner 从消息检索和验证 CTL。
CryptMsgSignCTL 对包含 CTL 的消息进行签名。

 

证书链验证函数

证书链旨在提供有关单个证书的信任信息。

函数名称 描述
CertCreateCertificateChainEngine 为应用程序创建新的非默认链引擎。
CertCreateCTLEntryFromCertificateContextProperties 创建一个 CTL 条目,其属性是证书上下文的属性。
CertDuplicateCertificateChain 通过递增链的 引用计数 并返回指向链的指针来复制证书链。
CertFindChainInStore 在存储中查找第一个或下一个证书链上下文。
CertFreeCertificateChain 通过减少证书的引用计数释放证书链。
CertFreeCertificateChainEngine 释放非默认证书链引擎。
CertFreeCertificateChainList 释放指向链上下文的指针数组。
CertGetCertificateChain 生成从结束证书开始的链上下文,并返回受信任的 根证书(如果可能)。
CertIsValidCRLForCertificate 检查 CRL 以确定是否在吊销该证书时包含特定证书。
CertSetCertificateContextPropertiesFromCTLEntry 使用 CTL 条目中的属性设置证书上下文中的属性。
CertVerifyCertificateChainPolicy 检查证书链以验证其有效性,包括其符合任何指定的有效性策略条件。

 

消息函数

CryptoAPI 消息函数由两组函数组成:低级别消息函数和 简化的消息函数

低级别消息函数创建并直接使用 PKCS #7 消息。 这些函数对 PKCS #7 数据进行编码,以便传输和解码收到的 PKCS #7 数据。 他们还解密并验证收到的消息的签名。 有关 PKCS #7 标准和低级别消息的概述,请参阅 低级别消息

简化的消息函数处于较高级别,并将多个低级别消息函数和证书函数包装成以特定方式执行特定任务的单个函数。 这些函数减少了完成任务所需的函数调用数,从而简化了 CryptoAPI 的使用。 有关简化消息的概述,请参阅 简化消息

  • 低级别消息函数
  • 简化的消息函数

低级别消息函数

低级别消息函数提供编码数据以传输和解码收到的 PKCS #7 消息所需的功能。 还提供了用于解密和验证收到的消息签名的功能。 不建议在大多数应用程序中使用这些低级别消息函数。 对于大多数应用程序,首选使用将多个低级别消息函数包装成单个函数调用的简化消息函数。

函数 说明
CryptMsgCalculateEncodedLength 计算编码加密消息的长度。
CryptMsgClose 关闭加密消息的句柄。
CryptMsgControl 在编码或解码加密消息的最终 CryptMsgUpdate 之后执行特殊控制函数。
CryptMsgCountersign 对邮件中已有的签名进行反签名。
CryptMsgCountersignEncoded 根据 PKCS #7) 定义,对已存在的签名 (编码的 SignerInfo 进行反对齐。
CryptMsgDuplicate 通过递增 引用计数来复制加密消息句柄。 引用计数跟踪消息的生存期。
CryptMsgGetParam 在编码或解码加密消息后获取参数。
CryptMsgOpenToDecode 打开加密消息进行解码。
CryptMsgOpenToEncode 打开用于编码的加密消息。
CryptMsgUpdate 更新加密消息的内容。
CryptMsgVerifyCountersignatureEncoded 验证由 PKCS #7) 定义的 SignerInfo 结构 (的 反符号
CryptMsgVerifyCountersignatureEncodedEx 验证 pbSignerInfoCounterSignature 参数是否包含 pbSignerInfo 参数结构的 encryptedDigest 字段的加密哈希

 

简化的消息函数

简化的消息函数 将低级别消息函数包装到单个函数中,以完成指定的任务。

函数 说明
CryptDecodeMessage 解码加密消息。
CryptDecryptAndVerifyMessageSignature 解密指定的消息,并验证签名者。
CryptDecryptMessage 解密指定的消息。
CryptEncryptMessage 加密收件人或收件人的邮件。
CryptGetMessageCertificates 返回包含消息证书和 CRL证书存储
CryptGetMessageSignerCount 返回已签名消息中的登录者计数。
CryptHashMessage 创建消息的哈希。
CryptSignAndEncryptMessage 对邮件进行签名,然后对收件人或收件人进行加密。
CryptSignMessageWithKey 使用参数中指定的云解决方案提供商私钥对消息进行签名。
CryptSignMessage 对消息进行签名。
CryptVerifyDetachedMessageHash 验证包含分离哈希的哈希的哈希消息。
CryptVerifyDetachedMessageSignature 验证包含分离签名或签名的已签名消息。
CryptVerifyMessageHash 验证哈希消息。
CryptVerifyMessageSignature 验证已签名的消息。
CryptVerifyMessageSignatureWithKey 使用指定的公钥信息验证已签名邮件的签名。

 

辅助函数

辅助函数按如下所示进行分组:

  • 数据管理函数
  • 数据转换函数
  • 增强型密钥用法函数
  • 密钥标识符函数
  • OID 支持函数
  • 远程对象检索函数
  • PFX 函数

数据管理函数

以下 CryptoAPI 函数管理数据和证书。

函数 说明
CertCompareCertificate 比较两个证书以确定它们是否相同。
CertCompareCertificateName 比较两个证书名称以确定它们是否相同。
CertCompareIntegerBlob 比较两个整数 BLOB
CertComparePublicKeyInfo 比较两个 公钥 以确定它们是否相同。
CertFindAttribute 查找由其 对象标识符 (OID) 标识的第一个属性。
CertFindExtension 查找其 OID 标识的第一个扩展。
CertFindRDNAttr 相对可分辨名称的名称列表中查找其 OID 标识的第一个 RDN 属性。
CertGetIntendedKeyUsage 从证书中获取预期的密钥使用字节。
CertGetPublicKeyLength 公钥 BLOB 获取公钥/私钥的位长度。
CertIsRDNAttrsInCertificateName 证书名称 中的属性与指定的 CERT_RDN 进行比较,以确定是否包含所有属性。
CertIsStrongHashToSign 确定签名证书中的指定哈希算法和公钥是否可用于执行强签名。
CertVerifyCRLRevocation 验证使用者证书是否不在 证书吊销列表中 , (CRL) 。
CertVerifyCRLTimeValidity 验证 CRL 的时间有效性。
CertVerifyRevocation 验证使用者证书是否不在 CRL 上。
CertVerifyTimeValidity 验证证书的时间有效性。
CertVerifyValidityNesting 验证使用者的时间有效性是否嵌套在颁发者的时间有效期内。
CryptExportPKCS8 此函数被 CryptExportPKCS8Ex 函数取代。
CryptExportPKCS8Ex 导出 PKCS #8 格式的私钥。
CryptExportPublicKeyInfo 导出与提供程序对应的私钥关联的公钥信息。
CryptExportPublicKeyInfoEx 导出与提供程序对应的私钥关联的公钥信息。 此函数不同于 CryptExportPublicKeyInfo,即用户可以指定公钥算法,从而替代云解决方案提供商提供的默认算法。
CryptExportPublicKeyInfoFromBCryptKeyHandle 导出与提供程序的相应私钥关联的公钥信息。
CryptFindCertificateKeyProvInfo 枚举加密提供程序及其 密钥容器 ,以查找与证书公钥对应的私钥。
CryptFindLocalizedName 查找指定名称的本地化名称,例如,查找根系统的存储名称的本地化名称。
CryptHashCertificate
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

对编码的内容进行哈希处理。
CryptHashCertificate2 使用加密 API 对数据块进行哈希处理:下一代 (CNG) 哈希提供程序。
CryptHashPublicKeyInfo
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

计算编码公钥信息的哈希。
CryptHashToBeSigned
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

计算编码的已签名内容 (CERT_SIGNED_CONTENT_INFO ) 中“要签名”信息的哈希。
CryptImportPKCS8
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

将 PKCS #8 格式的私钥导入加密服务提供程序 (云解决方案提供商) 。
CryptImportPublicKeyInfo
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

将公钥信息转换为提供程序,并返回公钥的句柄。
CryptImportPublicKeyInfoEx
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

将公钥信息转换为提供程序,并返回公钥的句柄。 提供可用于替代默认值的 CryptImportPublicKeyInfo) 指定的参数 (,以补充 CERT_PUBLIC_KEY_INFO
CryptImportPublicKeyInfoEx2 将公钥导入到 CNG 非对称提供程序中。
CryptMemAlloc 为缓冲区分配内存。 此内存由返回已分配缓冲区的所有 Crypt32.lib 函数使用。
CryptMemFree 释放 CryptMemAllocCryptMemRealloc 分配的内存。
CryptMemRealloc 释放当前为缓冲区分配的内存,并为新缓冲区分配内存。
CryptQueryObject
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

检索有关 BLOB 或文件的内容的信息。
CryptSignAndEncodeCertificate 对“待签名”信息进行编码,对此信息进行签名,对生成的已签名、编码的信息进行编码。
CryptSignCertificate 在编码的已签名内容中对“要签名”的信息进行签名。
CryptSIPAddProvider 添加主题接口包 (SIP) 。
CryptSIPCreateIndirectData 返回一个SIP_INDIRECT_DATA结构,该结构包含提供的SIP_SUBJECTINFO结构的哈希、摘要算法和编码属性。 哈希可用作对数据的间接引用。
CryptSIPGetCaps 检索 SIP 的功能。
CryptSIPGetSignedDataMsg 从文件检索验证码签名。
CryptSIPLoad 加载实现主题接口包的动态链接库,并将相应的库导出函数分配给 SIP_DISPATCH_INFO 结构。
CryptSIPPutSignedDataMsg 将验证码签名存储在目标文件中。
CryptSIPRemoveProvider 删除之前对 CryptSIPAddProvider 函数的调用添加的 SIP。
CryptSIPRemoveSignedDataMsg 删除指定的验证码签名。
CryptSIPRetrieveSubjectGuid 根据指定文件中的标头信息检索 GUID。
CryptSIPRetrieveSubjectGuidForCatalogFile 检索与指定文件关联的主题 GUID。
CryptSIPVerifyIndirectData 根据提供的主题验证间接哈希数据。
CryptUpdateProtectedState (SID ) 更改 后,迁移当前用户的主密钥。
CryptVerifyCertificateSignature 使用公钥信息验证使用者证书或 CRL 的签名。
CryptVerifyCertificateSignatureEx CryptVerifyCertificateSignature 的扩展版本。
GetEncSChannel 将加密的 Schannel DLL 内容存储在内存中。
pCryptSIPGetCaps 由 SIP 实现以报告功能。

 

数据转换函数

以下 CryptoAPI 函数将证书结构成员转换为不同的形式。

函数 说明
CertAlgIdToOID 将 CryptoAPI 算法标识符 (ALG_ID) 转换为 抽象语法表示法一 (ASN.1) 对象标识符 (OID) 字符串。
CertGetNameString 从证书获取使用者或颁发者名称,并将其转换为以 null 结尾的字符串。
CertNameToStr 将证书名称 BLOB 转换为零终止字符串。
CertOIDToAlgId 将 ASN.1 对象标识符字符串转换为云解决方案提供商算法标识符。
CertRDNValueToStr 将名称值转换为以 null 结尾的字符串。
CertStrToName 将以 null 结尾的 X.500 字符串转换为编码的证书名称。
CryptBinaryToString 将二进制序列转换为格式化字符串。
CryptFormatObject 格式化编码的数据,并返回 Unicode 字符串。
CryptStringToBinary 将格式化字符串转换为二进制序列。

 

增强型密钥用法函数

以下函数处理 增强型密钥用法 , (EKU) 扩展和证书的 EKU 扩展属性。 EKU 扩展和扩展属性指定并限制证书的有效用法。 扩展是证书本身的一部分。 它们由证书的颁发者设置,并且是只读的。 证书扩展属性是与可在应用程序中设置的证书关联的值。

函数 说明
CertAddEnhancedKeyUsageIdentifier 将使用情况标识符添加到证书的 EKU 属性。
CertGetEnhancedKeyUsage 从证书获取有关 EKU 扩展或属性的信息。
CertRemoveEnhancedKeyUsageIdentifier 从证书的 EKU 扩展属性中删除使用情况标识符。
CertSetEnhancedKeyUsage 设置证书的 EKU 属性。

 

密钥标识符函数

密钥标识符函数允许用户创建、设置、检索或查找密钥标识符或其属性。

密钥标识符是公钥/私钥的唯一标识符配对。 它可以是任何唯一标识符,但通常是编码 CERT_PUBLIC_KEY_INFO 结构的 20 字节 SHA1 哈希。 可以通过证书的CERT_KEY_IDENTIFIER_PROP_ID获取密钥标识符。 密钥标识符允许使用该密钥配对在不使用证书的情况下加密或解密消息。

密钥标识符与 CCLCTL 不关联。

密钥标识符可以具有与证书上下文相同的属性。 有关详细信息,请参阅 CertCreateContext

函数 说明
CryptCreateKeyIdentifierFromCSP
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

从云解决方案提供商的公钥 BLOB 创建密钥标识符。
CryptEnumKeyIdentifierProperties 枚举密钥标识符及其属性。
CryptGetKeyIdentifierProperty
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

从指定的密钥标识符获取特定属性。
CryptSetKeyIdentifierProperty
[!重要提示]
已弃用此 API。 新软件和现有软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。

设置指定密钥标识符的属性。

 

OID 支持函数

这些函数 (OID) 支持提供 对象标识符 。 这些函数安装、注册和调度到 OID 并编码特定于类型的函数。

以下 CryptoAPI 函数使用以下 OID 支持函数:

有关此过程的概述,请参阅 扩展 CryptoAPI 功能

以下函数适用于 OID。

函数 描述
CryptEnumOIDFunction 枚举由其编码类型、函数名称和 OID 标识的已注册 OID 函数。
CryptEnumOIDInfo 枚举其组标识的已注册 OID 信息,并调用 pfnEnumOIDInfo 进行匹配。
CryptFindOIDInfo 使用指定的键和组查找 OID 信息。
CryptFreeOIDFunctionAddress 释放 由 CryptGetOIDFunctionAddressCryptGetDefaultOIDFunctionAddress 递增并返回的句柄计数。
CryptGetDefaultOIDDllList 获取指定函数集和编码类型的已注册默认 DLL 条目的列表。
CryptGetDefaultOIDFunctionAddress 获取第一个或下一个安装的默认函数,或加载包含默认函数的 DLL。
CryptGetOIDFunctionAddress 在已安装的函数列表中搜索编码类型和 OID 匹配项。 如果未找到匹配项,则注册表将搜索匹配项。
CryptGetOIDFunctionValue 获取指定编码类型、函数名称、OID 和值名称的值。
CryptInitOIDFunctionSet 初始化并返回由提供的函数名称标识的 OID 函数集的句柄。
CryptInstallOIDFunctionAddress 安装一组可调用的 OID 函数地址。
CryptRegisterDefaultOIDFunction 注册包含要为指定编码类型和函数名称调用的默认函数的 DLL。
CryptRegisterOIDFunction 注册包含要为指定编码类型、函数名称和 OID 调用的函数的 DLL。
CryptRegisterOIDInfo 注册 CRYPT_OID_INFO 结构中指定的 OID 信息,并将其保存到注册表。
CryptSetOIDFunctionValue 设置指定编码类型、函数名称、OID 和值名称的值。
CryptUnregisterDefaultOIDFunction 删除 DLL 的注册,该 DLL 包含为指定的编码类型和函数名称调用的默认函数。
CryptUnregisterOIDFunction 删除 DLL 的注册,该 DLL 包含要为指定的编码类型、函数名称和 OID 调用的函数。
CryptUnregisterOIDInfo 删除指定 OID 信息的注册。

 

远程对象检索函数

以下函数允许用户检索公钥基础结构 (PKI) 对象、获取证书、CTL 或 CRL 的 URL,或者从对象中提取 URL。

函数 说明
CryptGetObjectUrl 从证书、CTL 或 CRL 获取远程对象的 URL。
CryptRetrieveObjectByUrl 从 URL 指定的位置检索 PKI 对象。

 

PFX 函数

以下函数支持个人信息Exchange (PFX) 格式 BLOB

函数 说明
PFXExportCertStore 从引用 的证书导出存储 证书,如果可用,则导出其关联的 私钥
PFXExportCertStoreEx 从引用的证书导出存储证书,如果可用,则导出其关联的私钥。
PFXImportCertStore 导入 PFX BLOB,并返回包含证书和任何关联的私钥的存储的句柄。
PFXIsPFXBlob 尝试将 BLOB 的外部层解码为 PFX 数据包。
PFXVerifyPassword 尝试将 BLOB 的外部层解码为 PFX 数据包,并使用给定的密码对其进行解密。

 

证书服务备份和还原函数

证书服务包括用于备份和还原证书服务数据库的函数。 这些证书服务备份和还原功能包含在Certadm.dll中。 与其他与证书服务关联的 API 元素不同,这些函数未封装在可用于调用类方法的对象中。 相反,备份和还原 API 首先通过调用 LoadLibrary 将Certadm.dll库加载到内存中,然后通过调用 GetProcAddress 来确定函数的地址。 调用证书服务备份和还原函数后,请调用 FreeLibrary 以释放内存中的Certadm.dll资源。

注意

Certadm.dll提供的备份和还原功能不会备份或还原证书服务的私钥。 有关备份证书服务私钥的信息,请参阅 备份和还原证书服务私钥

若要调用备份和还原功能,必须具有备份和还原 权限。 有关详细信息,请参阅设置备份和还原权限

 

注意

如果以前在同一线程中调用 CoInitializeEx 以调用证书服务备份和还原 API,则必须将COINIT_APARTMENTTHREADED标志传递给 CoInitializeEx。 也就是说,使用同一线程时,如果线程以前在调用 CoInitializeEx 中传入了 COINIT_MULTITHREADED 标志,则无法调用证书服务备份和还原 API。

 

证书服务备份 API 在 Certbcli.h 中定义。 但是,创建程序时,请使用 Certsrv.h 作为包含文件。

以下 API 由Certadm.dll导出。

函数 说明
CertSrvBackupClose 关闭打开的文件。
CertSrvBackupEnd 结束备份会话。
CertSrvBackupFree 释放备份和还原 API 分配的缓冲区。
CertSrvBackupGetBackupLogs 返回需要备份的日志文件列表。
CertSrvBackupGetDatabaseNames 返回需要备份的数据库文件的列表。
CertSrvBackupGetDynamicFileList 检索需要为给定备份上下文的证书服务动态文件名列表。
CertSrvBackupOpenFile 打开一个文件,准备备份该文件。
CertSrvBackupPrepare 为联机备份准备数据库。
CertSrvBackupRead 读取打开的文件的内容。
CertSrvBackupTruncateLogs 截断日志文件。
CertSrvIsServerOnline 确定证书服务服务器是否处于联机状态, (主动运行) 。
CertSrvRestoreEnd 结束还原会话。
CertSrvRestoreGetDatabaseLocations 检索用于备份和还原方案 () 的数据库位置。
CertSrvRestorePrepare 开始还原会话。
CertSrvRestoreRegister 注册还原操作。
CertSrvRestoreRegisterComplete 完成以前注册的还原操作。
CertSrvRestoreRegisterThroughFile 注册还原操作。
CertSrvServerControl 将控制命令发送到证书服务实例。

 

回调函数

本节中的回调函数用于注册或安装应用程序定义的 证书存储 提供程序,并通过回调函数提供相关功能。 回调函数由应用程序实现,由 CryptoAPI 函数调用。 回调函数使应用程序能够控制 CryptoAPI 函数处理数据的方式。

回调函数 使用
CertChainFindByIssuerCallback 应用程序定义的回调函数,允许应用程序筛选可能添加到证书链中的证书。
CertDllOpenStoreProv 定义存储提供程序打开函数。
CertEnumPhysicalStoreCallback CertEnumPhysicalStore 函数使用的回调函数用于设置每个物理存储的格式和显示信息。
CertEnumSystemStoreCallback CertEnumSystemStore 函数用来设置每个物理存储的格式和显示信息的回调函数。
CertEnumSystemStoreLocationCallback CertEnumSystemStoreLocation 函数用来设置每个物理存储的格式和显示信息的回调函数。
CertStoreProvCloseCallback 确定打开商店的 引用计数 变为零时会发生什么情况。
CertStoreProvControl 当缓存存储的内容与存储的内容保存到存储中时,允许应用程序收到通知。
CertStoreProvDeleteCertCallback 确定在从证书存储中删除证书之前要执行的操作。
CertStoreProvDeleteCRLCallback 确定在 从证书存储中删除证书吊销列表 (CRL) 之前要执行的操作。
CertStoreProvDeleteCTL 确定是否可以删除 CTL。
CertStoreProvFindCert 在与指定条件匹配的存储中查找第一个或下一个证书。
CertStoreProvFindCRL 在与指定条件匹配的存储中查找第一个或下一个 CRL。
CertStoreProvFindCTL 在与指定条件匹配的存储中查找第一个或下一个 CTL。
CertStoreProvFreeFindCert 释放以前找到的证书上下文。
CertStoreProvFreeFindCRL 释放以前找到的 CRL 上下文。
CertStoreProvFreeFindCTL 释放以前找到的 CTL 上下文。
CertStoreProvGetCertProperty 检索证书的指定属性。
CertStoreProvGetCRLProperty 检索 CRL 的指定属性。
CertStoreProvGetCTLProperty 检索 CTL 的指定属性。
CertStoreProvReadCertCallback 当前未使用,但可能导出到将来的 CSP。
CertStoreProvReadCRLCallback 当前未使用,但可能导出到将来的 CSP。
CertStoreProvReadCTL 读取提供程序的 CTL 上下文副本,如果存在,请创建新的 CTL 上下文。
CertStoreProvSetCertPropertyCallback 确定在调用 CertSetCertificateContextPropertyCertGetCertificateContextProperty 之前要执行的操作。
CertStoreProvSetCRLPropertyCallback 确定在调用 CertSetCRLContextPropertyCertGetCRLContextProperty 之前要执行的操作。
CertStoreProvSetCTLProperty 确定是否可以在 CTL 上设置属性。
CertStoreProvWriteCertCallback 确定在将证书添加到存储区之前要执行的操作。
CertStoreProvWriteCRLCallback 确定在将 CRL 添加到存储区之前要执行的操作。
CertStoreProvWriteCTL 确定是否可以将 CTL 添加到存储区。
CRYPT_ENUM_KEYID_PROP CryptEnumKeyIdentifierProperties 函数使用的回调函数。
CRYPT_ENUM_OID_FUNCTION CryptEnumOIDFunction 函数使用的回调函数。
CRYPT_ENUM_OID_INFO CryptEnumOIDInfo 函数使用的回调函数。
CryptGetSignerCertificateCallback 用于 CRYPT_VERIFY_MESSAGE_PARA 结构的回调函数,用于获取和验证消息签名者的证书。
PCRYPT_DECRYPT_PRIVATE_KEY_FUNC CryptImportPKCS8 函数使用的回调函数。
PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC 创建 CRYPT_ENCRYPTED_PRIVATE_KEY_INFO 结构时使用的回调函数。
PCRYPT_RESOLVE_HCRYPTPROV_FUNC CryptImportPKCS8 函数使用的回调函数。
PFN_CDF_PARSE_ERROR_CALLBACK 用户定义函数在分析目录定义文件 (CDF) 时调用目录定义函数错误。
PFN_CERT_CREATE_CONTEXT_SORT_FUNC 创建上下文时,针对每个排序的上下文项调用。
PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY CNG 对象标识符 (OID) 可安装函数,用于导入已解密的内容加密密钥 (CEK) 。
PFN_CMSG_CNG_IMPORT_KEY_AGREE 为信封邮件的密钥传输收件人导入内容加密密钥。
PFN_CMSG_CNG_IMPORT_KEY_TRANS CNG OID 可安装函数,用于导入和 解密 密钥传输收件人、加密内容 加密密钥 (CEK) 。
PFN_CMSG_EXPORT_KEY_AGREE 加密和导出信封邮件的密钥协议收件人的内容加密密钥。
PFN_CMSG_EXPORT_KEY_TRANS 加密和导出信封邮件的密钥传输收件人的内容加密密钥。
PFN_CMSG_EXPORT_MAIL_LIST 加密和导出信封邮件的邮件列表收件人的内容加密密钥。
PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY 生成用于加密信封消息内容的 对称密钥
PFN_CMSG_IMPORT_KEY_AGREE 为信封邮件的密钥传输收件人导入内容加密密钥。
PFN_CMSG_IMPORT_KEY_TRANS 为信封邮件的密钥传输收件人导入内容加密密钥。
PFN_CMSG_IMPORT_MAIL_LIST 为信封邮件的密钥传输收件人导入内容加密密钥。
PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC 由 CryptExportPublicKeyInfoEx 调用以导出公钥 BLOB 并对其进行编码。
PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC 调用以解码并返回哈希算法标识符和签名参数(可选)。
PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC 调用以对计算哈希进行签名和编码。
PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC 调用以解密编码的签名并将其与计算哈希进行比较。
PFN_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC 由 CryptImportPublicKeyInfoEx2 调用以解码公钥算法标识符、加载算法提供程序并导入密钥配对
PFNCCERTDISPLAYPROC 用户定义的回调函数,它允许 CryptUIDlgSelectCertificate 函数的调用方处理用户选择查看的证书的显示。
PFNCMFILTERPROC 筛选每个证书以确定它是否将显示在 CertSelectCertificate 函数显示的证书选择对话框中。
PFNCMHOOKPROC 在消息由 CertSelectCertificate 函数生成的证书选择对话框处理之前调用。

 

目录定义函数

这些函数用于创建目录。 所有这些函数均由 MakeCat 调用。

函数 说明
CryptCATCDFClose 关闭目录定义文件,并为相应的 CRYPTCATCDF 结构释放内存。
CryptCATCDFEnumAttributesWithCDFTag 枚举 CDF 的 CatalogFiles 部分中成员文件的属性。
CryptCATCDFEnumCatAttributes 枚举 CDF 的 CatalogHeader 节中的目录级属性。
CryptCATCDFEnumMembersByCDFTagEx 枚举 CDF 的 CatalogFiles 部分中的各个文件成员。
CryptCATCDFOpen 打开用于读取的现有 CDF 并初始化 CRYPTCATCDF 结构。

 

目录函数

这些函数用于管理目录。

函数 说明
CryptCATAdminAcquireContext 获取目录管理员上下文的句柄。 后续调用 CryptCATAdminAddCatalogCryptCATAdminEnumCatalogFromHashCryptCATAdminRemoveCatalog 函数可以使用此句柄。
CryptCATAdminAcquireContext2 获取给定哈希算法和哈希策略的目录管理员上下文的句柄。
CryptCATAdminAddCatalog 将目录添加到目录数据库。
CryptCATAdminCalcHashFromFileHandle 计算文件的哈希。
CryptCATAdminCalcHashFromFileHandle2 使用指定的算法计算文件的哈希。
CryptCATAdminEnumCatalogFromHash 枚举包含指定哈希的目录。
CryptCATAdminReleaseCatalogContext 释放 以前由 CryptCATAdminAddCatalog 函数返回的目录上下文的句柄。
CryptCATAdminReleaseContext 释放 以前由 CryptCATAdminAcquireContext 函数分配的句柄。
CryptCATAdminRemoveCatalog 删除目录文件,并从Windows目录数据库中删除该目录的条目。
CryptCATAdminResolveCatalogPath 检索指定目录的完全限定路径。
CryptCATCatalogInfoFromContext 从指定的目录上下文中检索目录信息。
CryptCATClose 关闭以前由 CryptCATOpen 函数打开的目录句柄。
CryptCATEnumerateAttr 枚举与目录成员关联的属性。
CryptCATEnumerateCatAttr 枚举与目录关联的属性。
CryptCATEnumerateMember 枚举目录的成员。
CryptCATGetAttrInfo 检索有关目录成员的属性的信息。
CryptCATGetMemberInfo 从目录的 PKCS #7 检索成员信息。 除了检索指定引用标记的成员信息外,此函数还会打开成员上下文。
CryptCATOpen 打开目录,并将上下文句柄返回到打开的目录。
IsCatalogFile 检索一个布尔值,该值指示指定的文件是否为目录文件。

 

WinTrust 函数

以下函数用于执行各种信任操作。

函数 说明
WintrustAddActionID 将信任提供程序操作添加到用户的系统中。
WintrustGetRegPolicyFlags 检索策略提供程序的策略标志。
WintrustAddDefaultForUsage 指定提供程序的默认使用标识符和回调信息
WintrustGetDefaultForUsage 检索默认使用标识符和回调信息。
WintrustLoadFunctionPointers 加载指定操作 GUID 的函数入口点。
WintrustRemoveActionID 删除 WintrustAddActionID 函数添加的操作。
WintrustSetDefaultIncludePEPageHashes 设置默认设置,用于确定是否在创建使用者接口包 (SIP) 可移植可执行文件的间接数据时包含页面哈希。
WintrustSetRegPolicyFlags 设置策略提供程序的策略标志。
WinVerifyTrust 对指定对象执行信任验证操作。
WinVerifyTrustEx 对指定对象执行信任验证操作,并将指针指向WINTRUST_DATA结构。
WTHelperCertCheckValidSignature 检查签名是否有效。
WTHelperCertFindIssuerCertificate 从与指定使用者证书匹配的指定证书存储中查找颁发者证书。
WTHelperCertIsSelfSigned 检查证书是否自签名。
WTHelperGetFileHash 验证已签名文件的签名,并获取文件的哈希值和算法标识符。
WTHelperGetProvCertFromChain 从证书链中检索信任提供程序证书。
WTHelperGetProvPrivateDataFromChain 使用提供程序 ID 从链接收 CRYPT_PROVIDER_PRIVDATA 结构。
WTHelperGetProvSignerFromChain 从链中按索引检索签名者或计数器符号。
WTHelperProvDataFromStateData 从指定的句柄检索信任提供程序信息。

 

对象定位器函数

以下回调函数可由安全通道 (Schannel) 安全包调用的自定义提供程序来实现,以检索证书。

函数 说明
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH 指定对象已更改。
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET 检索对象。
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE 释放提供程序。
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_PASSWORD 释放用于加密 PFX 字节数组的密码。
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE 释放提供程序返回的对象。
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_IDENTIFIER 释放对象标识符的内存。
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE 初始化提供程序。