aboutsummaryrefslogtreecommitdiff
path: root/secure/lib/libcrypto/man/man3/EVP_SKEY.3
diff options
context:
space:
mode:
Diffstat (limited to 'secure/lib/libcrypto/man/man3/EVP_SKEY.3')
-rw-r--r--secure/lib/libcrypto/man/man3/EVP_SKEY.3205
1 files changed, 205 insertions, 0 deletions
diff --git a/secure/lib/libcrypto/man/man3/EVP_SKEY.3 b/secure/lib/libcrypto/man/man3/EVP_SKEY.3
new file mode 100644
index 000000000000..f77ab2f0b994
--- /dev/null
+++ b/secure/lib/libcrypto/man/man3/EVP_SKEY.3
@@ -0,0 +1,205 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man 5.0102 (Pod::Simple 3.45)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
+.ie n \{\
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\" ========================================================================
+.\"
+.IX Title "EVP_SKEY 3ossl"
+.TH EVP_SKEY 3ossl 2025-07-01 3.5.1 OpenSSL
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH NAME
+EVP_SKEY, EVP_SKEY_generate,
+EVP_SKEY_import, EVP_SKEY_import_raw_key, EVP_SKEY_up_ref,
+EVP_SKEY_export, EVP_SKEY_get0_raw_key, EVP_SKEY_get0_key_id,
+EVP_SKEY_get0_skeymgmt_name, EVP_SKEY_get0_provider_name,
+EVP_SKEY_free, EVP_SKEY_is_a, EVP_SKEY_to_provider
+\&\- opaque symmetric key allocation and handling functions
+.SH SYNOPSIS
+.IX Header "SYNOPSIS"
+.Vb 1
+\& #include <openssl/evp.h>
+\&
+\& typedef evp_skey_st EVP_SKEY;
+\&
+\& EVP_SKEY *EVP_SKEY_generate(OSSL_LIB_CTX *libctx, const char *skeymgmtname,
+\& const char *propquery, const OSSL_PARAM *params);
+\& EVP_SKEY *EVP_SKEY_import(OSSL_LIB_CTX *libctx, const char *skeymgmtname,
+\& const char *propquery,
+\& int selection, const OSSL_PARAM *params);
+\& EVP_SKEY *EVP_SKEY_import_raw_key(OSSL_LIB_CTX *libctx, const char *skeymgmtname,
+\& unsigned char *key, size_t *len,
+\& const char *propquery);
+\& int EVP_SKEY_export(const EVP_SKEY *skey, int selection,
+\& OSSL_CALLBACK *export_cb, void *export_cbarg);
+\& int EVP_SKEY_get0_raw_key(const EVP_SKEY *skey, const unsigned char **key,
+\& size_t *len);
+\& const char *EVP_SKEY_get0_key_id(const EVP_SKEY *skey);
+\&
+\& const char *EVP_SKEY_get0_skeymgmt_name(const EVP_SKEY *skey);
+\& const char *EVP_SKEY_get0_provider_name(const EVP_SKEY *skey);
+\&
+\& int EVP_SKEY_up_ref(EVP_SKEY *key);
+\& void EVP_SKEY_free(EVP_SKEY *key);
+\& int EVP_SKEY_is_a(const EVP_SKEY *skey, const char *name);
+\& EVP_SKEY *EVP_SKEY_to_provider(EVP_SKEY *skey, OSSL_LIB_CTX *libctx,
+\& OSSL_PROVIDER *prov, const char *propquery);
+.Ve
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+\&\fBEVP_SKEY\fR is a generic structure to hold symmetric keys as opaque objects.
+The keys themselves are often referred to as the "internal key", and are handled by
+providers using \fBEVP_SKEYMGMT\fR\|(3).
+.PP
+Conceptually, an \fBEVP_SKEY\fR internal key may hold a symmetric key, and along
+with those, key parameters if the key type requires them.
+.PP
+The \fBEVP_SKEY_generate()\fR functions creates a new \fBEVP_SKEY\fR object and
+initializes it according to the \fBparams\fR argument.
+.PP
+The \fBEVP_SKEY_import()\fR function allocates an empty \fBEVP_SKEY\fR structure
+which is used by OpenSSL to store symmetric keys, assigns the
+\&\fBEVP_SKEYMGMT\fR object associated with the key, and initializes the object from
+the \fBparams\fR argument.
+.PP
+The \fBEVP_SKEY_import_raw_key()\fR function is a helper that creates an \fBEVP_SKEY\fR object
+containing the raw byte representation of the symmetric keys.
+.PP
+The \fBEVP_SKEY_export()\fR function extracts values from a key \fIskey\fR using the
+\&\fIselection\fR. \fIselection\fR is described below. It uses a callback \fIexport_cb\fR
+that gets passed the value of \fIexport_cbarg\fR. See \fBopenssl\-core.h\fR\|(7) for
+more information about the callback. Note that the \fBOSSL_PARAM\fR\|(3) array that
+is passed to the callback is not persistent after the callback returns.
+.PP
+The \fBEVP_SKEY_get0_raw_key()\fR returns a pointer to a raw key bytes to the passed
+address and sets the key len. The returned address is managed by the internal
+key management and shouldn't be freed explicitly. The operation can fail when
+the underlying key management doesn't support export of the secret key.
+.PP
+The \fBEVP_SKEY_get0_key_id()\fR returns a NUL-terminated string providing some
+human-readable identifier of the key if provided by the underlying key
+management. The pointer becomes invalid after freeing the EVP_SKEY object.
+.PP
+The \fBEVP_SKEY_get0_skeymgmt_name()\fR and \fBEVP_SKEY_get0_provider_name()\fR return the
+names of the associated EVP_SKEYMGMT object and its provider correspondingly.
+.PP
+\&\fBEVP_SKEY_up_ref()\fR increments the reference count of \fIkey\fR.
+.PP
+\&\fBEVP_SKEY_free()\fR decrements the reference count of \fIkey\fR and, if the reference
+count is zero, frees it. If \fIkey\fR is NULL, nothing is done.
+.PP
+\&\fBEVP_SKEY_is_a()\fR checks if the key type of \fIskey\fR is \fIname\fR.
+.PP
+\&\fBEVP_SKEY_to_provider()\fR simplifies the task of importing a \fIskey\fR into a
+different provider identified by \fIprov\fR. If \fIprov\fR is NULL, the default
+provider for the key type identified via \fIskey\fR is used.
+.SS Selections
+.IX Subsection "Selections"
+The following constants can be used for \fIselection\fR:
+.IP \fBOSSL_SKEYMGMT_SELECT_SECRET_KEY\fR 4
+.IX Item "OSSL_SKEYMGMT_SELECT_SECRET_KEY"
+Only the raw key representation will be selected.
+.IP \fBOSSL_SKEYMGMT_SELECT_PARAMETERS\fR 4
+.IX Item "OSSL_SKEYMGMT_SELECT_PARAMETERS"
+Only the key parameters will be selected. This includes optional key
+parameters.
+.IP \fBOSSL_SKEYMGMT_SELECT_ALL\fR 4
+.IX Item "OSSL_SKEYMGMT_SELECT_ALL"
+All parameters will be selected.
+.SH NOTES
+.IX Header "NOTES"
+The \fBEVP_SKEY\fR structure is used by various OpenSSL functions which require a
+general symmetric key without reference to any particular algorithm.
+.PP
+The \fBEVP_SKEY_to_provider()\fR function will fail and return NULL if the origin
+key \fIskey\fR cannot be exported from its provider.
+.SH "RETURN VALUES"
+.IX Header "RETURN VALUES"
+\&\fBEVP_SKEY_generate()\fR, \fBEVP_SKEY_import()\fR and \fBEVP_SKEY_import_raw_key()\fR return
+either the newly allocated \fBEVP_SKEY\fR structure or NULL if an error occurred.
+.PP
+\&\fBEVP_SKEY_get0_key_id()\fR returns either a valid pointer or NULL.
+.PP
+\&\fBEVP_SKEY_up_ref()\fR returns 1 for success and 0 on failure.
+.PP
+\&\fBEVP_SKEY_export()\fR and \fBEVP_SKEY_get0_raw_key()\fR return 1 for success and 0 on failure.
+.PP
+\&\fBEVP_SKEY_get0_skeymgmt_name()\fR and \fBEVP_SKEY_get0_provider_name()\fR return the
+names of the associated EVP_SKEYMGMT object and its provider correspondigly.
+.PP
+\&\fBEVP_SKEY_is_a()\fR returns 1 if \fIskey\fR has the key type \fIname\fR,
+otherwise 0.
+.PP
+\&\fBEVP_SKEY_to_provider()\fR returns a new \fBEVP_SKEY\fR suitable for operations with
+the \fIprov\fR provider or NULL in case of failure.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fBEVP_SKEYMGMT\fR\|(3), \fBprovider\fR\|(7), \fBOSSL_PARAM\fR\|(3)
+.SH HISTORY
+.IX Header "HISTORY"
+The \fBEVP_SKEY\fR API and functions \fBEVP_SKEY_export()\fR,
+\&\fBEVP_SKEY_free()\fR, \fBEVP_SKEY_get0_raw_key()\fR, \fBEVP_SKEY_import()\fR,
+\&\fBEVP_SKEY_import_raw_key()\fR, \fBEVP_SKEY_up_ref()\fR, \fBEVP_SKEY_generate()\fR,
+\&\fBEVP_SKEY_get0_key_id()\fR, \fBEVP_SKEY_get0_provider_name()\fR,
+\&\fBEVP_SKEY_get0_skeymgmt_name()\fR, \fBEVP_SKEY_is_a()\fR, \fBEVP_SKEY_to_provider()\fR
+were introduced in OpenSSL 3.5.
+.SH COPYRIGHT
+.IX Header "COPYRIGHT"
+Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.
+.PP
+Licensed under the Apache License 2.0 (the "License"). You may not use
+this file except in compliance with the License. You can obtain a copy
+in the file LICENSE in the source distribution or at
+<https://www.openssl.org/source/license.html>.