From 19f65ddbab30543415584ae7916e12a3c5249dba Mon Sep 17 00:00:00 2001 From: Rob Stradling Date: Tue, 25 Feb 2014 10:14:51 +0000 Subject: [PATCH] Parse non-v1 SCTs less awkwardly. --- crypto/x509v3/v3_scts.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/crypto/x509v3/v3_scts.c b/crypto/x509v3/v3_scts.c index 32548007d8..9c560ad483 100644 --- a/crypto/x509v3/v3_scts.c +++ b/crypto/x509v3/v3_scts.c @@ -141,9 +141,12 @@ static int i2r_scts(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *oct, BIO_printf(out, "%*sSigned Certificate Timestamp:", indent, ""); + BIO_printf(out, "\n%*sVersion : ", indent + 4, ""); if (*data == 0) /* SCT v1 */ { + BIO_printf(out, "v1(0)"); + /* Fixed-length header: * struct { * (1 byte) Version sct_version; @@ -155,9 +158,6 @@ static int i2r_scts(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *oct, return 0; sctlen -= 43; - BIO_printf(out, "\n%*sVersion : v1(0)", indent + 4, - ""); - BIO_printf(out, "\n%*sLog ID : ", indent + 4, ""); BIO_hex_string(out, indent + 16, 16, data + 1, 32); @@ -195,9 +195,16 @@ static int i2r_scts(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *oct, return 0; BIO_printf(out, "\n%*s ", indent + 4, ""); BIO_hex_string(out, indent + 16, 16, data, fieldlen); - if (listlen > 0) BIO_printf(out, "\n"); data += fieldlen; } + else /* Unknown version */ + { + BIO_printf(out, "unknown\n%*s", indent + 16, ""); + BIO_hex_string(out, indent + 16, 16, data, sctlen); + data += sctlen; + } + + if (listlen > 0) BIO_printf(out, "\n"); } return 1; -- 2.25.1