We leave it up to the EVP_MAC implemenations what to do with an update
where the data length is 0. In the TLS HMAC implemenation this is still
signficant.
Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/12732)
int EVP_MAC_update(EVP_MAC_CTX *ctx, const unsigned char *data, size_t datalen)
{
- if (datalen == 0)
- return 1;
return ctx->meth->update(ctx->data, data, datalen);
}
{
struct blake2_mac_data_st *macctx = vmacctx;
+ if (datalen == 0)
+ return 1;
+
return BLAKE2_UPDATE(&macctx->ctx, data, datalen);
}
EVP_CIPHER_CTX *ctx = macctx->ctx;
int outlen;
+ if (datalen == 0)
+ return 1;
+
while (datalen > INT_MAX) {
if (!EVP_EncryptUpdate(ctx, NULL, &outlen, data, INT_MAX))
return 0;
{
struct poly1305_data_st *ctx = vmacctx;
+ if (datalen == 0)
+ return 1;
+
/* poly1305 has nothing to return in its update function */
Poly1305_Update(&ctx->poly1305, data, datalen);
return 1;
{
struct siphash_data_st *ctx = vmacctx;
+ if (datalen == 0)
+ return 1;
+
SipHash_Update(&ctx->siphash, data, datalen);
return 1;
}