ICEnroll::createFilePKCS10 方法 (xenroll.h)

[此方法在 Windows Server 2008 和 Windows Vista 中不再可用。]

createFilePKCS10 方法创建 base64 编码的 PKCS #10 证书请求并将其保存在文件中。 此方法首先在 ICEnroll 接口中定义。

此方法不同于 createPKCS10 方法,仅在将 base64 编码的 PKCS #10 证书请求 (以 BSTR 形式保存) 到 wszPKCS10FileName 参数指定的文件中。

语法

HRESULT createFilePKCS10(
  [in] BSTR DNName,
  [in] BSTR Usage,
  [in] BSTR wszPKCS10FileName
);

参数

[in] DNName

发出请求的实体的可分辨名称 (DN) 。 DNName 必须遵循 X.500 命名约定。 例如“CN=User,O=Microsoft”。 如果不存在两个字母的前缀,则可能会改为提供 OID) (对象标识符

[in] Usage

描述所生成证书的用途的 OID ,例如,个人或商业验证码证书或客户端身份验证。 还可以指定多个以逗号分隔的 OID。

OID 传递到 PKCS #10 请求。 控件不检查 OID。

[in] wszPKCS10FileName

保存采用 BSTR 格式的 base64 编码的 PKCS #10 () 的文件的名称。 此文件的内容可能会提交给 证书颁发机构 进行处理。

返回值

VB

返回值为 HRESULT。 值为 S_OK 表示成功。

如果方法失败,则返回值为 指示错误的 HRESULT 。 有关常见错误代码的列表,请参阅 常见 HRESULT 值

注解

默认情况下,使用 Microsoft 基本加密提供程序,并创建唯一签名密钥。

从脚本调用此方法时, 方法将显示一个用户界面,询问用户是否允许创建证书请求,以及用户是否允许对文件系统执行写入操作。

示例

BSTR bstrDN = NULL;
BSTR bstrOID = NULL;
BSTR bstrFileName = NULL;
ICEnroll4 * pEnroll = NULL;
HRESULT hr;

hr = CoInitializeEx( NULL, COINIT_APARTMENTTHREADED );
if (FAILED(hr))
{
    printf("Failed CoInitializeEx - %x\n", hr);
    goto error;
}

hr = CoCreateInstance( __uuidof(CEnroll),
                       NULL,
                       CLSCTX_INPROC_SERVER,
                       __uuidof(ICEnroll4),
                       (void **)&pEnroll);
if (FAILED(hr))
{
    printf("Failed CoCreateInstance - pEnroll [%x]\n", hr);
    goto error;
}

// Generate the DN for the cert request.
bstrDN = SysAllocString( TEXT("CN=Your Name")   // common name
                         TEXT(",OU=Your Unit")  // org unit
                         TEXT(",O=Your Org")    // organization
                         TEXT(",L=Your City")   // locality
                         TEXT(",S=Your State")  // state
                         TEXT(",C=Your Country") );  // country/region
if (NULL == bstrDN)
{
    printf("Memory allocation failed for bstrDN.\n");
    goto error;
}

// Generate the OID. For example, "1.3.6.1.4.1.311.2.1.21"
bstrOID = SysAllocString(TEXT("<OIDHERE>"));
if (NULL == bstrOID)
{
    printf("Memory allocation failed for bstrOID.\n");
    goto error;
}

// Specify the file name, for example, "myPKCS10.req"
bstrFileName = SysAllocString(TEXT("<FILENAMEHERE>"));
if (NULL == bstrFileName)
{
    printf("Memory allocation failed for bstrFileName.\n");
    goto error;
}

// Create the PKCS10 (stored in a file).
hr = pEnroll->createFilePKCS10( bstrDN, bstrOID, bstrFileName );
if (FAILED(hr))
{
   printf("Failed createFilePKCS10 - %x\n", hr);
   goto error;
}
else
    printf("Successfully created file containing PKCS10\n");

error:
// Clean up resources and so on.

if ( bstrFileName )
    SysFreeString( bstrFileName );

if ( bstrDN )
    SysFreeString( bstrDN );

if ( bstrOID )
    SysFreeString( bstrOID );

if ( pEnroll )
       pEnroll->Release();

CoUninitialize();

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 xenroll.h
Library Uuid.lib
DLL Xenroll.dll