diff options
Diffstat (limited to 'src/lib/libssl/ssl_asn1.c')
-rw-r--r-- | src/lib/libssl/ssl_asn1.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/lib/libssl/ssl_asn1.c b/src/lib/libssl/ssl_asn1.c index ef34cbdb04..fcf4631a59 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.68 2024/07/20 04:04:23 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_asn1.c,v 1.69 2024/07/22 14:47:15 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2016 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2016 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -51,7 +51,6 @@ SSL_SESSION_encode(SSL_SESSION *s, unsigned char **out, size_t *out_len, | |||
51 | CBB peer_cert, sidctx, verify_result, hostname, lifetime, ticket, value; | 51 | CBB peer_cert, sidctx, verify_result, hostname, lifetime, ticket, value; |
52 | unsigned char *peer_cert_bytes = NULL; | 52 | unsigned char *peer_cert_bytes = NULL; |
53 | int len, rv = 0; | 53 | int len, rv = 0; |
54 | uint16_t cid; | ||
55 | 54 | ||
56 | if (!CBB_init(&cbb, 0)) | 55 | if (!CBB_init(&cbb, 0)) |
57 | goto err; | 56 | goto err; |
@@ -69,11 +68,10 @@ SSL_SESSION_encode(SSL_SESSION *s, unsigned char **out, size_t *out_len, | |||
69 | if (!CBB_add_asn1_uint64(&session, s->ssl_version)) | 68 | if (!CBB_add_asn1_uint64(&session, s->ssl_version)) |
70 | goto err; | 69 | goto err; |
71 | 70 | ||
72 | /* Cipher suite ID. */ | 71 | /* Cipher suite value. */ |
73 | cid = (uint16_t)(s->cipher_id & SSL3_CK_VALUE_MASK); | ||
74 | if (!CBB_add_asn1(&session, &cipher_suite, CBS_ASN1_OCTETSTRING)) | 72 | if (!CBB_add_asn1(&session, &cipher_suite, CBS_ASN1_OCTETSTRING)) |
75 | goto err; | 73 | goto err; |
76 | if (!CBB_add_u16(&cipher_suite, cid)) | 74 | if (!CBB_add_u16(&cipher_suite, s->cipher_value)) |
77 | goto err; | 75 | goto err; |
78 | 76 | ||
79 | /* Session ID - zero length for a ticket. */ | 77 | /* Session ID - zero length for a ticket. */ |
@@ -193,7 +191,7 @@ SSL_SESSION_ticket(SSL_SESSION *ss, unsigned char **out, size_t *out_len) | |||
193 | if (ss == NULL) | 191 | if (ss == NULL) |
194 | return 0; | 192 | return 0; |
195 | 193 | ||
196 | if (ss->cipher_id == 0) | 194 | if (ss->cipher_value == 0) |
197 | return 0; | 195 | return 0; |
198 | 196 | ||
199 | return SSL_SESSION_encode(ss, out, out_len, 1); | 197 | return SSL_SESSION_encode(ss, out, out_len, 1); |
@@ -209,7 +207,7 @@ i2d_SSL_SESSION(SSL_SESSION *ss, unsigned char **pp) | |||
209 | if (ss == NULL) | 207 | if (ss == NULL) |
210 | return 0; | 208 | return 0; |
211 | 209 | ||
212 | if (ss->cipher_id == 0) | 210 | if (ss->cipher_value == 0) |
213 | return 0; | 211 | return 0; |
214 | 212 | ||
215 | if (!SSL_SESSION_encode(ss, &data, &data_len, 0)) | 213 | if (!SSL_SESSION_encode(ss, &data, &data_len, 0)) |
@@ -244,7 +242,6 @@ d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length) | |||
244 | CBS hostname, ticket; | 242 | CBS hostname, ticket; |
245 | uint64_t version, tls_version, stime, timeout, verify_result, lifetime; | 243 | uint64_t version, tls_version, stime, timeout, verify_result, lifetime; |
246 | const unsigned char *peer_cert_bytes; | 244 | const unsigned char *peer_cert_bytes; |
247 | uint16_t cipher_value; | ||
248 | SSL_SESSION *s = NULL; | 245 | SSL_SESSION *s = NULL; |
249 | size_t data_len; | 246 | size_t data_len; |
250 | int present; | 247 | int present; |
@@ -277,14 +274,13 @@ d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length) | |||
277 | goto err; | 274 | goto err; |
278 | s->ssl_version = (int)tls_version; | 275 | s->ssl_version = (int)tls_version; |
279 | 276 | ||
280 | /* Cipher suite. */ | 277 | /* Cipher suite value. */ |
281 | if (!CBS_get_asn1(&session, &cipher_suite, CBS_ASN1_OCTETSTRING)) | 278 | if (!CBS_get_asn1(&session, &cipher_suite, CBS_ASN1_OCTETSTRING)) |
282 | goto err; | 279 | goto err; |
283 | if (!CBS_get_u16(&cipher_suite, &cipher_value)) | 280 | if (!CBS_get_u16(&cipher_suite, &s->cipher_value)) |
284 | goto err; | 281 | goto err; |
285 | if (CBS_len(&cipher_suite) != 0) | 282 | if (CBS_len(&cipher_suite) != 0) |
286 | goto err; | 283 | goto err; |
287 | s->cipher_id = SSL3_CK_ID | cipher_value; | ||
288 | 284 | ||
289 | /* Session ID. */ | 285 | /* Session ID. */ |
290 | if (!CBS_get_asn1(&session, &session_id, CBS_ASN1_OCTETSTRING)) | 286 | if (!CBS_get_asn1(&session, &session_id, CBS_ASN1_OCTETSTRING)) |