summaryrefslogtreecommitdiffstats
path: root/upstream/archlinux/man7/provider-object.7ssl
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/archlinux/man7/provider-object.7ssl')
-rw-r--r--upstream/archlinux/man7/provider-object.7ssl208
1 files changed, 208 insertions, 0 deletions
diff --git a/upstream/archlinux/man7/provider-object.7ssl b/upstream/archlinux/man7/provider-object.7ssl
new file mode 100644
index 00000000..ea7f979b
--- /dev/null
+++ b/upstream/archlinux/man7/provider-object.7ssl
@@ -0,0 +1,208 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
+.\"
+.\" 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 "PROVIDER-OBJECT 7ssl"
+.TH PROVIDER-OBJECT 7ssl 2024-01-30 3.2.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
+provider\-object \- A specification for a provider\-native object abstraction
+.SH SYNOPSIS
+.IX Header "SYNOPSIS"
+.Vb 2
+\& #include <openssl/core_object.h>
+\& #include <openssl/core_names.h>
+.Ve
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+The provider-native object abstraction is a set of \fBOSSL_PARAM\fR\|(3) keys and
+values that can be used to pass provider-native objects to OpenSSL library
+code or between different provider operation implementations with the help
+of OpenSSL library code.
+.PP
+The intention is that certain provider-native operations can pass any sort
+of object that belong with other operations, or with OpenSSL library code.
+.PP
+An object may be passed in the following manners:
+.IP 1. 4
+\&\fIBy value\fR
+.Sp
+This means that the \fIobject data\fR is passed as an octet string or an UTF8
+string, which can be handled in diverse ways by other provided implementations.
+The encoding of the object depends on the context it's used in; for example,
+\&\fBOSSL_DECODER\fR\|(3) allows multiple encodings, depending on existing decoders.
+If central OpenSSL library functionality is to handle the data directly, it
+\&\fBmust\fR be encoded in DER for all object types except for \fBOSSL_OBJECT_NAME\fR
+(see "Parameter reference" below), where it's assumed to a plain UTF8 string.
+.IP 2. 4
+\&\fIBy reference\fR
+.Sp
+This means that the \fIobject data\fR isn't passed directly, an \fIobject
+reference\fR is passed instead. It's an octet string that only the correct
+provider understands correctly.
+.PP
+Objects \fIby value\fR can be used by anything that handles DER encoded
+objects.
+.PP
+Objects \fIby reference\fR need a higher level of cooperation from the
+implementation where the object originated (let's call it X) and its target
+implementation (let's call it Y):
+.IP 1. 4
+\&\fIAn object loading function in the target implementation\fR
+.Sp
+The target implementation (Y) may have a function that can take an \fIobject
+reference\fR. This can only be used if the target implementation is from the
+same provider as the one originating the object abstraction in question (X).
+.Sp
+The exact target implementation to use is determined from the \fIobject type\fR
+and possibly the \fIobject data type\fR.
+For example, when the OpenSSL library receives an object abstraction with the
+\&\fIobject type\fR \fBOSSL_OBJECT_PKEY\fR, it will fetch a \fBprovider\-keymgmt\fR\|(7)
+using the \fIobject data type\fR as its key type (the second argument in
+\&\fBEVP_KEYMGMT_fetch\fR\|(3)).
+.IP 2. 4
+\&\fIAn object exporter in the originating implementation\fR
+.Sp
+The originating implementation (X) may have an exporter function. This
+exporter function can be used to export the object in \fBOSSL_PARAM\fR\|(3) form,
+that can then be imported by the target implementation's imported function.
+.Sp
+This can be used when it's not possible to fetch the target implementation
+(Y) from the same provider.
+.SS "Parameter reference"
+.IX Subsection "Parameter reference"
+A provider-native object abstraction is an \fBOSSL_PARAM\fR\|(3) with a selection
+of the following parameters:
+.IP """data"" (\fBOSSL_OBJECT_PARAM_DATA\fR) <octet string> or <UTF8 string>" 4
+.IX Item """data"" (OSSL_OBJECT_PARAM_DATA) <octet string> or <UTF8 string>"
+The object data \fIpassed by value\fR.
+.IP """reference"" (\fBOSSL_OBJECT_PARAM_REFERENCE\fR) <octet string>" 4
+.IX Item """reference"" (OSSL_OBJECT_PARAM_REFERENCE) <octet string>"
+The object data \fIpassed by reference\fR.
+.IP """type"" (\fBOSSL_OBJECT_PARAM_TYPE\fR) <integer>" 4
+.IX Item """type"" (OSSL_OBJECT_PARAM_TYPE) <integer>"
+The \fIobject type\fR, a number that may have any of the following values (all
+defined in \fI<openssl/core_object.h>\fR):
+.RS 4
+.IP \fBOSSL_OBJECT_NAME\fR 4
+.IX Item "OSSL_OBJECT_NAME"
+The object data may only be \fIpassed by value\fR, and should be a UTF8
+string.
+.Sp
+This is useful for \fBprovider\-storemgmt\fR\|(7) when a URI load results in new
+URIs.
+.IP \fBOSSL_OBJECT_PKEY\fR 4
+.IX Item "OSSL_OBJECT_PKEY"
+The object data is suitable as provider-native \fBEVP_PKEY\fR key data. The
+object data may be \fIpassed by value\fR or \fIpassed by reference\fR.
+.IP \fBOSSL_OBJECT_CERT\fR 4
+.IX Item "OSSL_OBJECT_CERT"
+The object data is suitable as \fBX509\fR data. The object data for this
+object type can only be \fIpassed by value\fR, and should be an octet string.
+.Sp
+Since there's no provider-native X.509 object, OpenSSL libraries that
+receive this object abstraction are expected to convert the data to a
+\&\fBX509\fR object with \fBd2i_X509()\fR.
+.IP \fBOSSL_OBJECT_CRL\fR 4
+.IX Item "OSSL_OBJECT_CRL"
+The object data is suitable as \fBX509_CRL\fR data. The object data can
+only be \fIpassed by value\fR, and should be an octet string.
+.Sp
+Since there's no provider-native X.509 CRL object, OpenSSL libraries that
+receive this object abstraction are expected to convert the data to a
+\&\fBX509_CRL\fR object with \fBd2i_X509_CRL()\fR.
+.RE
+.RS 4
+.RE
+.IP """data-type"" (\fBOSSL_OBJECT_PARAM_DATA_TYPE\fR) <UTF8 string>" 4
+.IX Item """data-type"" (OSSL_OBJECT_PARAM_DATA_TYPE) <UTF8 string>"
+The specific type of the object content. Legitimate values depend on the
+object type; if it is \fBOSSL_OBJECT_PKEY\fR, the data type is expected to be a
+key type suitable for fetching a \fBprovider\-keymgmt\fR\|(7) that can handle the
+data.
+.IP """data-structure"" (\fBOSSL_OBJECT_PARAM_DATA_STRUCTURE\fR) <UTF8 string>" 4
+.IX Item """data-structure"" (OSSL_OBJECT_PARAM_DATA_STRUCTURE) <UTF8 string>"
+The outermost structure of the object content. Legitimate values depend on
+the object type.
+.IP """desc"" (\fBOSSL_OBJECT_PARAM_DESC\fR) <UTF8 string>" 4
+.IX Item """desc"" (OSSL_OBJECT_PARAM_DESC) <UTF8 string>"
+A human readable text that describes extra details on the object.
+.PP
+When a provider-native object abstraction is used, it \fImust\fR contain object
+data in at least one form (object data \fIpassed by value\fR, i.e. the "data"
+item, or object data \fIpassed by reference\fR, i.e. the "reference" item).
+Both may be present at once, in which case the OpenSSL library code that
+receives this will use the most optimal variant.
+.PP
+For objects with the object type \fBOSSL_OBJECT_NAME\fR, that object type
+\&\fImust\fR be given.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+\&\fBprovider\fR\|(7), \fBOSSL_DECODER\fR\|(3)
+.SH HISTORY
+.IX Header "HISTORY"
+The concept of providers and everything surrounding them was
+introduced in OpenSSL 3.0.
+.SH COPYRIGHT
+.IX Header "COPYRIGHT"
+Copyright 2020\-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>.