liboqs
Loading...
Searching...
No Matches
common.h
Go to the documentation of this file.
1
7
8#ifndef OQS_COMMON_H
9#define OQS_COMMON_H
10
11#include <limits.h>
12#include <stdint.h>
13#include <stdio.h>
14#include <stdlib.h>
15
16#include <oqs/oqsconfig.h>
17
18#if defined(__cplusplus)
19extern "C" {
20#endif
21
26#define OQS_EXIT_IF_NULLPTR(x, loc) \
27 do { \
28 if ((x) == (void *)0) { \
29 fprintf(stderr, "Unexpected NULL returned from %s API. Exiting.\n", \
30 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", \
52 x); \
53 exit(EXIT_FAILURE); \
54 } \
55 } while (0)
56#else // OPENSSL_NO_STDIO
57#define OQS_OPENSSL_GUARD(x) \
58 do { \
59 if (1 != (x)) { \
60 fprintf(stderr, "Error return value from OpenSSL API: %d. Exiting.\n", \
61 x); \
62 OSSL_FUNC(ERR_print_errors_fp)(stderr); \
63 exit(EXIT_FAILURE); \
64 } \
65 } while (0)
66#endif // OPENSSL_NO_STDIO
67#endif // OQS_USE_OPENSSL
68
75#define SIZE_T_TO_INT_OR_EXIT(size_t_var_name, int_var_name) \
76 int int_var_name = 0; \
77 if (size_t_var_name <= INT_MAX) { \
78 int_var_name = (int)size_t_var_name; \
79 } else { \
80 exit(EXIT_FAILURE); \
81 }
82
91#if defined(_WIN32)
92#define OQS_API __declspec(dllexport)
93#else
94#define OQS_API __attribute__((visibility("default")))
95#endif
96
97#if defined(OQS_SYS_UEFI)
98#undef OQS_API
99#define OQS_API
100#endif
101
124
128typedef enum {
129 OQS_CPU_EXT_INIT, /* Must be first */
130 /* Start extension list */
131 OQS_CPU_EXT_ADX,
132 OQS_CPU_EXT_AES,
133 OQS_CPU_EXT_AVX,
134 OQS_CPU_EXT_AVX2,
135 OQS_CPU_EXT_AVX512,
136 OQS_CPU_EXT_BMI1,
137 OQS_CPU_EXT_BMI2,
138 OQS_CPU_EXT_PCLMULQDQ,
139 OQS_CPU_EXT_VPCLMULQDQ,
140 OQS_CPU_EXT_POPCNT,
141 OQS_CPU_EXT_SSE,
142 OQS_CPU_EXT_SSE2,
143 OQS_CPU_EXT_SSE3,
144 OQS_CPU_EXT_ARM_AES,
145 OQS_CPU_EXT_ARM_SHA2,
146 OQS_CPU_EXT_ARM_SHA3,
147 OQS_CPU_EXT_ARM_NEON,
148 /* End extension list */
149 OQS_CPU_EXT_COUNT, /* Must be last */
151
158
163OQS_API void OQS_init(void);
164
172
177
181OQS_API const char *OQS_version(void);
182
190
196OQS_API void *OQS_MEM_malloc(size_t size);
197
204OQS_API void *OQS_MEM_calloc(size_t num_elements, size_t element_size);
205
211OQS_API char *OQS_MEM_strdup(const char *str);
212
222OQS_API int OQS_MEM_secure_bcmp(const void *a, const void *b, size_t len);
223
234OQS_API void OQS_MEM_cleanse(void *ptr, size_t len);
235
248OQS_API void OQS_MEM_secure_free(void *ptr, size_t len);
249
260
270void *OQS_MEM_aligned_alloc(size_t alignment, size_t size);
271
275void OQS_MEM_aligned_free(void *ptr);
276
277#if defined(__cplusplus)
278} // extern "C"
279#endif
280
281#endif // OQS_COMMON_H
OQS_API void OQS_MEM_cleanse(void *ptr, size_t len)
OQS_API const char * OQS_version(void)
OQS_CPU_EXT
Definition common.h:128
void * OQS_MEM_aligned_alloc(size_t alignment, size_t size)
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:94
OQS_STATUS
Definition common.h:116
@ OQS_EXTERNAL_LIB_ERROR_OPENSSL
Definition common.h:122
@ OQS_ERROR
Definition common.h:118
@ OQS_SUCCESS
Definition common.h:120
OQS_API void * OQS_MEM_malloc(size_t size)
Memory allocation and deallocation functions.
OQS_API void OQS_init(void)
OQS_API void * OQS_MEM_calloc(size_t num_elements, size_t element_size)
OQS_API void OQS_thread_stop(void)
OQS_API char * OQS_MEM_strdup(const char *str)
OQS_API void OQS_destroy(void)
OQS_API void OQS_MEM_insecure_free(void *ptr)