ICEnroll::createPKCS10 方法 (xenroll.h)

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

createPKCS10 方法创建 base64 编码的 PKCS #10 证书请求。 此方法首先在 ICEnroll 接口中定义。

此 base64 编码的 PKCS #10 证书请求 (BSTR 格式) 可以提交给 证书颁发机构 ,以请求向包含其信息的个人或实体颁发证书。

语法

HRESULT createPKCS10(
  [in] BSTR DNName,
  [in] BSTR Usage,
  [in] BSTR *pPKCS10
);

参数

[in] DNName

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

[in] Usage

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

OID 将传递到 PKCS #10 请求。 为了获得一般扩展性和易于理解,控件不会尝试了解特定用途的 OID。 因此,如果指定客户端身份验证 OID,生成的密钥仍将是签名密钥,而不是 交换密钥

[in] pPKCS10

返回的 base64 编码 PKCS10 证书请求。

返回值

C++

返回值为 HRESULT值为 S_OK 表示成功。 成功完成此函数后, pPKCS10 将包含 BSTR 格式) 的 base64 编码 PKCS #10 请求 (。 格式可以将其直接发布到 Web 服务器进行处理。

VB

返回的 base64 编码 PKCS10 证书请求。

注解

默认情况下,使用 Microsoft 基本加密提供程序,PROV_RSA_FULL 为提供程序类型,创建签名密钥,并创建唯一的新密钥集。

从脚本调用此方法时,方法将显示一个用户界面,询问用户是否允许创建证书请求。

示例

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

// initialize COM
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;
}

// create the PKCS10
hr = pEnroll->createPKCS10( bstrDN, bstrOID, &bstrReq );
if (FAILED(hr))
{
    printf("Failed createPKCS10 - %x\n", hr);
    goto error;
}
else
    // do something with the PKCS10 (bstrReq);

error:

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

CoUninitialize();

要求

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