加密功能

加密函数根据用法进行分类,如下所示:

CryptXML 函数

加密 XML 函数提供了一个 API,用于使用 XML 格式的数据创建和表示数字签名。 有关 XML 格式化签名的信息,请参阅 中的 https://go.microsoft.com/fwlink/p/?linkid=139649XML-Signature 语法和处理规范。

函数 说明
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 签名 元素。
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 时间戳指定主题。 此函数支持验证码时间戳。 若要执行 X.509 公钥基础结构 (RFC 3161) 时间戳,请使用 SignerTimeStampEx2 函数。
SignerTimeStampEx 时间戳指定主题,并选择性地返回指向包含指向 BLOB 指针的SIGNER_CONTEXT结构的指针。 此函数支持验证码时间戳。 若要执行 X.509 公钥基础结构 (RFC 3161) 时间戳,请使用 SignerTimeStampEx2 函数。
SignerTimeStampEx2 时间戳指定主题,并选择性地返回指向包含指向 BLOB 指针的SIGNER_CONTEXT结构的指针。 此函数可用于执行 X.509 公钥基础结构、符合 RFC 3161 的时间戳。
SignerTimeStampEx3 时间戳指定主题,并支持在多个签名上设置时间戳。

 

基本加密函数

基本加密函数提供了开发加密应用程序的最灵活方法。 与 加密服务提供程序 (CSP) 的所有通信都通过这些功能进行。

CSP 是一个独立的模块,用于执行所有加密操作。 使用加密函数的每个应用程序至少需要一个 CSP。 单个应用程序偶尔可以使用多个 CSP。

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

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

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

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

服务提供程序函数

应用程序使用以下服务函数 (CSP) 连接和断开连接 加密服务提供程序

函数 说明
CryptAcquireContext 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
获取特定 CSP 中当前用户的 密钥容器 的句柄。
CryptContextAddRef 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
递增 HCRYPTPROV 句柄上的引用计数
CryptEnumProviders 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
枚举计算机上的提供程序。
CryptEnumProviderTypes 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
枚举计算机上支持的提供程序类型。
CryptGetDefaultProvider 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
确定指定提供程序类型的当前用户或计算机的默认 CSP。
CryptGetProvParam 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
检索控制 CSP 操作的参数。
CryptInstallDefaultContext 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
安装以前获取的要用作默认上下文的 HCRYPTPROV 上下文。
CryptReleaseContext 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
释放 由 CryptAcquireContext 函数获取的句柄。
CryptSetProviderCryptSetProviderEx 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
指定特定 CSP 类型的用户默认 CSP。
CryptSetProvParam 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
指定 CSP 的属性。
CryptUninstallDefaultContext 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
删除以前由 CryptInstallDefaultContext 安装的默认上下文。
FreeCryptProvFromCertEx 将句柄释放到 加密服务提供程序 (CSP) 或加密 API:下一代 (CNG) 密钥。

 

密钥生成和交换函数

密钥生成和交换功能与其他用户 交换密钥 ,以及创建、配置和销毁 加密密钥

函数 说明
CryptDeriveKey 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
创建从密码派生的密钥。
CryptDestroyKey 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
销毁密钥。
CryptDuplicateKey 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
创建密钥的精确副本,包括密钥 的状态
CryptExportKey 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
将密钥从 CSP 传输到应用程序内存空间中的 密钥 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 传输到 CSP。
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 函数显示的数字签名向导中显示的证书。

 

证书和证书存储函数

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

  • 证书存储函数
  • 证书和证书存储维护函数
  • 证书函数
  • 证书吊销列表函数
  • 证书信任列表函数
  • 扩展属性函数
  • MakeCert 函数

证书存储函数

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

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

 

证书和证书存储维护函数

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

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

 

证书函数

大多数 证书 函数都有用于处理 CRLCTL 的相关函数。 有关相关 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_EXT 或 szOID_BIOMETRIC_EXT证书扩展 中指定的徽标或生物识别信息执行 URL 检索。
CertSelectCertificate 显示一个对话框,允许用户从一组与给定条件匹配的证书中选择证书。
CertSelectCertificateChains 根据指定的选择条件检索证书链。
CertSelectionGetSerializedBlob 用于从CERT_SELECTUI_INPUT结构检索序列化证书 BLOB 帮助程序函数。
CertSerializeCertificateStoreElement 序列化证书上下文的编码证书及其属性的编码表示形式。
CertVerifySubjectCertificateContext 使用颁发者对使用者证书执行启用的验证检查。
CryptUIDlgCertMgr 显示允许用户管理证书的对话框。
CryptUIDlgSelectCertificate 显示允许用户选择证书的对话框。
CryptUIDlgSelectCertificateFromStore 显示一个对话框,该对话框允许从指定的存储中选择证书。
CryptUIDlgViewCertificate 显示显示指定证书的对话框。
CryptUIDlgViewContext 显示证书、CRL 或 CTL。
CryptUIDlgViewSignerInfo 显示一个对话框,其中包含已签名消息的签名者信息。
GetFriendlyNameOfCert 检索证书的显示名称。
RKeyCloseKeyService 关闭密钥服务句柄。
RKeyOpenKeyService 打开远程计算机上的密钥服务句柄。
RKeyPFXInstall 在远程计算机上安装证书。

 

证书吊销列表函数

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

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

 

证书信任列表函数

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

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

 

扩展属性函数

以下函数使用证书、CRL 和 CTL 的扩展属性。

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

 

MakeCert 函数

以下函数支持 MakeCert 工具。

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

 

证书验证函数

使用 CTL 或证书链验证证书。 函数适用于以下两项:

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

使用 CTL 的验证函数

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

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

函数 说明
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 使用函数的参数中指定的 CSP 私钥对消息进行签名。
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 的不同之处在于,用户可以指定公钥算法,从而替代 CSP 提供的默认值。
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 格式的 私钥 导入 到加密服务提供程序 (CSP) 。
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 删除指定的 Authenticode 签名。
CryptSIPRetrieveSubjectGuid 根据指定文件中的标头信息检索 GUID。
CryptSIPRetrieveSubjectGuidForCatalogFile 检索与指定文件关联的主题 GUID。
CryptSIPVerifyIndirectData 根据提供的主题验证间接哈希数据。
CryptUpdateProtectedState 在用户 的安全标识符 (SID) 更改后迁移当前用户的主密钥。
CryptVerifyCertificateSignature 使用公钥信息验证使用者证书或 CRL 的签名。
CryptVerifyCertificateSignatureEx CryptVerifyCertificateSignature 的扩展版本。
GetEncSChannel 将加密的 Schannel DLL 内容存储在内存中。
pCryptSIPGetCaps 由 SIP 实现以报告功能。

 

数据转换函数

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

函数 说明
CertAlgIdToOID 将 CryptoAPI 算法标识符 (ALG_ID) 转换为 抽象语法表示法 One (ASN.1) 对象标识符 (OID) 字符串。
CertGetNameString 从证书获取使用者或颁发者名称,并将其转换为以 null 结尾的字符串。
CertNameToStr 将证书名称 BLOB 转换为以零结尾的字符串。
CertOIDToAlgId 将 ASN.1 对象标识符字符串转换为 CSP 算法标识符。
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获取密钥标识符。 密钥标识符允许使用该 密钥对 来加密或解密消息,而无需使用证书。

密钥标识符不与 CRLCTL 相关联。

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

函数 说明
CryptCreateKeyIdentifierFromCSP 重要提示:
已弃用此 API。 新的和现有的软件应开始使用 加密下一代 API。 Microsoft 可能会在将来的版本中删除此 API。
从 CSP 的 公钥 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 函数

以下函数支持个人信息交换 (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 提供的备份和还原功能不会备份或还原证书服务的 私钥。 有关备份证书服务私钥的信息,请参阅 备份和还原证书服务私钥

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

 

备注

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

 

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

Certadm.dll 导出以下 API。

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

 

回调函数

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

回调函数 使用
CertChainFindByIssuerCallback 应用程序定义的回调函数,允许应用程序筛选可能添加到证书链的证书。
CertDllOpenStoreProv 定义存储提供程序 open 函数。
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 用于导入和 解密 密钥传输接收方、加密的内容 加密密钥 (CEK) 的 CNG OID 可安装函数。
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 初始化提供程序。