CryptSetProvider

【勇芳软件工作室】汉化HomePreviousNext

[New - Windows NT]

[New - Windows 95, OEM Service Release 2]

CryptSetProvider功能用于指定当前用户默认的CSP。

调用此函数后,此用户随后发出的任何调用CryptAcquireContext指定【dwProvType】提供程序类型,但不提供程序名称,将导致【pszProvName】提供程序被使用。

注意典型应用程序不会使用此函数。它仅供行政应用程序使用。

BOOL CRYPTFUNC CryptSetProvider(

LPCTSTR 【pszProvName】, 
DWORD 【dwProvType】 
); 

参数

【pszProvName】

[in]新的默认CSP的名称。这个CSP应该已经安装在电脑上了。

【dwProvType】

[in] 【pszProvName】参数指定的CSP的提供者类型。

备注

调用CryptAcquireContext函数时,表现良好的应用程序通常不指定CSP名称。这给予用户一定的自由度,因为他们可以选择具有适当级别的安全性的CSP。

这意味着,对CryptSetProvider的调用通常将决定从该点运行的所有应用程序使用的给定类型的CSP。在这种情况下,CryptSetProvider功能不应在未经用户许可的情况下被调用。

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要检索扩展错误信息,请使用GetLastError功能。

下表列出了GetLastError函数最常返回的错误代码。

错误描述
ERROR_INVALID_HANDLE其中一个参数指定一个无效句柄。
ERROR_INVALID_PARAMETER其中一个参数包含无效值。这通常是一个非法的指针。
ERROR_NOT_ENOUGH_MEMORY操作过程中操作系统内存不足。
RegCreateKeyEx函数返回的错误代码。参见RegCreateKeyEx.
错误代码从RegSetValueEx函数返回。RegSetValueEx.

HCRYPTPROV hProv = 0;

//指定默认的PROV_RSA_SIG提供程序。请注意,这是假定的

//一个CSP类型为PROV_RSA_SIG并命名为“Joe's Provider”

//已经安装。

if(!CryptSetProvider(TEXT(“Joe's Provider”),PROV_RSA_SIG)){

printf("Error %x during CryptSetProvider!\n", GetLastError());

return;

}

//获取我们刚刚默认的提供者的句柄。

if(!CryptAcquireContext(& hProv,NULL,NULL,PROV_RSA_SIG,0)){

printf("Error %x during CryptAcquireContext!\n", GetLastError());

return;

}

...

//发布提供者句柄。

if(!CryptReleaseContext(hProv,0)){

printf("Error %x during CryptReleaseContext!\n", GetLastError());

return;

}

也可以看看

CryptAcquireContext