{
int ret, mode;
EVP_AES_KEY *dat = EVP_C_DATA(EVP_AES_KEY,ctx);
+ const int keylen = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
mode = EVP_CIPHER_CTX_get_mode(ctx);
if ((mode == EVP_CIPH_ECB_MODE || mode == EVP_CIPH_CBC_MODE)
&& !enc) {
- ret = aesni_set_decrypt_key(key,
- EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &dat->ks.ks);
+ ret = aesni_set_decrypt_key(key, keylen, &dat->ks.ks);
dat->block = (block128_f) aesni_decrypt;
dat->stream.cbc = mode == EVP_CIPH_CBC_MODE ?
(cbc128_f) aesni_cbc_encrypt : NULL;
} else {
- ret = aesni_set_encrypt_key(key,
- EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &dat->ks.ks);
+ ret = aesni_set_encrypt_key(key, keylen, &dat->ks.ks);
dat->block = (block128_f) aesni_encrypt;
if (mode == EVP_CIPH_CBC_MODE)
dat->stream.cbc = (cbc128_f) aesni_cbc_encrypt;
static int aesni_gcm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
const unsigned char *iv, int enc)
{
- EVP_AES_GCM_CTX *gctx = EVP_C_DATA(EVP_AES_GCM_CTX,ctx);
- if (!iv && !key)
+ EVP_AES_GCM_CTX *gctx = EVP_C_DATA(EVP_AES_GCM_CTX, ctx);
+
+ if (iv == NULL && key == NULL)
return 1;
+
if (key) {
- aesni_set_encrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &gctx->ks.ks);
+ const int keylen = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
+ aesni_set_encrypt_key(key, keylen, &gctx->ks.ks);
CRYPTO_gcm128_init(&gctx->gcm, &gctx->ks, (block128_f) aesni_encrypt);
gctx->ctr = (ctr128_f) aesni_ctr32_encrypt_blocks;
/*
{
EVP_AES_XTS_CTX *xctx = EVP_C_DATA(EVP_AES_XTS_CTX,ctx);
- if (!iv && !key)
+ if (iv == NULL && key == NULL)
return 1;
if (key) {
/* The key is two half length keys in reality */
- const int bytes = EVP_CIPHER_CTX_get_key_length(ctx) / 2;
+ const int keylen = EVP_CIPHER_CTX_get_key_length(ctx);
+ const int bytes = keylen / 2;
const int bits = bytes * 8;
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
/*
* Verify that the two keys are different.
*
const unsigned char *iv, int enc)
{
EVP_AES_CCM_CTX *cctx = EVP_C_DATA(EVP_AES_CCM_CTX,ctx);
- if (!iv && !key)
+
+ if (iv == NULL && key == NULL)
return 1;
- if (key) {
- aesni_set_encrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &cctx->ks.ks);
+
+ if (key != NULL) {
+ const int keylen = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
+ aesni_set_encrypt_key(key, keylen, &cctx->ks.ks);
CRYPTO_ccm128_init(&cctx->ccm, cctx->M, cctx->L,
&cctx->ks, (block128_f) aesni_encrypt);
cctx->str = enc ? (ccm128_f) aesni_ccm64_encrypt_blocks :
const unsigned char *iv, int enc)
{
EVP_AES_OCB_CTX *octx = EVP_C_DATA(EVP_AES_OCB_CTX,ctx);
- if (!iv && !key)
+
+ if (iv == NULL && key == NULL)
return 1;
- if (key) {
+
+ if (key != NULL) {
+ const int keylen = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
do {
/*
* We set both the encrypt and decrypt key here because decrypt
* needs both. We could possibly optimise to remove setting the
* decrypt for an encryption operation.
*/
- aesni_set_encrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &octx->ksenc.ks);
- aesni_set_decrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &octx->ksdec.ks);
+ aesni_set_encrypt_key(key, keylen, &octx->ksenc.ks);
+ aesni_set_decrypt_key(key, keylen, &octx->ksdec.ks);
if (!CRYPTO_ocb128_init(&octx->ocb,
&octx->ksenc.ks, &octx->ksdec.ks,
(block128_f) aesni_encrypt,
mode = EVP_CIPHER_CTX_get_mode(ctx);
bits = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+ if (bits <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
if ((mode == EVP_CIPH_ECB_MODE || mode == EVP_CIPH_CBC_MODE)
&& !enc) {
ret = 0;
const unsigned char *iv, int enc)
{
EVP_AES_GCM_CTX *gctx = EVP_C_DATA(EVP_AES_GCM_CTX,ctx);
- if (!iv && !key)
+
+ if (iv == NULL && key == NULL)
return 1;
if (key) {
- int bits = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+ const int bits = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+
+ if (bits <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
aes_t4_set_encrypt_key(key, bits, &gctx->ks.ks);
CRYPTO_gcm128_init(&gctx->gcm, &gctx->ks,
(block128_f) aes_t4_encrypt);
if (key) {
/* The key is two half length keys in reality */
- const int bytes = EVP_CIPHER_CTX_get_key_length(ctx) / 2;
+ const int keylen = EVP_CIPHER_CTX_get_key_length(ctx);
+ const int bytes = keylen / 2;
const int bits = bytes * 8;
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
/*
* Verify that the two keys are different.
*
const unsigned char *iv, int enc)
{
EVP_AES_CCM_CTX *cctx = EVP_C_DATA(EVP_AES_CCM_CTX,ctx);
- if (!iv && !key)
+
+ if (iv == NULL && key == NULL)
return 1;
- if (key) {
- int bits = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+
+ if (key != NULL) {
+ const int bits = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+
+ if (bits <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
aes_t4_set_encrypt_key(key, bits, &cctx->ks.ks);
CRYPTO_ccm128_init(&cctx->ccm, cctx->M, cctx->L,
&cctx->ks, (block128_f) aes_t4_encrypt);
const unsigned char *iv, int enc)
{
EVP_AES_OCB_CTX *octx = EVP_C_DATA(EVP_AES_OCB_CTX,ctx);
- if (!iv && !key)
+
+ if (iv == NULL && key == NULL)
return 1;
- if (key) {
+
+ if (key != NULL) {
+ const int keylen = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
do {
/*
* We set both the encrypt and decrypt key here because decrypt
* needs both. We could possibly optimise to remove setting the
* decrypt for an encryption operation.
*/
- aes_t4_set_encrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &octx->ksenc.ks);
- aes_t4_set_decrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &octx->ksdec.ks);
+ aes_t4_set_encrypt_key(key, keylen, &octx->ksenc.ks);
+ aes_t4_set_decrypt_key(key, keylen, &octx->ksdec.ks);
if (!CRYPTO_ocb128_init(&octx->ocb,
&octx->ksenc.ks, &octx->ksdec.ks,
(block128_f) aes_t4_encrypt,
S390X_AES_ECB_CTX *cctx = EVP_C_DATA(S390X_AES_ECB_CTX, ctx);
const int keylen = EVP_CIPHER_CTX_get_key_length(ctx);
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
cctx->fc = S390X_AES_FC(keylen);
if (!enc)
cctx->fc |= S390X_DECRYPT;
const int keylen = EVP_CIPHER_CTX_get_key_length(ctx);
const int ivlen = EVP_CIPHER_CTX_get_iv_length(ctx);
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
+ if (ivlen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_IV_LENGTH);
+ return 0;
+ }
memcpy(cctx->kmo.param.cv, iv, ivlen);
memcpy(cctx->kmo.param.k, key, keylen);
cctx->fc = S390X_AES_FC(keylen);
const int keylen = EVP_CIPHER_CTX_get_key_length(ctx);
const int ivlen = EVP_CIPHER_CTX_get_iv_length(ctx);
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
+ if (ivlen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_IV_LENGTH);
+ return 0;
+ }
cctx->fc = S390X_AES_FC(keylen);
cctx->fc |= 16 << 24; /* 16 bytes cipher feedback */
if (!enc)
int rem;
unsigned char tmp;
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
+ if (ivlen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_IV_LENGTH);
+ return 0;
+ }
memcpy(cctx->kmf.param.cv, iv, ivlen);
while (n && len) {
tmp = *in;
const int keylen = EVP_CIPHER_CTX_get_key_length(ctx);
const int ivlen = EVP_CIPHER_CTX_get_iv_length(ctx);
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
+ if (ivlen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_IV_LENGTH);
+ return 0;
+ }
cctx->fc = S390X_AES_FC(keylen);
cctx->fc |= 1 << 24; /* 1 byte cipher feedback */
if (!enc)
if (key != NULL) {
keylen = EVP_CIPHER_CTX_get_key_length(ctx);
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
+
memcpy(&gctx->kma.param.k, key, keylen);
gctx->fc = S390X_AES_FC(keylen);
if (key != NULL) {
keylen = EVP_CIPHER_CTX_get_key_length(ctx);
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
+
cctx->aes.ccm.fc = S390X_AES_FC(keylen);
memcpy(cctx->aes.ccm.kmac_param.k, key, keylen);
{
int ret, mode;
EVP_AES_KEY *dat = EVP_C_DATA(EVP_AES_KEY,ctx);
+ const int keylen = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
mode = EVP_CIPHER_CTX_get_mode(ctx);
if ((mode == EVP_CIPH_ECB_MODE || mode == EVP_CIPH_CBC_MODE)
&& !enc) {
#ifdef HWAES_CAPABLE
if (HWAES_CAPABLE) {
- ret = HWAES_set_decrypt_key(key,
- EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &dat->ks.ks);
+ ret = HWAES_set_decrypt_key(key, keylen, &dat->ks.ks);
dat->block = (block128_f) HWAES_decrypt;
dat->stream.cbc = NULL;
# ifdef HWAES_cbc_encrypt
#endif
#ifdef BSAES_CAPABLE
if (BSAES_CAPABLE && mode == EVP_CIPH_CBC_MODE) {
- ret = AES_set_decrypt_key(key,
- EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &dat->ks.ks);
+ ret = AES_set_decrypt_key(key, keylen, &dat->ks.ks);
dat->block = (block128_f) AES_decrypt;
dat->stream.cbc = (cbc128_f) ossl_bsaes_cbc_encrypt;
} else
#endif
#ifdef VPAES_CAPABLE
if (VPAES_CAPABLE) {
- ret = vpaes_set_decrypt_key(key,
- EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &dat->ks.ks);
+ ret = vpaes_set_decrypt_key(key, keylen, &dat->ks.ks);
dat->block = (block128_f) vpaes_decrypt;
dat->stream.cbc = mode == EVP_CIPH_CBC_MODE ?
(cbc128_f) vpaes_cbc_encrypt : NULL;
} else
#endif
{
- ret = AES_set_decrypt_key(key,
- EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &dat->ks.ks);
+ ret = AES_set_decrypt_key(key, keylen, &dat->ks.ks);
dat->block = (block128_f) AES_decrypt;
dat->stream.cbc = mode == EVP_CIPH_CBC_MODE ?
(cbc128_f) AES_cbc_encrypt : NULL;
} else
#ifdef HWAES_CAPABLE
if (HWAES_CAPABLE) {
- ret = HWAES_set_encrypt_key(key,
- EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &dat->ks.ks);
+ ret = HWAES_set_encrypt_key(key, keylen, &dat->ks.ks);
dat->block = (block128_f) HWAES_encrypt;
dat->stream.cbc = NULL;
# ifdef HWAES_cbc_encrypt
#endif
#ifdef BSAES_CAPABLE
if (BSAES_CAPABLE && mode == EVP_CIPH_CTR_MODE) {
- ret = AES_set_encrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &dat->ks.ks);
+ ret = AES_set_encrypt_key(key, keylen, &dat->ks.ks);
dat->block = (block128_f) AES_encrypt;
dat->stream.ctr = (ctr128_f) ossl_bsaes_ctr32_encrypt_blocks;
} else
#endif
#ifdef VPAES_CAPABLE
if (VPAES_CAPABLE) {
- ret = vpaes_set_encrypt_key(key,
- EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &dat->ks.ks);
+ ret = vpaes_set_encrypt_key(key, keylen, &dat->ks.ks);
dat->block = (block128_f) vpaes_encrypt;
dat->stream.cbc = mode == EVP_CIPH_CBC_MODE ?
(cbc128_f) vpaes_cbc_encrypt : NULL;
} else
#endif
{
- ret = AES_set_encrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &dat->ks.ks);
+ ret = AES_set_encrypt_key(key, keylen, &dat->ks.ks);
dat->block = (block128_f) AES_encrypt;
dat->stream.cbc = mode == EVP_CIPH_CBC_MODE ?
(cbc128_f) AES_cbc_encrypt : NULL;
const unsigned char *iv, int enc)
{
EVP_AES_GCM_CTX *gctx = EVP_C_DATA(EVP_AES_GCM_CTX,ctx);
- if (!iv && !key)
+
+ if (iv == NULL && key == NULL)
return 1;
- if (key) {
+
+ if (key != NULL) {
+ const int keylen = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
do {
#ifdef HWAES_CAPABLE
if (HWAES_CAPABLE) {
- HWAES_set_encrypt_key(key, ctx->key_len * 8, &gctx->ks.ks);
+ HWAES_set_encrypt_key(key, keylen, &gctx->ks.ks);
CRYPTO_gcm128_init(&gctx->gcm, &gctx->ks,
(block128_f) HWAES_encrypt);
# ifdef HWAES_ctr32_encrypt_blocks
#endif
#ifdef BSAES_CAPABLE
if (BSAES_CAPABLE) {
- AES_set_encrypt_key(key, ctx->key_len * 8, &gctx->ks.ks);
+ AES_set_encrypt_key(key, keylen, &gctx->ks.ks);
CRYPTO_gcm128_init(&gctx->gcm, &gctx->ks,
(block128_f) AES_encrypt);
gctx->ctr = (ctr128_f) ossl_bsaes_ctr32_encrypt_blocks;
#endif
#ifdef VPAES_CAPABLE
if (VPAES_CAPABLE) {
- vpaes_set_encrypt_key(key, ctx->key_len * 8, &gctx->ks.ks);
+ vpaes_set_encrypt_key(key, keylen, &gctx->ks.ks);
CRYPTO_gcm128_init(&gctx->gcm, &gctx->ks,
(block128_f) vpaes_encrypt);
gctx->ctr = NULL;
#endif
(void)0; /* terminate potentially open 'else' */
- AES_set_encrypt_key(key, ctx->key_len * 8, &gctx->ks.ks);
+ AES_set_encrypt_key(key, keylen, &gctx->ks.ks);
CRYPTO_gcm128_init(&gctx->gcm, &gctx->ks,
(block128_f) AES_encrypt);
#ifdef AES_CTR_ASM
{
EVP_AES_XTS_CTX *xctx = EVP_C_DATA(EVP_AES_XTS_CTX,ctx);
- if (!iv && !key)
+ if (iv == NULL && key == NULL)
return 1;
- if (key) {
+ if (key != NULL) {
do {
/* The key is two half length keys in reality */
- const int bytes = EVP_CIPHER_CTX_get_key_length(ctx) / 2;
+ const int keylen = EVP_CIPHER_CTX_get_key_length(ctx);
+ const int bytes = keylen / 2;
const int bits = bytes * 8;
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
/*
* Verify that the two keys are different.
*
const unsigned char *iv, int enc)
{
EVP_AES_CCM_CTX *cctx = EVP_C_DATA(EVP_AES_CCM_CTX,ctx);
- if (!iv && !key)
+
+ if (iv == NULL && key == NULL)
return 1;
- if (key)
+
+ if (key != NULL) {
+ const int keylen = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
do {
#ifdef HWAES_CAPABLE
if (HWAES_CAPABLE) {
- HWAES_set_encrypt_key(key,
- EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &cctx->ks.ks);
+ HWAES_set_encrypt_key(key, keylen, &cctx->ks.ks);
CRYPTO_ccm128_init(&cctx->ccm, cctx->M, cctx->L,
&cctx->ks, (block128_f) HWAES_encrypt);
#endif
#ifdef VPAES_CAPABLE
if (VPAES_CAPABLE) {
- vpaes_set_encrypt_key(key,
- EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &cctx->ks.ks);
+ vpaes_set_encrypt_key(key, keylen, &cctx->ks.ks);
CRYPTO_ccm128_init(&cctx->ccm, cctx->M, cctx->L,
&cctx->ks, (block128_f) vpaes_encrypt);
cctx->str = NULL;
break;
}
#endif
- AES_set_encrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &cctx->ks.ks);
+ AES_set_encrypt_key(key, keylen, &cctx->ks.ks);
CRYPTO_ccm128_init(&cctx->ccm, cctx->M, cctx->L,
&cctx->ks, (block128_f) AES_encrypt);
cctx->str = NULL;
cctx->key_set = 1;
} while (0);
- if (iv) {
+ }
+ if (iv != NULL) {
memcpy(ctx->iv, iv, 15 - cctx->L);
cctx->iv_set = 1;
}
if (iv == NULL && key == NULL)
return 1;
if (key != NULL) {
+ const int keylen = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
if (EVP_CIPHER_CTX_is_encrypting(ctx))
- AES_set_encrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &wctx->ks.ks);
+ AES_set_encrypt_key(key, keylen, &wctx->ks.ks);
else
- AES_set_decrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &wctx->ks.ks);
+ AES_set_decrypt_key(key, keylen, &wctx->ks.ks);
if (iv == NULL)
wctx->iv = NULL;
}
const unsigned char *iv, int enc)
{
EVP_AES_OCB_CTX *octx = EVP_C_DATA(EVP_AES_OCB_CTX,ctx);
- if (!iv && !key)
+
+ if (iv == NULL && key == NULL)
return 1;
- if (key) {
+
+ if (key != NULL) {
+ const int keylen = EVP_CIPHER_CTX_get_key_length(ctx) * 8;
+
+ if (keylen <= 0) {
+ ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
+ return 0;
+ }
do {
/*
* We set both the encrypt and decrypt key here because decrypt
*/
# ifdef HWAES_CAPABLE
if (HWAES_CAPABLE) {
- HWAES_set_encrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &octx->ksenc.ks);
- HWAES_set_decrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &octx->ksdec.ks);
+ HWAES_set_encrypt_key(key, keylen, &octx->ksenc.ks);
+ HWAES_set_decrypt_key(key, keylen, &octx->ksdec.ks);
if (!CRYPTO_ocb128_init(&octx->ocb,
&octx->ksenc.ks, &octx->ksdec.ks,
(block128_f) HWAES_encrypt,
# endif
# ifdef VPAES_CAPABLE
if (VPAES_CAPABLE) {
- vpaes_set_encrypt_key(key,
- EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &octx->ksenc.ks);
- vpaes_set_decrypt_key(key,
- EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &octx->ksdec.ks);
+ vpaes_set_encrypt_key(key, keylen, &octx->ksenc.ks);
+ vpaes_set_decrypt_key(key, keylen, &octx->ksdec.ks);
if (!CRYPTO_ocb128_init(&octx->ocb,
&octx->ksenc.ks, &octx->ksdec.ks,
(block128_f) vpaes_encrypt,
break;
}
# endif
- AES_set_encrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &octx->ksenc.ks);
- AES_set_decrypt_key(key, EVP_CIPHER_CTX_get_key_length(ctx) * 8,
- &octx->ksdec.ks);
+ AES_set_encrypt_key(key, keylen, &octx->ksenc.ks);
+ AES_set_decrypt_key(key, keylen, &octx->ksdec.ks);
if (!CRYPTO_ocb128_init(&octx->ocb,
&octx->ksenc.ks, &octx->ksdec.ks,
(block128_f) AES_encrypt,