aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDmitry Belyavskiy <[email protected]>2026-09-02 14:38:46 +0200
committerDmitry Belyavskiy <[email protected]>2026-09-05 19:06:10 +0200
commit1935d215b5c6bc8619342e6271cfd52837517112 (patch)
treec116fe4edd143442dd05bbcca922fb9b70f97623 /include
parenttest: tolerate DTLS peer change with fragment data (diff)
downloadopenssl-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.h9
-rw-r--r--include/openssl/core_dispatch.h8
-rw-r--r--include/openssl/evp.h5
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