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 |
---|---|
버퍼는 인증 태그를 받습니다. | |
버퍼에는 검사할 인증 태그가 포함되어 있습니다. |
태그가 없으면 이 멤버를 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 매크로를 호출하여 이 필드를 0으로 설정해야 합니다.
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 [데스크톱 앱만 해당] |
머리글 | bcrypt.h |