From db129f3f3fdf2c2dd880e9c59fe4240eb3ebd490 Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Tue, 28 Jul 2020 10:32:24 -0400 Subject: [PATCH] Add X509_SIG_get0 and X509_SIG_getm. Change-Id: I1bef3ea54f871003f7e4a076c5cfb0dbb7f89f73 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/42344 Reviewed-by: Adam Langley --- crypto/x509/x_sig.c | 20 ++++++++++++++++++++ include/openssl/x509.h | 11 +++++++++++ 2 files changed, 31 insertions(+) diff --git a/crypto/x509/x_sig.c b/crypto/x509/x_sig.c index e18024a72..ca08c6443 100644 --- a/crypto/x509/x_sig.c +++ b/crypto/x509/x_sig.c @@ -67,3 +67,23 @@ ASN1_SEQUENCE(X509_SIG) = { } ASN1_SEQUENCE_END(X509_SIG) IMPLEMENT_ASN1_FUNCTIONS(X509_SIG) + +void X509_SIG_get0(const X509_SIG *sig, const X509_ALGOR **out_alg, + const ASN1_OCTET_STRING **out_digest) { + if (out_alg != NULL) { + *out_alg = sig->algor; + } + if (out_digest != NULL) { + *out_digest = sig->digest; + } +} + +void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **out_alg, + ASN1_OCTET_STRING **out_digest) { + if (out_alg != NULL) { + *out_alg = sig->algor; + } + if (out_digest != NULL) { + *out_digest = sig->digest; + } +} diff --git a/include/openssl/x509.h b/include/openssl/x509.h index 94dcc7944..d3b32a83b 100644 --- a/include/openssl/x509.h +++ b/include/openssl/x509.h @@ -559,6 +559,17 @@ OPENSSL_EXPORT void X509_CINF_set_modified(X509_CINF *cinf); // |X509_get0_tbs_sigalg| instead. OPENSSL_EXPORT const X509_ALGOR *X509_CINF_get_signature(const X509_CINF *cinf); +// X509_SIG_get0 sets |*out_alg| and |*out_digest| to non-owning pointers to +// |sig|'s algorithm and digest fields, respectively. Either |out_alg| and +// |out_digest| may be NULL to skip those fields. +OPENSSL_EXPORT void X509_SIG_get0(const X509_SIG *sig, + const X509_ALGOR **out_alg, + const ASN1_OCTET_STRING **out_digest); + +// X509_SIG_getm behaves like |X509_SIG_get0| but returns mutable pointers. +OPENSSL_EXPORT void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **out_alg, + ASN1_OCTET_STRING **out_digest); + OPENSSL_EXPORT void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); OPENSSL_EXPORT X509_CRL_METHOD *X509_CRL_METHOD_new( int (*crl_init)(X509_CRL *crl), int (*crl_free)(X509_CRL *crl),