加密函数

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

CryptXML 函数

加密 XML 函数提供一个 API,用于使用 XML 格式化数据创建和表示数字签名。 有关 XML 格式化签名的信息,请参阅 https://go.microsoft.com/fwlink/p/?linkid=139649处的 XML-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 返回提供的句柄指定的 引用 元素。
CryptXmlGetSignature 返回 XML Signature 元素。
CryptXmlGetStatus 返回一个 CRYPT_XML_STATUS 结构,该结构包含有关提供句柄指定的对象的状态信息。
CryptXmlGetTransforms 返回有关默认转换链引擎的信息。
CryptXmlImportPublicKey 导入提供的句柄指定的公钥。
CryptXmlOpenToEncode 打开 XML 数字签名以编码并返回打开的 Signature 元素的句柄。 句柄使用单个 CRYPT_XML_SIGNATURE 结构封装文档上下文,并在调用 cryptXmlClose函数之前保持打开状态。
CryptXmlOpenToDecode 打开 XML 数字签名以解码并返回封装 CRYPT_XML_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 时间戳指定主题,并选择性地返回指向 SIGNER_CONTEXT 结构的指针,该结构包含指向 BLOB的指针。 此函数支持 Authenticode 时间戳。 若要执行 X.509 公钥基础结构(RFC 3161)时间戳,请使用 SignerTimeStampEx2 函数。
SignerTimeStampEx2 时间戳指定主题,并选择性地返回指向 SIGNER_CONTEXT 结构的指针,该结构包含指向 BLOB的指针。 此函数可用于执行 X.509 公钥基础结构、RFC 3161 兼容的时间戳。
SignerTimeStampEx3 时间戳指定主题,并支持在多个签名上设置时间戳。

 

基本加密函数

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

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

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

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

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

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

服务提供程序函数

应用程序使用以下服务函数连接和断开 加密服务提供商(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)密钥。

 

密钥生成和 Exchange 函数

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

功能 描述
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)和 证书信任列表(CCL)。 这些函数分为以下组:

  • 证书存储函数
  • 证书和证书存储维护函数
  • 证书函数
  • 证书吊销列表函数
  • 证书信任列表函数
  • 扩展属性函数
  • 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 显示 证书 对话框。

 

证书函数

大多数 证书 函数具有相关功能来处理 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 在远程计算机上安装证书。

 

证书吊销列表函数

这些函数管理 证书吊销列表(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 及其属性。

 

证书信任列表函数

这些函数管理 证书信任列表(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 及其属性。

 

扩展属性函数

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

功能 描述
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

 

证书验证函数

证书使用 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 根据 SignerInfo 结构(由 PKCS #7 定义)验证 反符号
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)转换为 抽象语法表示法一(ASN.1)对象标识符 (OID) 字符串。
CertGetNameString 从证书获取使用者或颁发者名称,并将其转换为以 null 结尾的字符串。
CertNameToStr 将证书名称 BLOB 转换为零终止字符串。
CertOIDToAlgId 将 ASN.1 对象标识符字符串转换为 CSP 算法标识符。
CertRDNValueToStr 将 Name 值转换为以 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获取密钥标识符。 密钥标识符允许使用该 密钥对 加密或解密消息,而无需使用证书。

密钥标识符与 CRLCCL相关联。

密钥标识符可以具有与证书上下文相同的属性。 有关详细信息,请参阅 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,然后通过调用 getProcAddress来确定函数的地址,从而首先将 Certadm.dll 库加载到内存中。 调用完证书服务备份和还原函数后,请调用 FreeLibrary,以从内存中释放 Certadm.dll 资源。

注意

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

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

 

注意

如果以前在用于调用证书服务备份和还原 API 的同一线程中调用 CoInitializeEx,则必须将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 初始化提供程序。