summaryrefslogtreecommitdiff
path: root/static/freebsd/man3/OSSL_ENCODER_CTX_new_for_pkey.3
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man3/OSSL_ENCODER_CTX_new_for_pkey.3')
-rw-r--r--static/freebsd/man3/OSSL_ENCODER_CTX_new_for_pkey.3200
1 files changed, 200 insertions, 0 deletions
diff --git a/static/freebsd/man3/OSSL_ENCODER_CTX_new_for_pkey.3 b/static/freebsd/man3/OSSL_ENCODER_CTX_new_for_pkey.3
new file mode 100644
index 00000000..3677f790
--- /dev/null
+++ b/static/freebsd/man3/OSSL_ENCODER_CTX_new_for_pkey.3
@@ -0,0 +1,200 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man v6.0.2 (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
+.\"
+.\" Required to disable full justification in groff 1.23.0.
+.if n .ds AD l
+.\" ========================================================================
+.\"
+.IX Title "OSSL_ENCODER_CTX_NEW_FOR_PKEY 3ossl"
+.TH OSSL_ENCODER_CTX_NEW_FOR_PKEY 3ossl 2026-04-07 3.5.6 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
+OSSL_ENCODER_CTX_new_for_pkey,
+OSSL_ENCODER_CTX_set_cipher,
+OSSL_ENCODER_CTX_set_passphrase,
+OSSL_ENCODER_CTX_set_pem_password_cb,
+OSSL_ENCODER_CTX_set_passphrase_cb,
+OSSL_ENCODER_CTX_set_passphrase_ui
+\&\- Encoder routines to encode EVP_PKEYs
+.SH SYNOPSIS
+.IX Header "SYNOPSIS"
+.Vb 1
+\& #include <openssl/encoder.h>
+\&
+\& OSSL_ENCODER_CTX *
+\& OSSL_ENCODER_CTX_new_for_pkey(const EVP_PKEY *pkey, int selection,
+\& const char *output_type,
+\& const char *output_structure,
+\& const char *propquery);
+\&
+\& int OSSL_ENCODER_CTX_set_cipher(OSSL_ENCODER_CTX *ctx,
+\& const char *cipher_name,
+\& const char *propquery);
+\& int OSSL_ENCODER_CTX_set_passphrase(OSSL_ENCODER_CTX *ctx,
+\& const unsigned char *kstr,
+\& size_t klen);
+\& int OSSL_ENCODER_CTX_set_pem_password_cb(OSSL_ENCODER_CTX *ctx,
+\& pem_password_cb *cb, void *cbarg);
+\& int OSSL_ENCODER_CTX_set_passphrase_ui(OSSL_ENCODER_CTX *ctx,
+\& const UI_METHOD *ui_method,
+\& void *ui_data);
+\& int OSSL_ENCODER_CTX_set_passphrase_cb(OSSL_ENCODER_CTX *ctx,
+\& OSSL_PASSPHRASE_CALLBACK *cb,
+\& void *cbarg);
+.Ve
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+\&\fBOSSL_ENCODER_CTX_new_for_pkey()\fR is a utility function that creates a
+\&\fBOSSL_ENCODER_CTX\fR, finds all applicable encoder implementations and sets
+them up, so almost all the caller has to do next is call functions like
+\&\fBOSSL_ENCODER_to_bio\fR\|(3). \fIoutput_type\fR determines the final output
+encoding, and \fIselection\fR can be used to select what parts of the \fIpkey\fR
+should be included in the output. \fIoutput_type\fR is further discussed in
+"Output types" below, and \fIselection\fR is further described in
+"Selections".
+.PP
+Internally, \fBOSSL_ENCODER_CTX_new_for_pkey()\fR uses the names from the
+\&\fBEVP_KEYMGMT\fR\|(3) implementation associated with \fIpkey\fR to build a list of
+applicable encoder implementations that are used to process the \fIpkey\fR into
+the encoding named by \fIoutput_type\fR, with the outermost structure named by
+\&\fIoutput_structure\fR if that\*(Aqs relevant. All these implementations are
+implicitly fetched, with \fIpropquery\fR for finer selection.
+.PP
+If no suitable encoder implementation is found,
+\&\fBOSSL_ENCODER_CTX_new_for_pkey()\fR still creates a \fBOSSL_ENCODER_CTX\fR, but
+with no associated encoder (\fBOSSL_ENCODER_CTX_get_num_encoders\fR\|(3) returns
+zero). This helps the caller to distinguish between an error when creating
+the \fBOSSL_ENCODER_CTX\fR and missing encoder implementation, and allows it to
+act accordingly.
+.PP
+Note that \fBOSSL_ENCODER_CTX_new_for_pkey()\fR finalises the OSSL_ENCODER_CTX;
+after that the OSSL_ENCODER_CTX_set_* and OSSL_ENCODER_CTX_add_* functions
+described in \fBOSSL_ENCODER_CTX\fR\|(3) shouldn\*(Aqt be called.
+.PP
+\&\fBOSSL_ENCODER_CTX_set_cipher()\fR tells the implementation what cipher
+should be used to encrypt encoded keys. The cipher is given by
+name \fIcipher_name\fR. The interpretation of that \fIcipher_name\fR is
+implementation dependent. The implementation may implement the cipher
+directly itself or by other implementations, or it may choose to fetch
+it. If the implementation supports fetching the cipher, then it may
+use \fIpropquery\fR as properties to be queried for when fetching.
+\&\fIcipher_name\fR may also be NULL, which will result in unencrypted
+encoding.
+.PP
+\&\fBOSSL_ENCODER_CTX_set_passphrase()\fR gives the implementation a
+pass phrase to use when encrypting the encoded private key.
+Alternatively, a pass phrase callback may be specified with the
+following functions.
+.PP
+\&\fBOSSL_ENCODER_CTX_set_pem_password_cb()\fR, \fBOSSL_ENCODER_CTX_set_passphrase_ui()\fR
+and \fBOSSL_ENCODER_CTX_set_passphrase_cb()\fR sets up a callback method that the
+implementation can use to prompt for a pass phrase, giving the caller the
+choice of preferred pass phrase callback form. These are called indirectly,
+through an internal \fBOSSL_PASSPHRASE_CALLBACK\fR\|(3) function.
+.SS "Output types"
+.IX Subsection "Output types"
+The possible \fBEVP_PKEY\fR output types depends on the available
+implementations.
+.PP
+OpenSSL has built in implementations for the following output types:
+.ie n .IP """TEXT""" 4
+.el .IP \f(CWTEXT\fR 4
+.IX Item "TEXT"
+The output is a human readable description of the key.
+\&\fBEVP_PKEY_print_private\fR\|(3), \fBEVP_PKEY_print_public\fR\|(3) and
+\&\fBEVP_PKEY_print_params\fR\|(3) use this for their output.
+.ie n .IP """DER""" 4
+.el .IP \f(CWDER\fR 4
+.IX Item "DER"
+The output is the DER encoding of the \fIselection\fR of the \fIpkey\fR.
+.ie n .IP """PEM""" 4
+.el .IP \f(CWPEM\fR 4
+.IX Item "PEM"
+The output is the \fIselection\fR of the \fIpkey\fR in PEM format.
+.SS Selections
+.IX Subsection "Selections"
+\&\fIselection\fR can be any one of the values described in
+"Selections" in \fBEVP_PKEY_fromdata\fR\|(3).
+.PP
+These are only \*(Aqhints\*(Aq since the encoder implementations are free to
+determine what makes sense to include in the output, and this may depend on
+the desired output. For example, an EC key in a PKCS#8 structure doesn\*(Aqt
+usually include the public key.
+.SH "RETURN VALUES"
+.IX Header "RETURN VALUES"
+\&\fBOSSL_ENCODER_CTX_new_for_pkey()\fR returns a pointer to an \fBOSSL_ENCODER_CTX\fR,
+or NULL if it couldn\*(Aqt be created.
+.PP
+\&\fBOSSL_ENCODER_CTX_set_cipher()\fR, \fBOSSL_ENCODER_CTX_set_passphrase()\fR,
+\&\fBOSSL_ENCODER_CTX_set_pem_password_cb()\fR, \fBOSSL_ENCODER_CTX_set_passphrase_ui()\fR
+and \fBOSSL_ENCODER_CTX_set_passphrase_cb()\fR all return 1 on success, or 0 on
+failure.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fBprovider\fR\|(7), \fBOSSL_ENCODER\fR\|(3), \fBOSSL_ENCODER_CTX\fR\|(3)
+.SH HISTORY
+.IX Header "HISTORY"
+The functions described here were added in OpenSSL 3.0.
+.SH COPYRIGHT
+.IX Header "COPYRIGHT"
+Copyright 2019\-2022 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>.