diff options
| author | jsing <> | 2016-12-26 15:34:01 +0000 |
|---|---|---|
| committer | jsing <> | 2016-12-26 15:34:01 +0000 |
| commit | 8ecf566c9f3111060befdc0fb8752b438e41880f (patch) | |
| tree | 8d4c994b773b032fa825882f2b6480cda81be7d1 /src/lib/libssl/ssl_asn1.c | |
| parent | 3d34d34942267d298af46ee4a3c421c8d1267997 (diff) | |
| download | openbsd-8ecf566c9f3111060befdc0fb8752b438e41880f.tar.gz openbsd-8ecf566c9f3111060befdc0fb8752b438e41880f.tar.bz2 openbsd-8ecf566c9f3111060befdc0fb8752b438e41880f.zip | |
Restore previous ASN.1 encoding for the peer certificate - this was
unintentionally changed during the CBS/CBB rewrite.
Issue reported by jeremy@ due to failing ruby tests.
Analysis and near identical diff from Kazuki Yamaguchi <k at rhe.jp>.
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/ssl_asn1.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/lib/libssl/ssl_asn1.c b/src/lib/libssl/ssl_asn1.c index 36fbbbed98..707dc24d08 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.46 2016/12/26 15:28:42 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_asn1.c,v 1.47 2016/12/26 15:34:01 jsing Exp $ */ |
| 2 | 2 | ||
| 3 | /* | 3 | /* |
| 4 | * Copyright (c) 2016 Joel Sing <jsing@openbsd.org> | 4 | * Copyright (c) 2016 Joel Sing <jsing@openbsd.org> |
| @@ -122,13 +122,11 @@ i2d_SSL_SESSION(SSL_SESSION *s, unsigned char **pp) | |||
| 122 | 122 | ||
| 123 | /* Peer certificate [3]. */ | 123 | /* Peer certificate [3]. */ |
| 124 | if (s->peer != NULL) { | 124 | if (s->peer != NULL) { |
| 125 | if (!CBB_add_asn1(&session, &peer_cert, SSLASN1_PEER_CERT_TAG)) | ||
| 126 | goto err; | ||
| 127 | if (!CBB_add_asn1(&peer_cert, &value, CBS_ASN1_OCTETSTRING)) | ||
| 128 | goto err; | ||
| 129 | if ((len = i2d_X509(s->peer, &peer_cert_bytes)) <= 0) | 125 | if ((len = i2d_X509(s->peer, &peer_cert_bytes)) <= 0) |
| 130 | goto err; | 126 | goto err; |
| 131 | if (!CBB_add_bytes(&value, peer_cert_bytes, len)) | 127 | if (!CBB_add_asn1(&session, &peer_cert, SSLASN1_PEER_CERT_TAG)) |
| 128 | goto err; | ||
| 129 | if (!CBB_add_bytes(&peer_cert, peer_cert_bytes, len)) | ||
| 132 | goto err; | 130 | goto err; |
| 133 | } | 131 | } |
| 134 | 132 | ||
| @@ -312,7 +310,7 @@ d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length) | |||
| 312 | /* Peer certificate [3]. */ | 310 | /* Peer certificate [3]. */ |
| 313 | X509_free(s->peer); | 311 | X509_free(s->peer); |
| 314 | s->peer = NULL; | 312 | s->peer = NULL; |
| 315 | if (!CBS_get_optional_asn1_octet_string(&session, &peer_cert, &present, | 313 | if (!CBS_get_optional_asn1(&session, &peer_cert, &present, |
| 316 | SSLASN1_PEER_CERT_TAG)) | 314 | SSLASN1_PEER_CERT_TAG)) |
| 317 | goto err; | 315 | goto err; |
| 318 | if (present) { | 316 | if (present) { |
