summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509/x509.h
diff options
context:
space:
mode:
authortb <>2024-08-28 07:15:04 +0000
committertb <>2024-08-28 07:15:04 +0000
commit075c048b99cefdce1245c13c4aa449b28ce8366c (patch)
treebb2a05a5261bd27ee87b1f4c8d85ebba6042d17d /src/lib/libcrypto/x509/x509.h
parenta03c40153c8f8e484e8b98ea5a52b87116f9bf5a (diff)
downloadopenbsd-075c048b99cefdce1245c13c4aa449b28ce8366c.tar.gz
openbsd-075c048b99cefdce1245c13c4aa449b28ce8366c.tar.bz2
openbsd-075c048b99cefdce1245c13c4aa449b28ce8366c.zip
Implement X509_get_signature_info()
This is a slightly strange combination of OBJ_find_sigid_algs() and the security level API necessary because OBJ_find_sigid_algs() on its own isn't smart enough for the special needs of RSA-PSS and EdDSA. The API extracts the hash's NID and the pubkey's NID from the certificate's signatureAlgorithm and invokes special handlers for RSA-PSS and EdDSA for retrieving the corresponding information. This isn't entirely free for RSA-PSS, but for now we don't cache this information. The security bits calculation is a bit hand-wavy, but that's something that comes along with this sort of numerology. ok jsing
Diffstat (limited to 'src/lib/libcrypto/x509/x509.h')
-rw-r--r--src/lib/libcrypto/x509/x509.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/lib/libcrypto/x509/x509.h b/src/lib/libcrypto/x509/x509.h
index 87bc6dbb33..856ad19ba4 100644
--- a/src/lib/libcrypto/x509/x509.h
+++ b/src/lib/libcrypto/x509/x509.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509.h,v 1.112 2024/06/12 03:55:46 tb Exp $ */ 1/* $OpenBSD: x509.h,v 1.113 2024/08/28 07:15:04 tb Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -622,6 +622,14 @@ X509 * d2i_X509_AUX(X509 **a,const unsigned char **pp,long length);
622 622
623int i2d_re_X509_tbs(X509 *x, unsigned char **pp); 623int i2d_re_X509_tbs(X509 *x, unsigned char **pp);
624 624
625#if defined(LIBRESSL_INTERNAL) || defined(LIBRESSL_NEXT_API)
626/* Flags returned by X509_get_signature_info(): valid and suitable for TLS. */
627#define X509_SIG_INFO_VALID 1
628#define X509_SIG_INFO_TLS 2
629int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits,
630 uint32_t *flags);
631#endif
632
625void X509_get0_signature(const ASN1_BIT_STRING **psig, 633void X509_get0_signature(const ASN1_BIT_STRING **psig,
626 const X509_ALGOR **palg, const X509 *x); 634 const X509_ALGOR **palg, const X509 *x);
627int X509_get_signature_nid(const X509 *x); 635int X509_get_signature_nid(const X509 *x);