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);