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" などです。 2 文字のプレフィックスが存在しない場合は、代わりに OID を 指定できます。

[in] Usage

生成される証明書の目的を説明する オブジェクト識別子 (OID)。 たとえば、個人または商用 Authenticode 証明書、クライアント認証などです。 複数の OID をコンマで区切って指定することもできます。

OID は PKCS #10 要求に渡されます。 一般的な拡張性と理解しやすいように、コントロールは特定の目的の OID を理解しようとしません。 そのため、クライアント認証 OID を指定した場合でも、生成されたキーは 、Exchange キーではなく署名キーになります。

[in] pPKCS10

返された base64 でエンコードされた PKCS10 証明書要求。

戻り値

C++

戻り値は HRESULT です。 値 S_OK は成功を示します。 この関数が正常に完了すると、 pPKCS10 には base64 でエンコードされた PKCS #10 要求 ( BSTR 形式) が含まれます。 この形式は、処理のために Web サーバーに直接ポストできるような形式です。

VB

返された base64 でエンコードされた PKCS10 証明書要求。

注釈

既定では、Microsoft Base Cryptographic Provider が使用されます。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