mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-03 20:54:41 +02:00
return value on AES CCM encrypt
This commit is contained in:
@@ -5895,13 +5895,15 @@ static INLINE int Encrypt(WOLFSSL* ssl, byte* out, const byte* input, word16 sz)
|
|||||||
ssl->keys.aead_enc_imp_IV, AEAD_IMP_IV_SZ);
|
ssl->keys.aead_enc_imp_IV, AEAD_IMP_IV_SZ);
|
||||||
XMEMCPY(nonce + AEAD_IMP_IV_SZ,
|
XMEMCPY(nonce + AEAD_IMP_IV_SZ,
|
||||||
ssl->keys.aead_exp_IV, AEAD_EXP_IV_SZ);
|
ssl->keys.aead_exp_IV, AEAD_EXP_IV_SZ);
|
||||||
wc_AesCcmEncrypt(ssl->encrypt.aes,
|
ret = wc_AesCcmEncrypt(ssl->encrypt.aes,
|
||||||
out + AEAD_EXP_IV_SZ, input + AEAD_EXP_IV_SZ,
|
out + AEAD_EXP_IV_SZ, input + AEAD_EXP_IV_SZ,
|
||||||
sz - AEAD_EXP_IV_SZ - ssl->specs.aead_mac_size,
|
sz - AEAD_EXP_IV_SZ - ssl->specs.aead_mac_size,
|
||||||
nonce, AEAD_NONCE_SZ,
|
nonce, AEAD_NONCE_SZ,
|
||||||
out + sz - ssl->specs.aead_mac_size,
|
out + sz - ssl->specs.aead_mac_size,
|
||||||
ssl->specs.aead_mac_size,
|
ssl->specs.aead_mac_size,
|
||||||
additional, AEAD_AUTH_DATA_SZ);
|
additional, AEAD_AUTH_DATA_SZ);
|
||||||
|
if (ret != 0)
|
||||||
|
return ret;
|
||||||
AeadIncrementExpIV(ssl);
|
AeadIncrementExpIV(ssl);
|
||||||
ForceZero(nonce, AEAD_NONCE_SZ);
|
ForceZero(nonce, AEAD_NONCE_SZ);
|
||||||
}
|
}
|
||||||
|
@@ -134,13 +134,19 @@ void wc_AesCcmSetKey(Aes* aes, const byte* key, word32 keySz)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void wc_AesCcmEncrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
int wc_AesCcmEncrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
||||||
const byte* nonce, word32 nonceSz,
|
const byte* nonce, word32 nonceSz,
|
||||||
byte* authTag, word32 authTagSz,
|
byte* authTag, word32 authTagSz,
|
||||||
const byte* authIn, word32 authInSz)
|
const byte* authIn, word32 authInSz)
|
||||||
{
|
{
|
||||||
|
/* sanity check on arugments */
|
||||||
|
if (aes == NULL || out == NULL || in == NULL || nonce == NULL
|
||||||
|
|| authTag == NULL || nonceSz < 7 || nonceSz > 13)
|
||||||
|
return BAD_FUNC_ARG;
|
||||||
|
|
||||||
AesCcmEncrypt(aes, out, in, inSz, nonce, nonceSz, authTag, authTagSz,
|
AesCcmEncrypt(aes, out, in, inSz, nonce, nonceSz, authTag, authTagSz,
|
||||||
authIn, authInSz);
|
authIn, authInSz);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -3556,7 +3562,8 @@ static INLINE void AesCcmCtrInc(byte* B, word32 lenSz)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void wc_AesCcmEncrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
/* return 0 on success */
|
||||||
|
int wc_AesCcmEncrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
||||||
const byte* nonce, word32 nonceSz,
|
const byte* nonce, word32 nonceSz,
|
||||||
byte* authTag, word32 authTagSz,
|
byte* authTag, word32 authTagSz,
|
||||||
const byte* authIn, word32 authInSz)
|
const byte* authIn, word32 authInSz)
|
||||||
@@ -3575,7 +3582,7 @@ void wc_AesCcmEncrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
|||||||
/* sanity check on arugments */
|
/* sanity check on arugments */
|
||||||
if (aes == NULL || out == NULL || in == NULL || nonce == NULL
|
if (aes == NULL || out == NULL || in == NULL || nonce == NULL
|
||||||
|| authTag == NULL || nonceSz < 7 || nonceSz > 13)
|
|| authTag == NULL || nonceSz < 7 || nonceSz > 13)
|
||||||
return;
|
return BAD_FUNC_ARG;
|
||||||
|
|
||||||
#ifdef FREESCALE_MMCAU
|
#ifdef FREESCALE_MMCAU
|
||||||
key = (byte*)aes->key;
|
key = (byte*)aes->key;
|
||||||
@@ -3640,6 +3647,8 @@ void wc_AesCcmEncrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
|||||||
|
|
||||||
ForceZero(A, AES_BLOCK_SIZE);
|
ForceZero(A, AES_BLOCK_SIZE);
|
||||||
ForceZero(B, AES_BLOCK_SIZE);
|
ForceZero(B, AES_BLOCK_SIZE);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -522,12 +522,12 @@ WOLFSSL_API void wc_AesCcmSetKey(Aes* aes, const byte* key, word32 keySz)
|
|||||||
AesAuthSetKey(aes, key, keySz) ;
|
AesAuthSetKey(aes, key, keySz) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
WOLFSSL_API void wc_AesCcmEncrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
WOLFSSL_API int wc_AesCcmEncrypt(Aes* aes, byte* out, const byte* in, word32 inSz,
|
||||||
const byte* nonce, word32 nonceSz,
|
const byte* nonce, word32 nonceSz,
|
||||||
byte* authTag, word32 authTagSz,
|
byte* authTag, word32 authTagSz,
|
||||||
const byte* authIn, word32 authInSz)
|
const byte* authIn, word32 authInSz)
|
||||||
{
|
{
|
||||||
AesAuthEncrypt(aes, out, in, inSz, nonce, nonceSz, authTag, authTagSz,
|
return AesAuthEncrypt(aes, out, in, inSz, nonce, nonceSz, authTag, authTagSz,
|
||||||
authIn, authInSz, AES_CFG_MODE_CCM) ;
|
authIn, authInSz, AES_CFG_MODE_CCM) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2955,8 +2955,10 @@ int aesccm_test(void)
|
|||||||
|
|
||||||
wc_AesCcmSetKey(&enc, k, sizeof(k));
|
wc_AesCcmSetKey(&enc, k, sizeof(k));
|
||||||
/* AES-CCM encrypt and decrypt both use AES encrypt internally */
|
/* AES-CCM encrypt and decrypt both use AES encrypt internally */
|
||||||
wc_AesCcmEncrypt(&enc, c2, p, sizeof(c2), iv, sizeof(iv),
|
result = wc_AesCcmEncrypt(&enc, c2, p, sizeof(c2), iv, sizeof(iv),
|
||||||
t2, sizeof(t2), a, sizeof(a));
|
t2, sizeof(t2), a, sizeof(a));
|
||||||
|
if (result != 0)
|
||||||
|
return -106;
|
||||||
if (memcmp(c, c2, sizeof(c2)))
|
if (memcmp(c, c2, sizeof(c2)))
|
||||||
return -107;
|
return -107;
|
||||||
if (memcmp(t, t2, sizeof(t2)))
|
if (memcmp(t, t2, sizeof(t2)))
|
||||||
|
@@ -166,7 +166,7 @@ WOLFSSL_API int wc_AesCbcDecrypt(Aes* aes, byte* out,
|
|||||||
#endif /* HAVE_AESGCM */
|
#endif /* HAVE_AESGCM */
|
||||||
#ifdef HAVE_AESCCM
|
#ifdef HAVE_AESCCM
|
||||||
WOLFSSL_API void wc_AesCcmSetKey(Aes* aes, const byte* key, word32 keySz);
|
WOLFSSL_API void wc_AesCcmSetKey(Aes* aes, const byte* key, word32 keySz);
|
||||||
WOLFSSL_API void wc_AesCcmEncrypt(Aes* aes, byte* out,
|
WOLFSSL_API int wc_AesCcmEncrypt(Aes* aes, byte* out,
|
||||||
const byte* in, word32 inSz,
|
const byte* in, word32 inSz,
|
||||||
const byte* nonce, word32 nonceSz,
|
const byte* nonce, word32 nonceSz,
|
||||||
byte* authTag, word32 authTagSz,
|
byte* authTag, word32 authTagSz,
|
||||||
|
Reference in New Issue
Block a user