forked from wolfSSL/wolfssl
Merge pull request #8624 from douzzer/20250401-AEAD-WARN_UNUSED_RESULT
20250401-AEAD-WARN_UNUSED_RESULT
This commit is contained in:
@@ -416,9 +416,11 @@ int wc_AesGcmEncrypt(Aes* aes, byte* out,
|
|||||||
\brief This function decrypts the input cipher text, held in the buffer
|
\brief This function decrypts the input cipher text, held in the buffer
|
||||||
in, and stores the resulting message text in the output buffer out.
|
in, and stores the resulting message text in the output buffer out.
|
||||||
It also checks the input authentication vector, authIn, against the
|
It also checks the input authentication vector, authIn, against the
|
||||||
supplied authentication tag, authTag.
|
supplied authentication tag, authTag. If a nonzero error code is returned,
|
||||||
|
the output data is undefined. However, callers must unconditionally zeroize
|
||||||
|
the output buffer to guard against leakage of cleartext data.
|
||||||
|
|
||||||
\return 0 On successfully decrypting the input message
|
\return 0 On successfully decrypting and authenticating the input message
|
||||||
\return AES_GCM_AUTH_E If the authentication tag does not match the
|
\return AES_GCM_AUTH_E If the authentication tag does not match the
|
||||||
supplied authentication code vector, authTag.
|
supplied authentication code vector, authTag.
|
||||||
|
|
||||||
@@ -609,8 +611,9 @@ int wc_AesCcmEncrypt(Aes* aes, byte* out,
|
|||||||
\brief This function decrypts the input cipher text, in, into
|
\brief This function decrypts the input cipher text, in, into
|
||||||
the output buffer, out, using CCM (Counter with CBC-MAC). It
|
the output buffer, out, using CCM (Counter with CBC-MAC). It
|
||||||
subsequently calculates the authorization tag, authTag, from the
|
subsequently calculates the authorization tag, authTag, from the
|
||||||
authIn input. If the authorization tag is invalid, it sets the
|
authIn input. If a nonzero error code is returned, the output data is
|
||||||
output buffer to zero and returns the error: AES_CCM_AUTH_E.
|
undefined. However, callers must unconditionally zeroize the output buffer
|
||||||
|
to guard against leakage of cleartext data.
|
||||||
|
|
||||||
\return 0 On successfully decrypting the input message
|
\return 0 On successfully decrypting the input message
|
||||||
\return AES_CCM_AUTH_E If the authentication tag does not match the
|
\return AES_CCM_AUTH_E If the authentication tag does not match the
|
||||||
@@ -1134,7 +1137,9 @@ int wc_AesSivEncrypt(const byte* key, word32 keySz, const byte* assoc,
|
|||||||
/*!
|
/*!
|
||||||
\ingroup AES
|
\ingroup AES
|
||||||
\brief This function performs SIV (synthetic initialization vector)
|
\brief This function performs SIV (synthetic initialization vector)
|
||||||
decryption as described in RFC 5297.
|
decryption as described in RFC 5297. If a nonzero error code is returned,
|
||||||
|
the output data is undefined. However, callers must unconditionally zeroize
|
||||||
|
the output buffer to guard against leakage of cleartext data.
|
||||||
|
|
||||||
\return 0 On successful decryption.
|
\return 0 On successful decryption.
|
||||||
\return BAD_FUNC_ARG If key, SIV, or output buffer are NULL. Also returned
|
\return BAD_FUNC_ARG If key, SIV, or output buffer are NULL. Also returned
|
||||||
@@ -1248,7 +1253,10 @@ WOLFSSL_API int wc_AesEaxEncryptAuth(const byte* key, word32 keySz, byte* out,
|
|||||||
\brief This function performs AES EAX decryption and authentication as
|
\brief This function performs AES EAX decryption and authentication as
|
||||||
described in "EAX: A Conventional Authenticated-Encryption Mode"
|
described in "EAX: A Conventional Authenticated-Encryption Mode"
|
||||||
(https://eprint.iacr.org/2003/069). It is a "one-shot" API that performs
|
(https://eprint.iacr.org/2003/069). It is a "one-shot" API that performs
|
||||||
all decryption and authentication operations in one function call.
|
all decryption and authentication operations in one function call. If a
|
||||||
|
nonzero error code is returned, the output data is undefined.
|
||||||
|
However, callers must unconditionally zeroize the output buffer to guard
|
||||||
|
against leakage of cleartext data.
|
||||||
|
|
||||||
\return 0 on successful decryption
|
\return 0 on successful decryption
|
||||||
\return BAD_FUNC_ARG if input or output buffers are NULL. Also returned
|
\return BAD_FUNC_ARG if input or output buffers are NULL. Also returned
|
||||||
|
@@ -62,14 +62,18 @@ int wc_ChaCha20Poly1305_Encrypt(
|
|||||||
ChaCha20 stream cipher, into the output buffer, outPlaintext. It also
|
ChaCha20 stream cipher, into the output buffer, outPlaintext. It also
|
||||||
performs Poly-1305 authentication, comparing the given inAuthTag to an
|
performs Poly-1305 authentication, comparing the given inAuthTag to an
|
||||||
authentication generated with the inAAD (arbitrary length additional
|
authentication generated with the inAAD (arbitrary length additional
|
||||||
authentication data). Note: If the generated authentication tag does
|
authentication data). If a nonzero error code is returned, the output
|
||||||
not match the supplied authentication tag, the text is not decrypted.
|
data, outPlaintext, is undefined. However, callers must unconditionally
|
||||||
|
zeroize the output buffer to guard against leakage of cleartext data.
|
||||||
|
|
||||||
\return 0 Returned upon successfully decrypting the message
|
\return 0 Returned upon successfully decrypting and authenticating the
|
||||||
|
message
|
||||||
\return BAD_FUNC_ARG Returned if any of the function arguments do not
|
\return BAD_FUNC_ARG Returned if any of the function arguments do not
|
||||||
match what is expected
|
match what is expected
|
||||||
\return MAC_CMP_FAILED_E Returned if the generated authentication tag
|
\return MAC_CMP_FAILED_E Returned if the generated authentication tag
|
||||||
does not match the supplied inAuthTag.
|
does not match the supplied inAuthTag.
|
||||||
|
\return MEMORY_E Returned if internal buffer allocation failed.
|
||||||
|
\return CHACHA_POLY_OVERFLOW Can be returned if input is corrupted.
|
||||||
|
|
||||||
\param inKey pointer to a buffer containing the 32 byte key to use for
|
\param inKey pointer to a buffer containing the 32 byte key to use for
|
||||||
decryption
|
decryption
|
||||||
|
@@ -588,7 +588,7 @@ WOLFSSL_API int wc_AesEcbDecrypt(Aes* aes, byte* out,
|
|||||||
const byte* iv, word32 ivSz,
|
const byte* iv, word32 ivSz,
|
||||||
byte* authTag, word32 authTagSz,
|
byte* authTag, word32 authTagSz,
|
||||||
const byte* authIn, word32 authInSz);
|
const byte* authIn, word32 authInSz);
|
||||||
WOLFSSL_API int wc_AesGcmDecrypt(Aes* aes, byte* out,
|
WOLFSSL_API WARN_UNUSED_RESULT int wc_AesGcmDecrypt(Aes* aes, byte* out,
|
||||||
const byte* in, word32 sz,
|
const byte* in, word32 sz,
|
||||||
const byte* iv, word32 ivSz,
|
const byte* iv, word32 ivSz,
|
||||||
const byte* authTag, word32 authTagSz,
|
const byte* authTag, word32 authTagSz,
|
||||||
@@ -610,8 +610,8 @@ WOLFSSL_API int wc_AesGcmDecryptInit(Aes* aes, const byte* key, word32 len,
|
|||||||
const byte* iv, word32 ivSz);
|
const byte* iv, word32 ivSz);
|
||||||
WOLFSSL_API int wc_AesGcmDecryptUpdate(Aes* aes, byte* out, const byte* in,
|
WOLFSSL_API int wc_AesGcmDecryptUpdate(Aes* aes, byte* out, const byte* in,
|
||||||
word32 sz, const byte* authIn, word32 authInSz);
|
word32 sz, const byte* authIn, word32 authInSz);
|
||||||
WOLFSSL_API int wc_AesGcmDecryptFinal(Aes* aes, const byte* authTag,
|
WOLFSSL_API WARN_UNUSED_RESULT int wc_AesGcmDecryptFinal(Aes* aes,
|
||||||
word32 authTagSz);
|
const byte* authTag, word32 authTagSz);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef WC_NO_RNG
|
#ifndef WC_NO_RNG
|
||||||
@@ -648,7 +648,7 @@ WOLFSSL_API int wc_AesGcmDecryptFinal(Aes* aes, const byte* authTag,
|
|||||||
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);
|
||||||
WOLFSSL_API int wc_AesCcmDecrypt(Aes* aes, byte* out,
|
WOLFSSL_API WARN_UNUSED_RESULT int wc_AesCcmDecrypt(Aes* aes, byte* out,
|
||||||
const byte* in, word32 inSz,
|
const byte* in, word32 inSz,
|
||||||
const byte* nonce, word32 nonceSz,
|
const byte* nonce, word32 nonceSz,
|
||||||
const byte* authTag, word32 authTagSz,
|
const byte* authTag, word32 authTagSz,
|
||||||
@@ -761,7 +761,7 @@ WOLFSSL_API
|
|||||||
int wc_AesSivEncrypt(const byte* key, word32 keySz, const byte* assoc,
|
int wc_AesSivEncrypt(const byte* key, word32 keySz, const byte* assoc,
|
||||||
word32 assocSz, const byte* nonce, word32 nonceSz,
|
word32 assocSz, const byte* nonce, word32 nonceSz,
|
||||||
const byte* in, word32 inSz, byte* siv, byte* out);
|
const byte* in, word32 inSz, byte* siv, byte* out);
|
||||||
WOLFSSL_API
|
WOLFSSL_API WARN_UNUSED_RESULT
|
||||||
int wc_AesSivDecrypt(const byte* key, word32 keySz, const byte* assoc,
|
int wc_AesSivDecrypt(const byte* key, word32 keySz, const byte* assoc,
|
||||||
word32 assocSz, const byte* nonce, word32 nonceSz,
|
word32 assocSz, const byte* nonce, word32 nonceSz,
|
||||||
const byte* in, word32 inSz, byte* siv, byte* out);
|
const byte* in, word32 inSz, byte* siv, byte* out);
|
||||||
@@ -770,7 +770,7 @@ WOLFSSL_API
|
|||||||
int wc_AesSivEncrypt_ex(const byte* key, word32 keySz, const AesSivAssoc* assoc,
|
int wc_AesSivEncrypt_ex(const byte* key, word32 keySz, const AesSivAssoc* assoc,
|
||||||
word32 numAssoc, const byte* nonce, word32 nonceSz,
|
word32 numAssoc, const byte* nonce, word32 nonceSz,
|
||||||
const byte* in, word32 inSz, byte* siv, byte* out);
|
const byte* in, word32 inSz, byte* siv, byte* out);
|
||||||
WOLFSSL_API
|
WOLFSSL_API WARN_UNUSED_RESULT
|
||||||
int wc_AesSivDecrypt_ex(const byte* key, word32 keySz, const AesSivAssoc* assoc,
|
int wc_AesSivDecrypt_ex(const byte* key, word32 keySz, const AesSivAssoc* assoc,
|
||||||
word32 numAssoc, const byte* nonce, word32 nonceSz,
|
word32 numAssoc, const byte* nonce, word32 nonceSz,
|
||||||
const byte* in, word32 inSz, byte* siv, byte* out);
|
const byte* in, word32 inSz, byte* siv, byte* out);
|
||||||
@@ -805,7 +805,8 @@ WOLFSSL_API int wc_AesEaxEncryptAuth(const byte* key, word32 keySz, byte* out,
|
|||||||
/* input data to authenticate (header) */
|
/* input data to authenticate (header) */
|
||||||
const byte* authIn, word32 authInSz);
|
const byte* authIn, word32 authInSz);
|
||||||
|
|
||||||
WOLFSSL_API int wc_AesEaxDecryptAuth(const byte* key, word32 keySz, byte* out,
|
WOLFSSL_API WARN_UNUSED_RESULT int wc_AesEaxDecryptAuth(const byte* key,
|
||||||
|
word32 keySz, byte* out,
|
||||||
const byte* in, word32 inSz,
|
const byte* in, word32 inSz,
|
||||||
const byte* nonce, word32 nonceSz,
|
const byte* nonce, word32 nonceSz,
|
||||||
/* auth tag to verify against */
|
/* auth tag to verify against */
|
||||||
@@ -833,7 +834,7 @@ WOLFSSL_API int wc_AesEaxAuthDataUpdate(AesEax* eax,
|
|||||||
WOLFSSL_API int wc_AesEaxEncryptFinal(AesEax* eax,
|
WOLFSSL_API int wc_AesEaxEncryptFinal(AesEax* eax,
|
||||||
byte* authTag, word32 authTagSz);
|
byte* authTag, word32 authTagSz);
|
||||||
|
|
||||||
WOLFSSL_API int wc_AesEaxDecryptFinal(AesEax* eax,
|
WOLFSSL_API WARN_UNUSED_RESULT int wc_AesEaxDecryptFinal(AesEax* eax,
|
||||||
const byte* authIn, word32 authInSz);
|
const byte* authIn, word32 authInSz);
|
||||||
|
|
||||||
WOLFSSL_API int wc_AesEaxFree(AesEax* eax);
|
WOLFSSL_API int wc_AesEaxFree(AesEax* eax);
|
||||||
|
@@ -95,7 +95,7 @@ int wc_ChaCha20Poly1305_Encrypt(
|
|||||||
byte* outCiphertext,
|
byte* outCiphertext,
|
||||||
byte outAuthTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]);
|
byte outAuthTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]);
|
||||||
|
|
||||||
WOLFSSL_ABI WOLFSSL_API
|
WOLFSSL_ABI WOLFSSL_API WARN_UNUSED_RESULT
|
||||||
int wc_ChaCha20Poly1305_Decrypt(
|
int wc_ChaCha20Poly1305_Decrypt(
|
||||||
const byte inKey[CHACHA20_POLY1305_AEAD_KEYSIZE],
|
const byte inKey[CHACHA20_POLY1305_AEAD_KEYSIZE],
|
||||||
const byte inIV[CHACHA20_POLY1305_AEAD_IV_SIZE],
|
const byte inIV[CHACHA20_POLY1305_AEAD_IV_SIZE],
|
||||||
@@ -104,7 +104,7 @@ int wc_ChaCha20Poly1305_Decrypt(
|
|||||||
const byte inAuthTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE],
|
const byte inAuthTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE],
|
||||||
byte* outPlaintext);
|
byte* outPlaintext);
|
||||||
|
|
||||||
WOLFSSL_API
|
WOLFSSL_API WARN_UNUSED_RESULT
|
||||||
int wc_ChaCha20Poly1305_CheckTag(
|
int wc_ChaCha20Poly1305_CheckTag(
|
||||||
const byte authTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE],
|
const byte authTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE],
|
||||||
const byte authTagChk[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]);
|
const byte authTagChk[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]);
|
||||||
@@ -121,7 +121,7 @@ WOLFSSL_API int wc_ChaCha20Poly1305_UpdateAad(ChaChaPoly_Aead* aead,
|
|||||||
const byte* inAAD, word32 inAADLen);
|
const byte* inAAD, word32 inAADLen);
|
||||||
WOLFSSL_API int wc_ChaCha20Poly1305_UpdateData(ChaChaPoly_Aead* aead,
|
WOLFSSL_API int wc_ChaCha20Poly1305_UpdateData(ChaChaPoly_Aead* aead,
|
||||||
const byte* inData, byte* outData, word32 dataLen);
|
const byte* inData, byte* outData, word32 dataLen);
|
||||||
WOLFSSL_API int wc_ChaCha20Poly1305_Final(ChaChaPoly_Aead* aead,
|
WOLFSSL_API WARN_UNUSED_RESULT int wc_ChaCha20Poly1305_Final(ChaChaPoly_Aead* aead,
|
||||||
byte outAuthTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]);
|
byte outAuthTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]);
|
||||||
|
|
||||||
#ifdef HAVE_XCHACHA
|
#ifdef HAVE_XCHACHA
|
||||||
@@ -140,7 +140,7 @@ WOLFSSL_API int wc_XChaCha20Poly1305_Encrypt(
|
|||||||
const byte *nonce, size_t nonce_len,
|
const byte *nonce, size_t nonce_len,
|
||||||
const byte *key, size_t key_len);
|
const byte *key, size_t key_len);
|
||||||
|
|
||||||
WOLFSSL_API int wc_XChaCha20Poly1305_Decrypt(
|
WOLFSSL_API WARN_UNUSED_RESULT int wc_XChaCha20Poly1305_Decrypt(
|
||||||
byte *dst, size_t dst_space,
|
byte *dst, size_t dst_space,
|
||||||
const byte *src, size_t src_len,
|
const byte *src, size_t src_len,
|
||||||
const byte *ad, size_t ad_len,
|
const byte *ad, size_t ad_len,
|
||||||
|
Reference in New Issue
Block a user