if (p.tag != NULL) {
sz = p.tag->data_size;
- if (sz == 0
- || sz > EVP_GCM_TLS_TAG_LEN
- || !ctx->enc
- || ctx->taglen == UNINITIALISED_SIZET) {
+ if (!ctx->enc || ctx->taglen == UNINITIALISED_SIZET) {
ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_TAG);
return 0;
}
+ if (p.tag->data != NULL && (sz > EVP_GCM_TLS_TAG_LEN || sz == 0)) {
+ ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_TAG);
+ return 0;
+ }
+
if (!OSSL_PARAM_set_octet_string(p.tag, ctx->buf, sz)) {
ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_SET_PARAMETER);
return 0;
int outlen, tmplen;
unsigned char outbuf[1024];
unsigned char outtag[16];
- OSSL_PARAM params[3] = {
- OSSL_PARAM_END, OSSL_PARAM_END, OSSL_PARAM_END
+ OSSL_PARAM params[4] = {
+ OSSL_PARAM_END, OSSL_PARAM_END, OSSL_PARAM_END, OSSL_PARAM_END
};
if (!TEST_ptr(ctx = EVP_CIPHER_CTX_new())
NULL, 0);
params[1] = OSSL_PARAM_construct_octet_string(OSSL_CIPHER_PARAM_UPDATED_IV,
NULL, 0);
- params[2] = OSSL_PARAM_construct_end();
+ params[2] = OSSL_PARAM_construct_octet_string(OSSL_CIPHER_PARAM_AEAD_TAG,
+ NULL, 0);
+ params[3] = 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))
+ || !TEST_size_t_eq(params[1].return_size, gcm_ivlen)
+ || !TEST_size_t_eq(params[2].return_size, sizeof(outtag)))
ret = 1;
err: