/* Dispatch functions for ccm mode */
-#include "cipher_locl.h"
+#include "cipher_local.h"
#include "internal/ciphers/cipher_ccm.h"
#include "internal/providercommonerr.h"
OSSL_PARAM *p;
p = OSSL_PARAM_locate(params, OSSL_CIPHER_PARAM_IVLEN);
- if (p != NULL && !OSSL_PARAM_set_int(p, ccm_get_ivlen(ctx))) {
+ if (p != NULL && !OSSL_PARAM_set_size_t(p, ccm_get_ivlen(ctx))) {
ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_SET_PARAMETER);
return 0;
}
+ p = OSSL_PARAM_locate(params, OSSL_CIPHER_PARAM_AEAD_TAGLEN);
+ if (p != NULL) {
+ size_t m = ctx->m;
+
+ if (!OSSL_PARAM_set_size_t(p, m)) {
+ ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_SET_PARAMETER);
+ return 0;
+ }
+ }
+
p = OSSL_PARAM_locate(params, OSSL_CIPHER_PARAM_IV);
if (p != NULL) {
if (ccm_get_ivlen(ctx) != p->data_size) {
}
p = OSSL_PARAM_locate(params, OSSL_CIPHER_PARAM_KEYLEN);
- if (p != NULL && !OSSL_PARAM_set_int(p, ctx->keylen)) {
+ if (p != NULL && !OSSL_PARAM_set_size_t(p, ctx->keylen)) {
ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_SET_PARAMETER);
return 0;
}
ERR_raise(ERR_LIB_PROV, PROV_R_INVALID_IVLEN);
return 0;
}
-
memcpy(ctx->iv, iv, ivlen);
ctx->iv_set = 1;
}
if (!ctx->key_set)
return 0;
- if (ctx->tls_aad_len >= 0)
+ if (ctx->tls_aad_len != UNINITIALISED_SIZET)
return ccm_tls_cipher(ctx, out, padlen, in, len);
/* EVP_*Final() doesn't return any data */
ctx->len_set = 0;
ctx->l = 8;
ctx->m = 12;
- ctx->tls_aad_len = -1;
+ ctx->tls_aad_len = UNINITIALISED_SIZET;
ctx->hw = hw;
}
-void ccm_finalctx(PROV_CCM_CTX *ctx)
-{
- OPENSSL_cleanse(ctx->iv, sizeof(ctx->iv));
-}