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

バッファーへのポインター。

このメンバーの使用は、構造体が渡される関数によって異なります。

機能 説明
BCryptEncrypt
バッファーは認証タグを受け取ります。
BCryptDecrypt
バッファーには、確認対象の認証タグが含まれています。
 

タグがない場合は、このメンバーを NULL に設定する必要があります。

cbTag

pbTag バッファーのサイズ (バイト単位)。 バッファーは、認証タグ全体を含めるのに十分な長さである必要があります。 CCM や GCM などの一部の認証モードでは、複数の長さのタグに対するチェックがサポートされています。 有効な認証タグの長さを取得するには、 BCryptGetProperty を使用して BCRYPT_AUTH_TAG_LENGTH プロパティのクエリを実行します。 タグがない場合は、このメンバーを 0 に設定する必要があります。

pbMacContext

暗号化または暗号化解除をチェーンするときに 、BCryptEncryptBCryptDecrypt の呼び出しの間に部分的に計算された 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 に設定する必要があります。

メモ チェーン シーケンス中、このメンバーは内部的に維持され、変更したり、計算された MAC の値が破損したりすることはできません。
 

cbData

暗号化または暗号化解除されたペイロード データの長さ (バイト単位)。 このメンバーは、呼び出しをチェーンする場合にのみ使用されます。

このメンバーは、dwFlags メンバーのBCRYPT_AUTH_MODE_IN_PROGRESS_FLAG フラグが設定されている場合にのみ使用されます。

BCryptEncrypt または BCryptDecrypt の最初の呼び出しでは、このフィールドを直接、または BCRYPT_INIT_AUTH_INFO マクロを呼び出すことによって、ゼロに設定する必要があります

メモ チェーン シーケンス中、このメンバーは内部的に維持され、変更したり、計算された MAC の値が破損したりすることはできません。
 

dwFlags

このフラグは、 BCryptEncrypt または BCryptDecrypt 関数呼び出しをチェーンするときに使用されます。 呼び出しがチェーンされていない場合は、このメンバーを 0 に設定する必要があります。

意味
0x00000000
BCryptEncrypt の場合は、認証タグを計算し、pbTag メンバーが指すバッファーに配置します。

BCryptDecrypt の場合は、認証タグを計算し、pbTag メンバーが指すバッファーに渡されたタグと比較します。 BCryptEncrypt または BCryptDecrypt に対して複数の呼び出しをチェーンする場合、この値はチェーンの末尾を示します。

BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG
0x00000001
BCryptEncrypt 関数呼び出しと BCryptDecrypt 関数呼び出しがチェーンされており、MAC 値が計算されないことを示します。 チェーン内の最後の呼び出しで、この値をクリアして、チェーン全体の MAC 値を計算します。
BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG
0x00000002
このBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO構造体が、連結された BCryptEncrypt または BCryptDecrypt 関数呼び出しのシーケンスで使用されていることを示します。 このフラグは、内部的に設定および保守されます。
メモ チェーン シーケンス中、このフラグ値は内部的に保持され、変更したり、計算された MAC の値が破損したりすることはできません。
 

注釈

この構造体のサイズは、64 ビットオペレーティング システムと 32 ビット オペレーティング システムで異なります。 64 ビット オペレーティング システムでは、サイズは 64 ビットプロセスと 32 ビット プロセスで異なります。 この構造体のインスタンスは、スレッド間で共有したり、プロセス間で渡したりすることはできません。

要件

要件
サポートされている最小のクライアント Windows Vista と SP1 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
Header bcrypt.h