BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO構造体 (bcrypt.h)
BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO構造体は、認証された暗号モードに関連する追加情報を含む BCryptEncrypt 関数と BCryptDecrypt 関数と共に使用されます。
構文
typedef struct _BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO {
ULONG cbSize;
ULONG dwInfoVersion;
PUCHAR pbNonce;
ULONG cbNonce;
PUCHAR pbAuthData;
ULONG cbAuthData;
PUCHAR pbTag;
ULONG cbTag;
PUCHAR pbMacContext;
ULONG cbMacContext;
ULONG cbAAD;
ULONGLONG cbData;
ULONG dwFlags;
} BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO, *PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO;
メンバー
cbSize
この構造体のサイズ (バイト単位)。 このフィールドは直接設定しないでください。 代わりに 、BCRYPT_INIT_AUTH_MODE_INFO マクロを使用してください。
dwInfoVersion
構造体のバージョン番号。 サポートされている値は BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSIONのみです。 このフィールドは直接設定しないでください。 代わりに 、BCRYPT_INIT_AUTH_MODE_INFO マクロを使用してください。
pbNonce
nonce を含むバッファーへのポインター。 Advanced Encryption Standard (AES) の Microsoft アルゴリズム プロバイダーでは、CBC-MAC (CCM) と Galois/Counter Mode (GCM) チェーン モードを使用したカウンターに nonce が必要であり、存在しない場合はエラーが返されます。 nonce を使用しない場合は、このメンバーを NULL に設定する必要があります。
cbNonce
pbNonce メンバーが指すバッファーのサイズ (バイト単位)。 nonce を使用しない場合は、このメンバーを 0 に設定する必要があります。
pbAuthData
認証されたデータを含むバッファーへのポインター。 これは、 メッセージ認証コード (MAC) に含まれるが、暗号化されないデータです。 認証されたデータがない場合は、このメンバーを NULL に設定する必要があります。
cbAuthData
pbAuthData メンバーが指すバッファーのサイズ (バイト単位)。 認証されたデータがない場合は、このメンバーを 0 に設定する必要があります。
pbTag
バッファーへのポインター。
このメンバーの使用は、構造体が渡される関数によって異なります。
機能 | 説明 |
---|---|
バッファーは認証タグを受け取ります。 | |
バッファーには、確認対象の認証タグが含まれています。 |
タグがない場合は、このメンバーを NULL に設定する必要があります。
cbTag
pbTag バッファーのサイズ (バイト単位)。 バッファーは、認証タグ全体を含めるのに十分な長さである必要があります。 CCM や GCM などの一部の認証モードでは、複数の長さのタグに対するチェックがサポートされています。 有効な認証タグの長さを取得するには、 BCryptGetProperty を使用して BCRYPT_AUTH_TAG_LENGTH プロパティのクエリを実行します。 タグがない場合は、このメンバーを 0 に設定する必要があります。
pbMacContext
暗号化または暗号化解除をチェーンするときに 、BCryptEncrypt と BCryptDecrypt の呼び出しの間に部分的に計算された MAC を格納するバッファーへのポインター。
暗号化または暗号化解除への入力が複数のバッファーに分散している場合は、BCryptEncrypt 関数と BCryptDecrypt 関数の呼び出しをチェーンする必要があります。 チェーンは、dwFlags メンバーで BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG フラグを設定することによって示されます。
このバッファーは呼び出し元によって提供される必要があり、使用している暗号の認証タグの最大長と同じ大きさにする必要があります。 有効な認証タグの長さを取得するには、 BCryptGetProperty を使用して BCRYPT_AUTH_TAG_LENGTH プロパティを照会します。
BCryptEncrypt 呼び出しと BCryptDecrypt 呼び出しがチェーンされていない場合は、このメンバーを NULL に設定する必要があります。
cbMacContext
pbMacContext メンバーが指すバッファーのサイズ (バイト単位)。 BCryptEncrypt 呼び出しと BCryptDecrypt 呼び出しがチェーンされていない場合は、このメンバーを 0 に設定する必要があります。
cbAAD
BCryptEncrypt 関数と BCryptDecrypt 関数で使用される追加の認証済みデータ (AAD) の長さ (バイト単位)。 このメンバーは、呼び出しをチェーンする場合にのみ使用されます。
このメンバーは、dwFlags メンバーのBCRYPT_AUTH_MODE_IN_PROGRESS_FLAG フラグが設定されている場合にのみ使用されます。
BCryptEncrypt または BCryptDecrypt の最初の呼び出しでは、このフィールドを 0 に設定する必要があります。
cbData
暗号化または暗号化解除されたペイロード データの長さ (バイト単位)。 このメンバーは、呼び出しをチェーンする場合にのみ使用されます。
このメンバーは、dwFlags メンバーのBCRYPT_AUTH_MODE_IN_PROGRESS_FLAG フラグが設定されている場合にのみ使用されます。
BCryptEncrypt または BCryptDecrypt の最初の呼び出しでは、このフィールドを直接、または BCRYPT_INIT_AUTH_INFO マクロを呼び出すことによって、ゼロに設定する必要があります
dwFlags
このフラグは、 BCryptEncrypt または BCryptDecrypt 関数呼び出しをチェーンするときに使用されます。 呼び出しがチェーンされていない場合は、このメンバーを 0 に設定する必要があります。
値 | 意味 |
---|---|
|
BCryptEncrypt の場合は、認証タグを計算し、pbTag メンバーが指すバッファーに配置します。
BCryptDecrypt の場合は、認証タグを計算し、pbTag メンバーが指すバッファーに渡されたタグと比較します。 BCryptEncrypt または BCryptDecrypt に対して複数の呼び出しをチェーンする場合、この値はチェーンの末尾を示します。 |
|
BCryptEncrypt 関数呼び出しと BCryptDecrypt 関数呼び出しがチェーンされており、MAC 値が計算されないことを示します。 チェーン内の最後の呼び出しで、この値をクリアして、チェーン全体の MAC 値を計算します。 |
|
このBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO構造体が、連結された BCryptEncrypt または BCryptDecrypt 関数呼び出しのシーケンスで使用されていることを示します。 このフラグは、内部的に設定および保守されます。
メモ チェーン シーケンス中、このフラグ値は内部的に保持され、変更したり、計算された MAC の値が破損したりすることはできません。
|
注釈
この構造体のサイズは、64 ビットオペレーティング システムと 32 ビット オペレーティング システムで異なります。 64 ビット オペレーティング システムでは、サイズは 64 ビットプロセスと 32 ビット プロセスで異なります。 この構造体のインスタンスは、スレッド間で共有したり、プロセス間で渡したりすることはできません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista と SP1 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
Header | bcrypt.h |