CryptEncodeObject 関数 (wincrypt.h)

CryptEncodeObject 関数は、lpszStructType パラメーターの値によって示される型の構造体をエンコードします。 パフォーマンスが大幅に向上した同じ関数を実行する API として 、CryptEncodeObjectEx を使用することをお勧めします。

構文

BOOL CryptEncodeObject(
  [in]      DWORD      dwCertEncodingType,
  [in]      LPCSTR     lpszStructType,
  [in]      const void *pvStructInfo,
  [out]     BYTE       *pbEncoded,
  [in, out] DWORD      *pcbEncoded
);

パラメーター

[in] dwCertEncodingType

使用されるエンコードの種類。 次の例に示すように、証明書と メッセージエンコードの両方の種類 をビットごとの OR 操作と組み合わせて指定することは、常に許容されます。

X509_ASN_ENCODING |PKCS_7_ASN_ENCODING

現在定義されているエンコードの種類は次のとおりです。

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING
メモ 証明書または メッセージ エンコードの種類 が必要です。 X509_ASN_ENCODINGが既定値です。 その型が示されている場合は、 が使用されます。 それ以外の場合は、PKCS7_ASN_ENCODING型が示されている場合は、それが使用されます。
 

[in] lpszStructType

構造体の種類を定義する OID へのポインター。 lpszStructType パラメーターの上位ワードが 0 の場合、下位ワードは、指定された構造体の型の整数識別子を指定します。 それ以外の場合、このパラメーターは null で終わる文字列への長いポインターです。

オブジェクト識別子の文字列、定義済みの定数、および対応する構造体の詳細については、「 CryptEncodeObject および CryptDecodeObject の定数」を参照してください。

[in] pvStructInfo

エンコードする構造体へのポインター。 構造体は 、lpszStructType で指定された型である必要があります。

[out] pbEncoded

エンコードされた構造体を受け取るバッファーへのポインター。 指定されたバッファーがデコードされた構造体を受け取るのに十分な大きさでない場合、関数はERROR_MORE_DATA コードを設定し、必要なバッファー サイズをバイト単位で pcbEncoded が指す変数に格納します。

このパラメーターは、メモリ割り当てのためにこの情報のサイズを取得するために NULL にすることができます 。 詳細については、「不明な 長さのデータの取得」を参照してください。

[in, out] pcbEncoded

pbEncoded パラメーターが指すバッファーのサイズ (バイト単位) を含む DWORD 変数へのポインター。 関数が戻るときに、 DWORD 値には、バッファーに格納されている割り当てられたエンコードされたバイト数が含まれます。

メモ バッファーで返されるデータを処理する場合、アプリケーションは返されるデータの実際のサイズを使用する必要があります。 実際のサイズは、入力時に指定されたバッファーのサイズよりも若干小さくすることができます。 (入力では、バッファー サイズは通常、可能な最大の出力データがバッファーに収まるように十分な大きさで指定されます)。出力時に、このパラメーターが指す変数は、バッファーにコピーされたデータの実際のサイズを反映するように更新されます。
 

戻り値

関数が成功した場合、戻り値は 0 以外 (TRUE) になります

関数が失敗した場合、戻り値は 0 (FALSE) になります。 拡張エラー情報については、 GetLastError を呼び出します。 次の表に、考えられるエラー コードをいくつか示します。

リターン コード 説明
CRYPT_E_BAD_ENCODE
エンコード中にエラーが発生しました。
ERROR_FILE_NOT_FOUND
指定した dwCertEncodingTypelpszStructType に対してエンコード関数が見つかりませんでした。
ERROR_MORE_DATA
pbEncoded パラメーターで指定されたバッファーが、返されたデータを保持するのに十分な大きさでない場合、関数はERROR_MORE_DATA コードを設定し、必要なバッファー サイズをバイト単位で pcbEncoded が指す変数に格納します。
 

関数が失敗した場合、GetLastError は抽象構文表記 1 (ASN.1) エンコード/デコード エラーを返す可能性があります。 これらのエラーの詳細については、「 ASN.1 エンコード/デコードの戻り値」を参照してください。

解説

優先する CryptEncodeObjectEx 関数を使用して暗号化オブジェクトをエンコードする場合、終端の NULL 文字が含まれます。 優先する CryptDecodeObjectEx 関数を使用してデコードする場合、終端の NULL 文字は保持されません。

この関数を使用する例については、「 サンプル C プログラム: 証明書要求の作成 」および 「例 C プログラム: ASN.1 エンコードとデコード」を参照してください。

要件

   
サポートされている最小のクライアント Windows XP [デスクトップ アプリ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー wincrypt.h
Library Crypt32.lib
[DLL] Crypt32.dll

関連項目

CryptDecodeObject

CryptEncodeObjectEx

オブジェクトエンコードおよびデコード関数