
Functions | |
| WOLFSSL_API int | wc_AesSetKey (Aes *aes, const byte *key, word32 len, const byte *iv, int dir) |
| This function initializes an AES structure by setting the key and then setting the initialization vector. More... | |
| WOLFSSL_API int | wc_AesSetIV (Aes *aes, const byte *iv) |
| This function sets the initialization vector for a particular AES object. The AES object should be initialized before calling this function. More... | |
| WOLFSSL_API int | wc_AesCbcEncrypt (Aes *aes, byte *out, const byte *in, word32 sz) |
| Encrypts a plaintext message from the input buffer in, and places the resulting cipher text in the output buffer out using cipher block chaining with AES. This function requires that the AES object has been initialized by calling AesSetKey before a message is able to be encrypted. This function assumes that the input message is AES block length aligned. PKCS#7 style padding should be added beforehand. This differs from the OpenSSL AES-CBC methods which add the padding for you. To make the wolfSSL function and equivalent OpenSSL functions interoperate, one should specify the -nopad option in the OpenSSL command line function so that it behaves like the wolfSSL AesCbcEncrypt method and does not add extra padding during encryption. More... | |
| WOLFSSL_API int | wc_AesCbcDecrypt (Aes *aes, byte *out, const byte *in, word32 sz) |
| Decrypts a cipher from the input buffer in, and places the resulting plain text in the output buffer out using cipher block chaining with AES. This function requires that the AES structure has been initialized by calling AesSetKey before a message is able to be decrypted. This function assumes that the original message was AES block length aligned. This differs from the OpenSSL AES-CBC methods which do not require alignment as it adds PKCS#7 padding automatically. To make the wolfSSL function and equivalent OpenSSL functions interoperate, one should specify the -nopad option in the OpenSSL command line function so that it behaves like the wolfSSL AesCbcEncrypt method and does not create errors during decryption. More... | |
| WOLFSSL_API int | wc_AesCtrEncrypt (Aes *aes, byte *out, const byte *in, word32 sz) |
| Encrypts/Decrypts a message from the input buffer in, and places the resulting cipher text in the output buffer out using CTR mode with AES. This function is only enabled if WOLFSSL_AES_COUNTER is enabled at compile time. The AES structure should be initialized through AesSetKey before calling this function. Note that this function is used for both decryption and encryption. NOTE: Regarding using same API for encryption and decryption. User should differentiate between Aes structures for encrypt/decrypt. More... | |
| WOLFSSL_API void | wc_AesEncryptDirect (Aes *aes, byte *out, const byte *in) |
| This function is a one-block encrypt of the input block, in, into the output block, out. It uses the key and iv (initialization vector) of the provided AES structure, which should be initialized with wc_AesSetKey before calling this function. It is only enabled if the configure option WOLFSSL_AES_DIRECT is enabled. Warning: In nearly all use cases ECB mode is considered to be less secure. Please avoid using ECB API’s directly whenever possible. More... | |
| WOLFSSL_API void | wc_AesDecryptDirect (Aes *aes, byte *out, const byte *in) |
| This function is a one-block decrypt of the input block, in, into the output block, out. It uses the key and iv (initialization vector) of the provided AES structure, which should be initialized with wc_AesSetKey before calling this function. It is only enabled if the configure option WOLFSSL_AES_DIRECT is enabled, and there is support for direct AES encryption on the system in question. Warning: In nearly all use cases ECB mode is considered to be less secure. Please avoid using ECB API’s directly whenever possible. More... | |
| WOLFSSL_API int | wc_AesSetKeyDirect (Aes *aes, const byte *key, word32 len, const byte *iv, int dir) |
| This function is used to set the AES keys for CTR mode with AES. It initializes an AES object with the given key, iv (initialization vector), and encryption dir (direction). It is only enabled if the configure option WOLFSSL_AES_DIRECT is enabled. Currently wc_AesSetKeyDirect uses wc_AesSetKey internally. Warning: In nearly all use cases ECB mode is considered to be less secure. Please avoid using ECB API’s directly whenever possible. More... | |
| WOLFSSL_API int | wc_AesGcmSetKey (Aes *aes, const byte *key, word32 len) |
| This function is used to set the key for AES GCM (Galois/Counter Mode). It initializes an AES object with the given key. It is only enabled if the configure option HAVE_AESGCM is enabled at compile time. More... | |
| WOLFSSL_API int | wc_AesGcmEncrypt (Aes *aes, byte *out, const byte *in, word32 sz, const byte *iv, word32 ivSz, byte *authTag, word32 authTagSz, const byte *authIn, word32 authInSz) |
| This function encrypts the input message, held in the buffer in, and stores the resulting cipher text in the output buffer out. It requires a new iv (initialization vector) for each call to encrypt. It also encodes the input authentication vector, authIn, into the authentication tag, authTag. More... | |
| WOLFSSL_API int | wc_AesGcmDecrypt (Aes *aes, byte *out, const byte *in, word32 sz, const byte *iv, word32 ivSz, const byte *authTag, word32 authTagSz, const byte *authIn, word32 authInSz) |
| This function decrypts the input cipher text, held in the buffer in, and stores the resulting message text in the output buffer out. It also checks the input authentication vector, authIn, against the supplied authentication tag, authTag. More... | |
| WOLFSSL_API int | wc_GmacSetKey (Gmac *gmac, const byte *key, word32 len) |
| This function initializes and sets the key for a GMAC object to be used for Galois Message Authentication. More... | |
| WOLFSSL_API int | wc_GmacUpdate (Gmac *gmac, const byte *iv, word32 ivSz, const byte *authIn, word32 authInSz, byte *authTag, word32 authTagSz) |
| This function generates the Gmac hash of the authIn input and stores the result in the authTag buffer. After running wc_GmacUpdate, one should compare the generated authTag to a known authentication tag to verify the authenticity of a message. More... | |
| WOLFSSL_API int | wc_AesCcmSetKey (Aes *aes, const byte *key, word32 keySz) |
| This function sets the key for an AES object using CCM (Counter with CBC-MAC). It takes a pointer to an AES structure and initializes it with supplied key. More... | |
| WOLFSSL_API int | wc_AesCcmEncrypt (Aes *aes, byte *out, const byte *in, word32 inSz, const byte *nonce, word32 nonceSz, byte *authTag, word32 authTagSz, const byte *authIn, word32 authInSz) |
| This function encrypts the input message, in, into the output buffer, out, using CCM (Counter with CBC-MAC). It subsequently calculates and stores the authorization tag, authTag, from the authIn input. More... | |
| WOLFSSL_API int | wc_AesCcmDecrypt (Aes *aes, byte *out, const byte *in, word32 inSz, const byte *nonce, word32 nonceSz, const byte *authTag, word32 authTagSz, const byte *authIn, word32 authInSz) |
| This function decrypts the input cipher text, in, into the output buffer, out, using CCM (Counter with CBC-MAC). It subsequently calculates the authorization tag, authTag, from the authIn input. If the authorization tag is invalid, it sets the output buffer to zero and returns the error: AES_CCM_AUTH_E. More... | |
| WOLFSSL_API int | wc_AesXtsSetKey (XtsAes *aes, const byte *key, word32 len, int dir, void *heap, int devId) |
| This is to help with setting keys to correct encrypt or decrypt type. It is up to user to call wc_AesXtsFree on aes key when done. More... | |
| WOLFSSL_API int | wc_AesXtsEncryptSector (XtsAes *aes, byte *out, const byte *in, word32 sz, word64 sector) |
| Same process as wc_AesXtsEncrypt but uses a word64 type as the tweak value instead of a byte array. This just converts the word64 to a byte array and calls wc_AesXtsEncrypt. More... | |
| WOLFSSL_API int | wc_AesXtsDecryptSector (XtsAes *aes, byte *out, const byte *in, word32 sz, word64 sector) |
| Same process as wc_AesXtsDecrypt but uses a word64 type as the tweak value instead of a byte array. This just converts the word64 to a byte array. More... | |
| WOLFSSL_API int | wc_AesXtsEncrypt (XtsAes *aes, byte *out, const byte *in, word32 sz, const byte *i, word32 iSz) |
| AES with XTS mode. (XTS) XEX encryption with Tweak and cipher text Stealing. More... | |
| WOLFSSL_API int | wc_AesXtsDecrypt (XtsAes *aes, byte *out, const byte *in, word32 sz, const byte *i, word32 iSz) |
| Same process as encryption but Aes key is AES_DECRYPTION type. More... | |
| WOLFSSL_API int | wc_AesXtsFree (XtsAes *aes) |
| This is to free up any resources used by the XtsAes structure. More... | |
| WOLFSSL_API int | wc_AesInit (Aes *, void *, int) |
| Initialize Aes structure. Sets heap hint to be used and ID for use with async hardware. More... | |
| WOLFSSL_API int | wc_AesCbcDecryptWithKey (byte *out, const byte *in, word32 inSz, const byte *key, word32 keySz, const byte *iv) |
| Decrypts a cipher from the input buffer in, and places the resulting plain text in the output buffer out using cipher block chaining with AES. This function does not require an AES structure to be initialized. Instead, it takes in a key and an iv (initialization vector) and uses these to initialize an AES object and then decrypt the cipher text. More... | |
| int wc_AesCbcDecrypt | ( | Aes * | aes, |
| byte * | out, | ||
| const byte * | in, | ||
| word32 | sz | ||
| ) |
Decrypts a cipher from the input buffer in, and places the resulting plain text in the output buffer out using cipher block chaining with AES. This function requires that the AES structure has been initialized by calling AesSetKey before a message is able to be decrypted. This function assumes that the original message was AES block length aligned. This differs from the OpenSSL AES-CBC methods which do not require alignment as it adds PKCS#7 padding automatically. To make the wolfSSL function and equivalent OpenSSL functions interoperate, one should specify the -nopad option in the OpenSSL command line function so that it behaves like the wolfSSL AesCbcEncrypt method and does not create errors during decryption.
| aes | pointer to the AES object used to decrypt data. |
| out | pointer to the output buffer in which to store the plain text of the decrypted message. |
| in | pointer to the input buffer containing cipher text to be decrypted. |
| sz | size of input message. |
Example
| WOLFSSL_API int wc_AesCbcDecryptWithKey | ( | byte * | out, |
| const byte * | in, | ||
| word32 | inSz, | ||
| const byte * | key, | ||
| word32 | keySz, | ||
| const byte * | iv | ||
| ) |
Decrypts a cipher from the input buffer in, and places the resulting plain text in the output buffer out using cipher block chaining with AES. This function does not require an AES structure to be initialized. Instead, it takes in a key and an iv (initialization vector) and uses these to initialize an AES object and then decrypt the cipher text.
| out | pointer to the output buffer in which to store the plain text of the decrypted message |
| in | pointer to the input buffer containing cipher text to be decrypted |
| inSz | size of input message |
| key | 16, 24, or 32 byte secret key for decryption |
| keySz | size of key used for decryption |
Example
| int wc_AesCbcEncrypt | ( | Aes * | aes, |
| byte * | out, | ||
| const byte * | in, | ||
| word32 | sz | ||
| ) |
Encrypts a plaintext message from the input buffer in, and places the resulting cipher text in the output buffer out using cipher block chaining with AES. This function requires that the AES object has been initialized by calling AesSetKey before a message is able to be encrypted. This function assumes that the input message is AES block length aligned. PKCS#7 style padding should be added beforehand. This differs from the OpenSSL AES-CBC methods which add the padding for you. To make the wolfSSL function and equivalent OpenSSL functions interoperate, one should specify the -nopad option in the OpenSSL command line function so that it behaves like the wolfSSL AesCbcEncrypt method and does not add extra padding during encryption.
| aes | pointer to the AES object used to encrypt data |
| out | pointer to the output buffer in which to store the ciphertext of the encrypted message |
| in | pointer to the input buffer containing message to be encrypted |
| sz | size of input message |
Example
| int wc_AesCcmDecrypt | ( | Aes * | aes, |
| byte * | out, | ||
| const byte * | in, | ||
| word32 | inSz, | ||
| const byte * | nonce, | ||
| word32 | nonceSz, | ||
| const byte * | authTag, | ||
| word32 | authTagSz, | ||
| const byte * | authIn, | ||
| word32 | authInSz | ||
| ) |
This function decrypts the input cipher text, in, into the output buffer, out, using CCM (Counter with CBC-MAC). It subsequently calculates the authorization tag, authTag, from the authIn input. If the authorization tag is invalid, it sets the output buffer to zero and returns the error: AES_CCM_AUTH_E.
| aes | pointer to the AES object used to encrypt data |
| out | pointer to the output buffer in which to store the cipher text |
| in | pointer to the input buffer holding the message to encrypt |
| sz | length of the input cipher text to decrypt |
| nonce | pointer to the buffer containing the nonce (number only used once) |
| nonceSz | length of the nonce |
| authTag | pointer to the buffer in which to store the authentication tag |
| authTagSz | length of the desired authentication tag |
| authIn | pointer to the buffer containing the input authentication vector |
| authInSz | length of the input authentication vector |
Example
| int wc_AesCcmEncrypt | ( | Aes * | aes, |
| byte * | out, | ||
| const byte * | in, | ||
| word32 | inSz, | ||
| const byte * | nonce, | ||
| word32 | nonceSz, | ||
| byte * | authTag, | ||
| word32 | authTagSz, | ||
| const byte * | authIn, | ||
| word32 | authInSz | ||
| ) |
This function encrypts the input message, in, into the output buffer, out, using CCM (Counter with CBC-MAC). It subsequently calculates and stores the authorization tag, authTag, from the authIn input.
| aes | pointer to the AES object used to encrypt data |
| out | pointer to the output buffer in which to store the cipher text |
| in | pointer to the input buffer holding the message to encrypt |
| sz | length of the input message to encrypt |
| nonce | pointer to the buffer containing the nonce (number only used once) |
| nonceSz | length of the nonce |
| authTag | pointer to the buffer in which to store the authentication tag |
| authTagSz | length of the desired authentication tag |
| authIn | pointer to the buffer containing the input authentication vector |
| authInSz | length of the input authentication vector |
Example
| int wc_AesCcmSetKey | ( | Aes * | aes, |
| const byte * | key, | ||
| word32 | keySz | ||
| ) |
This function sets the key for an AES object using CCM (Counter with CBC-MAC). It takes a pointer to an AES structure and initializes it with supplied key.
| aes | aes structure in which to store the supplied key |
| key | 16, 24, or 32 byte secret key for encryption and decryption |
| keySz | size of the supplied key |
Example
| int wc_AesCtrEncrypt | ( | Aes * | aes, |
| byte * | out, | ||
| const byte * | in, | ||
| word32 | sz | ||
| ) |
Encrypts/Decrypts a message from the input buffer in, and places the resulting cipher text in the output buffer out using CTR mode with AES. This function is only enabled if WOLFSSL_AES_COUNTER is enabled at compile time. The AES structure should be initialized through AesSetKey before calling this function. Note that this function is used for both decryption and encryption. NOTE: Regarding using same API for encryption and decryption. User should differentiate between Aes structures for encrypt/decrypt.
| aes | pointer to the AES object used to decrypt data |
| out | pointer to the output buffer in which to store the cipher text of the encrypted message |
| in | pointer to the input buffer containing plain text to be encrypted |
| sz | size of the input plain text |
Example
| void wc_AesDecryptDirect | ( | Aes * | aes, |
| byte * | out, | ||
| const byte * | in | ||
| ) |
This function is a one-block decrypt of the input block, in, into the output block, out. It uses the key and iv (initialization vector) of the provided AES structure, which should be initialized with wc_AesSetKey before calling this function. It is only enabled if the configure option WOLFSSL_AES_DIRECT is enabled, and there is support for direct AES encryption on the system in question. Warning: In nearly all use cases ECB mode is considered to be less secure. Please avoid using ECB API’s directly whenever possible.
| aes | pointer to the AES object used to encrypt data |
| out | pointer to the output buffer in which to store the plain text of the decrypted cipher text |
| in | pointer to the input buffer containing cipher text to be decrypted |
Example
| void wc_AesEncryptDirect | ( | Aes * | aes, |
| byte * | out, | ||
| const byte * | in | ||
| ) |
This function is a one-block encrypt of the input block, in, into the output block, out. It uses the key and iv (initialization vector) of the provided AES structure, which should be initialized with wc_AesSetKey before calling this function. It is only enabled if the configure option WOLFSSL_AES_DIRECT is enabled. Warning: In nearly all use cases ECB mode is considered to be less secure. Please avoid using ECB API’s directly whenever possible.
| aes | pointer to the AES object used to encrypt data |
| out | pointer to the output buffer in which to store the cipher text of the encrypted message |
| in | pointer to the input buffer containing plain text to be encrypted |
Example
| int wc_AesGcmDecrypt | ( | Aes * | aes, |
| byte * | out, | ||
| const byte * | in, | ||
| word32 | sz, | ||
| const byte * | iv, | ||
| word32 | ivSz, | ||
| const byte * | authTag, | ||
| word32 | authTagSz, | ||
| const byte * | authIn, | ||
| word32 | authInSz | ||
| ) |
This function decrypts the input cipher text, held in the buffer in, and stores the resulting message text in the output buffer out. It also checks the input authentication vector, authIn, against the supplied authentication tag, authTag.
| aes | pointer to the AES object used to encrypt data |
| out | pointer to the output buffer in which to store the message text |
| in | pointer to the input buffer holding the cipher text to decrypt |
| sz | length of the cipher text to decrypt |
| iv | pointer to the buffer containing the initialization vector |
| ivSz | length of the initialization vector |
| authTag | pointer to the buffer containing the authentication tag |
| authTagSz | length of the desired authentication tag |
| authIn | pointer to the buffer containing the input authentication vector |
| authInSz | length of the input authentication vector |
Example
| int wc_AesGcmEncrypt | ( | Aes * | aes, |
| byte * | out, | ||
| const byte * | in, | ||
| word32 | sz, | ||
| const byte * | iv, | ||
| word32 | ivSz, | ||
| byte * | authTag, | ||
| word32 | authTagSz, | ||
| const byte * | authIn, | ||
| word32 | authInSz | ||
| ) |
This function encrypts the input message, held in the buffer in, and stores the resulting cipher text in the output buffer out. It requires a new iv (initialization vector) for each call to encrypt. It also encodes the input authentication vector, authIn, into the authentication tag, authTag.
| aes | - pointer to the AES object used to encrypt data |
| out | pointer to the output buffer in which to store the cipher text |
| in | pointer to the input buffer holding the message to encrypt |
| sz | length of the input message to encrypt |
| iv | pointer to the buffer containing the initialization vector |
| ivSz | length of the initialization vector |
| authTag | pointer to the buffer in which to store the authentication tag |
| authTagSz | length of the desired authentication tag |
| authIn | pointer to the buffer containing the input authentication vector |
| authInSz | length of the input authentication vector |
Example
| int wc_AesGcmSetKey | ( | Aes * | aes, |
| const byte * | key, | ||
| word32 | len | ||
| ) |
This function is used to set the key for AES GCM (Galois/Counter Mode). It initializes an AES object with the given key. It is only enabled if the configure option HAVE_AESGCM is enabled at compile time.
| aes | pointer to the AES object used to encrypt data |
| key | 16, 24, or 32 byte secret key for encryption and decryption |
| len | length of the key passed in |
Example
| int wc_AesInit | ( | Aes * | aes, |
| void * | heap, | ||
| int | devId | ||
| ) |
Initialize Aes structure. Sets heap hint to be used and ID for use with async hardware.
| aes | aes structure in to initialize |
| heap | heap hint to use for malloc / free if needed |
| devId | ID to use with async hardware |
Example
| int wc_AesSetIV | ( | Aes * | aes, |
| const byte * | iv | ||
| ) |
This function sets the initialization vector for a particular AES object. The AES object should be initialized before calling this function.
| aes | pointer to the AES structure on which to set the initialization vector |
| iv | initialization vector used to initialize the AES structure. If the value is NULL, the default action initializes the iv to 0. |
Example
| int wc_AesSetKey | ( | Aes * | aes, |
| const byte * | key, | ||
| word32 | len, | ||
| const byte * | iv, | ||
| int | dir | ||
| ) |
This function initializes an AES structure by setting the key and then setting the initialization vector.
| aes | pointer to the AES structure to modify |
| key | 16, 24, or 32 byte secret key for encryption and decryption |
| len | length of the key passed in |
| iv | pointer to the initialization vector used to initialize the key |
| dir | Cipher direction. Set AES_ENCRYPTION to encrypt, or AES_DECRYPTION to decrypt. |
Example
| int wc_AesSetKeyDirect | ( | Aes * | aes, |
| const byte * | key, | ||
| word32 | len, | ||
| const byte * | iv, | ||
| int | dir | ||
| ) |
This function is used to set the AES keys for CTR mode with AES. It initializes an AES object with the given key, iv (initialization vector), and encryption dir (direction). It is only enabled if the configure option WOLFSSL_AES_DIRECT is enabled. Currently wc_AesSetKeyDirect uses wc_AesSetKey internally. Warning: In nearly all use cases ECB mode is considered to be less secure. Please avoid using ECB API’s directly whenever possible.
| aes | pointer to the AES object used to encrypt data |
| key | 16, 24, or 32 byte secret key for encryption and decryption |
| len | length of the key passed in |
| iv | initialization vector used to initialize the key |
| dir | Cipher direction. Set AES_ENCRYPTION to encrypt, or AES_DECRYPTION to decrypt. (See enum in wolfssl/wolfcrypt/aes.h) (NOTE: If using wc_AesSetKeyDirect with Aes Counter mode (Stream cipher) only use AES_ENCRYPTION for both encrypting and decrypting) |
Example
| WOLFSSL_API int wc_AesXtsDecrypt | ( | XtsAes * | aes, |
| byte * | out, | ||
| const byte * | in, | ||
| word32 | sz, | ||
| const byte * | i, | ||
| word32 | iSz | ||
| ) |
Same process as encryption but Aes key is AES_DECRYPTION type.
| aes | AES keys to use for block encrypt/decrypt |
| out | output buffer to hold plain text |
| in | input cipher text buffer to decrypt |
| sz | size of both out and in buffers |
| i | value to use for tweak |
| iSz | size of i buffer, should always be AES_BLOCK_SIZE but having this input adds a sanity check on how the user calls the function. |
Example
| WOLFSSL_API int wc_AesXtsDecryptSector | ( | XtsAes * | aes, |
| byte * | out, | ||
| const byte * | in, | ||
| word32 | sz, | ||
| word64 | sector | ||
| ) |
Same process as wc_AesXtsDecrypt but uses a word64 type as the tweak value instead of a byte array. This just converts the word64 to a byte array.
| aes | AES keys to use for block encrypt/decrypt |
| out | output buffer to hold plain text |
| in | input cipher text buffer to decrypt |
| sz | size of both out and in buffers |
| sector | value to use for tweak |
Example
| WOLFSSL_API int wc_AesXtsEncrypt | ( | XtsAes * | aes, |
| byte * | out, | ||
| const byte * | in, | ||
| word32 | sz, | ||
| const byte * | i, | ||
| word32 | iSz | ||
| ) |
AES with XTS mode. (XTS) XEX encryption with Tweak and cipher text Stealing.
| aes | AES keys to use for block encrypt/decrypt |
| out | output buffer to hold cipher text |
| in | input plain text buffer to encrypt |
| sz | size of both out and in buffers |
| i | value to use for tweak |
| iSz | size of i buffer, should always be AES_BLOCK_SIZE but having this input adds a sanity check on how the user calls the function. |
Example
| WOLFSSL_API int wc_AesXtsEncryptSector | ( | XtsAes * | aes, |
| byte * | out, | ||
| const byte * | in, | ||
| word32 | sz, | ||
| word64 | sector | ||
| ) |
Same process as wc_AesXtsEncrypt but uses a word64 type as the tweak value instead of a byte array. This just converts the word64 to a byte array and calls wc_AesXtsEncrypt.
| aes | AES keys to use for block encrypt/decrypt |
| out | output buffer to hold cipher text |
| in | input plain text buffer to encrypt |
| sz | size of both out and in buffers |
| sector | value to use for tweak |
Example
| WOLFSSL_API int wc_AesXtsFree | ( | XtsAes * | aes | ) |
This is to free up any resources used by the XtsAes structure.
| aes | AES keys to free |
Example
| WOLFSSL_API int wc_AesXtsSetKey | ( | XtsAes * | aes, |
| const byte * | key, | ||
| word32 | len, | ||
| int | dir, | ||
| void * | heap, | ||
| int | devId | ||
| ) |
This is to help with setting keys to correct encrypt or decrypt type. It is up to user to call wc_AesXtsFree on aes key when done.
| aes | AES keys for encrypt/decrypt process |
| key | buffer holding aes key | tweak key |
| len | length of key buffer in bytes. Should be twice that of key size. i.e. 32 for a 16 byte key. |
| dir | direction, either AES_ENCRYPTION or AES_DECRYPTION |
| heap | heap hint to use for memory. Can be NULL |
| devId | id to use with async crypto. Can be 0 |
Example
| WOLFSSL_API int wc_GmacSetKey | ( | Gmac * | gmac, |
| const byte * | key, | ||
| word32 | len | ||
| ) |
This function initializes and sets the key for a GMAC object to be used for Galois Message Authentication.
| gmac | pointer to the gmac object used for authentication |
| key | 16, 24, or 32 byte secret key for authentication |
| len | length of the key |
Example
| WOLFSSL_API int wc_GmacUpdate | ( | Gmac * | gmac, |
| const byte * | iv, | ||
| word32 | ivSz, | ||
| const byte * | authIn, | ||
| word32 | authInSz, | ||
| byte * | authTag, | ||
| word32 | authTagSz | ||
| ) |
This function generates the Gmac hash of the authIn input and stores the result in the authTag buffer. After running wc_GmacUpdate, one should compare the generated authTag to a known authentication tag to verify the authenticity of a message.
| gmac | pointer to the gmac object used for authentication |
| iv | initialization vector used for the hash |
| ivSz | size of the initialization vector used |
| authIn | pointer to the buffer containing the authentication vector to verify |
| authInSz | size of the authentication vector |
| authTag | pointer to the output buffer in which to store the Gmac hash |
| authTagSz | the size of the output buffer used to store the Gmac hash |
Example