BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO 구조체(bcrypt.h)

BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO 구조체는 인증된 암호 모드와 관련된 추가 정보를 포함하기 위해 BCryptEncryptBCryptDecrypt 함수와 함께 사용됩니다.

구문

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를 포함하는 버퍼에 대한 포인터입니다. AES( Advanced Encryption Standard )용 Microsoft 알고리즘 공급자는 CBC-MAC(CCM) 및 GCM(Galois/Counter Mode) 연결 모드가 있는 카운터에 대한 nonce가 필요하며, 없는 경우 오류를 반환합니다. nonce를 사용하지 않는 경우 이 멤버를 NULL로 설정해야 합니다.

cbNonce

pbNonce 멤버가 가리키는 버퍼의 크기(바이트)입니다. nonce를 사용하지 않는 경우 이 멤버를 0으로 설정해야 합니다.

pbAuthData

인증된 데이터를 포함하는 버퍼에 대한 포인터입니다. MAC( 메시지 인증 코드 )에 포함되지만 암호화되지 않은 데이터입니다. 인증된 데이터가 없으면 이 멤버를 NULL로 설정해야 합니다.

cbAuthData

pbAuthData 멤버가 가리키는 버퍼의 크기(바이트)입니다. 인증된 데이터가 없으면 이 멤버를 0으로 설정해야 합니다.

pbTag

버퍼에 대한 포인터입니다.

이 멤버의 사용은 구조체가 전달되는 함수에 따라 달라집니다.

함수 Description
BCryptEncrypt
버퍼는 인증 태그를 받습니다.
BCryptDecrypt
버퍼에는 검사할 인증 태그가 포함되어 있습니다.
 

태그가 없으면 이 멤버를 NULL로 설정해야 합니다.

cbTag

pbTag 버퍼의 크기(바이트)입니다. 버퍼는 전체 인증 태그를 포함할 만큼 충분히 길어야 합니다. CCM 및 GCM과 같은 일부 인증 모드는 길이가 여러 개인 태그에 대한 검사를 지원합니다. 유효한 인증 태그 길이를 가져오려면 BCryptGetProperty 를 사용하여 BCRYPT_AUTH_TAG_LENGTH 속성을 쿼리합니다. 태그가 없으면 이 멤버를 0으로 설정해야 합니다.

pbMacContext

암호화 또는 암호 해독을 연결할 때 BCryptEncrypt 및 BCryptDecrypt 호출 사이에 부분적으로 계산된 MAC을 저장하는 버퍼에 대한 포인터입니다.

암호화 또는 암호 해독에 대한 입력이 여러 버퍼에 분산되어 있는 경우 호출을 BCryptEncryptBCryptDecrypt 함수에 연결해야 합니다. 연결은 dwFlags 멤버에서 BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG 플래그를 설정하여 표시됩니다.

이 버퍼는 호출자가 제공해야 하며 사용 중인 암호에 대한 인증 태그의 최대 길이만큼 커야 합니다. 유효한 인증 태그 길이를 얻으려면 BCryptGetProperty 를 사용하여 BCRYPT_AUTH_TAG_LENGTH 속성을 쿼리합니다.

BCryptEncryptBCryptDecrypt 호출이 연결되지 않은 경우 이 멤버를 NULL로 설정해야 합니다.

cbMacContext

pbMacContext 멤버가 가리키는 버퍼의 크기(바이트)입니다. BCryptEncryptBCryptDecrypt 호출이 연결되지 않은 경우 이 멤버를 0으로 설정해야 합니다.

cbAAD

BCryptEncryptBCryptDecrypt 함수에서 사용할 추가 인증 데이터(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 매크로를 호출하여 이 필드를 0으로 설정해야 합니다.

참고 연결 시퀀스 중에 이 멤버는 내부적으로 유지 관리되며 변경해서는 안 되며 계산된 MAC의 값이 손상됩니다.
 

dwFlags

이 플래그는 BCryptEncrypt 또는 BCryptDecrypt 함수 호출 연결할 때 사용됩니다. 호출이 연결되지 않은 경우 이 멤버를 0으로 설정해야 합니다.

의미
0x00000000
BCryptEncrypt의 경우 인증 태그를 계산하고 pbTag 멤버가 가리키는 버퍼에 배치합니다.

BCryptDecrypt의 경우 인증 태그를 계산하고 pbTag 멤버가 가리키는 버퍼에 전달된 태그와 비교합니다. BCryptEncrypt 또는 BCryptDecrypt에 여러 호출을 연결하는 경우 이 값은 체인의 끝을 신호로 표시합니다.

BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG
0x00000001
BCryptEncryptBCryptDecrypt 함수 호출이 연결되고 있으며 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 [데스크톱 앱만 해당]
머리글 bcrypt.h