ICEnroll4::createRequest 方法 (xenroll.h)

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

createRequest 方法通过 CMS 创建 PKCS #10、PKCS #7 或完整的证书管理 (CMC) 格式证书请求,并将其存储在字符串中。 此方法首先在 ICEnroll4 接口中定义。

语法

HRESULT createRequest(
  [in]  LONG Flags,
  [in]  BSTR strDNName,
  [in]  BSTR Usage,
  [out] BSTR *pstrRequest
);

参数

[in] Flags

一个 值,该值指定要创建的证书请求的类型。 这可以是以下值之一。

含义
XECR_CMC
完整 CMC
XECR_PKCS10_V1_5
PKCS 10
XECR_PKCS10_V2_0
PKCS 10 版本 2
XECR_PKCS7
PKCS 7

[in] strDNName

此参数可以为 NULL;否则,此参数指定发出请求的实体的可分辨名称 (DN) 。 DN 名称必须遵循 X.500 命名约定,例如“CN=User,O=Microsoft”。 如果不存在双字母前缀,可以改为提供 OID。

[in] Usage

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

[out] pstrRequest

指向接收请求的 BSTR (BASE64_HEADER 格式) 的指针。 使用完 BSTR 后,通过调用 SysFreeString 函数释放它。

返回值

C++

如果该方法成功,该方法将返回S_OK。

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

VB

返回值是包含请求的 字符串 (BASE64_HEADER 格式) 。

注解

从脚本调用此方法时, 方法将显示一个用户界面,询问用户是否允许创建证书请求。 如果指定了 .pvk 或 .spc 文件,该方法将显示一个用户界面,询问用户是否允许对文件系统执行写入操作。

示例

BSTR bstrDN = NULL;
BSTR bstrReq = NULL;
ICEnroll4 * pEnroll4 = 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 **)&pEnroll4);
if (FAILED(hr))
{
    printf("Failed CoCreateInstance - pEnroll4 [%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

// create the CMC request
hr = pEnroll4->createRequest( XECR_CMC,
                              bstrDN,
                              NULL,
                              &bstrReq );
if (FAILED(hr))
{
        printf("Failed createRequest - pEnroll4 [%x]\n", hr);
        goto error;
}
else
    // do something with the CMC (bstrReq);

error:

//clean up resources, and so on
if ( bstrDN )
    SysFreeString( bstrDN );
if ( bstrReq )
    SysFreeString( bstrReq );
if ( pEnroll4 )
    pEnroll4->Release();

CoUninitialize();

要求

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