CertCreateSelfSignCertificate 関数 (wincrypt.h)
CertCreateSelfSignCertificate 関数は自己署名証明書をビルドし、証明書を表すCERT_CONTEXT構造体へのポインターを返します。
構文
PCCERT_CONTEXT CertCreateSelfSignCertificate(
[in, optional] HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
[in] PCERT_NAME_BLOB pSubjectIssuerBlob,
[in] DWORD dwFlags,
[in, optional] PCRYPT_KEY_PROV_INFO pKeyProvInfo,
[in, optional] PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
[in, optional] PSYSTEMTIME pStartTime,
[in, optional] PSYSTEMTIME pEndTime,
[optional] PCERT_EXTENSIONS pExtensions
);
パラメーター
[in, optional] hCryptProvOrNCryptKey
作成された証明書の署名に使用される 暗号化プロバイダー のハンドル。 NULL の場合、pKeyProvInfo パラメーターからの情報を使用して、必要なハンドルが取得されます。 pKeyProvInfo も NULL の場合、既定のプロバイダーの種類、プロバイダーの種類PROV_RSA_FULL、既定のキー仕様、AT_SIGNATURE、および一意のコンテナー名を持つ新しく作成されたキー コンテナーが使用されます。
このハンドルは、CryptAcquireContext 関数を使用して作成された HCRYPTPROV ハンドル、または NCryptOpenKey 関数を使用して作成されたNCRYPT_KEY_HANDLE ハンドルである必要があります。 新しいアプリケーションは、常に CNG 暗号化サービス プロバイダー (CSP) のNCRYPT_KEY_HANDLE ハンドルを渡す必要があります。
[in] pSubjectIssuerBlob
証明書のサブジェクトの識別名 (DN) を含む BLOB へのポインター。 このパラメーターを NULL にすることはできません。 最小限では、空の DN へのポインターを指定する必要があります。 この BLOB は通常、 CertStrToName 関数を使用して作成されます。 また、 CryptEncodeObject 関数を使用し、X509_NAMEまたは X509_UNICODE_NAME StructType を指定して作成することもできます。
[in] dwFlags
この関数の既定の動作をオーバーライドするフラグのセット。 これは、0 または次の値の 1 つ以上の組み合わせにすることができます。
値 | 説明 |
---|---|
|
既定では、返されるPCCERT_CONTEXTは、CERT_KEY_PROV_INFO_PROP_IDを設定して 秘密キー を参照します。 CERT_KEY_PROV_INFO_PROP_IDを設定して、返されたPCCERT_CONTEXTが秘密キーを参照しないようにするには、CERT_CREATE_SELFSIGN_NO_KEY_INFOを指定します。 |
|
既定では、作成される証明書は署名されます。 作成する証明書がダミー プレースホルダーのみの場合は、証明書に署名する必要がない可能性があります。 CERT_CREATE_SELFSIGN_NO_SIGNが指定されている場合、証明書の署名はスキップされます。 |
[in, optional] pKeyProvInfo
CRYPT_KEY_PROV_INFO構造体へのポインター。 証明書が作成される前に、CSP にキー プロバイダー、キー プロバイダーの種類、および キー コンテナー 名のクエリが実行されます。 クエリされた CSP でこれらのクエリがサポートされていない場合、関数は失敗します。 既定のプロバイダーでこれらのクエリがサポートされていない場合は、 pKeyProvInfo 値を指定する必要があります。 RSA BASE では、これらのクエリがサポートされています。
pKeyProvInfo パラメーターが NULL でない場合、対応する値は、生成された証明書のCERT_KEY_PROV_INFO_PROP_ID値に設定されます。 指定された構造体のすべてのパラメーターが正しく指定されていることを確認する必要があります。
[in, optional] pSignatureAlgorithm
CRYPT_ALGORITHM_IDENTIFIER構造体へのポインター。 NULL の場合、既定のアルゴリズム (SHA1RSA) が使用されます。
[in, optional] pStartTime
SYSTEMTIME 構造体へのポインター。 NULL の場合、システムの現在の時刻が既定で使用されます。
[in, optional] pEndTime
SYSTEMTIME 構造体へのポインター。 NULL の場合、pStartTime 値と 1 年が既定で使用されます。
[optional] pExtensions
CERT_EXTENSION構造体のCERT_EXTENSIONS配列へのポインター。 既定では、配列は空です。 必要に応じて、代替サブジェクト名をこれらの拡張機能の 1 つとして指定できます。
戻り値
関数が成功すると、作成された証明書を指す PCCERT_CONTEXT 変数が返されます。 関数が失敗した場合は、NULL が返されます。 拡張エラー情報については、 GetLastError を呼び出します。
解説
pEndTime は有効な日付である必要があり、ユーザーが指定しない場合は自動的に生成されるため、この API が閏の日に呼び出されたときに、補正するアプリ ロジックを伴わずに予期しないエラーが発生する可能性があります。 詳細については、「 閏年の準備」を参照してください。
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |