summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp
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/evp
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/evp')
-rw-r--r--src/lib/libcrypto/evp/evp_local.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lib/libcrypto/evp/evp_local.h b/src/lib/libcrypto/evp/evp_local.h
index 3e90e068e6..5d541ffec4 100644
--- a/src/lib/libcrypto/evp/evp_local.h
+++ b/src/lib/libcrypto/evp/evp_local.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: evp_local.h,v 1.23 2024/08/22 12:24:24 tb Exp $ */ 1/* $OpenBSD: evp_local.h,v 1.24 2024/08/28 07:15:04 tb Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
@@ -112,6 +112,9 @@ struct evp_pkey_asn1_method_st {
112 int (*pkey_bits)(const EVP_PKEY *pk); 112 int (*pkey_bits)(const EVP_PKEY *pk);
113 int (*pkey_security_bits)(const EVP_PKEY *pk); 113 int (*pkey_security_bits)(const EVP_PKEY *pk);
114 114
115 int (*signature_info)(const X509_ALGOR *sig_alg, int *out_md_nid,
116 int *out_pkey_nid, int *out_security_bits, uint32_t *out_flags);
117
115 int (*param_decode)(EVP_PKEY *pkey, const unsigned char **pder, 118 int (*param_decode)(EVP_PKEY *pkey, const unsigned char **pder,
116 int derlen); 119 int derlen);
117 int (*param_encode)(const EVP_PKEY *pkey, unsigned char **pder); 120 int (*param_encode)(const EVP_PKEY *pkey, unsigned char **pder);