26416e9dde
Move cert_chain to the SSL_SESSION. Now everything on an SSL_SESSION is properly serialized. The cert_chain field is, unfortunately, messed up since it means different things between client and server. There exists code which calls SSL_get_peer_cert_chain as both client and server and assumes the existing semantics for each. Since that function doesn't return a newly-allocated STACK_OF(X509), normalizing between the two formats is a nuisance (we'd either need to store both cert_chain and cert_chain_full on the SSL_SESSION or create one of the two variants on-demand and stash it into the SSL). This CL does not resolve this and retains the client/server difference in SSL_SESSION. The SSL_SESSION serialization is a little inefficient (two copies of the leaf certificate) for a client, but clients don't typically serialize sessions. Should we wish to resolve it in the future, we can use a different tag number. Because this was historically unserialized, existing code must already allow for cert_chain not being preserved across i2d/d2i. In keeping with the semantics of retain_only_sha256_of_client_certs, cert_chain is not retained when that flag is set. Change-Id: Ieb72fc62c3076dd59750219e550902f1ad039651 Reviewed-on: https://boringssl-review.googlesource.com/5759 Reviewed-by: Adam Langley <agl@google.com> |
||
---|---|---|
.. | ||
pqueue | ||
test | ||
CMakeLists.txt | ||
custom_extensions.c | ||
d1_both.c | ||
d1_clnt.c | ||
d1_lib.c | ||
d1_meth.c | ||
d1_pkt.c | ||
d1_srtp.c | ||
d1_srvr.c | ||
dtls_record.c | ||
internal.h | ||
s3_both.c | ||
s3_clnt.c | ||
s3_enc.c | ||
s3_lib.c | ||
s3_meth.c | ||
s3_pkt.c | ||
s3_srvr.c | ||
ssl_aead_ctx.c | ||
ssl_algs.c | ||
ssl_asn1.c | ||
ssl_buffer.c | ||
ssl_cert.c | ||
ssl_cipher.c | ||
ssl_lib.c | ||
ssl_rsa.c | ||
ssl_sess.c | ||
ssl_stat.c | ||
ssl_test.cc | ||
ssl_txt.c | ||
t1_enc.c | ||
t1_lib.c | ||
tls_record.c |