加密服务提供程序上下文
使用任何加密 API 的应用程序调用的第一个 CryptoAPI 函数是 CryptAcquireContext 函数。 此函数返回特定 CSP 的句柄,其中包括 CSP 中特定 密钥容器 的规范。 此密钥容器是专门请求的密钥容器,或者是当前登录用户的默认密钥容器。
CryptAcquireContext 还可以创建新的密钥容器。 有关详细信息,请参阅 示例 C 程序:创建密钥容器和生成密钥 和 示例 C 程序:使用 CryptAcquireContext。
(CSP) 的加密服务提供程序 具有名称和类型。 例如,操作系统当前附带的其中一个 CSP 的名称是 Microsoft 基础加密提供程序。 它是 PROV_RSA_FULL 类型提供程序。 每个提供程序的名称都是唯一的;提供程序类型不是。
当应用程序调用 CryptAcquireContext 以获取 CSP 句柄时,它会指定提供程序类型和提供程序名称(可选)。 如果同时指定了类型和名称,则函数会使用匹配的提供程序类型和提供程序名称加载 CSP。 函数返回 CSP 的句柄,该句柄提供对 CSP 和 CSP 中 密钥容器 的访问权限。
当应用程序调用 CryptAcquireContext 并指定提供程序类型但没有提供程序名称时,函数会查找命名提供程序,首先检查与登录用户关联的默认命名提供程序的列表,如果失败,则从与计算机关联的默认命名提供程序列表中查找。 确定提供程序名称后, CryptAcquireContext 函数将搜索该提供程序的 CSP,加载它并返回其句柄。
使用完 CSP 句柄后,通过调用 CryptReleaseContext 函数将其释放。