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를 포함하는 버퍼에 대한 포인터입니다. 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을 저장하는 버퍼에 대한 포인터입니다.

암호화 또는 암호 해독에 대한 입력이 여러 버퍼에 분산되어 있는 경우 호출을 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 매크로를 호출하여 이 필드를 0으로 설정해야 합니다.

참고 연결 시퀀스 중에 이 멤버는 내부적으로 유지 관리되며 변경해서는 안 되며 계산된 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 [데스크톱 앱만 해당]
머리글 bcrypt.h