109 #ifndef OPENSSL_HEADER_CRYPTO_INTERNAL_H 110 #define OPENSSL_HEADER_CRYPTO_INTERNAL_H 115 #if defined(_MSC_VER) 116 #if !defined(__cplusplus) || _MSC_VER < 1900 117 #define alignas(x) __declspec(align(x)) 118 #define alignof __alignof 121 #include <stdalign.h> 124 #if !defined(OPENSSL_NO_THREADS) && \ 125 (!defined(OPENSSL_WINDOWS) || defined(__MINGW32__)) 127 #define OPENSSL_PTHREADS 130 #if !defined(OPENSSL_NO_THREADS) && !defined(OPENSSL_PTHREADS) && \ 131 defined(OPENSSL_WINDOWS) 132 #define OPENSSL_WINDOWS_THREADS 138 #if defined(__cplusplus) 143 #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || defined(OPENSSL_ARM) || \ 144 defined(OPENSSL_AARCH64) || defined(OPENSSL_PPC64LE) 146 void OPENSSL_cpuid_setup(
void);
150 #if !defined(_MSC_VER) && defined(OPENSSL_64_BIT) 151 typedef __int128_t int128_t;
152 typedef __uint128_t uint128_t;
155 #define OPENSSL_ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0])) 158 static inline int buffers_alias(
const uint8_t *
a,
size_t a_len,
166 return a_u + a_len > b_u && b_u + b_len > a_u;
189 static inline unsigned int constant_time_msb(
unsigned int a) {
190 return (
unsigned int)((
int)(a) >> (
sizeof(
int) * 8 - 1));
194 static inline unsigned int constant_time_lt(
unsigned int a,
unsigned int b) {
226 return constant_time_msb(a^((a^b)|((a-b)^a)));
230 static inline uint8_t constant_time_lt_8(
unsigned int a,
unsigned int b) {
231 return (
uint8_t)(constant_time_lt(a, b));
235 static inline unsigned int constant_time_ge(
unsigned int a,
unsigned int b) {
236 return ~constant_time_lt(a, b);
240 static inline uint8_t constant_time_ge_8(
unsigned int a,
unsigned int b) {
241 return (
uint8_t)(constant_time_ge(a, b));
245 static inline unsigned int constant_time_is_zero(
unsigned int a) {
258 return constant_time_msb(~a & (a - 1));
263 static inline uint8_t constant_time_is_zero_8(
unsigned int a) {
264 return (
uint8_t)(constant_time_is_zero(a));
268 static inline unsigned int constant_time_eq(
unsigned int a,
unsigned int b) {
269 return constant_time_is_zero(a ^ b);
273 static inline uint8_t constant_time_eq_8(
unsigned int a,
unsigned int b) {
274 return (
uint8_t)(constant_time_eq(a, b));
278 static inline unsigned int constant_time_eq_int(
int a,
int b) {
279 return constant_time_eq((
unsigned)(a), (
unsigned)(b));
284 static inline uint8_t constant_time_eq_int_8(
int a,
int b) {
285 return constant_time_eq_8((
unsigned)(a), (
unsigned)(b));
291 static inline unsigned int constant_time_select(
unsigned int mask,
292 unsigned int a,
unsigned int b) {
293 return (mask & a) | (~mask &
b);
300 return (
uint8_t)(constant_time_select(mask, a, b));
305 static inline int constant_time_select_int(
unsigned int mask,
int a,
int b) {
306 return (
int)(constant_time_select(mask, (
unsigned)(a), (
unsigned)(b)));
312 #if defined(OPENSSL_NO_THREADS) 314 #define CRYPTO_ONCE_INIT 0 315 #elif defined(OPENSSL_WINDOWS_THREADS) 317 #define CRYPTO_ONCE_INIT INIT_ONCE_STATIC_INIT 318 #elif defined(OPENSSL_PTHREADS) 320 #define CRYPTO_ONCE_INIT PTHREAD_ONCE_INIT 322 #error "Unknown threading library" 338 #define CRYPTO_REFCOUNT_MAX 0xffffffff 368 #if defined(OPENSSL_NO_THREADS) 372 #define CRYPTO_STATIC_MUTEX_INIT { 0 } 373 #elif defined(OPENSSL_WINDOWS_THREADS) 377 #define CRYPTO_STATIC_MUTEX_INIT { SRWLOCK_INIT } 378 #elif defined(OPENSSL_PTHREADS) 382 #define CRYPTO_STATIC_MUTEX_INIT { PTHREAD_RWLOCK_INITIALIZER } 384 #error "Unknown threading library" 485 #define CRYPTO_EX_DATA_CLASS_INIT {CRYPTO_STATIC_MUTEX_INIT, NULL, 0} 486 #define CRYPTO_EX_DATA_CLASS_INIT_WITH_APP_DATA \ 487 {CRYPTO_STATIC_MUTEX_INIT, NULL, 1} 494 int *out_index,
long argl,
523 #if defined(__cplusplus) int CRYPTO_EX_dup(CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, void **from_d, int index, long argl, void *argp)
Definition: ex_data.h:188
pthread_rwlock_t lock
Definition: internal.h:380
GLint GLsizei count
Definition: gl2.h:421
OPENSSL_EXPORT void * CRYPTO_get_thread_local(thread_local_data_t value)
Definition: thread_pthread.c:129
Definition: ex_data.c:124
unsigned int uint32_t
Definition: ptypes.h:105
Definition: internal.h:436
Definition: internal.h:477
OPENSSL_EXPORT void CRYPTO_MUTEX_cleanup(CRYPTO_MUTEX *lock)
Definition: thread_pthread.c:60
OPENSSL_EXPORT int CRYPTO_refcount_dec_and_test_zero(CRYPTO_refcount_t *count)
Definition: refcount_lock.c:37
Definition: internal.h:438
OPENSSL_EXPORT void * CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int index)
Definition: ex_data.c:195
uint32_t CRYPTO_refcount_t
Definition: thread.h:101
OPENSSL_EXPORT void CRYPTO_STATIC_MUTEX_unlock_write(struct CRYPTO_STATIC_MUTEX *lock)
Definition: thread_pthread.c:82
OPENSSL_EXPORT void CRYPTO_MUTEX_unlock_write(CRYPTO_MUTEX *lock)
Definition: thread_pthread.c:54
OPENSSL_EXPORT const ASN1_OBJECT * obj
Definition: x509.h:1053
Definition: internal.h:437
OPENSSL_EXPORT void CRYPTO_STATIC_MUTEX_lock_read(struct CRYPTO_STATIC_MUTEX *lock)
Definition: thread_pthread.c:64
OPENSSL_EXPORT void CRYPTO_MUTEX_init(CRYPTO_MUTEX *lock)
Definition: thread_pthread.c:30
Definition: internal.h:439
OPENSSL_EXPORT int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int index, void *val)
Definition: ex_data.c:170
void
Definition: AVFoundationCFSoftLinking.h:81
OPENSSL_EXPORT void CRYPTO_refcount_inc(CRYPTO_refcount_t *count)
Definition: refcount_lock.c:29
int
Definition: runtests.py:53
uint8_t num_reserved
Definition: internal.h:482
OPENSSL_EXPORT int CRYPTO_dup_ex_data(CRYPTO_EX_DATA_CLASS *ex_data_class, CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from)
Definition: ex_data.c:234
GLint GLuint mask
Definition: gl2.h:480
OPENSSL_EXPORT void CRYPTO_once(CRYPTO_once_t *once, void(*init)(void))
Definition: thread_pthread.c:88
OPENSSL_EXPORT void CRYPTO_MUTEX_lock_write(CRYPTO_MUTEX *lock)
Definition: thread_pthread.c:42
void CRYPTO_EX_free(void *parent, void *ptr, CRYPTO_EX_DATA *ad, int index, long argl, void *argp)
Definition: ex_data.h:176
_W64 unsigned int uintptr_t
Definition: stdint.h:161
#define OPENSSL_EXPORT
Definition: base.h:160
GLuint index
Definition: gl2.h:383
EGLAttrib * value
Definition: eglext.h:120
unsigned char uint8_t
Definition: ptypes.h:89
OPENSSL_MSVC_PRAGMA(warning(disable:4702))
Definition: e_aes.c:70
Definition: internal.h:379
thread_local_data_t
Definition: internal.h:435
void(* thread_local_destructor_t)(void *)
Definition: internal.h:445
GLboolean GLboolean GLboolean GLboolean a
Definition: gl2ext.h:306
STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_PROTOCOL_METHOD *ssl_method
OPENSSL_EXPORT void CRYPTO_STATIC_MUTEX_lock_write(struct CRYPTO_STATIC_MUTEX *lock)
Definition: thread_pthread.c:70
OPENSSL_EXPORT void CRYPTO_MUTEX_unlock_read(CRYPTO_MUTEX *lock)
Definition: thread_pthread.c:48
boolean once
Definition: EventTarget.idl:40
OPENSSL_EXPORT void CRYPTO_new_ex_data(CRYPTO_EX_DATA *ad)
Definition: ex_data.c:230
void init()
Definition: HTMLNames.cpp:1637
OPENSSL_EXPORT void CRYPTO_STATIC_MUTEX_unlock_read(struct CRYPTO_STATIC_MUTEX *lock)
Definition: thread_pthread.c:76
Definition: internal.h:440
OPENSSL_EXPORT void CRYPTO_free_ex_data(CRYPTO_EX_DATA_CLASS *ex_data_class, void *obj, CRYPTO_EX_DATA *ad)
Definition: ex_data.c:263
midl_pragma warning(disable:2111) midl_pragma warning(disable
Definition: Accessible2.idl:352
GLboolean GLboolean GLboolean b
Definition: gl2ext.h:306
Definition: ex_data.h:204
OPENSSL_EXPORT int CRYPTO_get_ex_new_index(CRYPTO_EX_DATA_CLASS *ex_data_class, int *out_index, long argl, void *argp, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
Definition: ex_data.c:131
pthread_once_t CRYPTO_once_t
Definition: internal.h:319
GLuint GLsizei GLsizei GLfloat * val
Definition: gl2ext.h:3301
OPENSSL_EXPORT int CRYPTO_set_thread_local(thread_local_data_t index, void *value, thread_local_destructor_t destructor)
Definition: thread_pthread.c:142
OPENSSL_EXPORT void CRYPTO_MUTEX_lock_read(CRYPTO_MUTEX *lock)
Definition: thread_pthread.c:36