summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_asn1.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/ssl_asn1.c')
-rw-r--r--src/lib/libssl/ssl_asn1.c55
1 files changed, 2 insertions, 53 deletions
diff --git a/src/lib/libssl/ssl_asn1.c b/src/lib/libssl/ssl_asn1.c
index 43366b33b8..dd958d6570 100644
--- a/src/lib/libssl/ssl_asn1.c
+++ b/src/lib/libssl/ssl_asn1.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_asn1.c,v 1.27 2014/07/10 08:51:15 tedu Exp $ */ 1/* $OpenBSD: ssl_asn1.c,v 1.28 2014/07/11 09:24:44 beck Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -103,17 +103,13 @@ typedef struct ssl_session_asn1_st {
103 ASN1_OCTET_STRING tlsext_hostname; 103 ASN1_OCTET_STRING tlsext_hostname;
104 ASN1_INTEGER tlsext_tick_lifetime; 104 ASN1_INTEGER tlsext_tick_lifetime;
105 ASN1_OCTET_STRING tlsext_tick; 105 ASN1_OCTET_STRING tlsext_tick;
106#ifndef OPENSSL_NO_PSK
107 ASN1_OCTET_STRING psk_identity_hint;
108 ASN1_OCTET_STRING psk_identity;
109#endif /* OPENSSL_NO_PSK */
110} SSL_SESSION_ASN1; 106} SSL_SESSION_ASN1;
111 107
112int 108int
113i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) 109i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp)
114{ 110{
115#define LSIZE2 (sizeof(long)*2) 111#define LSIZE2 (sizeof(long)*2)
116 int v1 = 0, v2 = 0, v3 = 0, v4 = 0, v5 = 0, v7 = 0, v8 = 0; 112 int v1 = 0, v2 = 0, v3 = 0, v4 = 0, v5 = 0;
117 unsigned char buf[4], ibuf1[LSIZE2], ibuf2[LSIZE2]; 113 unsigned char buf[4], ibuf1[LSIZE2], ibuf2[LSIZE2];
118 unsigned char ibuf3[LSIZE2], ibuf4[LSIZE2], ibuf5[LSIZE2]; 114 unsigned char ibuf3[LSIZE2], ibuf4[LSIZE2], ibuf5[LSIZE2];
119 int v6 = 0, v9 = 0, v10 = 0; 115 int v6 = 0, v9 = 0, v10 = 0;
@@ -202,18 +198,6 @@ i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp)
202 a.tlsext_tick_lifetime.data = ibuf6; 198 a.tlsext_tick_lifetime.data = ibuf6;
203 ASN1_INTEGER_set(&a.tlsext_tick_lifetime, in->tlsext_tick_lifetime_hint); 199 ASN1_INTEGER_set(&a.tlsext_tick_lifetime, in->tlsext_tick_lifetime_hint);
204 } 200 }
205#ifndef OPENSSL_NO_PSK
206 if (in->psk_identity_hint) {
207 a.psk_identity_hint.length = strlen(in->psk_identity_hint);
208 a.psk_identity_hint.type = V_ASN1_OCTET_STRING;
209 a.psk_identity_hint.data = (unsigned char *)(in->psk_identity_hint);
210 }
211 if (in->psk_identity) {
212 a.psk_identity.length = strlen(in->psk_identity);
213 a.psk_identity.type = V_ASN1_OCTET_STRING;
214 a.psk_identity.data = (unsigned char *)(in->psk_identity);
215 }
216#endif /* OPENSSL_NO_PSK */
217 201
218 M_ASN1_I2D_len(&(a.version), i2d_ASN1_INTEGER); 202 M_ASN1_I2D_len(&(a.version), i2d_ASN1_INTEGER);
219 M_ASN1_I2D_len(&(a.ssl_version), i2d_ASN1_INTEGER); 203 M_ASN1_I2D_len(&(a.ssl_version), i2d_ASN1_INTEGER);
@@ -236,12 +220,6 @@ i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp)
236 M_ASN1_I2D_len_EXP_opt(&(a.tlsext_tick), i2d_ASN1_OCTET_STRING, 10, v10); 220 M_ASN1_I2D_len_EXP_opt(&(a.tlsext_tick), i2d_ASN1_OCTET_STRING, 10, v10);
237 if (in->tlsext_hostname) 221 if (in->tlsext_hostname)
238 M_ASN1_I2D_len_EXP_opt(&(a.tlsext_hostname), i2d_ASN1_OCTET_STRING, 6, v6); 222 M_ASN1_I2D_len_EXP_opt(&(a.tlsext_hostname), i2d_ASN1_OCTET_STRING, 6, v6);
239#ifndef OPENSSL_NO_PSK
240 if (in->psk_identity_hint)
241 M_ASN1_I2D_len_EXP_opt(&(a.psk_identity_hint), i2d_ASN1_OCTET_STRING, 7, v7);
242 if (in->psk_identity)
243 M_ASN1_I2D_len_EXP_opt(&(a.psk_identity), i2d_ASN1_OCTET_STRING, 8, v8);
244#endif /* OPENSSL_NO_PSK */
245 223
246 M_ASN1_I2D_seq_total(); 224 M_ASN1_I2D_seq_total();
247 225
@@ -262,12 +240,6 @@ i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp)
262 M_ASN1_I2D_put_EXP_opt(&a.verify_result, i2d_ASN1_INTEGER, 5, v5); 240 M_ASN1_I2D_put_EXP_opt(&a.verify_result, i2d_ASN1_INTEGER, 5, v5);
263 if (in->tlsext_hostname) 241 if (in->tlsext_hostname)
264 M_ASN1_I2D_put_EXP_opt(&(a.tlsext_hostname), i2d_ASN1_OCTET_STRING, 6, v6); 242 M_ASN1_I2D_put_EXP_opt(&(a.tlsext_hostname), i2d_ASN1_OCTET_STRING, 6, v6);
265#ifndef OPENSSL_NO_PSK
266 if (in->psk_identity_hint)
267 M_ASN1_I2D_put_EXP_opt(&(a.psk_identity_hint), i2d_ASN1_OCTET_STRING, 7, v7);
268 if (in->psk_identity)
269 M_ASN1_I2D_put_EXP_opt(&(a.psk_identity), i2d_ASN1_OCTET_STRING, 8, v8);
270#endif /* OPENSSL_NO_PSK */
271 if (in->tlsext_tick_lifetime_hint > 0) 243 if (in->tlsext_tick_lifetime_hint > 0)
272 M_ASN1_I2D_put_EXP_opt(&a.tlsext_tick_lifetime, i2d_ASN1_INTEGER, 9, v9); 244 M_ASN1_I2D_put_EXP_opt(&a.tlsext_tick_lifetime, i2d_ASN1_INTEGER, 9, v9);
273 if (in->tlsext_tick) 245 if (in->tlsext_tick)
@@ -415,29 +387,6 @@ d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length)
415 } else 387 } else
416 ret->tlsext_hostname = NULL; 388 ret->tlsext_hostname = NULL;
417 389
418#ifndef OPENSSL_NO_PSK
419 os.length = 0;
420 os.data = NULL;
421 M_ASN1_D2I_get_EXP_opt(osp, d2i_ASN1_OCTET_STRING, 7);
422 if (os.data) {
423 ret->psk_identity_hint = BUF_strndup((char *)os.data, os.length);
424 free(os.data);
425 os.data = NULL;
426 os.length = 0;
427 } else
428 ret->psk_identity_hint = NULL;
429
430 os.length = 0;
431 os.data = NULL;
432 M_ASN1_D2I_get_EXP_opt(osp, d2i_ASN1_OCTET_STRING, 8);
433 if (os.data) {
434 ret->psk_identity = BUF_strndup((char *)os.data, os.length);
435 free(os.data);
436 os.data = NULL;
437 os.length = 0;
438 } else
439 ret->psk_identity = NULL;
440#endif /* OPENSSL_NO_PSK */
441 390
442 ai.length = 0; 391 ai.length = 0;
443 M_ASN1_D2I_get_EXP_opt(aip, d2i_ASN1_INTEGER, 9); 392 M_ASN1_D2I_get_EXP_opt(aip, d2i_ASN1_INTEGER, 9);