Deleted Added
full compact
s23_lib.c (110007) s23_lib.c (160817)
1/* ssl/s23_lib.c */
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 *

--- 46 unchanged lines hidden (view full) ---

55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <openssl/objects.h>
61#include "ssl_locl.h"
62
1/* ssl/s23_lib.c */
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 *

--- 46 unchanged lines hidden (view full) ---

55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdio.h>
60#include <openssl/objects.h>
61#include "ssl_locl.h"
62
63static int ssl23_num_ciphers(void );
64static SSL_CIPHER *ssl23_get_cipher(unsigned int u);
65static int ssl23_read(SSL *s, void *buf, int len);
66static int ssl23_peek(SSL *s, void *buf, int len);
67static int ssl23_write(SSL *s, const void *buf, int len);
68static long ssl23_default_timeout(void );
69static int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p);
70static SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p);
71const char *SSL23_version_str="SSLv2/3 compatibility" OPENSSL_VERSION_PTEXT;
72
73static SSL_METHOD SSLv23_data= {
74 TLS1_VERSION,
75 tls1_new,
76 tls1_clear,
77 tls1_free,
78 ssl_undefined_function,
79 ssl_undefined_function,
80 ssl23_read,
81 ssl23_peek,
82 ssl23_write,
83 ssl_undefined_function,
84 ssl_undefined_function,
85 ssl_ok,
86 ssl3_ctrl,
87 ssl3_ctx_ctrl,
88 ssl23_get_cipher_by_char,
89 ssl23_put_cipher_by_char,
90 ssl_undefined_function,
91 ssl23_num_ciphers,
92 ssl23_get_cipher,
93 ssl_bad_method,
94 ssl23_default_timeout,
95 &ssl3_undef_enc_method,
96 ssl_undefined_function,
97 ssl3_callback_ctrl,
98 ssl3_ctx_callback_ctrl,
99 };
100
101static long ssl23_default_timeout(void)
63long ssl23_default_timeout(void)
102 {
103 return(300);
104 }
105
64 {
65 return(300);
66 }
67
106SSL_METHOD *sslv23_base_method(void)
107 {
108 return(&SSLv23_data);
109 }
68IMPLEMENT_ssl23_meth_func(sslv23_base_method,
69 ssl_undefined_function,
70 ssl_undefined_function,
71 ssl_bad_method)
110
72
111static int ssl23_num_ciphers(void)
73int ssl23_num_ciphers(void)
112 {
113 return(ssl3_num_ciphers()
114#ifndef OPENSSL_NO_SSL2
115 + ssl2_num_ciphers()
116#endif
117 );
118 }
119
74 {
75 return(ssl3_num_ciphers()
76#ifndef OPENSSL_NO_SSL2
77 + ssl2_num_ciphers()
78#endif
79 );
80 }
81
120static SSL_CIPHER *ssl23_get_cipher(unsigned int u)
82SSL_CIPHER *ssl23_get_cipher(unsigned int u)
121 {
122 unsigned int uu=ssl3_num_ciphers();
123
124 if (u < uu)
125 return(ssl3_get_cipher(u));
126 else
127#ifndef OPENSSL_NO_SSL2
128 return(ssl2_get_cipher(u-uu));
129#else
130 return(NULL);
131#endif
132 }
133
134/* This function needs to check if the ciphers required are actually
135 * available */
83 {
84 unsigned int uu=ssl3_num_ciphers();
85
86 if (u < uu)
87 return(ssl3_get_cipher(u));
88 else
89#ifndef OPENSSL_NO_SSL2
90 return(ssl2_get_cipher(u-uu));
91#else
92 return(NULL);
93#endif
94 }
95
96/* This function needs to check if the ciphers required are actually
97 * available */
136static SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p)
98SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p)
137 {
138 SSL_CIPHER c,*cp;
139 unsigned long id;
140 int n;
141
142 n=ssl3_num_ciphers();
143 id=0x03000000|((unsigned long)p[0]<<16L)|
144 ((unsigned long)p[1]<<8L)|(unsigned long)p[2];
145 c.id=id;
146 cp=ssl3_get_cipher_by_char(p);
147#ifndef OPENSSL_NO_SSL2
148 if (cp == NULL)
149 cp=ssl2_get_cipher_by_char(p);
150#endif
151 return(cp);
152 }
153
99 {
100 SSL_CIPHER c,*cp;
101 unsigned long id;
102 int n;
103
104 n=ssl3_num_ciphers();
105 id=0x03000000|((unsigned long)p[0]<<16L)|
106 ((unsigned long)p[1]<<8L)|(unsigned long)p[2];
107 c.id=id;
108 cp=ssl3_get_cipher_by_char(p);
109#ifndef OPENSSL_NO_SSL2
110 if (cp == NULL)
111 cp=ssl2_get_cipher_by_char(p);
112#endif
113 return(cp);
114 }
115
154static int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p)
116int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p)
155 {
156 long l;
157
158 /* We can write SSLv2 and SSLv3 ciphers */
159 if (p != NULL)
160 {
161 l=c->id;
162 p[0]=((unsigned char)(l>>16L))&0xFF;
163 p[1]=((unsigned char)(l>> 8L))&0xFF;
164 p[2]=((unsigned char)(l ))&0xFF;
165 }
166 return(3);
167 }
168
117 {
118 long l;
119
120 /* We can write SSLv2 and SSLv3 ciphers */
121 if (p != NULL)
122 {
123 l=c->id;
124 p[0]=((unsigned char)(l>>16L))&0xFF;
125 p[1]=((unsigned char)(l>> 8L))&0xFF;
126 p[2]=((unsigned char)(l ))&0xFF;
127 }
128 return(3);
129 }
130
169static int ssl23_read(SSL *s, void *buf, int len)
131int ssl23_read(SSL *s, void *buf, int len)
170 {
171 int n;
172
173 clear_sys_error();
174 if (SSL_in_init(s) && (!s->in_handshake))
175 {
176 n=s->handshake_func(s);
177 if (n < 0) return(n);

--- 6 unchanged lines hidden (view full) ---

184 }
185 else
186 {
187 ssl_undefined_function(s);
188 return(-1);
189 }
190 }
191
132 {
133 int n;
134
135 clear_sys_error();
136 if (SSL_in_init(s) && (!s->in_handshake))
137 {
138 n=s->handshake_func(s);
139 if (n < 0) return(n);

--- 6 unchanged lines hidden (view full) ---

146 }
147 else
148 {
149 ssl_undefined_function(s);
150 return(-1);
151 }
152 }
153
192static int ssl23_peek(SSL *s, void *buf, int len)
154int ssl23_peek(SSL *s, void *buf, int len)
193 {
194 int n;
195
196 clear_sys_error();
197 if (SSL_in_init(s) && (!s->in_handshake))
198 {
199 n=s->handshake_func(s);
200 if (n < 0) return(n);

--- 6 unchanged lines hidden (view full) ---

207 }
208 else
209 {
210 ssl_undefined_function(s);
211 return(-1);
212 }
213 }
214
155 {
156 int n;
157
158 clear_sys_error();
159 if (SSL_in_init(s) && (!s->in_handshake))
160 {
161 n=s->handshake_func(s);
162 if (n < 0) return(n);

--- 6 unchanged lines hidden (view full) ---

169 }
170 else
171 {
172 ssl_undefined_function(s);
173 return(-1);
174 }
175 }
176
215static int ssl23_write(SSL *s, const void *buf, int len)
177int ssl23_write(SSL *s, const void *buf, int len)
216 {
217 int n;
218
219 clear_sys_error();
220 if (SSL_in_init(s) && (!s->in_handshake))
221 {
222 n=s->handshake_func(s);
223 if (n < 0) return(n);

--- 13 unchanged lines hidden ---
178 {
179 int n;
180
181 clear_sys_error();
182 if (SSL_in_init(s) && (!s->in_handshake))
183 {
184 n=s->handshake_func(s);
185 if (n < 0) return(n);

--- 13 unchanged lines hidden ---