crypto.h 17.7 KB
Newer Older
R
Rich Salz 已提交
1 2
/*
 * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
B
Bodo Möller 已提交
3
 *
R
Rich Salz 已提交
4 5 6 7
 * Licensed under the OpenSSL license (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
B
Bodo Möller 已提交
8
 */
R
Rich Salz 已提交
9

B
Bodo Möller 已提交
10 11
/* ====================================================================
 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
12
 * ECDH support in OpenSSL originally developed by
B
Bodo Möller 已提交
13 14
 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
 */
15 16

#ifndef HEADER_CRYPTO_H
17
# define HEADER_CRYPTO_H
18

19 20
# include <stdlib.h>
# include <time.h>
U
Ulf Möller 已提交
21

22
# include <openssl/e_os2.h>
23

24 25 26
# ifndef OPENSSL_NO_STDIO
#  include <stdio.h>
# endif
27

28 29 30 31
# include <openssl/stack.h>
# include <openssl/safestack.h>
# include <openssl/opensslv.h>
# include <openssl/ossl_typ.h>
32
# include <openssl/opensslconf.h>
33

34 35 36
# ifdef CHARSET_EBCDIC
#  include <openssl/ebcdic.h>
# endif
37

38 39 40 41 42
/*
 * Resolve problems on some operating systems with symbol names that clash
 * one way or another
 */
# include <openssl/symhacks.h>
43

44 45 46 47
# if OPENSSL_API_COMPAT < 0x10100000L
#  include <openssl/opensslv.h>
# endif

48 49 50 51
#ifdef  __cplusplus
extern "C" {
#endif

52 53 54 55 56 57 58 59 60
# if OPENSSL_API_COMPAT < 0x10100000L
#  define SSLeay                  OpenSSL_version_num
#  define SSLeay_version          OpenSSL_version
#  define SSLEAY_VERSION_NUMBER   OPENSSL_VERSION_NUMBER
#  define SSLEAY_VERSION          OPENSSL_VERSION
#  define SSLEAY_CFLAGS           OPENSSL_CFLAGS
#  define SSLEAY_BUILT_ON         OPENSSL_BUILT_ON
#  define SSLEAY_PLATFORM         OPENSSL_PLATFORM
#  define SSLEAY_DIR              OPENSSL_DIR
61

62
/*
M
Matt Caswell 已提交
63 64
 * Old type for allocating dynamic locks. No longer used. Use the new thread
 * API instead.
65 66
 */
typedef struct {
M
Matt Caswell 已提交
67
    int dummy;
68
} CRYPTO_dynlock;
69

M
Matt Caswell 已提交
70 71
# endif /* OPENSSL_API_COMPAT */

72 73 74 75 76 77 78 79 80 81
typedef void CRYPTO_RWLOCK;

CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void);
int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock);
int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock);
int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock);
void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock);

int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock);

82
/*
R
Rich Salz 已提交
83
 * The following can be used to detect memory leaks in the library. If
84 85
 * used, it turns on malloc checking
 */
86 87 88 89
# define CRYPTO_MEM_CHECK_OFF     0x0   /* Control only */
# define CRYPTO_MEM_CHECK_ON      0x1   /* Control and mode bit */
# define CRYPTO_MEM_CHECK_ENABLE  0x2   /* Control and mode bit */
# define CRYPTO_MEM_CHECK_DISABLE 0x3   /* Control only */
90

91 92 93
struct crypto_ex_data_st {
    STACK_OF(void) *sk;
};
94
DEFINE_STACK_OF(void)
D
 
Dr. Stephen Henson 已提交
95

96
/*
97
 * Per class, we have a STACK of function pointers.
98
 */
99 100 101 102 103 104 105 106
# define CRYPTO_EX_INDEX_SSL              0
# define CRYPTO_EX_INDEX_SSL_CTX          1
# define CRYPTO_EX_INDEX_SSL_SESSION      2
# define CRYPTO_EX_INDEX_X509             3
# define CRYPTO_EX_INDEX_X509_STORE       4
# define CRYPTO_EX_INDEX_X509_STORE_CTX   5
# define CRYPTO_EX_INDEX_DH               6
# define CRYPTO_EX_INDEX_DSA              7
107 108 109 110 111
# define CRYPTO_EX_INDEX_EC_KEY           8
# define CRYPTO_EX_INDEX_RSA              9
# define CRYPTO_EX_INDEX_ENGINE          10
# define CRYPTO_EX_INDEX_UI              11
# define CRYPTO_EX_INDEX_BIO             12
T
Todd Short 已提交
112 113
# define CRYPTO_EX_INDEX_APP             13
# define CRYPTO_EX_INDEX__COUNT          14
114 115 116 117 118

/*
 * This is the default callbacks, but we can have others as well: this is
 * needed in Win32 where the application malloc and the library malloc may
 * not be the same.
119
 */
R
Rich Salz 已提交
120 121
#define OPENSSL_malloc_init() \
    CRYPTO_set_mem_functions(CRYPTO_malloc, CRYPTO_realloc, CRYPTO_free)
122

123
int CRYPTO_mem_ctrl(int mode);
R
Rich Salz 已提交
124

125
# define OPENSSL_malloc(num) \
126
        CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
127
# define OPENSSL_zalloc(num) \
128
        CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
129
# define OPENSSL_realloc(addr, num) \
130
        CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE)
131
# define OPENSSL_clear_realloc(addr, old_num, num) \
132
        CRYPTO_clear_realloc(addr, old_num, num, OPENSSL_FILE, OPENSSL_LINE)
133
# define OPENSSL_clear_free(addr, num) \
134
        CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
135
# define OPENSSL_free(addr) \
136
        CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
137
# define OPENSSL_memdup(str, s) \
138
        CRYPTO_memdup((str), s, OPENSSL_FILE, OPENSSL_LINE)
139
# define OPENSSL_strdup(str) \
140
        CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
141
# define OPENSSL_strndup(str, n) \
142
        CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE)
143
# define OPENSSL_secure_malloc(num) \
144
        CRYPTO_secure_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
145
# define OPENSSL_secure_zalloc(num) \
146
        CRYPTO_secure_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
147
# define OPENSSL_secure_free(addr) \
148
        CRYPTO_secure_free(addr, OPENSSL_FILE, OPENSSL_LINE)
149
# define OPENSSL_secure_actual_size(ptr) \
150
        CRYPTO_secure_actual_size(ptr)
R
Rich Salz 已提交
151

R
Rich Salz 已提交
152 153 154
size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz);
size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz);
size_t OPENSSL_strnlen(const char *str, size_t maxlen);
155 156 157
char *OPENSSL_buf2hexstr(const unsigned char *buffer, long len);
unsigned char *OPENSSL_hexstr2buf(const char *str, long *len);
int OPENSSL_hexchar2int(unsigned char c);
R
Rich Salz 已提交
158

159
# define OPENSSL_MALLOC_MAX_NELEMS(type)  (((1U<<(sizeof(int)*8-1))-1)/sizeof(type))
160

R
Rich Salz 已提交
161 162 163 164 165 166 167
unsigned long OpenSSL_version_num(void);
const char *OpenSSL_version(int type);
# define OPENSSL_VERSION          0
# define OPENSSL_CFLAGS           1
# define OPENSSL_BUILT_ON         2
# define OPENSSL_PLATFORM         3
# define OPENSSL_DIR              4
168
# define OPENSSL_ENGINES_DIR      5
169

170 171
int OPENSSL_issetugid(void);

172 173 174 175 176 177 178
typedef void CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
                           int idx, long argl, void *argp);
typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
                             int idx, long argl, void *argp);
typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from,
                           void *srcp, int idx, long argl, void *argp);
__owur int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp,
179 180
                            CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func,
                            CRYPTO_EX_free *free_func);
181 182 183
/* No longer use an index. */
int CRYPTO_free_ex_index(int class_index, int idx);

184 185 186 187
/*
 * Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a
 * given class (invokes whatever per-class callbacks are applicable)
 */
188 189
int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to,
190
                       CRYPTO_EX_DATA *from);
191

192
void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
193

194 195 196 197
/*
 * Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular
 * index (relative to the class type involved)
 */
D
 
Dr. Stephen Henson 已提交
198
int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val);
199
void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx);
200 201

# if OPENSSL_API_COMPAT < 0x10100000L
202 203 204 205
/*
 * This function cleans up all "ex_data" state. It mustn't be called under
 * potential race-conditions.
 */
M
Matt Caswell 已提交
206
# define CRYPTO_cleanup_all_ex_data() while(0) continue
207

M
Matt Caswell 已提交
208
/*
209 210 211 212 213 214 215 216
 * The old locking functions have been removed completely without compatibility
 * macros. This is because the old functions either could not properly report
 * errors, or the returned error values were not clearly documented.
 * Replacing the locking functions with with no-ops would cause race condition
 * issues in the affected applications. It is far better for them to fail at
 * compile time.
 * On the other hand, the locking callbacks are no longer used.  Consequently,
 * the callback management functions can be safely replaced with no-op macros.
M
Matt Caswell 已提交
217 218 219 220 221 222 223 224
 */
#  define CRYPTO_num_locks()            (0)
#  define CRYPTO_set_locking_callback(func)
#  define CRYPTO_get_locking_callback()         (NULL)
#  define CRYPTO_set_add_lock_callback(func)
#  define CRYPTO_get_add_lock_callback()        (NULL)

/* This structure is no longer used */
225
typedef struct crypto_threadid_st {
M
Matt Caswell 已提交
226
    int dummy;
227
} CRYPTO_THREADID;
228
/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */
M
Matt Caswell 已提交
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250
#  define CRYPTO_THREADID_set_numeric(id, val)
#  define CRYPTO_THREADID_set_pointer(id, ptr)
#  define CRYPTO_THREADID_set_callback(threadid_func)   (0)
#  define CRYPTO_THREADID_get_callback()                (NULL)
#  define CRYPTO_THREADID_current(id)
#  define CRYPTO_THREADID_cmp(a, b)                     (-1)
#  define CRYPTO_THREADID_cpy(dest, src)
#  define CRYPTO_THREADID_hash(id)                      (0UL)

#  if OPENSSL_API_COMPAT < 0x10000000L
#   define CRYPTO_set_id_callback(func)
#   define CRYPTO_get_id_callback()                     (NULL)
#   define CRYPTO_thread_id()                           (0UL)
#  endif /* OPENSSL_API_COMPAT < 0x10000000L */

#  define CRYPTO_set_dynlock_create_callback(dyn_create_function)
#  define CRYPTO_set_dynlock_lock_callback(dyn_lock_function)
#  define CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function)
#  define CRYPTO_get_dynlock_create_callback()          (NULL)
#  define CRYPTO_get_dynlock_lock_callback()            (NULL)
#  define CRYPTO_get_dynlock_destroy_callback()         (NULL)
# endif /* OPENSSL_API_COMPAT < 0x10100000L */
251

R
Rich Salz 已提交
252 253 254
int CRYPTO_set_mem_functions(
        void *(*m) (size_t, const char *, int),
        void *(*r) (void *, size_t, const char *, int),
255
        void (*f) (void *, const char *, int));
R
Rich Salz 已提交
256 257 258 259
int CRYPTO_set_mem_debug(int flag);
void CRYPTO_get_mem_functions(
        void *(**m) (size_t, const char *, int),
        void *(**r) (void *, size_t, const char *, int),
260
        void (**f) (void *, const char *, int));
261

262 263
void *CRYPTO_malloc(size_t num, const char *file, int line);
void *CRYPTO_zalloc(size_t num, const char *file, int line);
R
Rich Salz 已提交
264
void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line);
B
Ben Laurie 已提交
265
char *CRYPTO_strdup(const char *str, const char *file, int line);
R
Rich Salz 已提交
266
char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line);
267 268
void CRYPTO_free(void *ptr, const char *file, int line);
void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line);
269
void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line);
270
void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num,
271
                           const char *file, int line);
B
Ben Laurie 已提交
272

R
Rich Salz 已提交
273
int CRYPTO_secure_malloc_init(size_t sz, int minsize);
T
Todd Short 已提交
274
int CRYPTO_secure_malloc_done(void);
275
void *CRYPTO_secure_malloc(size_t num, const char *file, int line);
R
Rich Salz 已提交
276
void *CRYPTO_secure_zalloc(size_t num, const char *file, int line);
277
void CRYPTO_secure_free(void *ptr, const char *file, int line);
R
Rich Salz 已提交
278 279
int CRYPTO_secure_allocated(const void *ptr);
int CRYPTO_secure_malloc_initialized(void);
280
size_t CRYPTO_secure_actual_size(void *ptr);
R
Rich Salz 已提交
281
size_t CRYPTO_secure_used(void);
R
Rich Salz 已提交
282

283 284
void OPENSSL_cleanse(void *ptr, size_t len);

R
Rich Salz 已提交
285 286
# ifndef OPENSSL_NO_CRYPTO_MDEBUG
#  define OPENSSL_mem_debug_push(info) \
287
        CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE)
R
Rich Salz 已提交
288
#  define OPENSSL_mem_debug_pop() \
R
Rich Salz 已提交
289 290 291
        CRYPTO_mem_debug_pop()
int CRYPTO_mem_debug_push(const char *info, const char *file, int line);
int CRYPTO_mem_debug_pop(void);
292

M
Matt Caswell 已提交
293
/*-
294
 * Debugging functions (enabled by CRYPTO_set_mem_debug(1))
R
Rich Salz 已提交
295 296 297
 * The flag argument has the following significance:
 *   0:   called before the actual memory allocation has taken place
 *   1:   called after the actual memory allocation has taken place
298
 */
R
Rich Salz 已提交
299 300 301 302
void CRYPTO_mem_debug_malloc(void *addr, size_t num, int flag,
        const char *file, int line);
void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, size_t num, int flag,
        const char *file, int line);
303 304
void CRYPTO_mem_debug_free(void *addr, int flag,
        const char *file, int line);
R
Richard Levitte 已提交
305

R
Rich Salz 已提交
306
#  ifndef OPENSSL_NO_STDIO
307
int CRYPTO_mem_leaks_fp(FILE *);
R
Rich Salz 已提交
308
#  endif
309
int CRYPTO_mem_leaks(BIO *bio);
R
Rich Salz 已提交
310
# endif
311

R
Richard Levitte 已提交
312
/* die if we have to */
R
Rich Salz 已提交
313 314 315 316 317 318
# if OPENSSL_API_COMPAT < 0x10100000L
#  define OpenSSLDie(f,l,a) OPENSSL_die((a),(f),(l))
# endif
void OPENSSL_die(const char *assertion, const char *file, int line);
# define OPENSSL_assert(e) \
    (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1))
R
Richard Levitte 已提交
319

320
unsigned int *OPENSSL_ia32cap_loc(void);
321
# define OPENSSL_ia32cap ((OPENSSL_ia32cap_loc())[0])
322
int OPENSSL_isservice(void);
323

324 325 326
int FIPS_mode(void);
int FIPS_mode_set(int r);

327 328
void OPENSSL_init(void);

R
Rich Salz 已提交
329 330 331 332 333
struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result);
int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec);
int OPENSSL_gmtime_diff(int *pday, int *psec,
                        const struct tm *from, const struct tm *to);

334 335 336 337 338 339 340
/*
 * CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal.
 * It takes an amount of time dependent on |len|, but independent of the
 * contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements
 * into a defined order as the return value when a != b is undefined, other
 * than to be non-zero.
 */
R
Rich Salz 已提交
341 342 343
int CRYPTO_memcmp(const volatile void * volatile in_a,
                  const volatile void * volatile in_b,
                  size_t len);
B
Ben Laurie 已提交
344

345
/* Standard initialisation options */
346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362
# define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L
# define OPENSSL_INIT_LOAD_CRYPTO_STRINGS    0x00000002L
# define OPENSSL_INIT_ADD_ALL_CIPHERS        0x00000004L
# define OPENSSL_INIT_ADD_ALL_DIGESTS        0x00000008L
# define OPENSSL_INIT_NO_ADD_ALL_CIPHERS     0x00000010L
# define OPENSSL_INIT_NO_ADD_ALL_DIGESTS     0x00000020L
# define OPENSSL_INIT_LOAD_CONFIG            0x00000040L
# define OPENSSL_INIT_NO_LOAD_CONFIG         0x00000080L
# define OPENSSL_INIT_ASYNC                  0x00000100L
# define OPENSSL_INIT_ENGINE_RDRAND          0x00000200L
# define OPENSSL_INIT_ENGINE_DYNAMIC         0x00000400L
# define OPENSSL_INIT_ENGINE_OPENSSL         0x00000800L
# define OPENSSL_INIT_ENGINE_CRYPTODEV       0x00001000L
# define OPENSSL_INIT_ENGINE_CAPI            0x00002000L
# define OPENSSL_INIT_ENGINE_PADLOCK         0x00004000L
# define OPENSSL_INIT_ENGINE_DASYNC          0x00008000L
/* OPENSSL_INIT flag 0x00010000 reserved for internal use */
363
# define OPENSSL_INIT_ENGINE_AFALG           0x00020000L
364
/* OPENSSL_INIT flag range 0xfff00000 reserved for OPENSSL_init_ssl() */
365 366 367 368 369 370 371 372 373 374
/* Max OPENSSL_INIT flag value is 0x80000000 */

/* openssl and dasync not counted as builtin */
# define OPENSSL_INIT_ENGINE_ALL_BUILTIN \
    (OPENSSL_INIT_ENGINE_RDRAND | OPENSSL_INIT_ENGINE_DYNAMIC \
    | OPENSSL_INIT_ENGINE_CRYPTODEV | OPENSSL_INIT_ENGINE_CAPI | \
    OPENSSL_INIT_ENGINE_PADLOCK)


/* Library initialisation functions */
375
void OPENSSL_cleanup(void);
376
int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
377 378
int OPENSSL_atexit(void (*handler)(void));
void OPENSSL_thread_stop(void);
379

R
Rich Salz 已提交
380 381
/* Low-level control of initialization */
OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void);
382
#ifndef OPENSSL_NO_STDIO
R
Rich Salz 已提交
383 384
void OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings,
                                      const char *config_file);
385
#endif
R
Rich Salz 已提交
386 387
void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings);

388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425
# if !defined(OPENSSL_THREADS) || defined(CRYPTO_TDEBUG)
typedef unsigned int CRYPTO_ONCE;
typedef unsigned int CRYPTO_THREAD_LOCAL;
typedef unsigned int CRYPTO_THREAD_ID;

#  define CRYPTO_ONCE_STATIC_INIT 0
# elif defined(OPENSSL_SYS_WINDOWS)
#  include <windows.h>
typedef DWORD CRYPTO_THREAD_LOCAL;
typedef DWORD CRYPTO_THREAD_ID;

#  if _WIN32_WINNT < 0x0600
typedef LONG CRYPTO_ONCE;
#   define CRYPTO_ONCE_STATIC_INIT 0
#  else
typedef INIT_ONCE CRYPTO_ONCE;
#   define CRYPTO_ONCE_STATIC_INIT INIT_ONCE_STATIC_INIT
#  endif

# else
#  include <pthread.h>
typedef pthread_once_t CRYPTO_ONCE;
typedef pthread_key_t CRYPTO_THREAD_LOCAL;
typedef pthread_t CRYPTO_THREAD_ID;

#  define CRYPTO_ONCE_STATIC_INIT PTHREAD_ONCE_INIT
# endif

int CRYPTO_THREAD_run_once(CRYPTO_ONCE *once, void (*init)(void));

int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *));
void *CRYPTO_THREAD_get_local(CRYPTO_THREAD_LOCAL *key);
int CRYPTO_THREAD_set_local(CRYPTO_THREAD_LOCAL *key, void *val);
int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key);

CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void);
int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b);

426
/* BEGIN ERROR CODES */
427 428
/*
 * The following lines are auto generated by the script mkerr.pl. Any changes
429 430
 * made after this point may be overwritten when the script is next run.
 */
431
void ERR_load_CRYPTO_strings(void);
432

433 434 435
/* Error codes for the CRYPTO functions. */

/* Function codes. */
R
Rich Salz 已提交
436 437
# define CRYPTO_F_CRYPTO_DUP_EX_DATA                      110
# define CRYPTO_F_CRYPTO_FREE_EX_DATA                     111
438 439 440
# define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX                 100
# define CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID                103
# define CRYPTO_F_CRYPTO_GET_NEW_LOCKID                   101
R
Rich Salz 已提交
441
# define CRYPTO_F_CRYPTO_MEMDUP                           115
R
Rich Salz 已提交
442
# define CRYPTO_F_CRYPTO_NEW_EX_DATA                      112
443 444 445 446
# define CRYPTO_F_CRYPTO_SET_EX_DATA                      102
# define CRYPTO_F_DEF_ADD_INDEX                           104
# define CRYPTO_F_DEF_GET_CLASS                           105
# define CRYPTO_F_FIPS_MODE_SET                           109
447
# define CRYPTO_F_GET_AND_LOCK                            113
448 449 450
# define CRYPTO_F_INT_DUP_EX_DATA                         106
# define CRYPTO_F_INT_FREE_EX_DATA                        107
# define CRYPTO_F_INT_NEW_EX_DATA                         108
451
# define CRYPTO_F_OPENSSL_BUF2HEXSTR                      117
R
Rich Salz 已提交
452
# define CRYPTO_F_OPENSSL_INIT_CRYPTO                     116
R
Rich Salz 已提交
453
# define CRYPTO_F_OPENSSL_MEMDUP                          114
454
# define CRYPTO_F_OPENSSL_HEXSTR2BUF                      118
455 456

/* Reason codes. */
457
# define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED                 101
458 459
# define CRYPTO_R_ILLEGAL_HEX_DIGIT                       102
# define CRYPTO_R_ODD_NUMBER_OF_DIGITS                    103
460

461 462 463 464
#ifdef  __cplusplus
}
#endif
#endif