summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_locl.h
diff options
context:
space:
mode:
authorryker <>1998-10-05 20:13:14 +0000
committerryker <>1998-10-05 20:13:14 +0000
commitaeeae06a79815dc190061534d47236cec09f9e32 (patch)
tree851692b9c2f9c04f077666855641900f19fdb217 /src/lib/libssl/ssl_locl.h
parenta4f79641824cbf9f60ca9d1168d1fcc46717a82a (diff)
downloadopenbsd-aeeae06a79815dc190061534d47236cec09f9e32.tar.gz
openbsd-aeeae06a79815dc190061534d47236cec09f9e32.tar.bz2
openbsd-aeeae06a79815dc190061534d47236cec09f9e32.zip
Import of SSLeay-0.9.0b with RSA and IDEA stubbed + OpenBSD build
functionality for shared libs. Note that routines such as sslv2_init and friends that use RSA will not work due to lack of RSA in this library. Needs documentation and help from ports for easy upgrade to full functionality where legally possible.
Diffstat (limited to 'src/lib/libssl/ssl_locl.h')
-rw-r--r--src/lib/libssl/ssl_locl.h558
1 files changed, 558 insertions, 0 deletions
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h
new file mode 100644
index 0000000000..b29517081b
--- /dev/null
+++ b/src/lib/libssl/ssl_locl.h
@@ -0,0 +1,558 @@
1/* ssl/ssl_locl.h */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#ifndef HEADER_SSL_LOCL_H
60#define HEADER_SSL_LOCL_H
61#include <stdlib.h>
62#include <time.h>
63#include <string.h>
64#include <errno.h>
65
66#include "e_os.h"
67
68#include "buffer.h"
69#include "bio.h"
70#include "crypto.h"
71#include "evp.h"
72#include "stack.h"
73#include "x509.h"
74#include "err.h"
75#include "ssl.h"
76
77
78#define c2l(c,l) (l = ((unsigned long)(*((c)++))) , \
79 l|=(((unsigned long)(*((c)++)))<< 8), \
80 l|=(((unsigned long)(*((c)++)))<<16), \
81 l|=(((unsigned long)(*((c)++)))<<24))
82
83/* NOTE - c is not incremented as per c2l */
84#define c2ln(c,l1,l2,n) { \
85 c+=n; \
86 l1=l2=0; \
87 switch (n) { \
88 case 8: l2 =((unsigned long)(*(--(c))))<<24; \
89 case 7: l2|=((unsigned long)(*(--(c))))<<16; \
90 case 6: l2|=((unsigned long)(*(--(c))))<< 8; \
91 case 5: l2|=((unsigned long)(*(--(c)))); \
92 case 4: l1 =((unsigned long)(*(--(c))))<<24; \
93 case 3: l1|=((unsigned long)(*(--(c))))<<16; \
94 case 2: l1|=((unsigned long)(*(--(c))))<< 8; \
95 case 1: l1|=((unsigned long)(*(--(c)))); \
96 } \
97 }
98
99#define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
100 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
101 *((c)++)=(unsigned char)(((l)>>16)&0xff), \
102 *((c)++)=(unsigned char)(((l)>>24)&0xff))
103
104#define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24, \
105 l|=((unsigned long)(*((c)++)))<<16, \
106 l|=((unsigned long)(*((c)++)))<< 8, \
107 l|=((unsigned long)(*((c)++))))
108
109#define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \
110 *((c)++)=(unsigned char)(((l)>>16)&0xff), \
111 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
112 *((c)++)=(unsigned char)(((l) )&0xff))
113
114/* NOTE - c is not incremented as per l2c */
115#define l2cn(l1,l2,c,n) { \
116 c+=n; \
117 switch (n) { \
118 case 8: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \
119 case 7: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \
120 case 6: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \
121 case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \
122 case 4: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \
123 case 3: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \
124 case 2: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \
125 case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \
126 } \
127 }
128
129#define n2s(c,s) (s =((unsigned int)(*((c)++)))<< 8, \
130 s|=((unsigned int)(*((c)++))))
131#define s2n(s,c) (*((c)++)=(unsigned char)(((s)>> 8)&0xff), \
132 *((c)++)=(unsigned char)(((s) )&0xff))
133
134#define n2l3(c,l) (l =((unsigned long)(*((c)++)))<<16, \
135 l|=((unsigned long)(*((c)++)))<< 8, \
136 l|=((unsigned long)(*((c)++))))
137
138#define l2n3(l,c) (*((c)++)=(unsigned char)(((l)>>16)&0xff), \
139 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
140 *((c)++)=(unsigned char)(((l) )&0xff))
141
142/* LOCAL STUFF */
143
144#define SSL_DECRYPT 0
145#define SSL_ENCRYPT 1
146
147#define TWO_BYTE_BIT 0x80
148#define SEC_ESC_BIT 0x40
149#define TWO_BYTE_MASK 0x7fff
150#define THREE_BYTE_MASK 0x3fff
151
152#define INC32(a) ((a)=((a)+1)&0xffffffffL)
153#define DEC32(a) ((a)=((a)-1)&0xffffffffL)
154#define MAX_MAC_SIZE 20 /* up from 16 for SSLv3 */
155
156#define SSL_MKEY_MASK 0x0000001FL
157#define SSL_kRSA 0x00000001L /* RSA key exchange */
158#define SSL_kDHr 0x00000002L /* DH cert RSA CA cert */
159#define SSL_kDHd 0x00000004L /* DH cert DSA CA cert */
160#define SSL_kFZA 0x00000008L
161#define SSL_kEDH 0x00000010L /* tmp DH key no DH cert */
162#define SSL_EDH (SSL_kEDH|(SSL_AUTH_MASK^SSL_aNULL))
163
164#define SSL_AUTH_MASK 0x000003e0L
165#define SSL_aRSA 0x00000020L /* Authenticate with RSA */
166#define SSL_aDSS 0x00000040L /* Authenticate with DSS */
167#define SSL_DSS SSL_aDSS
168#define SSL_aFZA 0x00000080L
169#define SSL_aNULL 0x00000100L /* no Authenticate, ADH */
170#define SSL_aDH 0x00000200L /* no Authenticate, ADH */
171
172#define SSL_NULL (SSL_eNULL)
173#define SSL_ADH (SSL_kEDH|SSL_aNULL)
174#define SSL_RSA (SSL_kRSA|SSL_aRSA)
175#define SSL_DH (SSL_kDHr|SSL_kDHd|SSL_kEDH)
176#define SSL_FZA (SSL_aFZA|SSL_kFZA|SSL_eFZA)
177
178#define SSL_ENC_MASK 0x0001Fc00L
179#define SSL_DES 0x00000400L
180#define SSL_3DES 0x00000800L
181#define SSL_RC4 0x00001000L
182#define SSL_RC2 0x00002000L
183#define SSL_IDEA 0x00004000L
184#define SSL_eFZA 0x00008000L
185#define SSL_eNULL 0x00010000L
186
187#define SSL_MAC_MASK 0x00060000L
188#define SSL_MD5 0x00020000L
189#define SSL_SHA1 0x00040000L
190#define SSL_SHA (SSL_SHA1)
191
192#define SSL_EXP_MASK 0x00300000L
193#define SSL_EXP 0x00100000L
194#define SSL_NOT_EXP 0x00200000L
195#define SSL_EXPORT SSL_EXP
196
197#define SSL_SSL_MASK 0x00c00000L
198#define SSL_SSLV2 0x00400000L
199#define SSL_SSLV3 0x00800000L
200
201#define SSL_STRONG_MASK 0x07000000L
202#define SSL_LOW 0x01000000L
203#define SSL_MEDIUM 0x02000000L
204#define SSL_HIGH 0x04000000L
205
206/* we have used 0fffffff - 4 bits left to go */
207#define SSL_ALL 0xffffffffL
208#define SSL_ALL_CIPHERS (SSL_MKEY_MASK|SSL_AUTH_MASK|SSL_ENC_MASK|\
209 SSL_MAC_MASK|SSL_EXP_MASK)
210
211/* Mostly for SSLv3 */
212#define SSL_PKEY_RSA_ENC 0
213#define SSL_PKEY_RSA_SIGN 1
214#define SSL_PKEY_DSA_SIGN 2
215#define SSL_PKEY_DH_RSA 3
216#define SSL_PKEY_DH_DSA 4
217#define SSL_PKEY_NUM 5
218
219/* SSL_kRSA <- RSA_ENC | (RSA_TMP & RSA_SIGN) |
220 * <- (EXPORT & (RSA_ENC | RSA_TMP) & RSA_SIGN)
221 * SSL_kDH <- DH_ENC & (RSA_ENC | RSA_SIGN | DSA_SIGN)
222 * SSL_kEDH <- RSA_ENC | RSA_SIGN | DSA_SIGN
223 * SSL_aRSA <- RSA_ENC | RSA_SIGN
224 * SSL_aDSS <- DSA_SIGN
225 */
226
227/*
228#define CERT_INVALID 0
229#define CERT_PUBLIC_KEY 1
230#define CERT_PRIVATE_KEY 2
231*/
232
233typedef struct cert_pkey_st
234 {
235 X509 *x509;
236/* EVP_PKEY *publickey; *//* when extracted */
237 EVP_PKEY *privatekey;
238 } CERT_PKEY;
239
240typedef struct cert_st
241 {
242 int cert_type;
243
244#ifdef undef
245 X509 *x509;
246 EVP_PKEY *publickey; /* when extracted */
247 EVP_PKEY *privatekey;
248
249 pkeys[SSL_PKEY_RSA_ENC].x509
250/* pkeys[SSL_PKEY_RSA_ENC].publickey */
251 pkeys[SSL_PKEY_RSA_ENC].privatekey
252#endif
253
254 /* Current active set */
255 CERT_PKEY *key;
256
257 /* The following masks are for the key and auth
258 * algorithms that are supported by the certs below */
259 int valid;
260 unsigned long mask;
261 unsigned long export_mask;
262
263 RSA *rsa_tmp;
264 DH *dh_tmp;
265 RSA *(*rsa_tmp_cb)();
266 DH *(*dh_tmp_cb)();
267 CERT_PKEY pkeys[SSL_PKEY_NUM];
268
269 STACK *cert_chain;
270
271 int references;
272 } CERT;
273
274/*#define MAC_DEBUG */
275
276/*#define ERR_DEBUG */
277/*#define ABORT_DEBUG */
278/*#define PKT_DEBUG 1 */
279/*#define DES_DEBUG */
280/*#define DES_OFB_DEBUG */
281/*#define SSL_DEBUG */
282/*#define RSA_DEBUG */
283/*#define IDEA_DEBUG */
284
285#ifndef NOPROTO
286#define FP_ICC (int (*)(const void *,const void *))
287#else
288#define FP_ICC
289#endif
290
291#define ssl_put_cipher_by_char(ssl,ciph,ptr) \
292 ((ssl)->method->put_cipher_by_char((ciph),(ptr)))
293#define ssl_get_cipher_by_char(ssl,ptr) \
294 ((ssl)->method->get_cipher_by_char(ptr))
295
296/* This is for the SSLv3/TLSv1.0 differences in crypto/hash stuff
297 * It is a bit of a mess of functions, but hell, think of it as
298 * an opaque strucute :-) */
299typedef struct ssl3_enc_method
300 {
301 int (*enc)();
302 int (*mac)();
303 int (*setup_key_block)();
304 int (*generate_master_secret)();
305 int (*change_cipher_state)();
306 int (*final_finish_mac)();
307 int finish_mac_length;
308 int (*cert_verify_mac)();
309 unsigned char client_finished[20];
310 int client_finished_len;
311 unsigned char server_finished[20];
312 int server_finished_len;
313 int (*alert_value)();
314 } SSL3_ENC_METHOD;
315
316extern SSL3_ENC_METHOD ssl3_undef_enc_method;
317extern SSL_CIPHER ssl2_ciphers[];
318extern SSL_CIPHER ssl3_ciphers[];
319
320#ifndef NOPROTO
321
322SSL_METHOD *ssl_bad_method(int ver);
323SSL_METHOD *sslv2_base_method(void);
324SSL_METHOD *sslv23_base_method(void);
325SSL_METHOD *sslv3_base_method(void);
326
327void ssl_clear_cipher_ctx(SSL *s);
328int ssl_clear_bad_session(SSL *s);
329CERT *ssl_cert_new(void);
330void ssl_cert_free(CERT *c);
331int ssl_set_cert_type(CERT *c, int type);
332int ssl_get_new_session(SSL *s, int session);
333int ssl_get_prev_session(SSL *s, unsigned char *session,int len);
334int ssl_cipher_id_cmp(SSL_CIPHER *a,SSL_CIPHER *b);
335int ssl_cipher_ptr_id_cmp(SSL_CIPHER **ap,SSL_CIPHER **bp);
336STACK *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num,STACK **skp);
337int ssl_cipher_list_to_bytes(SSL *s,STACK *sk,unsigned char *p);
338STACK *ssl_create_cipher_list(SSL_METHOD *meth,STACK **pref,
339 STACK **sorted,char *str);
340void ssl_update_cache(SSL *s, int mode);
341int ssl_cipher_get_evp(SSL_CIPHER *c, EVP_CIPHER **enc, EVP_MD **md);
342int ssl_verify_cert_chain(SSL *s,STACK *sk);
343int ssl_undefined_function(SSL *s);
344X509 *ssl_get_server_send_cert(SSL *);
345EVP_PKEY *ssl_get_sign_pkey(SSL *,SSL_CIPHER *);
346int ssl_cert_type(X509 *x,EVP_PKEY *pkey);
347void ssl_set_cert_masks(CERT *c);
348STACK *ssl_get_ciphers_by_id(SSL *s);
349int ssl_verify_alarm_type(long type);
350
351int ssl2_enc_init(SSL *s, int client);
352void ssl2_generate_key_material(SSL *s);
353void ssl2_enc(SSL *s,int send_data);
354void ssl2_mac(SSL *s,unsigned char *mac,int send_data);
355SSL_CIPHER *ssl2_get_cipher_by_char(unsigned char *p);
356int ssl2_put_cipher_by_char(SSL_CIPHER *c,unsigned char *p);
357int ssl2_part_read(SSL *s, unsigned long f, int i);
358int ssl2_do_write(SSL *s);
359int ssl2_set_certificate(SSL *s, int type, int len, unsigned char *data);
360void ssl2_return_error(SSL *s,int reason);
361void ssl2_write_error(SSL *s);
362int ssl2_num_ciphers(void);
363SSL_CIPHER *ssl2_get_cipher(unsigned int u);
364int ssl2_new(SSL *s);
365void ssl2_free(SSL *s);
366int ssl2_accept(SSL *s);
367int ssl2_connect(SSL *s);
368int ssl2_read(SSL *s, char *buf, int len);
369int ssl2_peek(SSL *s, char *buf, int len);
370int ssl2_write(SSL *s, char *buf, int len);
371int ssl2_shutdown(SSL *s);
372void ssl2_clear(SSL *s);
373long ssl2_ctrl(SSL *s,int cmd, long larg, char *parg);
374long ssl2_ctx_ctrl(SSL_CTX *s,int cmd, long larg, char *parg);
375int ssl2_pending(SSL *s);
376
377SSL_CIPHER *ssl3_get_cipher_by_char(unsigned char *p);
378int ssl3_put_cipher_by_char(SSL_CIPHER *c,unsigned char *p);
379void ssl3_init_finished_mac(SSL *s);
380int ssl3_send_server_certificate(SSL *s);
381int ssl3_get_finished(SSL *s,int state_a,int state_b);
382int ssl3_setup_key_block(SSL *s);
383int ssl3_send_change_cipher_spec(SSL *s,int state_a,int state_b);
384int ssl3_change_cipher_state(SSL *s,int which);
385void ssl3_cleanup_key_block(SSL *s);
386int ssl3_do_write(SSL *s,int type);
387void ssl3_send_alert(SSL *s,int level, int desc);
388int ssl3_generate_master_secret(SSL *s, unsigned char *out,
389 unsigned char *p, int len);
390int ssl3_get_req_cert_type(SSL *s,unsigned char *p);
391long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok);
392int ssl3_send_finished(SSL *s, int a, int b, unsigned char *sender,int slen);
393int ssl3_num_ciphers(void);
394SSL_CIPHER *ssl3_get_cipher(unsigned int u);
395int ssl3_renegotiate(SSL *ssl);
396int ssl3_renegotiate_check(SSL *ssl);
397int ssl3_dispatch_alert(SSL *s);
398int ssl3_read_bytes(SSL *s, int type, char *buf, int len);
399int ssl3_part_read(SSL *s, int i);
400int ssl3_write_bytes(SSL *s, int type, char *buf, int len);
401int ssl3_final_finish_mac(SSL *s, EVP_MD_CTX *ctx1,EVP_MD_CTX *ctx2,
402 unsigned char *sender, int slen,unsigned char *p);
403int ssl3_cert_verify_mac(SSL *s, EVP_MD_CTX *in, unsigned char *p);
404void ssl3_finish_mac(SSL *s, unsigned char *buf, int len);
405int ssl3_enc(SSL *s, int send_data);
406int ssl3_mac(SSL *ssl, unsigned char *md, int send_data);
407unsigned long ssl3_output_cert_chain(SSL *s, X509 *x);
408SSL_CIPHER *ssl3_choose_cipher(SSL *ssl,STACK *have,STACK *pref);
409int ssl3_setup_buffers(SSL *s);
410int ssl3_new(SSL *s);
411void ssl3_free(SSL *s);
412int ssl3_accept(SSL *s);
413int ssl3_connect(SSL *s);
414int ssl3_read(SSL *s, char *buf, int len);
415int ssl3_peek(SSL *s,char *buf, int len);
416int ssl3_write(SSL *s, char *buf, int len);
417int ssl3_shutdown(SSL *s);
418void ssl3_clear(SSL *s);
419long ssl3_ctrl(SSL *s,int cmd, long larg, char *parg);
420long ssl3_ctx_ctrl(SSL_CTX *s,int cmd, long larg, char *parg);
421int ssl3_pending(SSL *s);
422
423int ssl23_accept(SSL *s);
424int ssl23_connect(SSL *s);
425int ssl23_read_bytes(SSL *s, int n);
426int ssl23_write_bytes(SSL *s);
427
428int tls1_new(SSL *s);
429void tls1_free(SSL *s);
430void tls1_clear(SSL *s);
431long tls1_ctrl(SSL *s,int cmd, long larg, char *parg);
432SSL_METHOD *tlsv1_base_method(void );
433
434
435int ssl_init_wbio_buffer(SSL *s, int push);
436
437int tls1_change_cipher_state(SSL *s, int which);
438int tls1_setup_key_block(SSL *s);
439int tls1_enc(SSL *s, int snd);
440int tls1_final_finish_mac(SSL *s, EVP_MD_CTX *in1_ctx, EVP_MD_CTX *in2_ctx,
441 unsigned char *str, int slen, unsigned char *p);
442int tls1_cert_verify_mac(SSL *s, EVP_MD_CTX *in, unsigned char *p);
443int tls1_mac(SSL *ssl, unsigned char *md, int snd);
444int tls1_generate_master_secret(SSL *s, unsigned char *out,
445 unsigned char *p, int len);
446int tls1_alert_code(int code);
447int ssl3_alert_code(int code);
448
449
450#else
451
452SSL_METHOD *ssl_bad_method();
453SSL_METHOD *sslv2_base_method();
454SSL_METHOD *sslv23_base_method();
455SSL_METHOD *sslv3_base_method();
456
457void ssl_clear_cipher_ctx();
458int ssl_clear_bad_session();
459CERT *ssl_cert_new();
460void ssl_cert_free();
461int ssl_set_cert_type();
462int ssl_get_new_session();
463int ssl_get_prev_session();
464int ssl_cipher_id_cmp();
465int ssl_cipher_ptr_id_cmp();
466STACK *ssl_bytes_to_cipher_list();
467int ssl_cipher_list_to_bytes();
468STACK *ssl_create_cipher_list();
469void ssl_update_cache();
470int ssl_session_get_ciphers();
471int ssl_verify_cert_chain();
472int ssl_undefined_function();
473X509 *ssl_get_server_send_cert();
474EVP_PKEY *ssl_get_sign_pkey();
475int ssl_cert_type();
476void ssl_set_cert_masks();
477STACK *ssl_get_ciphers_by_id();
478int ssl_verify_alarm_type();
479
480int ssl2_enc_init();
481void ssl2_generate_key_material();
482void ssl2_enc();
483void ssl2_mac();
484SSL_CIPHER *ssl2_get_cipher_by_char();
485int ssl2_put_cipher_by_char();
486int ssl2_part_read();
487int ssl2_do_write();
488int ssl2_set_certificate();
489void ssl2_return_error();
490void ssl2_write_error();
491int ssl2_num_ciphers();
492SSL_CIPHER *ssl2_get_cipher();
493int ssl2_new();
494void ssl2_free();
495int ssl2_accept();
496int ssl2_connect();
497int ssl2_read();
498int ssl2_peek();
499int ssl2_write();
500int ssl2_shutdown();
501void ssl2_clear();
502long ssl2_ctrl();
503long ssl2_ctx_ctrl();
504int ssl2_pending();
505
506SSL_CIPHER *ssl3_get_cipher_by_char();
507int ssl3_put_cipher_by_char();
508void ssl3_init_finished_mac();
509int ssl3_send_server_certificate();
510int ssl3_get_finished();
511int ssl3_setup_key_block();
512int ssl3_send_change_cipher_spec();
513int ssl3_change_cipher_state();
514void ssl3_cleanup_key_block();
515int ssl3_do_write();
516void ssl3_send_alert();
517int ssl3_generate_master_secret();
518int ssl3_get_req_cert_type();
519long ssl3_get_message();
520int ssl3_send_finished();
521int ssl3_num_ciphers();
522SSL_CIPHER *ssl3_get_cipher();
523int ssl3_renegotiate();
524int ssl3_renegotiate_check();
525int ssl3_dispatch_alert();
526int ssl3_read_bytes();
527int ssl3_part_read();
528int ssl3_write_bytes();
529int ssl3_final_finish_mac();
530void ssl3_finish_mac();
531int ssl3_enc();
532int ssl3_mac();
533unsigned long ssl3_output_cert_chain();
534SSL_CIPHER *ssl3_choose_cipher();
535int ssl3_setup_buffers();
536int ssl3_new();
537void ssl3_free();
538int ssl3_accept();
539int ssl3_connect();
540int ssl3_read();
541int ssl3_peek();
542int ssl3_write();
543int ssl3_shutdown();
544void ssl3_clear();
545long ssl3_ctrl();
546long ssl3_ctx_ctrl();
547int ssl3_pending();
548
549int ssl23_accept();
550int ssl23_connect();
551int ssl23_read_bytes();
552int ssl23_write_bytes();
553
554int ssl_init_wbio_buffer();
555
556#endif
557
558#endif