liboqs
Loading...
Searching...
No Matches
common.h
Go to the documentation of this file.
1
9#ifndef OQS_COMMON_H
10#define OQS_COMMON_H
11
12#include <limits.h>
13#include <stdint.h>
14#include <stdlib.h>
15#include <stdio.h>
16
17#include <oqs/oqsconfig.h>
18
19#if defined(__cplusplus)
20extern "C" {
21#endif
22
27#define OQS_EXIT_IF_NULLPTR(x, loc) \
28 do { \
29 if ( (x) == (void*)0 ) { \
30 fprintf(stderr, "Unexpected NULL returned from %s API. Exiting.\n", loc); \
31 exit(EXIT_FAILURE); \
32 } \
33 } while (0)
34
46#ifdef OQS_USE_OPENSSL
47#ifdef OPENSSL_NO_STDIO
48#define OQS_OPENSSL_GUARD(x) \
49 do { \
50 if( 1 != (x) ) { \
51 fprintf(stderr, "Error return value from OpenSSL API: %d. Exiting.\n", x); \
52 exit(EXIT_FAILURE); \
53 } \
54 } while (0)
55#else // OPENSSL_NO_STDIO
56#define OQS_OPENSSL_GUARD(x) \
57 do { \
58 if( 1 != (x) ) { \
59 fprintf(stderr, "Error return value from OpenSSL API: %d. Exiting.\n", x); \
60 OSSL_FUNC(ERR_print_errors_fp)(stderr); \
61 exit(EXIT_FAILURE); \
62 } \
63 } while (0)
64#endif // OPENSSL_NO_STDIO
65#endif // OQS_USE_OPENSSL
66
73#define SIZE_T_TO_INT_OR_EXIT(size_t_var_name, int_var_name) \
74 int int_var_name = 0; \
75 if (size_t_var_name <= INT_MAX) { \
76 int_var_name = (int)size_t_var_name; \
77 } else { \
78 exit(EXIT_FAILURE); \
79 }
80
89#if defined(_WIN32)
90#define OQS_API __declspec(dllexport)
91#else
92#define OQS_API __attribute__((visibility("default")))
93#endif
94
95#if defined(OQS_SYS_UEFI)
96#undef OQS_API
97#define OQS_API
98#endif
99
122
126typedef enum {
127 OQS_CPU_EXT_INIT, /* Must be first */
128 /* Start extension list */
129 OQS_CPU_EXT_ADX,
130 OQS_CPU_EXT_AES,
131 OQS_CPU_EXT_AVX,
132 OQS_CPU_EXT_AVX2,
133 OQS_CPU_EXT_AVX512,
134 OQS_CPU_EXT_BMI1,
135 OQS_CPU_EXT_BMI2,
136 OQS_CPU_EXT_PCLMULQDQ,
137 OQS_CPU_EXT_VPCLMULQDQ,
138 OQS_CPU_EXT_POPCNT,
139 OQS_CPU_EXT_SSE,
140 OQS_CPU_EXT_SSE2,
141 OQS_CPU_EXT_SSE3,
142 OQS_CPU_EXT_ARM_AES,
143 OQS_CPU_EXT_ARM_SHA2,
144 OQS_CPU_EXT_ARM_SHA3,
145 OQS_CPU_EXT_ARM_NEON,
146 /* End extension list */
147 OQS_CPU_EXT_COUNT, /* Must be last */
149
156
161OQS_API void OQS_init(void);
162
167
171OQS_API const char *OQS_version(void);
172
182OQS_API int OQS_MEM_secure_bcmp(const void *a, const void *b, size_t len);
183
194OQS_API void OQS_MEM_cleanse(void *ptr, size_t len);
195
219void *OQS_MEM_checked_malloc(size_t len);
220
247void *OQS_MEM_checked_aligned_alloc(size_t alignment, size_t size);
248
261OQS_API void OQS_MEM_secure_free(void *ptr, size_t len);
262
273
283void *OQS_MEM_aligned_alloc(size_t alignment, size_t size);
284
288void OQS_MEM_aligned_free(void *ptr);
289
290#if defined(__cplusplus)
291} // extern "C"
292#endif
293
294#endif // OQS_COMMON_H
void * OQS_MEM_checked_aligned_alloc(size_t alignment, size_t size)
OQS_API void OQS_MEM_cleanse(void *ptr, size_t len)
OQS_API const char * OQS_version(void)
OQS_CPU_EXT
Definition common.h:126
void * OQS_MEM_aligned_alloc(size_t alignment, size_t size)
void * OQS_MEM_checked_malloc(size_t len)
OQS_API int OQS_CPU_has_extension(OQS_CPU_EXT ext)
OQS_API void OQS_MEM_secure_free(void *ptr, size_t len)
OQS_API int OQS_MEM_secure_bcmp(const void *a, const void *b, size_t len)
void OQS_MEM_aligned_free(void *ptr)
#define OQS_API
Definition common.h:92
OQS_STATUS
Definition common.h:114
@ OQS_EXTERNAL_LIB_ERROR_OPENSSL
Definition common.h:120
@ OQS_ERROR
Definition common.h:116
@ OQS_SUCCESS
Definition common.h:118
OQS_API void OQS_init(void)
OQS_API void OQS_destroy(void)
OQS_API void OQS_MEM_insecure_free(void *ptr)