diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/crypto.h | 204 |
1 files changed, 121 insertions, 83 deletions
diff --git a/src/lib/libcrypto/crypto.h b/src/lib/libcrypto/crypto.h index 8ad8c25e5a..41c937966e 100644 --- a/src/lib/libcrypto/crypto.h +++ b/src/lib/libcrypto/crypto.h | |||
| @@ -63,17 +63,25 @@ | |||
| 63 | extern "C" { | 63 | extern "C" { |
| 64 | #endif | 64 | #endif |
| 65 | 65 | ||
| 66 | #include <stdlib.h> | ||
| 67 | |||
| 66 | #ifndef NO_FP_API | 68 | #ifndef NO_FP_API |
| 67 | #include <stdio.h> | 69 | #include <stdio.h> |
| 68 | #endif | 70 | #endif |
| 69 | 71 | ||
| 70 | #include <openssl/stack.h> | 72 | #include <openssl/stack.h> |
| 73 | #include <openssl/safestack.h> | ||
| 71 | #include <openssl/opensslv.h> | 74 | #include <openssl/opensslv.h> |
| 72 | 75 | ||
| 73 | #ifdef CHARSET_EBCDIC | 76 | #ifdef CHARSET_EBCDIC |
| 74 | #include <openssl/ebcdic.h> | 77 | #include <openssl/ebcdic.h> |
| 75 | #endif | 78 | #endif |
| 76 | 79 | ||
| 80 | #if defined(VMS) || defined(__VMS) | ||
| 81 | #include "vms_idhacks.h" | ||
| 82 | #endif | ||
| 83 | |||
| 84 | |||
| 77 | /* Backward compatibility to SSLeay */ | 85 | /* Backward compatibility to SSLeay */ |
| 78 | /* This is more to be used to check the correct DLL is being used | 86 | /* This is more to be used to check the correct DLL is being used |
| 79 | * in the MS world. */ | 87 | * in the MS world. */ |
| @@ -111,7 +119,9 @@ extern "C" { | |||
| 111 | #define CRYPTO_LOCK_GETSERVBYNAME 21 | 119 | #define CRYPTO_LOCK_GETSERVBYNAME 21 |
| 112 | #define CRYPTO_LOCK_READDIR 22 | 120 | #define CRYPTO_LOCK_READDIR 22 |
| 113 | #define CRYPTO_LOCK_RSA_BLINDING 23 | 121 | #define CRYPTO_LOCK_RSA_BLINDING 23 |
| 114 | #define CRYPTO_NUM_LOCKS 24 | 122 | #define CRYPTO_LOCK_DH 24 |
| 123 | #define CRYPTO_LOCK_MALLOC2 25 | ||
| 124 | #define CRYPTO_NUM_LOCKS 26 | ||
| 115 | 125 | ||
| 116 | #define CRYPTO_LOCK 1 | 126 | #define CRYPTO_LOCK 1 |
| 117 | #define CRYPTO_UNLOCK 2 | 127 | #define CRYPTO_UNLOCK 2 |
| @@ -147,14 +157,16 @@ extern "C" { | |||
| 147 | #define CRYPTO_MEM_CHECK_ENABLE 0x2 /* a bit */ | 157 | #define CRYPTO_MEM_CHECK_ENABLE 0x2 /* a bit */ |
| 148 | #define CRYPTO_MEM_CHECK_DISABLE 0x3 /* an enume */ | 158 | #define CRYPTO_MEM_CHECK_DISABLE 0x3 /* an enume */ |
| 149 | 159 | ||
| 150 | /* | 160 | /* The following are bit values to turn on or off options connected to the |
| 151 | typedef struct crypto_mem_st | 161 | * malloc checking functionality */ |
| 152 | { | 162 | |
| 153 | char *(*malloc_func)(); | 163 | /* Adds time to the memory checking information */ |
| 154 | char *(*realloc_func)(); | 164 | #define V_CRYPTO_MDEBUG_TIME 0x1 /* a bit */ |
| 155 | void (*free_func)(); | 165 | /* Adds thread number to the memory checking information */ |
| 156 | } CRYPTO_MEM_FUNC; | 166 | #define V_CRYPTO_MDEBUG_THREAD 0x2 /* a bit */ |
| 157 | */ | 167 | |
| 168 | #define V_CRYPTO_MDEBUG_ALL (V_CRYPTO_MDEBUG_TIME | V_CRYPTO_MDEBUG_THREAD) | ||
| 169 | |||
| 158 | 170 | ||
| 159 | /* predec of the BIO type */ | 171 | /* predec of the BIO type */ |
| 160 | typedef struct bio_st BIO_dummy; | 172 | typedef struct bio_st BIO_dummy; |
| @@ -165,24 +177,30 @@ typedef struct crypto_ex_data_st | |||
| 165 | int dummy; /* gcc is screwing up this data structure :-( */ | 177 | int dummy; /* gcc is screwing up this data structure :-( */ |
| 166 | } CRYPTO_EX_DATA; | 178 | } CRYPTO_EX_DATA; |
| 167 | 179 | ||
| 180 | /* Called when a new object is created */ | ||
| 181 | typedef int CRYPTO_EX_new(void *parent, void *ptr, CRYPTO_EX_DATA *ad, | ||
| 182 | int idx, long argl, void *argp); | ||
| 183 | /* Called when an object is free()ed */ | ||
| 184 | typedef void CRYPTO_EX_free(void *parent, void *ptr, CRYPTO_EX_DATA *ad, | ||
| 185 | int idx, long argl, void *argp); | ||
| 186 | /* Called when we need to dup an object */ | ||
| 187 | typedef int CRYPTO_EX_dup(CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from, void *from_d, | ||
| 188 | int idx, long argl, void *argp); | ||
| 189 | |||
| 168 | /* This stuff is basically class callback functions | 190 | /* This stuff is basically class callback functions |
| 169 | * The current classes are SSL_CTX, SSL, SSL_SESION, and a few more */ | 191 | * The current classes are SSL_CTX, SSL, SSL_SESSION, and a few more */ |
| 192 | |||
| 170 | typedef struct crypto_ex_data_func_st | 193 | typedef struct crypto_ex_data_func_st |
| 171 | { | 194 | { |
| 172 | long argl; /* Arbitary long */ | 195 | long argl; /* Arbitary long */ |
| 173 | char *argp; /* Arbitary char * */ | 196 | void *argp; /* Arbitary void * */ |
| 174 | /* Called when a new object is created */ | 197 | CRYPTO_EX_new *new_func; |
| 175 | int (*new_func)(/*char *obj, | 198 | CRYPTO_EX_free *free_func; |
| 176 | char *item,int index,long argl,char *argp*/); | 199 | CRYPTO_EX_dup *dup_func; |
| 177 | /* Called when this object is free()ed */ | ||
| 178 | void (*free_func)(/*char *obj, | ||
| 179 | char *item,int index,long argl,char *argp*/); | ||
| 180 | |||
| 181 | /* Called when we need to dup this one */ | ||
| 182 | int (*dup_func)(/*char *obj_to,char *obj_from, | ||
| 183 | char **new,int index,long argl,char *argp*/); | ||
| 184 | } CRYPTO_EX_DATA_FUNCS; | 200 | } CRYPTO_EX_DATA_FUNCS; |
| 185 | 201 | ||
| 202 | DECLARE_STACK_OF(CRYPTO_EX_DATA_FUNCS) | ||
| 203 | |||
| 186 | /* Per class, we have a STACK of CRYPTO_EX_DATA_FUNCS for each CRYPTO_EX_DATA | 204 | /* Per class, we have a STACK of CRYPTO_EX_DATA_FUNCS for each CRYPTO_EX_DATA |
| 187 | * entry. | 205 | * entry. |
| 188 | */ | 206 | */ |
| @@ -194,63 +212,54 @@ typedef struct crypto_ex_data_func_st | |||
| 194 | #define CRYPTO_EX_INDEX_X509_STORE 4 | 212 | #define CRYPTO_EX_INDEX_X509_STORE 4 |
| 195 | #define CRYPTO_EX_INDEX_X509_STORE_CTX 5 | 213 | #define CRYPTO_EX_INDEX_X509_STORE_CTX 5 |
| 196 | 214 | ||
| 197 | /* Use this for win32 DLL's */ | ||
| 198 | #define CRYPTO_malloc_init() CRYPTO_set_mem_functions(\ | ||
| 199 | (char *(*)())malloc,\ | ||
| 200 | (char *(*)())realloc,\ | ||
| 201 | (void (*)())free) | ||
| 202 | 215 | ||
| 203 | #ifdef CRYPTO_MDEBUG_ALL | 216 | /* This is the default callbacks, but we can have others as well: |
| 204 | # ifndef CRYPTO_MDEBUG_TIME | 217 | * this is needed in Win32 where the application malloc and the |
| 205 | # define CRYPTO_MDEBUG_TIME | 218 | * library malloc may not be the same. |
| 206 | # endif | 219 | */ |
| 207 | # ifndef CRYPTO_MDEBUG_THREAD | 220 | #define CRYPTO_malloc_init() CRYPTO_set_mem_functions(\ |
| 208 | # define CRYPTO_MDEBUG_THREAD | 221 | malloc, realloc, free) |
| 209 | # endif | ||
| 210 | #endif | ||
| 211 | 222 | ||
| 212 | #if defined CRYPTO_MDEBUG_TIME || defined CRYPTO_MDEBUG_THREAD | 223 | #if defined CRYPTO_MDEBUG_ALL || defined CRYPTO_MDEBUG_TIME || defined CRYPTO_MDEBUG_THREAD |
| 213 | # ifndef CRYPTO_MDEBUG /* avoid duplicate #define */ | 224 | # ifndef CRYPTO_MDEBUG /* avoid duplicate #define */ |
| 214 | # define CRYPTO_MDEBUG | 225 | # define CRYPTO_MDEBUG |
| 215 | # endif | 226 | # endif |
| 216 | #endif | 227 | #endif |
| 217 | 228 | ||
| 218 | #ifdef CRYPTO_MDEBUG | 229 | /* Set standard debugging functions (not done by default |
| 230 | * unless CRYPTO_MDEBUG is defined) */ | ||
| 231 | #define CRYPTO_malloc_debug_init() do {\ | ||
| 232 | CRYPTO_set_mem_debug_functions(\ | ||
| 233 | (void (*)())CRYPTO_dbg_malloc,\ | ||
| 234 | (void (*)())CRYPTO_dbg_realloc,\ | ||
| 235 | (void (*)())CRYPTO_dbg_free,\ | ||
| 236 | (void (*)())CRYPTO_dbg_set_options,\ | ||
| 237 | (long (*)())CRYPTO_dbg_get_options);\ | ||
| 238 | } while(0) | ||
| 239 | |||
| 240 | int CRYPTO_mem_ctrl(int mode); | ||
| 241 | int CRYPTO_is_mem_check_on(void); | ||
| 242 | |||
| 243 | /* for applications */ | ||
| 219 | #define MemCheck_start() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON) | 244 | #define MemCheck_start() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON) |
| 220 | #define MemCheck_stop() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF) | 245 | #define MemCheck_stop() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_OFF) |
| 246 | |||
| 247 | /* for library-internal use */ | ||
| 221 | #define MemCheck_on() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE) | 248 | #define MemCheck_on() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ENABLE) |
| 222 | #define MemCheck_off() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE) | 249 | #define MemCheck_off() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE) |
| 223 | #define Malloc(num) CRYPTO_dbg_malloc((int)num,__FILE__,__LINE__) | 250 | #define is_MemCheck_on() CRYPTO_is_mem_check_on() |
| 251 | |||
| 252 | #define Malloc(num) CRYPTO_malloc((int)num,__FILE__,__LINE__) | ||
| 224 | #define Realloc(addr,num) \ | 253 | #define Realloc(addr,num) \ |
| 225 | CRYPTO_dbg_realloc((char *)addr,(int)num,__FILE__,__LINE__) | 254 | CRYPTO_realloc((char *)addr,(int)num,__FILE__,__LINE__) |
| 226 | #define Remalloc(addr,num) \ | 255 | #define Remalloc(addr,num) \ |
| 227 | CRYPTO_dbg_remalloc((char **)addr,(int)num,__FILE__,__LINE__) | 256 | CRYPTO_remalloc((char **)addr,(int)num,__FILE__,__LINE__) |
| 228 | #define FreeFunc CRYPTO_dbg_free | ||
| 229 | #define Free(addr) CRYPTO_dbg_free(addr) | ||
| 230 | #define Malloc_locked(num) CRYPTO_malloc_locked((int)num) | ||
| 231 | #define Free_locked(addr) CRYPTO_free_locked(addr) | ||
| 232 | #else | ||
| 233 | #define MemCheck_start() | ||
| 234 | #define MemCheck_stop() | ||
| 235 | #define MemCheck_on() | ||
| 236 | #define MemCheck_off() | ||
| 237 | #define Remalloc CRYPTO_remalloc | ||
| 238 | #if defined(WIN32) || defined(MFUNC) | ||
| 239 | #define Malloc CRYPTO_malloc | ||
| 240 | #define Realloc(a,n) CRYPTO_realloc(a,(n)) | ||
| 241 | #define FreeFunc CRYPTO_free | 257 | #define FreeFunc CRYPTO_free |
| 242 | #define Free(addr) CRYPTO_free(addr) | 258 | #define Free(addr) CRYPTO_free(addr) |
| 243 | #define Malloc_locked CRYPTO_malloc_locked | 259 | |
| 260 | #define Malloc_locked(num) CRYPTO_malloc_locked((int)num,__FILE__,__LINE__) | ||
| 244 | #define Free_locked(addr) CRYPTO_free_locked(addr) | 261 | #define Free_locked(addr) CRYPTO_free_locked(addr) |
| 245 | #else | 262 | |
| 246 | #define Malloc malloc | ||
| 247 | #define Realloc realloc | ||
| 248 | #define FreeFunc free | ||
| 249 | #define Free(addr) free(addr) | ||
| 250 | #define Malloc_locked malloc | ||
| 251 | #define Free_locked(addr) free(addr) | ||
| 252 | #endif /* WIN32 || MFUNC */ | ||
| 253 | #endif /* MDEBUG */ | ||
| 254 | 263 | ||
| 255 | /* Case insensiteve linking causes problems.... */ | 264 | /* Case insensiteve linking causes problems.... */ |
| 256 | #if defined(WIN16) || defined(VMS) | 265 | #if defined(WIN16) || defined(VMS) |
| @@ -261,15 +270,15 @@ typedef struct crypto_ex_data_func_st | |||
| 261 | const char *SSLeay_version(int type); | 270 | const char *SSLeay_version(int type); |
| 262 | unsigned long SSLeay(void); | 271 | unsigned long SSLeay(void); |
| 263 | 272 | ||
| 264 | int CRYPTO_get_ex_new_index(int idx,STACK **sk,long argl,char *argp, | 273 | int CRYPTO_get_ex_new_index(int idx, STACK_OF(CRYPTO_EX_DATA_FUNCS) **skp, long argl, void *argp, |
| 265 | int (*new_func)(),int (*dup_func)(),void (*free_func)()); | 274 | CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); |
| 266 | int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad,int idx,char *val); | 275 | int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val); |
| 267 | char *CRYPTO_get_ex_data(CRYPTO_EX_DATA *ad,int idx); | 276 | void *CRYPTO_get_ex_data(CRYPTO_EX_DATA *ad,int idx); |
| 268 | int CRYPTO_dup_ex_data(STACK *meth,CRYPTO_EX_DATA *from,CRYPTO_EX_DATA *to); | 277 | int CRYPTO_dup_ex_data(STACK_OF(CRYPTO_EX_DATA_FUNCS) *meth, CRYPTO_EX_DATA *to, |
| 269 | void CRYPTO_free_ex_data(STACK *meth,char *obj,CRYPTO_EX_DATA *ad); | 278 | CRYPTO_EX_DATA *from); |
| 270 | void CRYPTO_new_ex_data(STACK *meth, char *obj, CRYPTO_EX_DATA *ad); | 279 | void CRYPTO_free_ex_data(STACK_OF(CRYPTO_EX_DATA_FUNCS) *meth, void *obj, CRYPTO_EX_DATA *ad); |
| 280 | void CRYPTO_new_ex_data(STACK_OF(CRYPTO_EX_DATA_FUNCS) *meth, void *obj, CRYPTO_EX_DATA *ad); | ||
| 271 | 281 | ||
| 272 | int CRYPTO_mem_ctrl(int mode); | ||
| 273 | int CRYPTO_get_new_lockid(char *name); | 282 | int CRYPTO_get_new_lockid(char *name); |
| 274 | 283 | ||
| 275 | int CRYPTO_num_locks(void); /* return CRYPTO_NUM_LOCKS (shared libs!) */ | 284 | int CRYPTO_num_locks(void); /* return CRYPTO_NUM_LOCKS (shared libs!) */ |
| @@ -289,22 +298,51 @@ const char *CRYPTO_get_lock_name(int type); | |||
| 289 | int CRYPTO_add_lock(int *pointer,int amount,int type, const char *file, | 298 | int CRYPTO_add_lock(int *pointer,int amount,int type, const char *file, |
| 290 | int line); | 299 | int line); |
| 291 | 300 | ||
| 292 | void CRYPTO_set_mem_functions(char *(*m)(),char *(*r)(), void (*free_func)()); | 301 | /* CRYPTO_set_mem_functions includes CRYPTO_set_locked_mem_functions -- |
| 293 | void CRYPTO_get_mem_functions(char *(**m)(),char *(**r)(), void (**f)()); | 302 | * call the latter last if you need different functions */ |
| 294 | void CRYPTO_set_locked_mem_functions(char *(*m)(), void (*free_func)()); | 303 | int CRYPTO_set_mem_functions(void *(*m)(size_t),void *(*r)(void *,size_t), void (*f)(void *)); |
| 295 | void CRYPTO_get_locked_mem_functions(char *(**m)(), void (**f)()); | 304 | int CRYPTO_set_locked_mem_functions(void *(*m)(size_t), void (*free_func)(void *)); |
| 305 | int CRYPTO_set_mem_debug_functions(void (*m)(),void (*r)(),void (*f)(),void (*so)(),long (*go)()); | ||
| 306 | void CRYPTO_get_mem_functions(void *(**m)(size_t),void *(**r)(void *, size_t), void (**f)(void *)); | ||
| 307 | void CRYPTO_get_locked_mem_functions(void *(**m)(size_t), void (**f)(void *)); | ||
| 308 | void CRYPTO_get_mem_debug_functions(void (**m)(),void (**r)(),void (**f)(),void (**so)(),long (**go)()); | ||
| 296 | 309 | ||
| 297 | void *CRYPTO_malloc_locked(int num); | 310 | void *CRYPTO_malloc_locked(int num, const char *file, int line); |
| 298 | void CRYPTO_free_locked(void *); | 311 | void CRYPTO_free_locked(void *); |
| 299 | void *CRYPTO_malloc(int num); | 312 | void *CRYPTO_malloc(int num, const char *file, int line); |
| 300 | void CRYPTO_free(void *); | 313 | void CRYPTO_free(void *); |
| 301 | void *CRYPTO_realloc(void *addr,int num); | 314 | void *CRYPTO_realloc(void *addr,int num, const char *file, int line); |
| 302 | void *CRYPTO_remalloc(void *addr,int num); | 315 | void *CRYPTO_remalloc(void *addr,int num, const char *file, int line); |
| 316 | |||
| 317 | void CRYPTO_set_mem_debug_options(long bits); | ||
| 318 | long CRYPTO_get_mem_debug_options(void); | ||
| 319 | |||
| 320 | #define CRYPTO_push_info(info) \ | ||
| 321 | CRYPTO_push_info_(info, __FILE__, __LINE__); | ||
| 322 | int CRYPTO_push_info_(const char *info, const char *file, int line); | ||
| 323 | int CRYPTO_pop_info(void); | ||
| 324 | int CRYPTO_remove_all_info(void); | ||
| 325 | |||
| 326 | /* The last argument has the following significance: | ||
| 327 | * | ||
| 328 | * 0: called before the actual memory allocation has taken place | ||
| 329 | * 1: called after the actual memory allocation has taken place | ||
| 330 | */ | ||
| 331 | void CRYPTO_dbg_malloc(void *addr,int num,const char *file,int line,int before_p); | ||
| 332 | void CRYPTO_dbg_realloc(void *addr1,void *addr2,int num,const char *file,int line,int before_p); | ||
| 333 | void CRYPTO_dbg_free(void *addr,int before_p); | ||
| 334 | |||
| 335 | /* Tell the debugging code about options. By default, the following values | ||
| 336 | * apply: | ||
| 337 | * | ||
| 338 | * 0: Clear all options. | ||
| 339 | * 1: Set the "Show Time" option. | ||
| 340 | * 2: Set the "Show Thread Number" option. | ||
| 341 | * 3: 1 + 2 | ||
| 342 | */ | ||
| 343 | void CRYPTO_dbg_set_options(long bits); | ||
| 344 | long CRYPTO_dbg_get_options(void); | ||
| 303 | 345 | ||
| 304 | void *CRYPTO_dbg_malloc(int num,const char *file,int line); | ||
| 305 | void *CRYPTO_dbg_realloc(void *addr,int num,const char *file,int line); | ||
| 306 | void CRYPTO_dbg_free(void *); | ||
| 307 | void *CRYPTO_dbg_remalloc(void *addr,int num,const char *file,int line); | ||
| 308 | #ifndef NO_FP_API | 346 | #ifndef NO_FP_API |
| 309 | void CRYPTO_mem_leaks_fp(FILE *); | 347 | void CRYPTO_mem_leaks_fp(FILE *); |
| 310 | #endif | 348 | #endif |
| @@ -312,7 +350,7 @@ void CRYPTO_mem_leaks(struct bio_st *bio); | |||
| 312 | /* unsigned long order, char *file, int line, int num_bytes, char *addr */ | 350 | /* unsigned long order, char *file, int line, int num_bytes, char *addr */ |
| 313 | void CRYPTO_mem_leaks_cb(void (*cb)()); | 351 | void CRYPTO_mem_leaks_cb(void (*cb)()); |
| 314 | 352 | ||
| 315 | void ERR_load_CRYPTO_strings(void ); | 353 | void ERR_load_CRYPTO_strings(void); |
| 316 | 354 | ||
| 317 | /* BEGIN ERROR CODES */ | 355 | /* BEGIN ERROR CODES */ |
| 318 | /* The following lines are auto generated by the script mkerr.pl. Any changes | 356 | /* The following lines are auto generated by the script mkerr.pl. Any changes |
