File 2182-Update-MD5-implementation-from-OpenSSL-3.6.0-to-3.6..patch of Package erlang

From cb876d3c2516254d75a9cfdf5cd162a7e26bb2c9 Mon Sep 17 00:00:00 2001
From: Kiko Fernandez-Reyes <kiko@erlang.org>
Date: Wed, 4 Feb 2026 14:44:45 +0100
Subject: [PATCH 2/2] Update MD5 implementation from OpenSSL 3.6.0 to 3.6.1

---
 erts/emulator/openssl/crypto/md5/md5_dgst.c   |  16 +--
 erts/emulator/openssl/crypto/md5/md5_local.h  | 105 ++++++++++--------
 .../openssl/include/crypto/md32_common.h      |  85 +++++++-------
 .../openssl/include/openssl_local/md5.h       |  52 ++++-----
 erts/emulator/openssl/{update => update.sh}   |   0
 erts/emulator/openssl/vendor.info             |   7 +-
 .../src/openssl/crypto/md5/md5_dgst.c         |  16 +--
 .../src/openssl/crypto/md5/md5_local.h        | 105 ++++++++++--------
 .../src/openssl/include/crypto/md32_common.h  |  85 +++++++-------
 .../src/openssl/include/openssl_local/md5.h   |  52 ++++-----
 lib/erl_interface/src/openssl/vendor.info     |   4 +-
 11 files changed, 272 insertions(+), 255 deletions(-)
 rename erts/emulator/openssl/{update => update.sh} (100%)

diff --git a/erts/emulator/openssl/crypto/md5/md5_dgst.c b/erts/emulator/openssl/crypto/md5/md5_dgst.c
index 155a5ac3e5..512bbf826e 100644
--- a/erts/emulator/openssl/crypto/md5/md5_dgst.c
+++ b/erts/emulator/openssl/crypto/md5/md5_dgst.c
@@ -45,9 +45,9 @@ int MD5_Init(MD5_CTX *c)
 }
 
 #ifndef md5_block_data_order
-# ifdef X
-#  undef X
-# endif
+#ifdef X
+#undef X
+#endif
 #if defined(ERLANG_OPENSSL_INTEGRATION)
 #define md5_block_data_order MD5_BLOCK_DATA_ORDER_FUNCTION_NAME
 #endif
@@ -55,15 +55,15 @@ void md5_block_data_order(MD5_CTX *c, const void *data_, size_t num)
 {
     const unsigned char *data = data_;
     register unsigned MD32_REG_T A, B, C, D, l;
-# ifndef MD32_XARRAY
+#ifndef MD32_XARRAY
     /* See comment in crypto/sha/sha_local.h for details. */
     unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
         XX8, XX9, XX10, XX11, XX12, XX13, XX14, XX15;
-#  define X(i)   XX##i
-# else
+#define X(i)   XX##i
+#else
     MD5_LONG XX[MD5_LBLOCK];
-#  define X(i)   XX[i]
-# endif
+#define X(i)   XX[i]
+#endif
 
     A = c->A;
     B = c->B;
diff --git a/erts/emulator/openssl/crypto/md5/md5_local.h b/erts/emulator/openssl/crypto/md5/md5_local.h
index 5830ffd687..b7cb3a6282 100644
--- a/erts/emulator/openssl/crypto/md5/md5_local.h
+++ b/erts/emulator/openssl/crypto/md5/md5_local.h
@@ -19,47 +19,48 @@
 #endif
 
 #ifdef MD5_ASM
-# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
-    defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \
-    defined(_M_X64) || defined(__aarch64__) || \
-    (defined(__loongarch__) && __loongarch_grlen == 64) || \
-    (defined(__riscv) && __riscv_xlen == 64)
-#  define md5_block_data_order ossl_md5_block_asm_data_order
-# elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
-#  define md5_block_data_order ossl_md5_block_asm_data_order
-# elif defined(__sparc) || defined(__sparc__)
-#  define md5_block_data_order ossl_md5_block_asm_data_order
-# endif
+#if defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64) || defined(__aarch64__) || (defined(__loongarch__) && __loongarch_grlen == 64) || (defined(__riscv) && __riscv_xlen == 64)
+#define md5_block_data_order ossl_md5_block_asm_data_order
+#elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
+#define md5_block_data_order ossl_md5_block_asm_data_order
+#elif defined(__sparc) || defined(__sparc__)
+#define md5_block_data_order ossl_md5_block_asm_data_order
+#endif
 #endif
 
 void md5_block_data_order(MD5_CTX *c, const void *p, size_t num);
 
 #define DATA_ORDER_IS_LITTLE_ENDIAN
 
-#define HASH_LONG               MD5_LONG
-#define HASH_CTX                MD5_CTX
-#define HASH_CBLOCK             MD5_CBLOCK
+#define HASH_LONG MD5_LONG
+#define HASH_CTX MD5_CTX
+#define HASH_CBLOCK MD5_CBLOCK
 #if defined(ERLANG_OPENSSL_INTEGRATION)
-#define HASH_UPDATE             MD5_UPDATE_FUNCTION_NAME
-#define HASH_TRANSFORM          MD5_TRANSFORM_FUNCTION_NAME
-#define HASH_FINAL              MD5_FINAL_FUNCTION_NAME
+#define HASH_UPDATE    MD5_UPDATE_FUNCTION_NAME
+#define HASH_TRANSFORM MD5_TRANSFORM_FUNCTION_NAME
+#define HASH_FINAL     MD5_FINAL_FUNCTION_NAME
 #else
-#define HASH_UPDATE             MD5_Update
-#define HASH_TRANSFORM          MD5_Transform
-#define HASH_FINAL              MD5_Final
+#define HASH_UPDATE MD5_Update
+#define HASH_TRANSFORM MD5_Transform
+#define HASH_FINAL MD5_Final
 #endif
-#define HASH_MAKE_STRING(c,s)   do {    \
-        unsigned long ll;               \
-        ll=(c)->A; (void)HOST_l2c(ll,(s));      \
-        ll=(c)->B; (void)HOST_l2c(ll,(s));      \
-        ll=(c)->C; (void)HOST_l2c(ll,(s));      \
-        ll=(c)->D; (void)HOST_l2c(ll,(s));      \
-        } while (0)
+#define HASH_MAKE_STRING(c, s)   \
+    do {                         \
+        unsigned long ll;        \
+        ll = (c)->A;             \
+        (void)HOST_l2c(ll, (s)); \
+        ll = (c)->B;             \
+        (void)HOST_l2c(ll, (s)); \
+        ll = (c)->C;             \
+        (void)HOST_l2c(ll, (s)); \
+        ll = (c)->D;             \
+        (void)HOST_l2c(ll, (s)); \
+    } while (0)
 #if defined(ERLANG_OPENSSL_INTEGRATION)
 #define HASH_BLOCK_DATA_ORDER   MD5_BLOCK_DATA_ORDER_FUNCTION_NAME
 #undef md5_block_data_order
 #else
-#define HASH_BLOCK_DATA_ORDER   md5_block_data_order
+#define HASH_BLOCK_DATA_ORDER md5_block_data_order
 #endif
 
 #include "crypto/md32_common.h"
@@ -74,27 +75,35 @@ void md5_block_data_order(MD5_CTX *c, const void *p, size_t num);
  * below.  Wei attributes these optimizations to Peter Gutmann's
  * SHS code, and he attributes it to Rich Schroeppel.
  */
-#define F(b,c,d)        ((((c) ^ (d)) & (b)) ^ (d))
-#define G(b,c,d)        ((((b) ^ (c)) & (d)) ^ (c))
-#define H(b,c,d)        ((b) ^ (c) ^ (d))
-#define I(b,c,d)        (((~(d)) | (b)) ^ (c))
+#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
+#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
+#define H(b, c, d) ((b) ^ (c) ^ (d))
+#define I(b, c, d) (((~(d)) | (b)) ^ (c))
 
-#define R0(a,b,c,d,k,s,t) { \
-        a+=((k)+(t)+F((b),(c),(d))); \
-        a=ROTATE(a,s); \
-        a+=b; };
+#define R0(a, b, c, d, k, s, t)              \
+    {                                        \
+        a += ((k) + (t) + F((b), (c), (d))); \
+        a = ROTATE(a, s);                    \
+        a += b;                              \
+    };
 
-#define R1(a,b,c,d,k,s,t) { \
-        a+=((k)+(t)+G((b),(c),(d))); \
-        a=ROTATE(a,s); \
-        a+=b; };
+#define R1(a, b, c, d, k, s, t)              \
+    {                                        \
+        a += ((k) + (t) + G((b), (c), (d))); \
+        a = ROTATE(a, s);                    \
+        a += b;                              \
+    };
 
-#define R2(a,b,c,d,k,s,t) { \
-        a+=((k)+(t)+H((b),(c),(d))); \
-        a=ROTATE(a,s); \
-        a+=b; };
+#define R2(a, b, c, d, k, s, t)              \
+    {                                        \
+        a += ((k) + (t) + H((b), (c), (d))); \
+        a = ROTATE(a, s);                    \
+        a += b;                              \
+    };
 
-#define R3(a,b,c,d,k,s,t) { \
-        a+=((k)+(t)+I((b),(c),(d))); \
-        a=ROTATE(a,s); \
-        a+=b; };
+#define R3(a, b, c, d, k, s, t)              \
+    {                                        \
+        a += ((k) + (t) + I((b), (c), (d))); \
+        a = ROTATE(a, s);                    \
+        a += b;                              \
+    };
diff --git a/erts/emulator/openssl/include/crypto/md32_common.h b/erts/emulator/openssl/include/crypto/md32_common.h
index c448bbef3b..7b51cc85c4 100644
--- a/erts/emulator/openssl/include/crypto/md32_common.h
+++ b/erts/emulator/openssl/include/crypto/md32_common.h
@@ -68,7 +68,7 @@
 /*
  * For ossl_(un)likely
  */
-# include <internal/common.h>
+#include <internal/common.h>
 #else
 /* Cut from <internal/common.h> */
 # if defined(__GNUC__) || defined(__clang__)
@@ -111,50 +111,49 @@
 #define ROTATE(a,n)     (((a)<<(n))|(((a)&0xffffffff)>>(32-(n))))
 
 #ifndef PEDANTIC
-# if defined(__GNUC__) && __GNUC__>=2 && \
-     !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
-#  if defined(__riscv_zbb) || defined(__riscv_zbkb)
-#   if __riscv_xlen == 64
-#   undef ROTATE
-#   define ROTATE(x, n) ({ MD32_REG_T ret;            \
+#if defined(__GNUC__) && __GNUC__ >= 2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
+#if defined(__riscv_zbb) || defined(__riscv_zbkb)
+#if __riscv_xlen == 64
+#undef ROTATE
+#define ROTATE(x, n) ({ MD32_REG_T ret;            \
                        asm ("roriw %0, %1, %2"        \
                        : "=r"(ret)                    \
                        : "r"(x), "i"(32 - (n))); ret;})
-#   endif
-#   if __riscv_xlen == 32
-#   undef ROTATE
-#   define ROTATE(x, n) ({ MD32_REG_T ret;            \
+#endif
+#if __riscv_xlen == 32
+#undef ROTATE
+#define ROTATE(x, n) ({ MD32_REG_T ret;            \
                        asm ("rori %0, %1, %2"         \
                        : "=r"(ret)                    \
                        : "r"(x), "i"(32 - (n))); ret;})
-#   endif
-#  endif
-# endif
+#endif
+#endif
+#endif
 #endif
 
 #if defined(DATA_ORDER_IS_BIG_ENDIAN)
 
-# define HOST_c2l(c,l)  (l =(((unsigned long)(*((c)++)))<<24),          \
-                         l|=(((unsigned long)(*((c)++)))<<16),          \
-                         l|=(((unsigned long)(*((c)++)))<< 8),          \
-                         l|=(((unsigned long)(*((c)++)))    )           )
-# define HOST_l2c(l,c)  (*((c)++)=(unsigned char)(((l)>>24)&0xff),      \
-                         *((c)++)=(unsigned char)(((l)>>16)&0xff),      \
-                         *((c)++)=(unsigned char)(((l)>> 8)&0xff),      \
-                         *((c)++)=(unsigned char)(((l)    )&0xff),      \
-                         l)
+#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
+    l |= (((unsigned long)(*((c)++))) << 16),                    \
+    l |= (((unsigned long)(*((c)++))) << 8),                     \
+    l |= (((unsigned long)(*((c)++)))))
+#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
+    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
+    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
+    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
+    l)
 
 #elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
 
-# define HOST_c2l(c,l)  (l =(((unsigned long)(*((c)++)))    ),          \
-                         l|=(((unsigned long)(*((c)++)))<< 8),          \
-                         l|=(((unsigned long)(*((c)++)))<<16),          \
-                         l|=(((unsigned long)(*((c)++)))<<24)           )
-# define HOST_l2c(l,c)  (*((c)++)=(unsigned char)(((l)    )&0xff),      \
-                         *((c)++)=(unsigned char)(((l)>> 8)&0xff),      \
-                         *((c)++)=(unsigned char)(((l)>>16)&0xff),      \
-                         *((c)++)=(unsigned char)(((l)>>24)&0xff),      \
-                         l)
+#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
+    l |= (((unsigned long)(*((c)++))) << 8),               \
+    l |= (((unsigned long)(*((c)++))) << 16),              \
+    l |= (((unsigned long)(*((c)++))) << 24))
+#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
+    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
+    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
+    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
+    l)
 
 #endif
 
@@ -172,11 +171,11 @@ int HASH_UPDATE(HASH_CTX *c, const void *data_, size_t len)
     if (ossl_unlikely(len == 0))
         return 1;
 
-    l = (c->Nl + (((HASH_LONG) len) << 3)) & 0xffffffffUL;
-    if (ossl_unlikely(l < c->Nl))              /* overflow */
+    l = (c->Nl + (((HASH_LONG)len) << 3)) & 0xffffffffUL;
+    if (ossl_unlikely(l < c->Nl)) /* overflow */
         c->Nh++;
-    c->Nh += (HASH_LONG) (len >> 29); /* might cause compiler warning on
-                                       * 16-bit */
+    c->Nh += (HASH_LONG)(len >> 29); /* might cause compiler warning on
+                                      * 16-bit */
     c->Nl = l;
 
     n = c->num;
@@ -230,7 +229,7 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c)
     unsigned char *p = (unsigned char *)c->data;
     size_t n = c->num;
 
-    p[n] = 0x80;                /* there is always room for one */
+    p[n] = 0x80; /* there is always room for one */
     n++;
 
     if (n > (HASH_CBLOCK - 8)) {
@@ -241,7 +240,7 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c)
     memset(p + n, 0, HASH_CBLOCK - 8 - n);
 
     p += HASH_CBLOCK - 8;
-#if   defined(DATA_ORDER_IS_BIG_ENDIAN)
+#if defined(DATA_ORDER_IS_BIG_ENDIAN)
     (void)HOST_l2c(c->Nh, p);
     (void)HOST_l2c(c->Nl, p);
 #elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
@@ -262,7 +261,7 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c)
 #endif
 
 #ifndef HASH_MAKE_STRING
-# error "HASH_MAKE_STRING must be defined!"
+#error "HASH_MAKE_STRING must be defined!"
 #else
     HASH_MAKE_STRING(c, md);
 #endif
@@ -271,8 +270,8 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c)
 }
 
 #ifndef MD32_REG_T
-# if defined(__alpha) || defined(__sparcv9) || defined(__mips)
-#  define MD32_REG_T long
+#if defined(__alpha) || defined(__sparcv9) || defined(__mips)
+#define MD32_REG_T long
 /*
  * This comment was originally written for MD5, which is why it
  * discusses A-D. But it basically applies to all 32-bit digests,
@@ -296,6 +295,6 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c)
  * pre-processor condition reflects the circumstances under which
  * the conclusion was made and is subject to further extension.
  */
-#  define MD32_REG_T int
-# endif
+#define MD32_REG_T int
+#endif
 #endif
diff --git a/erts/emulator/openssl/include/openssl_local/md5.h b/erts/emulator/openssl/include/openssl_local/md5.h
index c9b42ecb11..a522ea711c 100644
--- a/erts/emulator/openssl/include/openssl_local/md5.h
+++ b/erts/emulator/openssl/include/openssl_local/md5.h
@@ -8,8 +8,8 @@
  */
 
 #ifndef OPENSSL_MD5_H
-# define OPENSSL_MD5_H
-# pragma once
+#define OPENSSL_MD5_H
+#pragma once
 
 #if defined(ERLANG_OPENSSL_INTEGRATION)
 
@@ -20,36 +20,36 @@
 
 #else  /* !defined(ERLANG_OPENSSL_INTEGRATION) */
 
-# include <openssl/macros.h>
-# ifndef OPENSSL_NO_DEPRECATED_3_0
-#  define HEADER_MD5_H
-# endif
+#include <openssl/macros.h>
+#ifndef OPENSSL_NO_DEPRECATED_3_0
+#define HEADER_MD5_H
+#endif
 
-# include <openssl/opensslconf.h>
+#include <openssl/opensslconf.h>
 
 #endif /* !defined(ERLANG_OPENSSL_INTEGRATION) */
 
-# ifndef OPENSSL_NO_MD5
+#ifndef OPENSSL_NO_MD5
 #if !defined(ERLANG_OPENSSL_INTEGRATION)
-#  include <openssl/e_os2.h>
+#include <openssl/e_os2.h>
 #endif
-#  include <stddef.h>
-#  ifdef  __cplusplus
+#include <stddef.h>
+#ifdef  __cplusplus
 extern "C" {
 #  endif
 
-#  define MD5_DIGEST_LENGTH 16
+#define MD5_DIGEST_LENGTH 16
 
-#  if !defined(OPENSSL_NO_DEPRECATED_3_0)
+#if !defined(OPENSSL_NO_DEPRECATED_3_0)
 /*
  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  * ! MD5_LONG has to be at least 32 bits wide.                     !
  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  */
-#   define MD5_LONG unsigned int
+#define MD5_LONG unsigned int
 
-#   define MD5_CBLOCK      64
-#   define MD5_LBLOCK      (MD5_CBLOCK/4)
+#define MD5_CBLOCK      64
+#define MD5_LBLOCK      (MD5_CBLOCK/4)
 
 typedef struct MD5state_st {
     MD5_LONG A, B, C, D;
@@ -57,26 +57,26 @@ typedef struct MD5state_st {
     MD5_LONG data[MD5_LBLOCK];
     unsigned int num;
 } MD5_CTX;
-#  endif
-#  ifndef OPENSSL_NO_DEPRECATED_3_0
-#    if defined(ERLANG_OPENSSL_INTEGRATION)
+#endif
+#ifndef OPENSSL_NO_DEPRECATED_3_0
+#if defined(ERLANG_OPENSSL_INTEGRATION)
 int MD5_INIT_FUNCTION_NAME(MD5_CTX *c);
 int MD5_UPDATE_FUNCTION_NAME(MD5_CTX *c, const void *data, size_t len);
 int MD5_FINAL_FUNCTION_NAME(unsigned char *md, MD5_CTX *c);
 void MD5_TRANSFORM_FUNCTION_NAME(MD5_CTX *c, const unsigned char *b);
-#    else /* !defined(ERLANG_OPENSSL_INTEGRATION) */
+#else /* !defined(ERLANG_OPENSSL_INTEGRATION) */
 OSSL_DEPRECATEDIN_3_0 int MD5_Init(MD5_CTX *c);
 OSSL_DEPRECATEDIN_3_0 int MD5_Update(MD5_CTX *c, const void *data, size_t len);
 OSSL_DEPRECATEDIN_3_0 int MD5_Final(unsigned char *md, MD5_CTX *c);
 OSSL_DEPRECATEDIN_3_0 unsigned char *MD5(const unsigned char *d, size_t n,
-                                         unsigned char *md);
+    unsigned char *md);
 OSSL_DEPRECATEDIN_3_0 void MD5_Transform(MD5_CTX *c, const unsigned char *b);
-#    endif /* !defined(ERLANG_OPENSSL_INTEGRATION) */
-#  endif
+#endif /* !defined(ERLANG_OPENSSL_INTEGRATION) */
+#endif
 
-#  ifdef  __cplusplus
+#ifdef  __cplusplus
 }
-#  endif
-# endif
+#endif
+#endif
 
 #endif
diff --git a/erts/emulator/openssl/update b/erts/emulator/openssl/update.sh
similarity index 100%
rename from erts/emulator/openssl/update
rename to erts/emulator/openssl/update.sh
diff --git a/erts/emulator/openssl/vendor.info b/erts/emulator/openssl/vendor.info
index 89187f0d29..30071886b7 100644
--- a/erts/emulator/openssl/vendor.info
+++ b/erts/emulator/openssl/vendor.info
@@ -14,14 +14,15 @@
     "homepage": "https://www.openssl.org/",
     "licenseDeclared": "Apache-2.0",
     "name": "openssl",
-    "versionInfo": "3.6.0",
-    "sha": "7b371d80d959ec9ab4139d09d78e83c090de9779",
+    "versionInfo": "3.6.1",
+    "sha": "c9a9e5b10105ad850b6e4d1122c645c67767c341",
     "path": "./erts/emulator/openssl",
+    "update": "./erts/emulator/openssl/update.sh",
     "exclude": [
       "./erts/emulator/openssl/vendor.info",
       "./erts/emulator/openssl/README",
       "./erts/emulator/openssl/openssl.mk",
-      "./erts/emulator/openssl/update"
+      "./erts/emulator/openssl/update.sh"
     ],
     "supplier": "Organization: OpenSSL Mission",
     "purl": "pkg:generic/openssl"
diff --git a/lib/erl_interface/src/openssl/crypto/md5/md5_dgst.c b/lib/erl_interface/src/openssl/crypto/md5/md5_dgst.c
index 155a5ac3e5..512bbf826e 100644
--- a/lib/erl_interface/src/openssl/crypto/md5/md5_dgst.c
+++ b/lib/erl_interface/src/openssl/crypto/md5/md5_dgst.c
@@ -45,9 +45,9 @@ int MD5_Init(MD5_CTX *c)
 }
 
 #ifndef md5_block_data_order
-# ifdef X
-#  undef X
-# endif
+#ifdef X
+#undef X
+#endif
 #if defined(ERLANG_OPENSSL_INTEGRATION)
 #define md5_block_data_order MD5_BLOCK_DATA_ORDER_FUNCTION_NAME
 #endif
@@ -55,15 +55,15 @@ void md5_block_data_order(MD5_CTX *c, const void *data_, size_t num)
 {
     const unsigned char *data = data_;
     register unsigned MD32_REG_T A, B, C, D, l;
-# ifndef MD32_XARRAY
+#ifndef MD32_XARRAY
     /* See comment in crypto/sha/sha_local.h for details. */
     unsigned MD32_REG_T XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
         XX8, XX9, XX10, XX11, XX12, XX13, XX14, XX15;
-#  define X(i)   XX##i
-# else
+#define X(i)   XX##i
+#else
     MD5_LONG XX[MD5_LBLOCK];
-#  define X(i)   XX[i]
-# endif
+#define X(i)   XX[i]
+#endif
 
     A = c->A;
     B = c->B;
diff --git a/lib/erl_interface/src/openssl/crypto/md5/md5_local.h b/lib/erl_interface/src/openssl/crypto/md5/md5_local.h
index 5830ffd687..b7cb3a6282 100644
--- a/lib/erl_interface/src/openssl/crypto/md5/md5_local.h
+++ b/lib/erl_interface/src/openssl/crypto/md5/md5_local.h
@@ -19,47 +19,48 @@
 #endif
 
 #ifdef MD5_ASM
-# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
-    defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \
-    defined(_M_X64) || defined(__aarch64__) || \
-    (defined(__loongarch__) && __loongarch_grlen == 64) || \
-    (defined(__riscv) && __riscv_xlen == 64)
-#  define md5_block_data_order ossl_md5_block_asm_data_order
-# elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
-#  define md5_block_data_order ossl_md5_block_asm_data_order
-# elif defined(__sparc) || defined(__sparc__)
-#  define md5_block_data_order ossl_md5_block_asm_data_order
-# endif
+#if defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64) || defined(__aarch64__) || (defined(__loongarch__) && __loongarch_grlen == 64) || (defined(__riscv) && __riscv_xlen == 64)
+#define md5_block_data_order ossl_md5_block_asm_data_order
+#elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
+#define md5_block_data_order ossl_md5_block_asm_data_order
+#elif defined(__sparc) || defined(__sparc__)
+#define md5_block_data_order ossl_md5_block_asm_data_order
+#endif
 #endif
 
 void md5_block_data_order(MD5_CTX *c, const void *p, size_t num);
 
 #define DATA_ORDER_IS_LITTLE_ENDIAN
 
-#define HASH_LONG               MD5_LONG
-#define HASH_CTX                MD5_CTX
-#define HASH_CBLOCK             MD5_CBLOCK
+#define HASH_LONG MD5_LONG
+#define HASH_CTX MD5_CTX
+#define HASH_CBLOCK MD5_CBLOCK
 #if defined(ERLANG_OPENSSL_INTEGRATION)
-#define HASH_UPDATE             MD5_UPDATE_FUNCTION_NAME
-#define HASH_TRANSFORM          MD5_TRANSFORM_FUNCTION_NAME
-#define HASH_FINAL              MD5_FINAL_FUNCTION_NAME
+#define HASH_UPDATE    MD5_UPDATE_FUNCTION_NAME
+#define HASH_TRANSFORM MD5_TRANSFORM_FUNCTION_NAME
+#define HASH_FINAL     MD5_FINAL_FUNCTION_NAME
 #else
-#define HASH_UPDATE             MD5_Update
-#define HASH_TRANSFORM          MD5_Transform
-#define HASH_FINAL              MD5_Final
+#define HASH_UPDATE MD5_Update
+#define HASH_TRANSFORM MD5_Transform
+#define HASH_FINAL MD5_Final
 #endif
-#define HASH_MAKE_STRING(c,s)   do {    \
-        unsigned long ll;               \
-        ll=(c)->A; (void)HOST_l2c(ll,(s));      \
-        ll=(c)->B; (void)HOST_l2c(ll,(s));      \
-        ll=(c)->C; (void)HOST_l2c(ll,(s));      \
-        ll=(c)->D; (void)HOST_l2c(ll,(s));      \
-        } while (0)
+#define HASH_MAKE_STRING(c, s)   \
+    do {                         \
+        unsigned long ll;        \
+        ll = (c)->A;             \
+        (void)HOST_l2c(ll, (s)); \
+        ll = (c)->B;             \
+        (void)HOST_l2c(ll, (s)); \
+        ll = (c)->C;             \
+        (void)HOST_l2c(ll, (s)); \
+        ll = (c)->D;             \
+        (void)HOST_l2c(ll, (s)); \
+    } while (0)
 #if defined(ERLANG_OPENSSL_INTEGRATION)
 #define HASH_BLOCK_DATA_ORDER   MD5_BLOCK_DATA_ORDER_FUNCTION_NAME
 #undef md5_block_data_order
 #else
-#define HASH_BLOCK_DATA_ORDER   md5_block_data_order
+#define HASH_BLOCK_DATA_ORDER md5_block_data_order
 #endif
 
 #include "crypto/md32_common.h"
@@ -74,27 +75,35 @@ void md5_block_data_order(MD5_CTX *c, const void *p, size_t num);
  * below.  Wei attributes these optimizations to Peter Gutmann's
  * SHS code, and he attributes it to Rich Schroeppel.
  */
-#define F(b,c,d)        ((((c) ^ (d)) & (b)) ^ (d))
-#define G(b,c,d)        ((((b) ^ (c)) & (d)) ^ (c))
-#define H(b,c,d)        ((b) ^ (c) ^ (d))
-#define I(b,c,d)        (((~(d)) | (b)) ^ (c))
+#define F(b, c, d) ((((c) ^ (d)) & (b)) ^ (d))
+#define G(b, c, d) ((((b) ^ (c)) & (d)) ^ (c))
+#define H(b, c, d) ((b) ^ (c) ^ (d))
+#define I(b, c, d) (((~(d)) | (b)) ^ (c))
 
-#define R0(a,b,c,d,k,s,t) { \
-        a+=((k)+(t)+F((b),(c),(d))); \
-        a=ROTATE(a,s); \
-        a+=b; };
+#define R0(a, b, c, d, k, s, t)              \
+    {                                        \
+        a += ((k) + (t) + F((b), (c), (d))); \
+        a = ROTATE(a, s);                    \
+        a += b;                              \
+    };
 
-#define R1(a,b,c,d,k,s,t) { \
-        a+=((k)+(t)+G((b),(c),(d))); \
-        a=ROTATE(a,s); \
-        a+=b; };
+#define R1(a, b, c, d, k, s, t)              \
+    {                                        \
+        a += ((k) + (t) + G((b), (c), (d))); \
+        a = ROTATE(a, s);                    \
+        a += b;                              \
+    };
 
-#define R2(a,b,c,d,k,s,t) { \
-        a+=((k)+(t)+H((b),(c),(d))); \
-        a=ROTATE(a,s); \
-        a+=b; };
+#define R2(a, b, c, d, k, s, t)              \
+    {                                        \
+        a += ((k) + (t) + H((b), (c), (d))); \
+        a = ROTATE(a, s);                    \
+        a += b;                              \
+    };
 
-#define R3(a,b,c,d,k,s,t) { \
-        a+=((k)+(t)+I((b),(c),(d))); \
-        a=ROTATE(a,s); \
-        a+=b; };
+#define R3(a, b, c, d, k, s, t)              \
+    {                                        \
+        a += ((k) + (t) + I((b), (c), (d))); \
+        a = ROTATE(a, s);                    \
+        a += b;                              \
+    };
diff --git a/lib/erl_interface/src/openssl/include/crypto/md32_common.h b/lib/erl_interface/src/openssl/include/crypto/md32_common.h
index c448bbef3b..7b51cc85c4 100644
--- a/lib/erl_interface/src/openssl/include/crypto/md32_common.h
+++ b/lib/erl_interface/src/openssl/include/crypto/md32_common.h
@@ -68,7 +68,7 @@
 /*
  * For ossl_(un)likely
  */
-# include <internal/common.h>
+#include <internal/common.h>
 #else
 /* Cut from <internal/common.h> */
 # if defined(__GNUC__) || defined(__clang__)
@@ -111,50 +111,49 @@
 #define ROTATE(a,n)     (((a)<<(n))|(((a)&0xffffffff)>>(32-(n))))
 
 #ifndef PEDANTIC
-# if defined(__GNUC__) && __GNUC__>=2 && \
-     !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
-#  if defined(__riscv_zbb) || defined(__riscv_zbkb)
-#   if __riscv_xlen == 64
-#   undef ROTATE
-#   define ROTATE(x, n) ({ MD32_REG_T ret;            \
+#if defined(__GNUC__) && __GNUC__ >= 2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
+#if defined(__riscv_zbb) || defined(__riscv_zbkb)
+#if __riscv_xlen == 64
+#undef ROTATE
+#define ROTATE(x, n) ({ MD32_REG_T ret;            \
                        asm ("roriw %0, %1, %2"        \
                        : "=r"(ret)                    \
                        : "r"(x), "i"(32 - (n))); ret;})
-#   endif
-#   if __riscv_xlen == 32
-#   undef ROTATE
-#   define ROTATE(x, n) ({ MD32_REG_T ret;            \
+#endif
+#if __riscv_xlen == 32
+#undef ROTATE
+#define ROTATE(x, n) ({ MD32_REG_T ret;            \
                        asm ("rori %0, %1, %2"         \
                        : "=r"(ret)                    \
                        : "r"(x), "i"(32 - (n))); ret;})
-#   endif
-#  endif
-# endif
+#endif
+#endif
+#endif
 #endif
 
 #if defined(DATA_ORDER_IS_BIG_ENDIAN)
 
-# define HOST_c2l(c,l)  (l =(((unsigned long)(*((c)++)))<<24),          \
-                         l|=(((unsigned long)(*((c)++)))<<16),          \
-                         l|=(((unsigned long)(*((c)++)))<< 8),          \
-                         l|=(((unsigned long)(*((c)++)))    )           )
-# define HOST_l2c(l,c)  (*((c)++)=(unsigned char)(((l)>>24)&0xff),      \
-                         *((c)++)=(unsigned char)(((l)>>16)&0xff),      \
-                         *((c)++)=(unsigned char)(((l)>> 8)&0xff),      \
-                         *((c)++)=(unsigned char)(((l)    )&0xff),      \
-                         l)
+#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++))) << 24), \
+    l |= (((unsigned long)(*((c)++))) << 16),                    \
+    l |= (((unsigned long)(*((c)++))) << 8),                     \
+    l |= (((unsigned long)(*((c)++)))))
+#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l) >> 24) & 0xff), \
+    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),                     \
+    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                      \
+    *((c)++) = (unsigned char)(((l)) & 0xff),                           \
+    l)
 
 #elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
 
-# define HOST_c2l(c,l)  (l =(((unsigned long)(*((c)++)))    ),          \
-                         l|=(((unsigned long)(*((c)++)))<< 8),          \
-                         l|=(((unsigned long)(*((c)++)))<<16),          \
-                         l|=(((unsigned long)(*((c)++)))<<24)           )
-# define HOST_l2c(l,c)  (*((c)++)=(unsigned char)(((l)    )&0xff),      \
-                         *((c)++)=(unsigned char)(((l)>> 8)&0xff),      \
-                         *((c)++)=(unsigned char)(((l)>>16)&0xff),      \
-                         *((c)++)=(unsigned char)(((l)>>24)&0xff),      \
-                         l)
+#define HOST_c2l(c, l) (l = (((unsigned long)(*((c)++)))), \
+    l |= (((unsigned long)(*((c)++))) << 8),               \
+    l |= (((unsigned long)(*((c)++))) << 16),              \
+    l |= (((unsigned long)(*((c)++))) << 24))
+#define HOST_l2c(l, c) (*((c)++) = (unsigned char)(((l)) & 0xff), \
+    *((c)++) = (unsigned char)(((l) >> 8) & 0xff),                \
+    *((c)++) = (unsigned char)(((l) >> 16) & 0xff),               \
+    *((c)++) = (unsigned char)(((l) >> 24) & 0xff),               \
+    l)
 
 #endif
 
@@ -172,11 +171,11 @@ int HASH_UPDATE(HASH_CTX *c, const void *data_, size_t len)
     if (ossl_unlikely(len == 0))
         return 1;
 
-    l = (c->Nl + (((HASH_LONG) len) << 3)) & 0xffffffffUL;
-    if (ossl_unlikely(l < c->Nl))              /* overflow */
+    l = (c->Nl + (((HASH_LONG)len) << 3)) & 0xffffffffUL;
+    if (ossl_unlikely(l < c->Nl)) /* overflow */
         c->Nh++;
-    c->Nh += (HASH_LONG) (len >> 29); /* might cause compiler warning on
-                                       * 16-bit */
+    c->Nh += (HASH_LONG)(len >> 29); /* might cause compiler warning on
+                                      * 16-bit */
     c->Nl = l;
 
     n = c->num;
@@ -230,7 +229,7 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c)
     unsigned char *p = (unsigned char *)c->data;
     size_t n = c->num;
 
-    p[n] = 0x80;                /* there is always room for one */
+    p[n] = 0x80; /* there is always room for one */
     n++;
 
     if (n > (HASH_CBLOCK - 8)) {
@@ -241,7 +240,7 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c)
     memset(p + n, 0, HASH_CBLOCK - 8 - n);
 
     p += HASH_CBLOCK - 8;
-#if   defined(DATA_ORDER_IS_BIG_ENDIAN)
+#if defined(DATA_ORDER_IS_BIG_ENDIAN)
     (void)HOST_l2c(c->Nh, p);
     (void)HOST_l2c(c->Nl, p);
 #elif defined(DATA_ORDER_IS_LITTLE_ENDIAN)
@@ -262,7 +261,7 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c)
 #endif
 
 #ifndef HASH_MAKE_STRING
-# error "HASH_MAKE_STRING must be defined!"
+#error "HASH_MAKE_STRING must be defined!"
 #else
     HASH_MAKE_STRING(c, md);
 #endif
@@ -271,8 +270,8 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c)
 }
 
 #ifndef MD32_REG_T
-# if defined(__alpha) || defined(__sparcv9) || defined(__mips)
-#  define MD32_REG_T long
+#if defined(__alpha) || defined(__sparcv9) || defined(__mips)
+#define MD32_REG_T long
 /*
  * This comment was originally written for MD5, which is why it
  * discusses A-D. But it basically applies to all 32-bit digests,
@@ -296,6 +295,6 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c)
  * pre-processor condition reflects the circumstances under which
  * the conclusion was made and is subject to further extension.
  */
-#  define MD32_REG_T int
-# endif
+#define MD32_REG_T int
+#endif
 #endif
diff --git a/lib/erl_interface/src/openssl/include/openssl_local/md5.h b/lib/erl_interface/src/openssl/include/openssl_local/md5.h
index c9b42ecb11..a522ea711c 100644
--- a/lib/erl_interface/src/openssl/include/openssl_local/md5.h
+++ b/lib/erl_interface/src/openssl/include/openssl_local/md5.h
@@ -8,8 +8,8 @@
  */
 
 #ifndef OPENSSL_MD5_H
-# define OPENSSL_MD5_H
-# pragma once
+#define OPENSSL_MD5_H
+#pragma once
 
 #if defined(ERLANG_OPENSSL_INTEGRATION)
 
@@ -20,36 +20,36 @@
 
 #else  /* !defined(ERLANG_OPENSSL_INTEGRATION) */
 
-# include <openssl/macros.h>
-# ifndef OPENSSL_NO_DEPRECATED_3_0
-#  define HEADER_MD5_H
-# endif
+#include <openssl/macros.h>
+#ifndef OPENSSL_NO_DEPRECATED_3_0
+#define HEADER_MD5_H
+#endif
 
-# include <openssl/opensslconf.h>
+#include <openssl/opensslconf.h>
 
 #endif /* !defined(ERLANG_OPENSSL_INTEGRATION) */
 
-# ifndef OPENSSL_NO_MD5
+#ifndef OPENSSL_NO_MD5
 #if !defined(ERLANG_OPENSSL_INTEGRATION)
-#  include <openssl/e_os2.h>
+#include <openssl/e_os2.h>
 #endif
-#  include <stddef.h>
-#  ifdef  __cplusplus
+#include <stddef.h>
+#ifdef  __cplusplus
 extern "C" {
 #  endif
 
-#  define MD5_DIGEST_LENGTH 16
+#define MD5_DIGEST_LENGTH 16
 
-#  if !defined(OPENSSL_NO_DEPRECATED_3_0)
+#if !defined(OPENSSL_NO_DEPRECATED_3_0)
 /*
  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  * ! MD5_LONG has to be at least 32 bits wide.                     !
  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  */
-#   define MD5_LONG unsigned int
+#define MD5_LONG unsigned int
 
-#   define MD5_CBLOCK      64
-#   define MD5_LBLOCK      (MD5_CBLOCK/4)
+#define MD5_CBLOCK      64
+#define MD5_LBLOCK      (MD5_CBLOCK/4)
 
 typedef struct MD5state_st {
     MD5_LONG A, B, C, D;
@@ -57,26 +57,26 @@ typedef struct MD5state_st {
     MD5_LONG data[MD5_LBLOCK];
     unsigned int num;
 } MD5_CTX;
-#  endif
-#  ifndef OPENSSL_NO_DEPRECATED_3_0
-#    if defined(ERLANG_OPENSSL_INTEGRATION)
+#endif
+#ifndef OPENSSL_NO_DEPRECATED_3_0
+#if defined(ERLANG_OPENSSL_INTEGRATION)
 int MD5_INIT_FUNCTION_NAME(MD5_CTX *c);
 int MD5_UPDATE_FUNCTION_NAME(MD5_CTX *c, const void *data, size_t len);
 int MD5_FINAL_FUNCTION_NAME(unsigned char *md, MD5_CTX *c);
 void MD5_TRANSFORM_FUNCTION_NAME(MD5_CTX *c, const unsigned char *b);
-#    else /* !defined(ERLANG_OPENSSL_INTEGRATION) */
+#else /* !defined(ERLANG_OPENSSL_INTEGRATION) */
 OSSL_DEPRECATEDIN_3_0 int MD5_Init(MD5_CTX *c);
 OSSL_DEPRECATEDIN_3_0 int MD5_Update(MD5_CTX *c, const void *data, size_t len);
 OSSL_DEPRECATEDIN_3_0 int MD5_Final(unsigned char *md, MD5_CTX *c);
 OSSL_DEPRECATEDIN_3_0 unsigned char *MD5(const unsigned char *d, size_t n,
-                                         unsigned char *md);
+    unsigned char *md);
 OSSL_DEPRECATEDIN_3_0 void MD5_Transform(MD5_CTX *c, const unsigned char *b);
-#    endif /* !defined(ERLANG_OPENSSL_INTEGRATION) */
-#  endif
+#endif /* !defined(ERLANG_OPENSSL_INTEGRATION) */
+#endif
 
-#  ifdef  __cplusplus
+#ifdef  __cplusplus
 }
-#  endif
-# endif
+#endif
+#endif
 
 #endif
diff --git a/lib/erl_interface/src/openssl/vendor.info b/lib/erl_interface/src/openssl/vendor.info
index e1702fcd0a..e7720bbed3 100644
--- a/lib/erl_interface/src/openssl/vendor.info
+++ b/lib/erl_interface/src/openssl/vendor.info
@@ -14,8 +14,8 @@
     "homepage": "https://www.openssl.org/",
     "licenseDeclared": "Apache-2.0",
     "name": "openssl",
-    "versionInfo": "3.6.0",
-    "sha": "7b371d80d959ec9ab4139d09d78e83c090de9779",
+    "versionInfo": "3.6.1",
+    "sha": "c9a9e5b10105ad850b6e4d1122c645c67767c341",
     "path": "./lib/erl_interface/src/openssl",
     "exclude": [
       "./lib/erl_interface/src/openssl/vendor.info",
-- 
2.51.0

openSUSE Build Service is sponsored by