CryptDecodeObject 関数 (wincrypt.h)
CryptDecodeObject 関数は、lpszStructType パラメーターによって示される型の構造体をデコードします。 パフォーマンスが大幅に向上した同じ関数を実行する API として 、CryptDecodeObjectEx を使用することをお勧めします。
構文
BOOL CryptDecodeObject(
[in] DWORD dwCertEncodingType,
[in] LPCSTR lpszStructType,
[in] const BYTE *pbEncoded,
[in] DWORD cbEncoded,
[in] DWORD dwFlags,
[out] void *pvStructInfo,
[in, out] DWORD *pcbStructInfo
);
パラメーター
[in] dwCertEncodingType
使用されるエンコードの種類。 次の例に示すように、証明書と メッセージエンコードの両方の種類 をビットごとの OR 操作と組み合わせて指定することは、常に許容されます。
X509_ASN_ENCODING |PKCS_7_ASN_ENCODING
現在定義されているエンコードの種類は次のとおりです。
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] lpszStructType
構造体の種類を定義する OID へのポインター。 lpszStructType パラメーターの上位ワードが 0 の場合、下位ワードは、指定された構造体の型の整数識別子を指定します。 それ以外の場合、このパラメーターは null で終わる文字列への長いポインターです。
オブジェクト識別子の文字列、定義済みの定数、および対応する構造体の詳細については、「 CryptEncodeObject および CryptDecodeObject の定数」を参照してください。
[in] pbEncoded
デコードするエンコードされた構造体へのポインター。
[in] cbEncoded
pbEncoded が指すバイト数。
[in] dwFlags
次のフラグが定義されています。 これらは、ビットごとの OR 演算と組み合わせることができます。
[out] pvStructInfo
デコードされた構造体を受け取るバッファーへのポインター。 指定されたバッファーがデコードされた構造体を受け取るのに十分な大きさでない場合、関数はERROR_MORE_DATA コードを設定し、必要なバッファー サイズをバイト単位で pcbStructInfo が指す変数に格納します。
このパラメーターは、メモリ割り当てのためにこの情報のサイズを取得するために NULL にすることができます 。 詳細については、「不明な 長さのデータの取得」を参照してください。
[in, out] pcbStructInfo
pvStructInfo パラメーターによって指されるバッファーのサイズ (バイト単位) を指定する DWORD 値へのポインター。 関数が戻るときに、この DWORD 値には 、pvStructInfo にコピーされたデコードされたデータのサイズが含まれます。 pcbStructInfo が指す変数に含まれるサイズは、デコードされた構造体に他の構造体へのポインターを含めることができるので、デコードされた構造体よりも大きいサイズを示すことができます。 このサイズは、デコードされた構造体と、指す他の構造体で必要なサイズの合計です。
戻り値
関数が成功した場合、戻り値は 0 以外 (TRUE) になります。
関数が失敗した場合、戻り値は 0 (FALSE) になります。 拡張エラー情報については、 GetLastError を呼び出します。 次の表に、考えられるエラー コードをいくつか示します。
リターン コード | 説明 |
---|---|
|
デコード中にエラーが発生しました。 |
|
指定した dwCertEncodingType と lpszStructType に対してデコード関数が見つかりませんでした |
|
pvStructInfo パラメーターで指定されたバッファーが、返されたデータを保持するのに十分な大きさでない場合、関数はERROR_MORE_DATA コードを設定し、必要なバッファー サイズをバイト単位で pcbStructInfo が指す変数に格納します。 |
関数が失敗した場合、GetLastError は抽象構文表記 1 (ASN.1) エンコード/デコード エラーを返す可能性があります。 これらのエラーの詳細については、「 ASN.1 エンコード/デコードの戻り値」を参照してください。
解説
優先する CryptEncodeObjectEx 関数を使用して暗号化オブジェクトをエンコードする場合、終端の NULL 文字が含まれます。 優先する CryptDecodeObjectEx 関数を使用してデコードする場合、終端の NULL 文字は保持されません。
例
この関数を使用する例については、「 サンプル C プログラム: ASN.1 エンコードとデコード」を参照してください。
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |