mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 18:57:27 +02:00
Merge pull request #7549 from douzzer/20240516-wc_AesXtsEnDecryptFinal
20240516-wc_AesXtsEnDecryptFinal
This commit is contained in:
@ -945,9 +945,14 @@ static int km_AesXtsEncrypt(struct skcipher_request *req)
|
|||||||
if (nbytes < walk.total)
|
if (nbytes < walk.total)
|
||||||
nbytes &= ~(AES_BLOCK_SIZE - 1);
|
nbytes &= ~(AES_BLOCK_SIZE - 1);
|
||||||
|
|
||||||
err = wc_AesXtsEncryptUpdate(ctx->aesXts, walk.dst.virt.addr,
|
if (nbytes & ((unsigned int)AES_BLOCK_SIZE - 1U))
|
||||||
walk.src.virt.addr, nbytes,
|
err = wc_AesXtsEncryptFinal(ctx->aesXts, walk.dst.virt.addr,
|
||||||
walk.iv);
|
walk.src.virt.addr, nbytes,
|
||||||
|
walk.iv);
|
||||||
|
else
|
||||||
|
err = wc_AesXtsEncryptUpdate(ctx->aesXts, walk.dst.virt.addr,
|
||||||
|
walk.src.virt.addr, nbytes,
|
||||||
|
walk.iv);
|
||||||
|
|
||||||
if (unlikely(err)) {
|
if (unlikely(err)) {
|
||||||
pr_err("%s: wc_AesXtsEncryptUpdate failed: %d\n",
|
pr_err("%s: wc_AesXtsEncryptUpdate failed: %d\n",
|
||||||
@ -979,12 +984,12 @@ static int km_AesXtsEncrypt(struct skcipher_request *req)
|
|||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
err = wc_AesXtsEncryptUpdate(ctx->aesXts, walk.dst.virt.addr,
|
err = wc_AesXtsEncryptFinal(ctx->aesXts, walk.dst.virt.addr,
|
||||||
walk.src.virt.addr, walk.nbytes,
|
walk.src.virt.addr, walk.nbytes,
|
||||||
walk.iv);
|
walk.iv);
|
||||||
|
|
||||||
if (unlikely(err)) {
|
if (unlikely(err)) {
|
||||||
pr_err("%s: wc_AesXtsEncryptUpdate failed: %d\n",
|
pr_err("%s: wc_AesXtsEncryptFinal failed: %d\n",
|
||||||
crypto_tfm_alg_driver_name(crypto_skcipher_tfm(tfm)), err);
|
crypto_tfm_alg_driver_name(crypto_skcipher_tfm(tfm)), err);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
@ -1071,9 +1076,14 @@ static int km_AesXtsDecrypt(struct skcipher_request *req)
|
|||||||
if (nbytes < walk.total)
|
if (nbytes < walk.total)
|
||||||
nbytes &= ~(AES_BLOCK_SIZE - 1);
|
nbytes &= ~(AES_BLOCK_SIZE - 1);
|
||||||
|
|
||||||
err = wc_AesXtsDecryptUpdate(ctx->aesXts, walk.dst.virt.addr,
|
if (nbytes & ((unsigned int)AES_BLOCK_SIZE - 1U))
|
||||||
walk.src.virt.addr, nbytes,
|
err = wc_AesXtsDecryptFinal(ctx->aesXts, walk.dst.virt.addr,
|
||||||
walk.iv);
|
walk.src.virt.addr, nbytes,
|
||||||
|
walk.iv);
|
||||||
|
else
|
||||||
|
err = wc_AesXtsDecryptUpdate(ctx->aesXts, walk.dst.virt.addr,
|
||||||
|
walk.src.virt.addr, nbytes,
|
||||||
|
walk.iv);
|
||||||
|
|
||||||
if (unlikely(err)) {
|
if (unlikely(err)) {
|
||||||
pr_err("%s: wc_AesXtsDecryptUpdate failed: %d\n",
|
pr_err("%s: wc_AesXtsDecryptUpdate failed: %d\n",
|
||||||
@ -1105,12 +1115,12 @@ static int km_AesXtsDecrypt(struct skcipher_request *req)
|
|||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
err = wc_AesXtsDecryptUpdate(ctx->aesXts, walk.dst.virt.addr,
|
err = wc_AesXtsDecryptFinal(ctx->aesXts, walk.dst.virt.addr,
|
||||||
walk.src.virt.addr, walk.nbytes,
|
walk.src.virt.addr, walk.nbytes,
|
||||||
walk.iv);
|
walk.iv);
|
||||||
|
|
||||||
if (unlikely(err)) {
|
if (unlikely(err)) {
|
||||||
pr_err("%s: wc_AesXtsDecryptUpdate failed: %d\n",
|
pr_err("%s: wc_AesXtsDecryptFinal failed: %d\n",
|
||||||
crypto_tfm_alg_driver_name(crypto_skcipher_tfm(tfm)), err);
|
crypto_tfm_alg_driver_name(crypto_skcipher_tfm(tfm)), err);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
@ -2029,7 +2039,7 @@ static int aes_xts_128_test(void)
|
|||||||
ret = wc_AesXtsEncryptUpdate(aes, buf, p2, AES_BLOCK_SIZE, iv);
|
ret = wc_AesXtsEncryptUpdate(aes, buf, p2, AES_BLOCK_SIZE, iv);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
goto out;
|
goto out;
|
||||||
ret = wc_AesXtsEncryptUpdate(aes, buf + AES_BLOCK_SIZE,
|
ret = wc_AesXtsEncryptFinal(aes, buf + AES_BLOCK_SIZE,
|
||||||
p2 + AES_BLOCK_SIZE,
|
p2 + AES_BLOCK_SIZE,
|
||||||
sizeof(p2) - AES_BLOCK_SIZE, iv);
|
sizeof(p2) - AES_BLOCK_SIZE, iv);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
@ -2214,7 +2224,10 @@ static int aes_xts_128_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
goto out;
|
goto out;
|
||||||
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
||||||
ret = wc_AesXtsEncryptUpdate(aes, large_input + k, large_input + k, (j - k) < AES_BLOCK_SIZE*2 ? j - k : AES_BLOCK_SIZE, iv);
|
if ((j - k) < AES_BLOCK_SIZE*2)
|
||||||
|
ret = wc_AesXtsEncryptFinal(aes, large_input + k, large_input + k, j - k, iv);
|
||||||
|
else
|
||||||
|
ret = wc_AesXtsEncryptUpdate(aes, large_input + k, large_input + k, AES_BLOCK_SIZE, iv);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
goto out;
|
goto out;
|
||||||
if ((j - k) < AES_BLOCK_SIZE*2)
|
if ((j - k) < AES_BLOCK_SIZE*2)
|
||||||
@ -2252,7 +2265,10 @@ static int aes_xts_128_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
goto out;
|
goto out;
|
||||||
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
||||||
ret = wc_AesXtsDecryptUpdate(aes, large_input + k, large_input + k, (j - k) < AES_BLOCK_SIZE*2 ? j - k : AES_BLOCK_SIZE, iv);
|
if ((j - k) < AES_BLOCK_SIZE*2)
|
||||||
|
ret = wc_AesXtsDecryptFinal(aes, large_input + k, large_input + k, j - k, iv);
|
||||||
|
else
|
||||||
|
ret = wc_AesXtsDecryptUpdate(aes, large_input + k, large_input + k, AES_BLOCK_SIZE, iv);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
goto out;
|
goto out;
|
||||||
if ((j - k) < AES_BLOCK_SIZE*2)
|
if ((j - k) < AES_BLOCK_SIZE*2)
|
||||||
@ -2611,7 +2627,7 @@ static int aes_xts_256_test(void)
|
|||||||
ret = wc_AesXtsEncryptUpdate(aes, buf, p2, AES_BLOCK_SIZE, iv);
|
ret = wc_AesXtsEncryptUpdate(aes, buf, p2, AES_BLOCK_SIZE, iv);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
goto out;
|
goto out;
|
||||||
ret = wc_AesXtsEncryptUpdate(aes, buf + AES_BLOCK_SIZE,
|
ret = wc_AesXtsEncryptFinal(aes, buf + AES_BLOCK_SIZE,
|
||||||
p2 + AES_BLOCK_SIZE,
|
p2 + AES_BLOCK_SIZE,
|
||||||
sizeof(p2) - AES_BLOCK_SIZE, iv);
|
sizeof(p2) - AES_BLOCK_SIZE, iv);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
@ -2700,7 +2716,10 @@ static int aes_xts_256_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
goto out;
|
goto out;
|
||||||
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
||||||
ret = wc_AesXtsEncryptUpdate(aes, large_input + k, large_input + k, (j - k) < AES_BLOCK_SIZE*2 ? j - k : AES_BLOCK_SIZE, iv);
|
if ((j - k) < AES_BLOCK_SIZE*2)
|
||||||
|
ret = wc_AesXtsEncryptFinal(aes, large_input + k, large_input + k, j - k, iv);
|
||||||
|
else
|
||||||
|
ret = wc_AesXtsEncryptUpdate(aes, large_input + k, large_input + k, AES_BLOCK_SIZE, iv);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
goto out;
|
goto out;
|
||||||
if ((j - k) < AES_BLOCK_SIZE*2)
|
if ((j - k) < AES_BLOCK_SIZE*2)
|
||||||
@ -2738,7 +2757,10 @@ static int aes_xts_256_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
goto out;
|
goto out;
|
||||||
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
||||||
ret = wc_AesXtsDecryptUpdate(aes, large_input + k, large_input + k, (j - k) < AES_BLOCK_SIZE*2 ? j - k : AES_BLOCK_SIZE, iv);
|
if ((j - k) < AES_BLOCK_SIZE*2)
|
||||||
|
ret = wc_AesXtsDecryptFinal(aes, large_input + k, large_input + k, j - k, iv);
|
||||||
|
else
|
||||||
|
ret = wc_AesXtsDecryptUpdate(aes, large_input + k, large_input + k, AES_BLOCK_SIZE, iv);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
goto out;
|
goto out;
|
||||||
if ((j - k) < AES_BLOCK_SIZE*2)
|
if ((j - k) < AES_BLOCK_SIZE*2)
|
||||||
|
@ -12907,8 +12907,9 @@ int wc_AesXtsEncryptInit(XtsAes* xaes, byte* i, word32 iSz)
|
|||||||
|
|
||||||
/* Block-streaming AES-XTS
|
/* Block-streaming AES-XTS
|
||||||
*
|
*
|
||||||
* Note that sz must be greater than AES_BLOCK_SIZE in each call, and must be a
|
* Note that sz must be >= AES_BLOCK_SIZE in each call, and must be a multiple
|
||||||
* multiple of AES_BLOCK_SIZE in all but the final call.
|
* of AES_BLOCK_SIZE in each call to wc_AesXtsEncryptUpdate().
|
||||||
|
* wc_AesXtsEncryptFinal() can handle any length >= AES_BLOCK_SIZE.
|
||||||
*
|
*
|
||||||
* xaes AES keys to use for block encrypt/decrypt
|
* xaes AES keys to use for block encrypt/decrypt
|
||||||
* out output buffer to hold cipher text
|
* out output buffer to hold cipher text
|
||||||
@ -12920,7 +12921,7 @@ int wc_AesXtsEncryptInit(XtsAes* xaes, byte* i, word32 iSz)
|
|||||||
*
|
*
|
||||||
* returns 0 on success
|
* returns 0 on success
|
||||||
*/
|
*/
|
||||||
int wc_AesXtsEncryptUpdate(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
static int AesXtsEncryptUpdate(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
||||||
byte *i)
|
byte *i)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
@ -12975,6 +12976,29 @@ int wc_AesXtsEncryptUpdate(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int wc_AesXtsEncryptUpdate(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
||||||
|
byte *i)
|
||||||
|
{
|
||||||
|
if (sz & ((word32)AES_BLOCK_SIZE - 1U))
|
||||||
|
return BAD_FUNC_ARG;
|
||||||
|
return AesXtsEncryptUpdate(xaes, out, in, sz, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
int wc_AesXtsEncryptFinal(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
||||||
|
byte *i)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
if (sz > 0)
|
||||||
|
ret = AesXtsEncryptUpdate(xaes, out, in, sz, i);
|
||||||
|
else
|
||||||
|
ret = 0;
|
||||||
|
ForceZero(i, AES_BLOCK_SIZE);
|
||||||
|
#ifdef WOLFSSL_CHECK_MEM_ZERO
|
||||||
|
wc_MemZero_Check(i, AES_BLOCK_SIZE);
|
||||||
|
#endif
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* WOLFSSL_AESXTS_STREAM */
|
#endif /* WOLFSSL_AESXTS_STREAM */
|
||||||
|
|
||||||
|
|
||||||
@ -13284,8 +13308,9 @@ int wc_AesXtsDecryptInit(XtsAes* xaes, byte* i, word32 iSz)
|
|||||||
|
|
||||||
/* Block-streaming AES-XTS
|
/* Block-streaming AES-XTS
|
||||||
*
|
*
|
||||||
* Note that sz must be greater than AES_BLOCK_SIZE in each call, and must be a
|
* Note that sz must be >= AES_BLOCK_SIZE in each call, and must be a multiple
|
||||||
* multiple of AES_BLOCK_SIZE in all but the final call.
|
* of AES_BLOCK_SIZE in each call to wc_AesXtsDecryptUpdate().
|
||||||
|
* wc_AesXtsDecryptFinal() can handle any length >= AES_BLOCK_SIZE.
|
||||||
*
|
*
|
||||||
* xaes AES keys to use for block encrypt/decrypt
|
* xaes AES keys to use for block encrypt/decrypt
|
||||||
* out output buffer to hold plain text
|
* out output buffer to hold plain text
|
||||||
@ -13295,7 +13320,7 @@ int wc_AesXtsDecryptInit(XtsAes* xaes, byte* i, word32 iSz)
|
|||||||
*
|
*
|
||||||
* returns 0 on success
|
* returns 0 on success
|
||||||
*/
|
*/
|
||||||
int wc_AesXtsDecryptUpdate(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
static int AesXtsDecryptUpdate(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
||||||
byte *i)
|
byte *i)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
@ -13353,6 +13378,29 @@ int wc_AesXtsDecryptUpdate(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int wc_AesXtsDecryptUpdate(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
||||||
|
byte *i)
|
||||||
|
{
|
||||||
|
if (sz & ((word32)AES_BLOCK_SIZE - 1U))
|
||||||
|
return BAD_FUNC_ARG;
|
||||||
|
return AesXtsDecryptUpdate(xaes, out, in, sz, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
int wc_AesXtsDecryptFinal(XtsAes* xaes, byte* out, const byte* in, word32 sz,
|
||||||
|
byte *i)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
if (sz > 0)
|
||||||
|
ret = AesXtsDecryptUpdate(xaes, out, in, sz, i);
|
||||||
|
else
|
||||||
|
ret = 0;
|
||||||
|
ForceZero(i, AES_BLOCK_SIZE);
|
||||||
|
#ifdef WOLFSSL_CHECK_MEM_ZERO
|
||||||
|
wc_MemZero_Check(i, AES_BLOCK_SIZE);
|
||||||
|
#endif
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* WOLFSSL_AESXTS_STREAM */
|
#endif /* WOLFSSL_AESXTS_STREAM */
|
||||||
|
|
||||||
#endif /* !WOLFSSL_ARMASM || WOLFSSL_ARMASM_NO_HW_CRYPTO */
|
#endif /* !WOLFSSL_ARMASM || WOLFSSL_ARMASM_NO_HW_CRYPTO */
|
||||||
|
@ -10028,7 +10028,7 @@ static wc_test_ret_t aes_xts_128_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
ret = wc_AesXtsEncryptUpdate(aes, buf + AES_BLOCK_SIZE, p2 + AES_BLOCK_SIZE, sizeof(p2) - AES_BLOCK_SIZE, i_copy);
|
ret = wc_AesXtsEncryptFinal(aes, buf + AES_BLOCK_SIZE, p2 + AES_BLOCK_SIZE, sizeof(p2) - AES_BLOCK_SIZE, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -10084,6 +10084,13 @@ static wc_test_ret_t aes_xts_128_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
|
ret = wc_AesXtsEncryptFinal(aes, buf, NULL, 0, i_copy);
|
||||||
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
|
#endif
|
||||||
|
if (ret != 0)
|
||||||
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
if (XMEMCMP(c1, buf, sizeof(c1)))
|
if (XMEMCMP(c1, buf, sizeof(c1)))
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
||||||
#endif /* WOLFSSL_AESXTS_STREAM */
|
#endif /* WOLFSSL_AESXTS_STREAM */
|
||||||
@ -10123,7 +10130,14 @@ static wc_test_ret_t aes_xts_128_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
ret = wc_AesXtsEncryptUpdate(aes, buf, pp, sizeof(pp), i_copy);
|
ret = wc_AesXtsEncryptFinal(aes, buf, pp, sizeof(pp), i_copy);
|
||||||
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
|
#endif
|
||||||
|
if (ret != 0)
|
||||||
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
|
ret = wc_AesXtsEncryptFinal(aes, buf, NULL, 0, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -10177,7 +10191,7 @@ static wc_test_ret_t aes_xts_128_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
ret = wc_AesXtsDecryptUpdate(aes, buf, cipher, sizeof(pp), i_copy);
|
ret = wc_AesXtsDecryptFinal(aes, buf, cipher, sizeof(pp), i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -10232,7 +10246,7 @@ static wc_test_ret_t aes_xts_128_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
ret = wc_AesXtsDecryptUpdate(aes, buf, c1, sizeof(c1), i_copy);
|
ret = wc_AesXtsDecryptFinal(aes, buf, c1, sizeof(c1), i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -10329,7 +10343,7 @@ static wc_test_ret_t aes_xts_128_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
ret = wc_AesXtsEncryptUpdate(aes, buf + AES_BLOCK_SIZE, p3 + AES_BLOCK_SIZE, sizeof(p3) - AES_BLOCK_SIZE, i_copy);
|
ret = wc_AesXtsEncryptFinal(aes, buf + AES_BLOCK_SIZE, p3 + AES_BLOCK_SIZE, sizeof(p3) - AES_BLOCK_SIZE, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -10373,7 +10387,7 @@ static wc_test_ret_t aes_xts_128_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
ret = wc_AesXtsDecryptUpdate(aes, buf + AES_BLOCK_SIZE, c3 + AES_BLOCK_SIZE, sizeof(c3) - AES_BLOCK_SIZE, i_copy);
|
ret = wc_AesXtsDecryptFinal(aes, buf + AES_BLOCK_SIZE, c3 + AES_BLOCK_SIZE, sizeof(c3) - AES_BLOCK_SIZE, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -10457,7 +10471,10 @@ static wc_test_ret_t aes_xts_128_test(void)
|
|||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
||||||
ret = wc_AesXtsEncryptUpdate(aes, large_input + k, large_input + k, (j - k) < AES_BLOCK_SIZE*2 ? j - k : AES_BLOCK_SIZE, i_copy);
|
if ((j - k) < AES_BLOCK_SIZE*2)
|
||||||
|
ret = wc_AesXtsEncryptFinal(aes, large_input + k, large_input + k, j - k, i_copy);
|
||||||
|
else
|
||||||
|
ret = wc_AesXtsEncryptUpdate(aes, large_input + k, large_input + k, AES_BLOCK_SIZE, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -10517,7 +10534,10 @@ static wc_test_ret_t aes_xts_128_test(void)
|
|||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
||||||
ret = wc_AesXtsDecryptUpdate(aes, large_input + k, large_input + k, (j - k) < AES_BLOCK_SIZE*2 ? j - k : AES_BLOCK_SIZE, i_copy);
|
if ((j - k) < AES_BLOCK_SIZE*2)
|
||||||
|
ret = wc_AesXtsDecryptFinal(aes, large_input + k, large_input + k, j - k, i_copy);
|
||||||
|
else
|
||||||
|
ret = wc_AesXtsDecryptUpdate(aes, large_input + k, large_input + k, AES_BLOCK_SIZE, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
#ifdef WC_AES_XTS_SUPPORT_SIMULTANEOUS_ENC_AND_DEC_KEYS
|
#ifdef WC_AES_XTS_SUPPORT_SIMULTANEOUS_ENC_AND_DEC_KEYS
|
||||||
ret = wc_AsyncWait(ret, &aes->aes_decrypt.asyncDev,
|
ret = wc_AsyncWait(ret, &aes->aes_decrypt.asyncDev,
|
||||||
@ -10726,7 +10746,7 @@ static wc_test_ret_t aes_xts_192_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
ret = wc_AesXtsEncryptUpdate(aes, buf + AES_BLOCK_SIZE, p2 + AES_BLOCK_SIZE, sizeof(p2) - AES_BLOCK_SIZE, i_copy);
|
ret = wc_AesXtsEncryptFinal(aes, buf + AES_BLOCK_SIZE, p2 + AES_BLOCK_SIZE, sizeof(p2) - AES_BLOCK_SIZE, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -10782,6 +10802,13 @@ static wc_test_ret_t aes_xts_192_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
|
ret = wc_AesXtsEncryptFinal(aes, buf, NULL, 0, i_copy);
|
||||||
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
|
#endif
|
||||||
|
if (ret != 0)
|
||||||
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
if (XMEMCMP(c1, buf, sizeof(c1)))
|
if (XMEMCMP(c1, buf, sizeof(c1)))
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
||||||
#endif /* WOLFSSL_AESXTS_STREAM */
|
#endif /* WOLFSSL_AESXTS_STREAM */
|
||||||
@ -10821,7 +10848,14 @@ static wc_test_ret_t aes_xts_192_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
ret = wc_AesXtsEncryptUpdate(aes, buf, pp, sizeof(pp), i_copy);
|
ret = wc_AesXtsEncryptFinal(aes, buf, pp, sizeof(pp), i_copy);
|
||||||
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
|
#endif
|
||||||
|
if (ret != 0)
|
||||||
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
|
ret = wc_AesXtsEncryptFinal(aes, buf, NULL, 0, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -10875,7 +10909,7 @@ static wc_test_ret_t aes_xts_192_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
ret = wc_AesXtsDecryptUpdate(aes, buf, cipher, sizeof(pp), i_copy);
|
ret = wc_AesXtsDecryptFinal(aes, buf, cipher, sizeof(pp), i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -10930,7 +10964,7 @@ static wc_test_ret_t aes_xts_192_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
ret = wc_AesXtsDecryptUpdate(aes, buf, c1, sizeof(c1), i_copy);
|
ret = wc_AesXtsDecryptFinal(aes, buf, c1, sizeof(c1), i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -11027,7 +11061,7 @@ static wc_test_ret_t aes_xts_192_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
ret = wc_AesXtsEncryptUpdate(aes, buf + AES_BLOCK_SIZE, p3 + AES_BLOCK_SIZE, sizeof(p3) - AES_BLOCK_SIZE, i_copy);
|
ret = wc_AesXtsEncryptFinal(aes, buf + AES_BLOCK_SIZE, p3 + AES_BLOCK_SIZE, sizeof(p3) - AES_BLOCK_SIZE, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -11071,7 +11105,7 @@ static wc_test_ret_t aes_xts_192_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
ret = wc_AesXtsDecryptUpdate(aes, buf + AES_BLOCK_SIZE, c3 + AES_BLOCK_SIZE, sizeof(c3) - AES_BLOCK_SIZE, i_copy);
|
ret = wc_AesXtsDecryptFinal(aes, buf + AES_BLOCK_SIZE, c3 + AES_BLOCK_SIZE, sizeof(c3) - AES_BLOCK_SIZE, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -11155,7 +11189,10 @@ static wc_test_ret_t aes_xts_192_test(void)
|
|||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
||||||
ret = wc_AesXtsEncryptUpdate(aes, large_input + k, large_input + k, (j - k) < AES_BLOCK_SIZE*2 ? j - k : AES_BLOCK_SIZE, i_copy);
|
if ((j - k) < AES_BLOCK_SIZE*2)
|
||||||
|
ret = wc_AesXtsEncryptFinal(aes, large_input + k, large_input + k, j - k, i_copy);
|
||||||
|
else
|
||||||
|
ret = wc_AesXtsEncryptUpdate(aes, large_input + k, large_input + k, AES_BLOCK_SIZE, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -11215,7 +11252,10 @@ static wc_test_ret_t aes_xts_192_test(void)
|
|||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
||||||
ret = wc_AesXtsDecryptUpdate(aes, large_input + k, large_input + k, (j - k) < AES_BLOCK_SIZE*2 ? j - k : AES_BLOCK_SIZE, i_copy);
|
if ((j - k) < AES_BLOCK_SIZE*2)
|
||||||
|
ret = wc_AesXtsDecryptFinal(aes, large_input + k, large_input + k, j - k, i_copy);
|
||||||
|
else
|
||||||
|
ret = wc_AesXtsDecryptUpdate(aes, large_input + k, large_input + k, AES_BLOCK_SIZE, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
#ifdef WC_AES_XTS_SUPPORT_SIMULTANEOUS_ENC_AND_DEC_KEYS
|
#ifdef WC_AES_XTS_SUPPORT_SIMULTANEOUS_ENC_AND_DEC_KEYS
|
||||||
ret = wc_AsyncWait(ret, &aes->aes_decrypt.asyncDev,
|
ret = wc_AsyncWait(ret, &aes->aes_decrypt.asyncDev,
|
||||||
@ -11412,7 +11452,7 @@ static wc_test_ret_t aes_xts_256_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
ret = wc_AesXtsEncryptUpdate(aes, buf + AES_BLOCK_SIZE, p2 + AES_BLOCK_SIZE, sizeof(p2) - AES_BLOCK_SIZE, i_copy);
|
ret = wc_AesXtsEncryptFinal(aes, buf + AES_BLOCK_SIZE, p2 + AES_BLOCK_SIZE, sizeof(p2) - AES_BLOCK_SIZE, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -11453,6 +11493,13 @@ static wc_test_ret_t aes_xts_256_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
|
ret = wc_AesXtsEncryptFinal(aes, buf, NULL, 0, i_copy);
|
||||||
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
|
#endif
|
||||||
|
if (ret != 0)
|
||||||
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
if (XMEMCMP(c1, buf, sizeof(c1)))
|
if (XMEMCMP(c1, buf, sizeof(c1)))
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
ERROR_OUT(WC_TEST_RET_ENC_NC, out);
|
||||||
#endif /* WOLFSSL_AESXTS_STREAM */
|
#endif /* WOLFSSL_AESXTS_STREAM */
|
||||||
@ -11509,7 +11556,7 @@ static wc_test_ret_t aes_xts_256_test(void)
|
|||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
ret = wc_AesXtsDecryptUpdate(aes, buf, c1, sizeof(c1), i_copy);
|
ret = wc_AesXtsDecryptFinal(aes, buf, c1, sizeof(c1), i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -11608,7 +11655,10 @@ static wc_test_ret_t aes_xts_256_test(void)
|
|||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
||||||
ret = wc_AesXtsEncryptUpdate(aes, large_input + k, large_input + k, (j - k) < AES_BLOCK_SIZE*2 ? j - k : AES_BLOCK_SIZE, i_copy);
|
if ((j - k) < AES_BLOCK_SIZE*2)
|
||||||
|
ret = wc_AesXtsEncryptFinal(aes, large_input + k, large_input + k, j - k, i_copy);
|
||||||
|
else
|
||||||
|
ret = wc_AesXtsEncryptUpdate(aes, large_input + k, large_input + k, AES_BLOCK_SIZE, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
ret = wc_AsyncWait(ret, &aes->aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||||
#endif
|
#endif
|
||||||
@ -11667,7 +11717,10 @@ static wc_test_ret_t aes_xts_256_test(void)
|
|||||||
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
ERROR_OUT(WC_TEST_RET_ENC_EC(ret), out);
|
||||||
|
|
||||||
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
for (k = 0; k < j; k += AES_BLOCK_SIZE) {
|
||||||
ret = wc_AesXtsDecryptUpdate(aes, large_input + k, large_input + k, (j - k) < AES_BLOCK_SIZE*2 ? j - k : AES_BLOCK_SIZE, i_copy);
|
if ((j - k) < AES_BLOCK_SIZE*2)
|
||||||
|
ret = wc_AesXtsDecryptFinal(aes, large_input + k, large_input + k, j - k, i_copy);
|
||||||
|
else
|
||||||
|
ret = wc_AesXtsDecryptUpdate(aes, large_input + k, large_input + k, AES_BLOCK_SIZE, i_copy);
|
||||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
#ifdef WC_AES_XTS_SUPPORT_SIMULTANEOUS_ENC_AND_DEC_KEYS
|
#ifdef WC_AES_XTS_SUPPORT_SIMULTANEOUS_ENC_AND_DEC_KEYS
|
||||||
ret = wc_AsyncWait(ret, &aes->aes_decrypt.asyncDev,
|
ret = wc_AsyncWait(ret, &aes->aes_decrypt.asyncDev,
|
||||||
|
@ -681,6 +681,12 @@ WOLFSSL_API int wc_AesXtsEncryptUpdate(XtsAes* aes, byte* out,
|
|||||||
WOLFSSL_API int wc_AesXtsDecryptUpdate(XtsAes* aes, byte* out,
|
WOLFSSL_API int wc_AesXtsDecryptUpdate(XtsAes* aes, byte* out,
|
||||||
const byte* in, word32 sz, byte *i);
|
const byte* in, word32 sz, byte *i);
|
||||||
|
|
||||||
|
WOLFSSL_API int wc_AesXtsEncryptFinal(XtsAes* aes, byte* out,
|
||||||
|
const byte* in, word32 sz, byte *i);
|
||||||
|
|
||||||
|
WOLFSSL_API int wc_AesXtsDecryptFinal(XtsAes* aes, byte* out,
|
||||||
|
const byte* in, word32 sz, byte *i);
|
||||||
|
|
||||||
#endif /* WOLFSSL_AESXTS_STREAM */
|
#endif /* WOLFSSL_AESXTS_STREAM */
|
||||||
|
|
||||||
WOLFSSL_API int wc_AesXtsFree(XtsAes* aes);
|
WOLFSSL_API int wc_AesXtsFree(XtsAes* aes);
|
||||||
|
Reference in New Issue
Block a user