123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- /*!
- \ingroup AES
- \brief 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.
- \return 0 On successfully decrypting message
- \return BAD_ALIGN_E Returned on block align error
- \return BAD_FUNC_ARG Returned if key length is invalid or AES object
- is null during AesSetIV
- \return MEMORY_E Returned if WOLFSSL_SMALL_STACK is enabled and
- XMALLOC fails to instantiate an AES object.
- \param out pointer to the output buffer in which to store the plain
- text of the decrypted message
- \param in pointer to the input buffer containing cipher text to be
- decrypted
- \param inSz size of input message
- \param key 16, 24, or 32 byte secret key for decryption
- \param keySz size of key used for decryption
- _Example_
- \code
- int ret = 0;
- byte key[] = { some 16, 24, or 32 byte key };
- byte iv[] = { some 16 byte iv };
- byte cipher[AES_BLOCK_SIZE * n]; //n being a positive integer making
- cipher some multiple of 16 bytes
- // fill cipher with cipher text
- byte plain [AES_BLOCK_SIZE * n];
- if ((ret = wc_AesCbcDecryptWithKey(plain, cipher, AES_BLOCK_SIZE, key,
- AES_BLOCK_SIZE, iv)) != 0 ) {
- // Decrypt Error
- }
- \endcode
- \sa wc_AesSetKey
- \sa wc_AesSetIV
- \sa wc_AesCbcEncrypt
- \sa wc_AesCbcDecrypt
- */
- WOLFSSL_API int wc_AesCbcDecryptWithKey(byte* out, const byte* in, word32 inSz,
- const byte* key, word32 keySz,
- const byte* iv);
- /*!
- \ingroup 3DES
- \brief This function decrypts the input ciphertext, in, and stores the
- resulting plaintext in the output buffer, out. It uses DES encryption
- with cipher block chaining (CBC) mode. This function is a substitute
- for wc_Des_CbcDecrypt, allowing the user to decrypt a message without
- directly instantiating a Des structure.
- \return 0 Returned upon successfully decrypting the given ciphertext
- \return MEMORY_E Returned if there is an error allocating space for a
- Des structure
- \param out pointer to the buffer in which to store the decrypted plaintext
- \param in pointer to the input buffer containing the encrypted ciphertext
- \param sz length of the ciphertext to decrypt
- \param key pointer to the buffer containing the 8 byte key to use for
- decryption
- \param iv pointer to the buffer containing the 8 byte iv to use for
- decryption. If no iv is provided, the iv defaults to 0
- _Example_
- \code
- int ret;
- byte key[] = { // initialize with 8 byte key };
- byte iv[] = { // initialize with 8 byte iv };
- byte cipher[] = { // initialize with ciphertext };
- byte decoded[sizeof(cipher)];
- if ( wc_Des_CbcDecryptWithKey(decoded, cipher, sizeof(cipher), key,
- iv) != 0) {
- // error decrypting message
- }
- \endcode
- \sa wc_Des_CbcDecrypt
- */
- WOLFSSL_API int wc_Des_CbcDecryptWithKey(byte* out,
- const byte* in, word32 sz,
- const byte* key, const byte* iv);
- /*!
- \ingroup 3DES
- \brief This function encrypts the input plaintext, in, and stores the
- resulting ciphertext in the output buffer, out. It uses DES encryption
- with cipher block chaining (CBC) mode. This function is a substitute
- for wc_Des_CbcEncrypt, allowing the user to encrypt a message without
- directly instantiating a Des structure.
- \return 0 Returned after successfully encrypting data.
- \return MEMORY_E Returned if there's an error allocating memory for a
- Des structure.
- \return <0 Returned on any error during encryption.
- \param out Final encrypted data
- \param in Data to be encrypted, must be padded to Des block size.
- \param sz Size of input buffer.
- \param key Pointer to the key to use for encryption.
- \param iv Initialization vector
- _Example_
- \code
- byte key[] = { // initialize with 8 byte key };
- byte iv[] = { // initialize with 8 byte iv };
- byte in[] = { // Initialize with plaintext };
- byte out[sizeof(in)];
- if ( wc_Des_CbcEncryptWithKey(&out, in, sizeof(in), key, iv) != 0)
- {
- // error encrypting message
- }
- \endcode
- \sa wc_Des_CbcDecryptWithKey
- \sa wc_Des_CbcEncrypt
- */
- WOLFSSL_API int wc_Des_CbcEncryptWithKey(byte* out,
- const byte* in, word32 sz,
- const byte* key, const byte* iv);
- /*!
- \ingroup 3DES
- \brief This function encrypts the input plaintext, in, and stores
- the resulting ciphertext in the output buffer, out. It uses Triple
- DES (3DES) encryption with cipher block chaining (CBC) mode. This
- function is a substitute for wc_Des3_CbcEncrypt, allowing the user
- to encrypt a message without directly instantiating a Des3 structure.
- \return 0 Returned after successfully encrypting data.
- \return MEMORY_E Returned if there's an error allocating memory for
- a Des structure.
- \return <0 Returned on any error during encryption.
- \parma out Final encrypted data
- \param in Data to be encrypted, must be padded to Des block size.
- \param sz Size of input buffer.
- \param key Pointer to the key to use for encryption.
- \param iv Initialization vector
- _Example_
- \code
- byte key[] = { // initialize with 8 byte key };
- byte iv[] = { // initialize with 8 byte iv };
- byte in[] = { // Initialize with plaintext };
- byte out[sizeof(in)];
- if ( wc_Des3_CbcEncryptWithKey(&out, in, sizeof(in), key, iv) != 0)
- {
- // error encrypting message
- }
- \endcode
- \sa wc_Des3_CbcDecryptWithKey
- \sa wc_Des_CbcEncryptWithKey
- \sa wc_Des_CbcDecryptWithKey
- */
- WOLFSSL_API int wc_Des3_CbcEncryptWithKey(byte* out,
- const byte* in, word32 sz,
- const byte* key, const byte* iv);
- /*!
- \ingroup 3DES
- \brief This function decrypts the input ciphertext, in, and stores
- the resulting plaintext in the output buffer, out. It uses Triple
- Des (3DES) encryption with cipher block chaining (CBC) mode. This
- function is a substitute for wc_Des3_CbcDecrypt, allowing the user
- to decrypt a message without directly instantiating a Des3 structure.
- \return 0 Returned upon successfully decrypting the given ciphertext
- \return MEMORY_E Returned if there is an error allocating space for
- a Des structure
- \param out pointer to the buffer in which to store the decrypted plaintext
- \param in pointer to the input buffer containing the encrypted ciphertext
- \param sz length of the ciphertext to decrypt
- \param key pointer to the buffer containing the 24 byte key to use
- for decryption
- \param iv pointer to the buffer containing the 8 byte iv to use for
- decryption. If no iv is provided, the iv defaults to 0
- _Example_
- \code
- int ret;
- byte key[] = { // initialize with 24 byte key };
- byte iv[] = { // initialize with 8 byte iv };
- byte cipher[] = { // initialize with ciphertext };
- byte decoded[sizeof(cipher)];
- if ( wc_Des3_CbcDecryptWithKey(decoded, cipher, sizeof(cipher),
- key, iv) != 0) {
- // error decrypting message
- }
- \endcode
- \sa wc_Des3_CbcDecrypt
- */
- WOLFSSL_API int wc_Des3_CbcDecryptWithKey(byte* out,
- const byte* in, word32 sz,
- const byte* key, const byte* iv);
|