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;