Commit cfb89e50a0 for openssl.org
commit cfb89e50a06a00917bdfa6142665ffee08ca79bd
Author: Bernd Edlinger <bernd.edlinger@hotmail.de>
Date: Sat Aug 15 07:33:34 2026 +0200
Make it clear that chacha20 is a stream cipher
by explicitly using the define EVP_CIPH_STREAM_CIPHER
instead of the value 0 for the mode parameter.
Reviewed-by: Jakub Zelenka <jakub.zelenka@openssl.foundation>
Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
Merge-date: Mon Oct 19 06:04:43 2026
Merged-from: https://github.com/openssl/openssl/pull/32393
diff --git a/crypto/evp/e_chacha20_poly1305.c b/crypto/evp/e_chacha20_poly1305.c
index 78dbe45ce4..1a44e29b53 100644
--- a/crypto/evp/e_chacha20_poly1305.c
+++ b/crypto/evp/e_chacha20_poly1305.c
@@ -19,7 +19,7 @@ static const EVP_CIPHER chacha20 = {
1, /* block_size */
CHACHA_KEY_SIZE, /* key_len */
CHACHA_CTR_SIZE, /* iv_len, 128-bit counter in the context */
- EVP_CIPH_CUSTOM_IV | EVP_CIPH_ALWAYS_CALL_INIT,
+ EVP_CIPH_STREAM_CIPHER | EVP_CIPH_CUSTOM_IV | EVP_CIPH_ALWAYS_CALL_INIT,
EVP_ORIG_GLOBAL
};
@@ -35,7 +35,7 @@ static const EVP_CIPHER chacha20_poly1305 = {
1, /* block_size */
CHACHA_KEY_SIZE, /* key_len */
12, /* iv_len, 96-bit nonce in the context */
- EVP_CIPH_FLAG_AEAD_CIPHER | EVP_CIPH_CUSTOM_IV | EVP_CIPH_ALWAYS_CALL_INIT | EVP_CIPH_CTRL_INIT | EVP_CIPH_CUSTOM_COPY | EVP_CIPH_FLAG_CUSTOM_CIPHER | EVP_CIPH_CUSTOM_IV_LENGTH,
+ EVP_CIPH_STREAM_CIPHER | EVP_CIPH_FLAG_AEAD_CIPHER | EVP_CIPH_CUSTOM_IV | EVP_CIPH_ALWAYS_CALL_INIT | EVP_CIPH_CTRL_INIT | EVP_CIPH_CUSTOM_COPY | EVP_CIPH_FLAG_CUSTOM_CIPHER | EVP_CIPH_CUSTOM_IV_LENGTH,
EVP_ORIG_GLOBAL
};
diff --git a/providers/implementations/ciphers/cipher_chacha20.c b/providers/implementations/ciphers/cipher_chacha20.c
index 67a95f8d8c..25a56ddd4d 100644
--- a/providers/implementations/ciphers/cipher_chacha20.c
+++ b/providers/implementations/ciphers/cipher_chacha20.c
@@ -19,6 +19,7 @@
#define CHACHA20_KEYLEN (CHACHA_KEY_SIZE)
#define CHACHA20_BLKLEN (1)
#define CHACHA20_IVLEN (CHACHA_CTR_SIZE)
+#define CHACHA20_MODE (EVP_CIPH_STREAM_CIPHER)
#define CHACHA20_FLAGS (PROV_CIPHER_FLAG_CUSTOM_IV)
static OSSL_FUNC_cipher_newctx_fn chacha20_newctx;
@@ -46,7 +47,7 @@ void ossl_chacha20_initctx(PROV_CHACHA20_CTX *ctx)
ossl_cipher_generic_initkey(ctx, CHACHA20_KEYLEN * 8,
CHACHA20_BLKLEN * 8,
CHACHA20_IVLEN * 8,
- 0, CHACHA20_FLAGS,
+ CHACHA20_MODE, CHACHA20_FLAGS,
ossl_prov_cipher_hw_chacha20(CHACHA20_KEYLEN * 8),
NULL);
}
@@ -93,7 +94,8 @@ static void *chacha20_dupctx(void *vctx)
static int chacha20_get_params(OSSL_PARAM params[])
{
- return ossl_cipher_generic_get_params(params, 0, CHACHA20_FLAGS,
+ return ossl_cipher_generic_get_params(params,
+ CHACHA20_MODE, CHACHA20_FLAGS,
CHACHA20_KEYLEN * 8,
CHACHA20_BLKLEN * 8,
CHACHA20_IVLEN * 8);
diff --git a/providers/implementations/ciphers/cipher_chacha20_poly1305.c b/providers/implementations/ciphers/cipher_chacha20_poly1305.c
index c8d4bd84a1..5b8e68af09 100644
--- a/providers/implementations/ciphers/cipher_chacha20_poly1305.c
+++ b/providers/implementations/ciphers/cipher_chacha20_poly1305.c
@@ -19,7 +19,7 @@
#define CHACHA20_POLY1305_KEYLEN CHACHA_KEY_SIZE
#define CHACHA20_POLY1305_BLKLEN 1
#define CHACHA20_POLY1305_MAX_IVLEN 12
-#define CHACHA20_POLY1305_MODE 0
+#define CHACHA20_POLY1305_MODE EVP_CIPH_STREAM_CIPHER
#define CHACHA20_POLY1305_FLAGS (PROV_CIPHER_FLAG_AEAD \
| PROV_CIPHER_FLAG_CUSTOM_IV)
@@ -88,7 +88,8 @@ static void chacha20_poly1305_freectx(void *vctx)
static int chacha20_poly1305_get_params(OSSL_PARAM params[])
{
- return ossl_cipher_generic_get_params(params, 0, CHACHA20_POLY1305_FLAGS,
+ return ossl_cipher_generic_get_params(params,
+ CHACHA20_POLY1305_MODE, CHACHA20_POLY1305_FLAGS,
CHACHA20_POLY1305_KEYLEN * 8,
CHACHA20_POLY1305_BLKLEN * 8,
CHACHA20_POLY1305_IVLEN * 8);