diff options
| author | Dmitry Belyavskiy <[email protected]> | 2026-09-02 14:38:46 +0200 |
|---|---|---|
| committer | Dmitry Belyavskiy <[email protected]> | 2026-09-05 19:06:10 +0200 |
| commit | 1935d215b5c6bc8619342e6271cfd52837517112 (patch) | |
| tree | c116fe4edd143442dd05bbcca922fb9b70f97623 /include | |
| parent | test: tolerate DTLS peer change with fragment data (diff) | |
| download | openssl-1935d215b5c6bc8619342e6271cfd52837517112.tar.gz openssl-1935d215b5c6bc8619342e6271cfd52837517112.zip | |
Add metadata support to EVP_SKEY objects
Assisted-by: Claude Opus 4.6 <[email protected]>
Reviewed-by: Mounir Idrassi <[email protected]>
Reviewed-by: Simo Sorce <[email protected]>
MergeDate: Sat Sep 5 17:06:55 2026
(Merged from https://github.com/openssl/openssl/pull/32644)
Diffstat (limited to 'include')
| -rw-r--r-- | include/internal/skey.h | 9 | ||||
| -rw-r--r-- | include/openssl/core_dispatch.h | 8 | ||||
| -rw-r--r-- | include/openssl/evp.h | 5 |
3 files changed, 22 insertions, 0 deletions
diff --git a/include/internal/skey.h b/include/internal/skey.h index b511af8c32c..68661aba8ae 100644 --- a/include/internal/skey.h +++ b/include/internal/skey.h @@ -31,6 +31,15 @@ struct prov_skey_st { unsigned char *data; size_t length; + + /* Metadata — set during import, returned during export / get_key_id */ + char *alias; + unsigned char *local_keyid; + size_t local_keyid_len; + unsigned char *algorithm_oid; + size_t algorithm_oid_len; + unsigned char *algorithm_params; + size_t algorithm_params_len; }; #endif /* OSSL_CRYPTO_SKEY_H */ diff --git a/include/openssl/core_dispatch.h b/include/openssl/core_dispatch.h index 1bab83d7922..176f8c426c6 100644 --- a/include/openssl/core_dispatch.h +++ b/include/openssl/core_dispatch.h @@ -488,6 +488,8 @@ OSSL_CORE_MAKE_FUNC(int, mac_init_skey, (void *mctx, void *key, const OSSL_PARAM #define OSSL_FUNC_SKEYMGMT_GET_KEY_ID 5 #define OSSL_FUNC_SKEYMGMT_IMP_SETTABLE_PARAMS 6 #define OSSL_FUNC_SKEYMGMT_GEN_SETTABLE_PARAMS 7 +#define OSSL_FUNC_SKEYMGMT_GET_LOCAL_KEYID 8 +#define OSSL_FUNC_SKEYMGMT_GET_ALGORITHM_ID 9 OSSL_CORE_MAKE_FUNC(void, skeymgmt_free, (void *keydata)) OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, @@ -500,6 +502,12 @@ OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, skeymgmt_gen_settable_params, (void *provctx)) OSSL_CORE_MAKE_FUNC(void *, skeymgmt_generate, (void *provctx, const OSSL_PARAM params[])) OSSL_CORE_MAKE_FUNC(const char *, skeymgmt_get_key_id, (void *keydata)) +OSSL_CORE_MAKE_FUNC(int, skeymgmt_get_local_keyid, + (void *keydata, const unsigned char **id, size_t *len)) +OSSL_CORE_MAKE_FUNC(int, skeymgmt_get_algorithm_id, + (void *keydata, + const unsigned char **oid, size_t *oid_len, + const unsigned char **params, size_t *params_len)) /* KDFs and PRFs */ diff --git a/include/openssl/evp.h b/include/openssl/evp.h index dcbc5b26d36..55503411eb9 100644 --- a/include/openssl/evp.h +++ b/include/openssl/evp.h @@ -1950,6 +1950,11 @@ const char *EVP_SKEY_get0_skeymgmt_name(const EVP_SKEY *skey); const char *EVP_SKEY_get0_provider_name(const EVP_SKEY *skey); EVP_SKEY *EVP_SKEY_to_provider(EVP_SKEY *skey, OSSL_LIB_CTX *libctx, OSSL_PROVIDER *prov, const char *propquery); +int EVP_SKEY_get0_local_keyid(const EVP_SKEY *skey, + const unsigned char **id, size_t *len); +int EVP_SKEY_get0_algorithm_id(const EVP_SKEY *skey, + const unsigned char **oid, size_t *oid_len, + const unsigned char **params, size_t *params_len); /* * The seemingly redundant expression (char *)(strstr(curve, "")) serves to |
