diff options
author | tb <> | 2024-08-28 07:15:04 +0000 |
---|---|---|
committer | tb <> | 2024-08-28 07:15:04 +0000 |
commit | 075c048b99cefdce1245c13c4aa449b28ce8366c (patch) | |
tree | bb2a05a5261bd27ee87b1f4c8d85ebba6042d17d /src/lib/libcrypto/x509/x509.h | |
parent | a03c40153c8f8e484e8b98ea5a52b87116f9bf5a (diff) | |
download | openbsd-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.h | 10 |
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 | ||
623 | int i2d_re_X509_tbs(X509 *x, unsigned char **pp); | 623 | int 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 | ||
629 | int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits, | ||
630 | uint32_t *flags); | ||
631 | #endif | ||
632 | |||
625 | void X509_get0_signature(const ASN1_BIT_STRING **psig, | 633 | void X509_get0_signature(const ASN1_BIT_STRING **psig, |
626 | const X509_ALGOR **palg, const X509 *x); | 634 | const X509_ALGOR **palg, const X509 *x); |
627 | int X509_get_signature_nid(const X509 *x); | 635 | int X509_get_signature_nid(const X509 *x); |