Share via


CryptFormatObject 関数 (wincrypt.h)

CryptFormatObject 関数は、エンコードされたデータを書式設定し、証明書のエンコードの種類に従って、割り当てられたバッファー内の Unicode 文字列を返します。

構文

BOOL CryptFormatObject(
  [in]      DWORD      dwCertEncodingType,
  [in]      DWORD      dwFormatType,
  [in]      DWORD      dwFormatStrType,
  [in]      void       *pFormatStruct,
  [in]      LPCSTR     lpszStructType,
  [in]      const BYTE *pbEncoded,
  [in]      DWORD      cbEncoded,
  [out]     void       *pbFormat,
  [in, out] DWORD      *pcbFormat
);

パラメーター

[in] dwCertEncodingType

証明書で使用されるエンコードの種類。 現在定義されている証明書エンコードの種類はX509_ASN_ENCODING。

[in] dwFormatType

型の値を書式設定します。 使用されていません。 0 に設定します。

[in] dwFormatStrType

構造体形式の型の値。 このパラメーターは 0 にすることも、ビットごとの OR 演算子を使用して次のフラグを 1 つ以上指定して組み合わせることもできます。

意味
0
データを 1 行で表示します。 各サブフィールドはコンマ (,) で連結されます。 詳細については、「解説」を参照してください。
CRYPT_FORMAT_STR_MULTI_LINE
0x0001
データを 1 行ではなく複数行で表示します (既定値)。 詳細については、「解説」を参照してください。
CRYPT_FORMAT_STR_NO_HEX
0x0010
16 進ダンプを無効にします。 詳細については、「解説」を参照してください。

[in] pFormatStruct

構造体の形式へのポインター。 使用されていません。 NULL に設定します。

[in] lpszStructType

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

次の表に、サポートされている OID と関連する OID 拡張機能を示します。

意味
SPC_FINANCIAL_CRITERIA_OBJID
1.3.6.1.4.1.311.2.1.27
SPC_SP_AGENCY_INFO_OBJID
1.3.6.1.4.1.311.2.1.10
szOID_AUTHORITY_INFO_ACCESS
1.3.6.1.5.5.7.1.1
szOID_AUTHORITY_KEY_IDENTIFIER2
2.5.29.35
szOID_BASIC_CONSTRAINTS2
2.5.29.19
szOID_CERT_POLICIES
2.5.29.32
szOID_CRL_DIST_POINTS
2.5.29.31
szOID_CRL_REASON_CODE
2.5.29.21
szOID_ENHANCED_KEY_USAGE
2.5.29.37
szOID_ISSUER_ALT_NAME2
2.5.29.18
szOID_KEY_ATTRIBUTES
2.5.29.2
szOID_KEY_USAGE
2.5.29.15
szOID_KEY_USAGE_RESTRICTION
2.5.29.4
szOID_NEXT_UPDATE_LOCATION
1.3.6.1.4.1.311.10.2
szOID_RSA_SMIMECapabilities
1.2.840.113549.1.9.15
szOID_SUBJECT_ALT_NAME2
2.5.29.17
szOID_SUBJECT_KEY_IDENTIFIER
2.5.29.14

[in] pbEncoded

書式設定するエンコードされたデータへのポインター。 lpszStructType が上記の OID の 1 つである場合、pbEncoded はエンコードされた拡張機能です。

[in] cbEncoded

pbEncoded 構造体のサイズ (バイト単位)。

[out] pbFormat

書式設定された文字列を受け取るバッファーへのポインター。 指定されたバッファーがデコードされた構造体を受け取るのに十分な大きさでない場合、関数は ERROR_MORE_DATAを設定し、必要なバッファー サイズをバイト単位で pcbFormat が指す変数に格納します。 このパラメーターは、メモリ割り当てのためにこの情報のサイズを設定するために NULL にすることができます 。 詳細については、「 不明な長さのデータの取得」を参照してください。

[in, out] pcbFormat

pbFormat パラメーターが指すバッファーのサイズをバイト単位で指定する変数へのポインター。 関数が戻るとき、 pcbFormat パラメーターが指す変数には、バッファーに格納されているバイト数が含まれます。 このパラメーターは、pbFormatNULL の場合にのみ NULL にすることができます

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

戻り値

関数が成功した場合、戻り値は TRUE になります。 成功しない場合、戻り値は FALSE です。 拡張エラー情報を取得するには、 GetLastError 関数を使用します。

注釈

この関数の既定の動作では、エンコードされたデータの 1 行の表示が返されます。つまり、各サブフィールドは 1 行にコンマ (,) で連結されます。 複数行でデータを表示する場合は、CRYPT_FORMAT_STR_MULTI_LINE フラグを設定します。 その後、各サブフィールドは別の行に表示されます。

lpszStructType パラメーターに対して書式設定ルーチンがインストールまたは登録されていない場合は、エンコードされたCRYPT_INTEGER_BLOBの 16 進数ダンプが返されます。 ユーザーは、CRYPT_FORMAT_STR_NO_HEX フラグを設定して、16 進ダンプを無効にすることができます。

要件

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

こちらもご覧ください

CRYPT_INTEGER_BLOB