CryptStringToBinaryA 関数 (wincrypt.h)

CryptStringToBinary 関数は、書式設定された文字列をバイト配列に変換します。

構文

BOOL CryptStringToBinaryA(
  [in]      LPCSTR pszString,
  [in]      DWORD  cchString,
  [in]      DWORD  dwFlags,
  [in]      BYTE   *pbBinary,
  [in, out] DWORD  *pcbBinary,
  [out]     DWORD  *pdwSkip,
  [out]     DWORD  *pdwFlags
);

パラメーター

[in] pszString

変換する書式設定された文字列を含む文字列へのポインター。

[in] cchString

変換する書式設定された文字列の文字数 。終端の NULL 文字は含まれません。 このパラメーターが 0 の場合、 pszString は null で終わる文字列と見なされます。

[in] dwFlags

変換する文字列の形式を示します。 これには、次のいずれかの値を指定できます。

説明
CRYPT_STRING_BASE64HEADER
0x00000000
'-----BEGIN ...-----' と '-----END ...-----' の行間の Base64。 下記の注釈を参照してください。
CRYPT_STRING_BASE64
0x00000001
ヘッダーなしの Base64。
CRYPT_STRING_BINARY
0x00000002
純粋なバイナリ コピー。
CRYPT_STRING_BASE64REQUESTHEADER
0x00000003
'-----BEGIN ...-----' と '-----END ...-----' の行間の Base64。 下記の注釈を参照してください。
CRYPT_STRING_HEX
0x00000004
16 進数のみの形式。
CRYPT_STRING_HEXASCII
0x00000005
ASCII 文字表示を含む 16 進形式。
CRYPT_STRING_BASE64_ANY
0x00000006
次の順序で試行します。
CRYPT_STRING_BASE64HEADER
CRYPT_STRING_BASE64
CRYPT_STRING_ANY
0x00000007
次の順序で試行します。
CRYPT_STRING_BASE64HEADER
CRYPT_STRING_BASE64
CRYPT_STRING_BINARY
CRYPT_STRING_HEX_ANY
0x00000008
次の順序で試行します。
CRYPT_STRING_HEXADDR
CRYPT_STRING_HEXASCIIADDR
CRYPT_STRING_HEX
CRYPT_STRING_HEXRAW
CRYPT_STRING_HEXASCII
CRYPT_STRING_BASE64X509CRLHEADER
0x00000009
'-----BEGIN ...-----' と '-----END ...-----' の行間の Base64。 下記の注釈を参照してください。
CRYPT_STRING_HEXADDR
0x0000000a
アドレス表示付きの 16 進数。
CRYPT_STRING_HEXASCIIADDR
0x0000000b
ASCII 文字とアドレス表示を含む 16 進数。
CRYPT_STRING_HEXRAW
0x0000000c
生の 16 進文字列。

Windows Server 2003 および Windows XP: この値はサポートされていません。

CRYPT_STRING_STRICT
0x20000000
Base64 データにこのフラグを設定して、バイナリ データの末尾に空白のみが含まれており、最大 3 つが "=" 記号に等しいことを指定します。

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値はサポートされていません。

[in] pbBinary

返されたバイト シーケンスを受け取るバッファーへのポインター。 このパラメーターが NULL の場合、関数は必要なバッファーの長さを計算し、pcbBinary が指す DWORD 内の必要なメモリのサイズ (バイト単位) を返します。

[in, out] pcbBinary

エントリ時に pbBinary バッファーのサイズをバイト単位で格納する DWORD 変数へのポインター。 関数が戻った後、この変数にはバッファーにコピーされたバイト数が含まれます。 この値がすべてのデータを格納するのに十分な大きさでない場合、関数は失敗し、GetLastError はERROR_MORE_DATAを返します。

pbBinaryNULL の場合、pcbBinary が指す DWORD は無視されます。

[out] pdwSkip

ヘッダーの先頭-----BEGIN ...-----に到達するためにスキップされた文字数を受け取る DWORD 値へのポインター。 ヘッダーが存在しない場合、 DWORD は 0 に設定されます。 このパラメーターは省略可能であり、必要ない場合は NULL にすることができます。

[out] pdwFlags

変換で実際に使用されるフラグを受け取る DWORD 値へのポインター。 これらは dwFlags パラメーターに使用されるフラグと同じです。 多くの場合、これらは dwFlags パラメーターで渡されたのと同じフラグになります。 dwFlags に次のいずれかのフラグが含まれている場合、この値は文字列の実際の形式を示すフラグを受け取ります。 このパラメーターは省略可能であり、必要ない場合は NULL にすることができます。

説明
CRYPT_STRING_ANY
この変数は、次のいずれかの値を受け取ります。 各値は、文字列の実際の形式を示します。
CRYPT_STRING_BASE64HEADER
CRYPT_STRING_BASE64
CRYPT_STRING_BINARY
CRYPT_STRING_BASE64_ANY
この変数は、次のいずれかの値を受け取ります。 各値は、文字列の実際の形式を示します。
CRYPT_STRING_BASE64HEADER
CRYPT_STRING_BASE64
CRYPT_STRING_HEX_ANY
この変数は、次のいずれかの値を受け取ります。 各値は、文字列の実際の形式を示します。
CRYPT_STRING_HEXADDR
CRYPT_STRING_HEXASCIIADDR
CRYPT_STRING_HEX
CRYPT_STRING_HEXRAW
CRYPT_STRING_HEXASCII

戻り値

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

関数が失敗した場合、戻り値は 0 (FALSE) になります

解説

CRYPT_STRING_BASE64HEADERCRYPT_STRING_BASE64REQUESTHEADERおよびCRYPT_STRING_BASE64X509CRLHEADERフラグはすべて、この関数によって同じように扱われます。これらは、フォーム-----BEGIN ...-----の行と -----END ...-----の間で base64 でエンコードされたデータの最初のブロックを解析しようとします。 部分は ... 無視され、一致する必要はありません。 解析が成功した場合、dwFlags パラメーターで渡された値は、pdwFlags パラメーターが指す DWORD で返されます。 CRYPT_STRING_BASE64REQUESTHEADER または CRYPT_STRING_BASE64X509CRLHEADER の値は、要求ヘッダーまたは X.509証明書失効リスト (CRL) が見つかったという意味ではないことに注意してください。

注意

wincrypt.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして CryptStringToBinary を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

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

関連項目

CryptBinaryToString