IX509SignatureInformation::GetSignatureAlgorithm メソッド (certenroll.h)
GetSignatureAlgorithm メソッドは、署名アルゴリズム オブジェクト識別子 (OID) を取得します。
構文
HRESULT GetSignatureAlgorithm(
[in] VARIANT_BOOL Pkcs7Signature,
[in] VARIANT_BOOL SignatureKey,
[out] IObjectId **ppValue
);
パラメーター
[in] Pkcs7Signature
PKCS #7 または CMC 証明書要求の署名にアルゴリズムを使用するかどうかを指定する VARIANT_BOOL 変数。
[in] SignatureKey
アルゴリズム OID が複数の目的に関連付けられている場合に、署名にのみ使用されるアルゴリズムを優先するかどうかを指定するVARIANT_BOOL変数。 たとえば、XCN_OID_RSA_RSA (1.2.840.113549.1.1.1) は、署名とキー交換の両方に使用できます。
[out] ppValue
アルゴリズム OID を表す IObjectId インターフェイスへのポインターを受け取る変数のアドレス。
戻り値
関数が成功した場合、関数は S_OKを返します。
関数が失敗した場合は、エラーを示す HRESULT 値を返します。 有効な値を次の表に示しますが、これ以外にもあります。 一般的なエラー コードの一覧については、「 共通 HRESULT 値」を参照してください。
リターン コード/値 | Description |
---|---|
|
ハッシュ アルゴリズム OID、または NullSigned プロパティが指定されていませんが、署名アルゴリズム OID が見つかりません。 |
|
結合された署名アルゴリズムが見つかりませんでした。 |
注釈
このメソッドは、入力パラメーターと一致するキャッシュされた署名アルゴリズムを検索します。 何も見つからない場合、メソッドは、次の一覧で示すように、入力パラメーターと、さまざまな IX509SignatureInformation プロパティに割り当てられた値を使用します。
-
Pkcs7Signature = true、 NullSigned = true
このケースは、null 署名された PKCS #7 証明書要求を表します。 メソッドは、XCN_OID_PKIX_NO_SIGNATURE (1.3.6.1.5.5.7.6.2) OID を返します。
-
Pkcs7Signature = true、 NullSigned = false
このケースでは、NULL 署名されていない PKCS #7 要求の個別署名アルゴリズム OID を取得します。 不連続署名では、 HashAlgorithm プロパティと PublicKeyAlgorithm プロパティを 設定する必要があります。 公開キー アルゴリズムがXCN_OID_X957_DSAされ、ハッシュ アルゴリズムがXCN_OID_OIWSEC_sha1されていない特殊なケースでは、取得される署名アルゴリズム OID はXCN_OID_X957_SHA1DSA (1.2.840.10040.4.3) です。
-
Pkcs7Signature = false、 NullSigned = false、 AlternateSignatureAlgorithm = true
このケースでは、PKCS #10 要求の個別署名アルゴリズム OID を取得し、 Parameters プロパティでハッシュ アルゴリズム OID をエンコードします。 HashAlgorithm プロパティと PublicKeyAlgorithm プロパティを設定する必要があります。
-
Pkcs7Signature = false、 NullSigned = false、 AlternateSignatureAlgorithm = false
このケースでは、PKCS #7 要求の個別の署名アルゴリズム OID を取得します。 HashAlgorithm プロパティと PublicKeyAlgorithm プロパティを設定する必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | certenroll.h |
[DLL] | CertEnroll.dll |