Commit 02b955279c for openssl.org

commit 02b955279cc82670316de1f173738c8e7ee33af6
Author: Bob Beck <beck@openssl.org>
Date:   Wed May 20 07:27:08 2026 -0600

    use stdint in modes.h

    Reviewed-by: Richard Levitte <levitte@openssl.org>
    Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
    MergeDate: Wed May 27 09:09:41 2026
    (Merged from https://github.com/openssl/openssl/pull/31254)

diff --git a/include/crypto/modes.h b/include/crypto/modes.h
index b0358da31e..d749eed77d 100644
--- a/include/crypto/modes.h
+++ b/include/crypto/modes.h
@@ -11,25 +11,18 @@
 #if !defined(OSSL_CRYPTO_MODES_H)
 #define OSSL_CRYPTO_MODES_H

+#include <stdint.h>
+
 #include <openssl/modes.h>

 #if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)
-typedef __int64 i64;
-typedef unsigned __int64 u64;
 #define U64(C) C##UI64
 #elif defined(__arch64__)
-typedef long i64;
-typedef unsigned long u64;
 #define U64(C) C##UL
 #else
-typedef long long i64;
-typedef unsigned long long u64;
 #define U64(C) C##ULL
 #endif

-typedef unsigned int u32;
-typedef unsigned char u8;
-
 #define STRICT_ALIGNMENT 1
 #ifndef PEDANTIC
 #if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) || defined(__aarch64__) || defined(__s390__) || defined(__s390x__)
@@ -40,43 +33,43 @@ typedef unsigned char u8;
 #if !defined(PEDANTIC) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
 #if defined(__GNUC__) && __GNUC__ >= 2
 #if defined(__x86_64) || defined(__x86_64__)
-#define BSWAP8(x) ({ u64 ret_=(x);                   \
+#define BSWAP8(x) ({ uint64_t ret_=(x);                   \
                         asm ("bswapq %0"                \
                         : "+r"(ret_));   ret_; })
-#define BSWAP4(x) ({ u32 ret_=(x);                   \
+#define BSWAP4(x) ({ uint32_t ret_=(x);                   \
                         asm ("bswapl %0"                \
                         : "+r"(ret_));   ret_; })
 #elif (defined(__i386) || defined(__i386__)) && !defined(I386_ONLY)
-#define BSWAP8(x) ({ u32 lo_=(u64)(x)>>32,hi_=(x);   \
+#define BSWAP8(x) ({ uint32_t lo_=(uint64_t)(x)>>32,hi_=(x);   \
                         asm ("bswapl %0; bswapl %1"     \
                         : "+r"(hi_),"+r"(lo_));         \
-                        (u64)hi_<<32|lo_; })
-#define BSWAP4(x) ({ u32 ret_=(x);                   \
+                        (uint64_t)hi_<<32|lo_; })
+#define BSWAP4(x) ({ uint32_t ret_=(x);                   \
                         asm ("bswapl %0"                \
                         : "+r"(ret_));   ret_; })
 #elif defined(__aarch64__)
 #if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-#define BSWAP8(x) ({ u64 ret_;                       \
+#define BSWAP8(x) ({ uint64_t ret_;                       \
                         asm ("rev %0,%1"                \
                         : "=r"(ret_) : "r"(x)); ret_; })
-#define BSWAP4(x) ({ u32 ret_;                       \
+#define BSWAP4(x) ({ uint32_t ret_;                       \
                         asm ("rev %w0,%w1"              \
                         : "=r"(ret_) : "r"(x)); ret_; })
 #endif
 #elif (defined(__arm__) || defined(__arm)) && !defined(STRICT_ALIGNMENT)
-#define BSWAP8(x) ({ u32 lo_=(u64)(x)>>32,hi_=(x);   \
+#define BSWAP8(x) ({ uint32_t lo_=(uint64_t)(x)>>32,hi_=(x);   \
                         asm ("rev %0,%0; rev %1,%1"     \
                         : "+r"(hi_),"+r"(lo_));         \
-                        (u64)hi_<<32|lo_; })
-#define BSWAP4(x) ({ u32 ret_;                       \
+                        (uint64_t)hi_<<32|lo_; })
+#define BSWAP4(x) ({ uint32_t ret_;                       \
                         asm ("rev %0,%1"                \
-                        : "=r"(ret_) : "r"((u32)(x)));  \
+                        : "=r"(ret_) : "r"((uint32_t)(x)));  \
                         ret_; })
 #elif (defined(__riscv_zbb) || defined(__riscv_zbkb)) && __riscv_xlen == 64
-#define BSWAP8(x) ({ u64 ret_=(x);                   \
+#define BSWAP8(x) ({ uint64_t ret_=(x);                   \
                         asm ("rev8 %0,%0"               \
                         : "+r"(ret_));   ret_; })
-#define BSWAP4(x) ({ u32 ret_=(x);                   \
+#define BSWAP4(x) ({ uint32_t ret_=(x);                   \
                         asm ("rev8 %0,%0; srli %0,%0,32"\
                         : "+&r"(ret_));  ret_; })
 #endif
@@ -84,10 +77,10 @@ typedef unsigned char u8;
 #if _MSC_VER >= 1300
 #include <stdlib.h>
 #pragma intrinsic(_byteswap_uint64, _byteswap_ulong)
-#define BSWAP8(x) _byteswap_uint64((u64)(x))
-#define BSWAP4(x) _byteswap_ulong((u32)(x))
+#define BSWAP8(x) _byteswap_uint64((uint64_t)(x))
+#define BSWAP4(x) _byteswap_ulong((uint32_t)(x))
 #elif defined(_M_IX86)
-__inline u32 _bswap4(u32 val) {
+__inline uint32_t _bswap4(uint32_t val) {
     _asm mov eax, val _asm bswap eax
 }
 #define BSWAP4(x) _bswap4(x)
@@ -95,19 +88,19 @@ __inline u32 _bswap4(u32 val) {
 #endif
 #endif
 #if defined(BSWAP4) && !defined(STRICT_ALIGNMENT)
-#define GETU32(p) BSWAP4(*(const u32 *)(p))
-#define PUTU32(p, v) *(u32 *)(p) = BSWAP4(v)
+#define GETU32(p) BSWAP4(*(const uint32_t *)(p))
+#define PUTU32(p, v) *(uint32_t *)(p) = BSWAP4(v)
 #else
-#define GETU32(p) ((u32)(p)[0] << 24 | (u32)(p)[1] << 16 | (u32)(p)[2] << 8 | (u32)(p)[3])
-#define PUTU32(p, v) ((p)[0] = (u8)((v) >> 24), (p)[1] = (u8)((v) >> 16), (p)[2] = (u8)((v) >> 8), (p)[3] = (u8)(v))
+#define GETU32(p) ((uint32_t)(p)[0] << 24 | (uint32_t)(p)[1] << 16 | (uint32_t)(p)[2] << 8 | (uint32_t)(p)[3])
+#define PUTU32(p, v) ((p)[0] = (uint8_t)((v) >> 24), (p)[1] = (uint8_t)((v) >> 16), (p)[2] = (uint8_t)((v) >> 8), (p)[3] = (uint8_t)(v))
 #endif
 /*- GCM definitions */ typedef struct {
-    u64 hi, lo;
+    uint64_t hi, lo;
 } u128;

-typedef void (*gcm_init_fn)(u128 Htable[16], const u64 H[2]);
-typedef void (*gcm_ghash_fn)(u64 Xi[2], const u128 Htable[16], const u8 *inp, size_t len);
-typedef void (*gcm_gmult_fn)(u64 Xi[2], const u128 Htable[16]);
+typedef void (*gcm_init_fn)(u128 Htable[16], const uint64_t H[2]);
+typedef void (*gcm_ghash_fn)(uint64_t Xi[2], const u128 Htable[16], const uint8_t *inp, size_t len);
+typedef void (*gcm_gmult_fn)(uint64_t Xi[2], const u128 Htable[16]);
 struct gcm_funcs_st {
     gcm_init_fn ginit;
     gcm_ghash_fn ghash;
@@ -117,9 +110,9 @@ struct gcm_funcs_st {
 struct gcm128_context {
     /* Following 6 names follow names in GCM specification */
     union {
-        u64 u[2];
-        u32 d[4];
-        u8 c[16];
+        uint64_t u[2];
+        uint32_t d[4];
+        uint8_t c[16];
         size_t t[16 / sizeof(size_t)];
     } Yi, EKi, EK0, len, Xi, H;
     /*
@@ -137,10 +130,10 @@ struct gcm128_context {
 };

 /* GHASH functions */
-void ossl_gcm_init_4bit(u128 Htable[16], const u64 H[2]);
-void ossl_gcm_ghash_4bit(u64 Xi[2], const u128 Htable[16],
-    const u8 *inp, size_t len);
-void ossl_gcm_gmult_4bit(u64 Xi[2], const u128 Htable[16]);
+void ossl_gcm_init_4bit(u128 Htable[16], const uint64_t H[2]);
+void ossl_gcm_ghash_4bit(uint64_t Xi[2], const u128 Htable[16],
+    const uint8_t *inp, size_t len);
+void ossl_gcm_gmult_4bit(uint64_t Xi[2], const u128 Htable[16]);

 /*
  * The maximum permitted number of cipher blocks per data unit in XTS mode.
@@ -161,10 +154,10 @@ int ossl_crypto_xts128gb_encrypt(const XTS128_CONTEXT *ctx,

 struct ccm128_context {
     union {
-        u64 u[2];
-        u8 c[16];
+        uint64_t u[2];
+        uint8_t c[16];
     } nonce, cmac;
-    u64 blocks;
+    uint64_t blocks;
     block128_f block;
     void *key;
 };
@@ -172,7 +165,7 @@ struct ccm128_context {
 #ifndef OPENSSL_NO_OCB

 typedef union {
-    u64 a[2];
+    uint64_t a[2];
     unsigned char c[16];
 } OCB_BLOCK;
 #define ocb_block16_xor(in1, in2, out)        \
@@ -200,8 +193,8 @@ struct ocb128_context {
     OCB_BLOCK *l;
     /* Must be reset for each session */
     struct {
-        u64 blocks_hashed;
-        u64 blocks_processed;
+        uint64_t blocks_hashed;
+        uint64_t blocks_processed;
         OCB_BLOCK offset_aad;
         OCB_BLOCK sum;
         OCB_BLOCK offset;