if (p.iv != NULL) {
if (!on_preupdate_generate_iv(ctx))
return 0;
- if (ctx->ivlen > p.iv->data_size) {
+ if (p.iv->data != NULL && ctx->ivlen > p.iv->data_size) {
ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_IV_LENGTH);
return 0;
}
if (p.updiv != NULL) {
if (!on_preupdate_generate_iv(ctx))
return 0;
- if (ctx->ivlen > p.updiv->data_size) {
+ if (p.updiv->data != NULL && ctx->ivlen > p.updiv->data_size) {
ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_IV_LENGTH);
return 0;
}
int outlen, tmplen;
unsigned char outbuf[1024];
unsigned char outtag[16];
- OSSL_PARAM params[2] = {
- OSSL_PARAM_END, OSSL_PARAM_END
+ OSSL_PARAM params[3] = {
+ OSSL_PARAM_END, OSSL_PARAM_END, OSSL_PARAM_END
};
if (!TEST_ptr(ctx = EVP_CIPHER_CTX_new())
|| !TEST_mem_eq(outtag, gcm_tag_s, gcm_tag, gcm_tag_s))
goto err;
+ params[0] = OSSL_PARAM_construct_octet_string(OSSL_CIPHER_PARAM_IV,
+ NULL, 0);
+ params[1] = OSSL_PARAM_construct_octet_string(OSSL_CIPHER_PARAM_UPDATED_IV,
+ NULL, 0);
+ params[2] = OSSL_PARAM_construct_end();
+ if (!TEST_true(EVP_CIPHER_CTX_get_params(ctx, params))
+ || !TEST_size_t_eq(params[0].return_size, gcm_ivlen)
+ || !TEST_size_t_eq(params[1].return_size, gcm_ivlen))
+
ret = 1;
err:
EVP_CIPHER_free(cipher);