9#define CCM_MIN_NONCE_SIZE (7)
10#define CCM_MAX_NONCE_SIZE (13)
11#define CCM_MIN_TAG_SIZE (4)
12#define CCM_MAX_TAG_SIZE (16)
14#define CCM_MAX_COUNTER_SIZE (SYMCRYPT_CCM_BLOCK_SIZE - 1 - CCM_MIN_NONCE_SIZE)
16#define AUTHDATA_16BIT_LIMIT ((1<<16) - (1<<8))
17#define AUTHDATA_32BIT_LIMIT (1ull << 32)
23#define CCM_BLOCK_MOD_MASK (SYMCRYPT_CCM_BLOCK_SIZE - 1)
24#define CCM_BLOCK_ROUND_MASK (~CCM_BLOCK_MOD_MASK)
42 return SYMCRYPT_WRONG_BLOCK_SIZE;
50 return SYMCRYPT_WRONG_NONCE_SIZE;
75 return SYMCRYPT_WRONG_DATA_SIZE;
83 return SYMCRYPT_WRONG_TAG_SIZE;
86 return SYMCRYPT_NO_ERROR;
130 pbSrc += bytesToProcess;
131 pbDst += bytesToProcess;
132 pState->bytesProcessed += bytesToProcess;
133 cbToDo -= bytesToProcess;
147 &
pState->keystreamBlock[0],
148 &
pState->keystreamBlock[0],
170 if(
pState->bytesInMacBlock > 0 )
176 pState->bytesInMacBlock += bytesToProcess;
181 pState->bytesInMacBlock = 0;
216 if(
pState->bytesInMacBlock > 0 )
219 pState->bytesInMacBlock = 0;
289 if(
status != SYMCRYPT_NO_ERROR )
338 pState->bytesProcessed = 0;
339 pState->bytesInMacBlock = 0;
439 UINT64 bytesProcessedAfterThisCall;
443 bytesProcessedAfterThisCall =
cbData +
pState->bytesProcessed;
446 bytesProcessedAfterThisCall <= pState->
cbData );
490 pState->bytesProcessed = 0;
509 UINT64 bytesProcessedAfterThisCall;
513 bytesProcessedAfterThisCall =
cbData +
pState->bytesProcessed;
516 bytesProcessedAfterThisCall <= pState->
cbData );
565 pState->bytesProcessed = 0;
571 status = SYMCRYPT_AUTHENTICATION_FAILURE;
575 status = SYMCRYPT_NO_ERROR;
588 0x3d, 0x9e, 0x95, 0x82, 0x29, 0x3c, 0x10, 0x9c, 0xa3, 0x39, 0x31, 0x3f, 0x18, 0xf3, 0x10, 0xf6
COMPILER_DEPENDENT_UINT64 UINT64
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
GLenum GLuint GLenum GLsizei const GLchar * buf
#define memcpy(s1, s2, n)
#define _In_reads_opt_(s)
#define UNREFERENCED_PARAMETER(P)
VOID SYMCRYPT_CALL SymCryptInjectError(PBYTE pbData, SIZE_T cbData)
const BYTE SymCryptTestKey32[32]
const BYTE SymCryptTestMsg3[3]
#define CCM_BLOCK_MOD_MASK
VOID SYMCRYPT_CALL SymCryptCcmPadMacData(_Inout_ PSYMCRYPT_CCM_STATE pState)
#define AUTHDATA_16BIT_LIMIT
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptCcmDecryptPart(_Inout_ PSYMCRYPT_CCM_STATE pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
static const BYTE SymCryptCcmSelftestResult[3+SYMCRYPT_AES_BLOCK_SIZE]
SYMCRYPT_NOINLINE SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptCcmDecrypt(_In_ PCSYMCRYPT_BLOCKCIPHER pBlockCipher, _In_ PCVOID pExpandedKey, _In_reads_(cbNonce) PCBYTE pbNonce, SIZE_T cbNonce, _In_reads_opt_(cbAuthData) PCBYTE pbAuthData, SIZE_T cbAuthData, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData, _In_reads_(cbTag) PCBYTE pbTag, SIZE_T cbTag)
VOID SYMCRYPT_CALL SymCryptCcmSelftest(void)
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptCcmEncryptPart(_Inout_ PSYMCRYPT_CCM_STATE pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptCcmEncryptDecryptPart(_Inout_ PSYMCRYPT_CCM_STATE pState, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptCcmEncryptFinal(_Inout_ PSYMCRYPT_CCM_STATE pState, _Out_writes_(cbTag) PBYTE pbTag, SIZE_T cbTag)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptCcmValidateParameters(_In_ PCSYMCRYPT_BLOCKCIPHER pBlockCipher, _In_ SIZE_T cbNonce, _In_ SIZE_T cbAssociatedData, _In_ UINT64 cbData, _In_ SIZE_T cbTag)
SYMCRYPT_NOINLINE SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptCcmDecryptFinal(_Inout_ PSYMCRYPT_CCM_STATE pState, _In_reads_(cbTag) PCBYTE pbTag, SIZE_T cbTag)
#define CCM_BLOCK_ROUND_MASK
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptCcmEncrypt(_In_ PCSYMCRYPT_BLOCKCIPHER pBlockCipher, _In_ PCVOID pExpandedKey, _In_reads_(cbNonce) PCBYTE pbNonce, SIZE_T cbNonce, _In_reads_opt_(cbAuthData) PCBYTE pbAuthData, SIZE_T cbAuthData, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData, _Out_writes_(cbTag) PBYTE pbTag, SIZE_T cbTag)
#define CCM_MAX_NONCE_SIZE
const BOOL fcbAuthDataLt32bitLimitStatic
SYMCRYPT_NOINLINE VOID SYMCRYPT_CALL SymCryptCcmInit(_Out_ PSYMCRYPT_CCM_STATE pState, _In_ PCSYMCRYPT_BLOCKCIPHER pBlockCipher, _In_ PCVOID pExpandedKey, _In_reads_(cbNonce) PCBYTE pbNonce, SIZE_T cbNonce, _In_reads_opt_(cbAuthData) PCBYTE pbAuthData, SIZE_T cbAuthData, UINT64 cbData, SIZE_T cbTag)
VOID SYMCRYPT_CALL SymCryptCcmAddMacData(_Inout_ PSYMCRYPT_CCM_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
#define AUTHDATA_32BIT_LIMIT
PSYMCRYPT_BLOCKCIPHER_CRYPT encryptFunc
#define SYMCRYPT_ASSERT(_x)
const PCSYMCRYPT_BLOCKCIPHER SymCryptAesBlockCipher
FORCEINLINE VOID SYMCRYPT_CALL SymCryptWipeKnownSize(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptWipe(_Out_writes_bytes_(cbData) PVOID pbData, SIZE_T cbData)
_Analysis_noreturn_ VOID SYMCRYPT_CALL SymCryptFatal(UINT32 fatalCode)
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptAesExpandKey(_Out_ PSYMCRYPT_AES_EXPANDED_KEY pExpandedKey, _In_reads_(cbKey) PCBYTE pbKey, SIZE_T cbKey)
#define SYMCRYPT_STORE_MSBFIRST16(p, v)
VOID SYMCRYPT_CALL SymCryptXorBytes(_In_reads_(cbBytes) PCBYTE pbSrc1, _In_reads_(cbBytes) PCBYTE pbSrc2, _Out_writes_(cbBytes) PBYTE pbResult, SIZE_T cbBytes)
#define SYMCRYPT_AES_BLOCK_SIZE
#define SYMCRYPT_STORE_MSBFIRST32(p, v)
BOOLEAN SYMCRYPT_CALL SymCryptEqual(_In_reads_(cbBytes) PCBYTE pbSrc1, _In_reads_(cbBytes) PCBYTE pbSrc2, SIZE_T cbBytes)
#define SYMCRYPT_STORE_MSBFIRST64(p, v)
VOID SYMCRYPT_CALL SymCryptCtrMsb64(_In_ PCSYMCRYPT_BLOCKCIPHER pBlockCipher, _In_ PCVOID pExpandedKey, _Inout_updates_(pBlockCipher->blockSize) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, _Out_writes_(cbData) PBYTE pbDst, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptCbcMac(_In_ PCSYMCRYPT_BLOCKCIPHER pBlockCipher, _In_ PCVOID pExpandedKey, _Inout_updates_(pBlockCipher->blockSize) PBYTE pbChainingValue, _In_reads_(cbData) PCBYTE pbSrc, SIZE_T cbData)
SYMCRYPT_MAGIC_FIELD SYMCRYPT_CCM_STATE
#define SYMCRYPT_CCM_BLOCK_SIZE
PCSYMCRYPT_BLOCKCIPHER pBlockCipher
#define SYMCRYPT_MIN(_a, _b)
PCBYTE PBYTE SIZE_T cbData
#define SYMCRYPT_SET_MAGIC(p)
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_CCM_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_AES_EXPANDED_KEY
PSYMCRYPT_COMMON_HASH_STATE pState
#define SYMCRYPT_CHECK_MAGIC(p)