Latest update.
This commit is contained in:
@@ -56,7 +56,6 @@ DEPEND[$manfile]=$podfile
|
||||
GENERATE[$manfile]=$podfile
|
||||
_____
|
||||
$OUT .= << "_____" if $podinfile;
|
||||
DEPEND[$podfile]=$podinfile ../configdata.pm
|
||||
GENERATE[$podfile]=$podinfile
|
||||
_____
|
||||
}
|
||||
|
||||
@@ -15,9 +15,9 @@ ossl_cmp_msg_add_extraCerts
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
ossl_cmp_msg_protect() protects the given message B<msg> using an algorithm
|
||||
ossl_cmp_msg_protect() (re-)protects the given message B<msg> using an algorithm
|
||||
depending on the available context information given in the B<ctx>.
|
||||
If there is a secretValue it selects PBMAC. Else if there is a clCert
|
||||
If there is a secretValue it selects PBMAC, else if there is a protection cert
|
||||
it selects Signature and uses B<ossl_cmp_msg_add_extraCerts()>.
|
||||
It also sets the protectionAlg field in the message header accordingly.
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ DEPEND[]= \
|
||||
openssl-ca.pod \
|
||||
openssl-ciphers.pod \
|
||||
openssl-cmds.pod \
|
||||
openssl-cmp.pod \
|
||||
openssl-cms.pod \
|
||||
openssl-crl2pkcs7.pod \
|
||||
openssl-crl.pod \
|
||||
@@ -58,6 +59,7 @@ DEPEND[openssl-asn1parse.pod]=../perlvars.pm
|
||||
DEPEND[openssl-ca.pod]=../perlvars.pm
|
||||
DEPEND[openssl-ciphers.pod]=../perlvars.pm
|
||||
DEPEND[openssl-cmds.pod]=../perlvars.pm
|
||||
DEPEND[openssl-cmp.pod]=../perlvars.pm
|
||||
DEPEND[openssl-cms.pod]=../perlvars.pm
|
||||
DEPEND[openssl-crl2pkcs7.pod]=../perlvars.pm
|
||||
DEPEND[openssl-crl.pod]=../perlvars.pm
|
||||
@@ -112,6 +114,7 @@ GENERATE[openssl-asn1parse.pod]=openssl-asn1parse.pod.in
|
||||
GENERATE[openssl-ca.pod]=openssl-ca.pod.in
|
||||
GENERATE[openssl-ciphers.pod]=openssl-ciphers.pod.in
|
||||
GENERATE[openssl-cmds.pod]=openssl-cmds.pod.in
|
||||
GENERATE[openssl-cmp.pod]=openssl-cmp.pod.in
|
||||
GENERATE[openssl-cms.pod]=openssl-cms.pod.in
|
||||
GENERATE[openssl-crl2pkcs7.pod]=openssl-crl2pkcs7.pod.in
|
||||
GENERATE[openssl-crl.pod]=openssl-crl.pod.in
|
||||
|
||||
@@ -32,11 +32,11 @@ B<openssl> B<ca>
|
||||
[B<-md> I<arg>]
|
||||
[B<-policy> I<arg>]
|
||||
[B<-keyfile> I<arg>]
|
||||
[B<-keyform> B<DER>|B<PEM>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-key> I<arg>]
|
||||
[B<-passin> I<arg>]
|
||||
[B<-cert> I<file>]
|
||||
[B<-certform> B<DER>|<PEM>]
|
||||
[B<-certform> B<DER>|B<PEM>|B<P12>]
|
||||
[B<-selfsign>]
|
||||
[B<-in> I<file>]
|
||||
[B<-inform> B<DER>|<PEM>]
|
||||
@@ -142,18 +142,19 @@ F<.pem> appended.
|
||||
|
||||
The CA certificate file.
|
||||
|
||||
=item B<-certform> B<DER>|B<PEM>
|
||||
=item B<-certform> B<DER>|B<PEM>|B<P12>
|
||||
|
||||
The format of the data in certificate input files.
|
||||
The default is PEM.
|
||||
This option has no effect and is retained for backward compatibility only.
|
||||
|
||||
=item B<-keyfile> I<filename>
|
||||
|
||||
The private key to sign requests with.
|
||||
|
||||
=item B<-keyform> B<DER>|B<PEM>
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The format of the private key file; the default is B<PEM>.
|
||||
The format of the private key input file; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-sigopt> I<nm>:I<v>
|
||||
@@ -788,6 +789,11 @@ retained mainly for compatibility reasons.
|
||||
|
||||
The B<-section> option was added in OpenSSL 3.0.0.
|
||||
|
||||
The B<-certform> option has become obsolete in OpenSSL 3.0.0 and has no effect.
|
||||
|
||||
All B<-keyform> values except B<ENGINE> have become obsolete in OpenSSL 3.0.0
|
||||
and have no effect.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<openssl(1)>,
|
||||
|
||||
@@ -0,0 +1,1165 @@
|
||||
=pod
|
||||
{- OpenSSL::safe::output_do_not_edit_headers(); -}
|
||||
|
||||
=head1 NAME
|
||||
|
||||
openssl-cmp - client for the Certificate Management Protocol (CMP, RFC 4210)
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
B<openssl> B<cmp>
|
||||
[B<-help>]
|
||||
[B<-config> I<filename>]
|
||||
[B<-section> I<names>]
|
||||
|
||||
[B<-server> I<address[:port]>]
|
||||
[B<-proxy> I<[http[s]://]address[:port][/path]>]
|
||||
[B<-no_proxy> I<addresses>]
|
||||
[B<-path> I<remote_path>]
|
||||
[B<-msg_timeout> I<seconds>]
|
||||
[B<-total_timeout> I<seconds>]
|
||||
|
||||
[B<-trusted> I<filenames>]
|
||||
[B<-untrusted> I<sources>]
|
||||
[B<-srvcert> I<filename>]
|
||||
[B<-recipient> I<name>]
|
||||
[B<-expect_sender> I<name>]
|
||||
[B<-ignore_keyusage>]
|
||||
[B<-unprotected_errors>]
|
||||
[B<-extracertsout> I<filename>]
|
||||
[B<-cacertsout> I<filename>]
|
||||
|
||||
[B<-ref> I<value>]
|
||||
[B<-secret> I<arg>]
|
||||
[B<-cert> I<filename>]
|
||||
[B<-key> I<filename>]
|
||||
[B<-keypass> I<arg>]
|
||||
[B<-digest> I<name>]
|
||||
[B<-mac> I<name>]
|
||||
[B<-extracerts> I<sources>]
|
||||
[B<-unprotected_requests>]
|
||||
|
||||
[B<-cmd> I<ir|cr|kur|p10cr|rr|genm>]
|
||||
[B<-infotype> I<name>]
|
||||
[B<-geninfo> I<OID:int:N>]
|
||||
|
||||
[B<-newkey> I<filename>]
|
||||
[B<-newkeypass> I<arg>]
|
||||
[B<-subject> I<name>]
|
||||
[B<-issuer> I<name>]
|
||||
[B<-days> I<number>]
|
||||
[B<-reqexts> I<name>]
|
||||
[B<-sans> I<spec>]
|
||||
[B<-san_nodefault>]
|
||||
[B<-policies> I<name>]
|
||||
[B<-policy_oids> I<names>]
|
||||
[B<-policy_oids_critical>]
|
||||
[B<-popo> I<number>]
|
||||
[B<-csr> I<filename>]
|
||||
[B<-out_trusted> I<filenames>]
|
||||
[B<-verify_hostname> I<cn>]
|
||||
[B<-verify_ip> I<ip>]
|
||||
[B<-verify_email> I<email>]
|
||||
[B<-implicit_confirm>]
|
||||
[B<-disable_confirm>]
|
||||
[B<-certout> I<filename>]
|
||||
|
||||
[B<-oldcert> I<filename>]
|
||||
[B<-revreason> I<number>]
|
||||
|
||||
[B<-certform> I<PEM|DER>]
|
||||
[B<-keyform> I<PEM|DER|P12|ENGINE>]
|
||||
[B<-certsform> I<PEM|DER|P12>]
|
||||
[B<-otherpass> I<arg>]
|
||||
[B<-engine> I<id>]
|
||||
{- $OpenSSL::safe::opt_provider_synopsis -}
|
||||
|
||||
[B<-tls_used>]
|
||||
[B<-tls_cert> I<filename>]
|
||||
[B<-tls_key> I<filename>]
|
||||
[B<-tls_keypass> I<arg>]
|
||||
[B<-tls_extra> I<filenames>]
|
||||
[B<-tls_trusted> I<filenames>]
|
||||
[B<-tls_host> I<name>]
|
||||
|
||||
[B<-batch>]
|
||||
[B<-repeat> I<number>]
|
||||
[B<-reqin>] I<filenames>
|
||||
[B<-reqin_new_tid>]
|
||||
[B<-reqout>] I<filenames>
|
||||
[B<-rspin>] I<filenames>
|
||||
[B<-rspout>] I<filenames>
|
||||
[B<-use_mock_srv>]
|
||||
|
||||
[B<-policy> I<arg>]
|
||||
[B<-purpose> I<purpose>]
|
||||
[B<-verify_name> I<name>]
|
||||
[B<-verify_depth> I<num>]
|
||||
[B<-auth_level> I<level>]
|
||||
[B<-attime> I<timestamp>]
|
||||
[B<-ignore_critical>]
|
||||
[B<-issuer_checks>]
|
||||
[B<-policy_check>]
|
||||
[B<-explicit_policy>]
|
||||
[B<-inhibit_any>]
|
||||
[B<-inhibit_map>]
|
||||
[B<-x509_strict>]
|
||||
[B<-extended_crl>]
|
||||
[B<-use_deltas>]
|
||||
[B<-policy_print>]
|
||||
[B<-check_ss_sig>]
|
||||
[B<-crl_check>]
|
||||
[B<-crl_check_all>]
|
||||
[B<-trusted_first>]
|
||||
[B<-suiteB_128_only>]
|
||||
[B<-suiteB_128>]
|
||||
[B<-suiteB_192>]
|
||||
[B<-partial_chain>]
|
||||
[B<-no_alt_chains>]
|
||||
[B<-no_check_time>]
|
||||
[B<-allow_proxy_certs>]
|
||||
|
||||
[B<-port> I<number>]
|
||||
[B<-max_msgs> I<number>]
|
||||
[B<-srv_ref> I<value>]
|
||||
[B<-srv_secret> I<arg>]
|
||||
[B<-srv_cert> I<filename>]
|
||||
[B<-srv_key> I<filename>]
|
||||
[B<-srv_keypass> I<arg>]
|
||||
[B<-srv_trusted> I<filenames>]
|
||||
[B<-srv_untrusted> I<filenames>]
|
||||
[B<-rsp_cert> I<filename>]
|
||||
[B<-rsp_extracerts> I<filenames>]
|
||||
[B<-rsp_capubs> I<filenames>]
|
||||
[B<-poll_count> I<number>]
|
||||
[B<-check_after> I<number>]
|
||||
[B<-grant_implicitconf>]
|
||||
[B<-pkistatus> I<number>]
|
||||
[B<-failure> I<number>]
|
||||
[B<-failurebits> I<number>]
|
||||
[B<-statusstring> I<arg>]
|
||||
[B<-send_error>]
|
||||
[B<-send_unprotected>]
|
||||
[B<-send_unprot_err>]
|
||||
[B<-accept_unprotected>]
|
||||
[B<-accept_unprot_err>]
|
||||
[B<-accept_raverified>]
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
The B<cmp> command is a client implementation for the Certificate
|
||||
Management Protocol (CMP) as defined in RFC4210.
|
||||
It can be used to request certificates from a CA server,
|
||||
update their certificates,
|
||||
request certificates to be revoked, and perform other CMP requests.
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-help>
|
||||
|
||||
Display a summary of all options
|
||||
|
||||
=item B<-config> I<filename>
|
||||
|
||||
Configuration file to use.
|
||||
An empty string C<""> means none.
|
||||
Default filename is from the environment variable C<OPENSSL_CONF>.
|
||||
|
||||
=item B<-section> I<names>
|
||||
|
||||
Section(s) to use within config file defining CMP options.
|
||||
An empty string C<""> means no specific section.
|
||||
Default is C<cmp>.
|
||||
Multiple section names may be given, separated by commas and/or whitespace
|
||||
(where in the latter case the whole argument must be enclosed in "...").
|
||||
Contents of sections named later may override contents of sections named before.
|
||||
In any case, as usual, the C<[default]> section and finally the unnamed
|
||||
section (as far as present) can provide per-option fallback values.
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 Generic message options
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-cmd> I<ir|cr|kur|p10cr|rr|genm>
|
||||
|
||||
CMP command to execute.
|
||||
Currently implemented commands are:
|
||||
|
||||
=over 8
|
||||
|
||||
=item ir E<nbsp> - Initialization Request
|
||||
|
||||
=item cr E<nbsp> - Certificate Request
|
||||
|
||||
=item p10cr - PKCS#10 Certification Request (for legacy support)
|
||||
|
||||
=item kur E<nbsp>E<nbsp>- Key Update Request
|
||||
|
||||
=item rr E<nbsp> - Revocation Request
|
||||
|
||||
=item genm - General Message
|
||||
|
||||
=back
|
||||
|
||||
B<ir> requests initialization of an End Entity into a PKI hierarchy by means of
|
||||
issuance of a first certificate.
|
||||
|
||||
B<cr> requests issuance of an additional certificate for an End Entity already
|
||||
initialized to the PKI hierarchy.
|
||||
|
||||
B<p10cr> requests issuance of an additional certificate similarly to B<cr>
|
||||
but uses PKCS#10 CSR format.
|
||||
|
||||
B<kur> requests (key) update for an existing, given certificate.
|
||||
|
||||
B<rr> requests revocation of an existing, given certificate.
|
||||
|
||||
B<genm> requests information using a General Message, where optionally
|
||||
included B<InfoTypeAndValue>s may be used to state which info is of interest.
|
||||
Upon receipt of the General Response, information about all received
|
||||
ITAV B<infoType>s is printed to stdout.
|
||||
|
||||
=item B<-infotype> I<name>
|
||||
|
||||
Set InfoType name to use for requesting specific info in B<genm>,
|
||||
e.g., C<signKeyPairTypes>.
|
||||
|
||||
=item B<-geninfo> I<OID:int:N>
|
||||
|
||||
generalInfo integer values to place in request PKIHeader with given OID,
|
||||
e.g., C<1.2.3:int:987>.
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 Certificate request options
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-newkey> I<filename>
|
||||
|
||||
The file containing the private or public key for the certificate requested
|
||||
in Initialization Request (IR), Certification Request(CR), or
|
||||
Key Update Request (KUR).
|
||||
Default is the public key in the PKCS#10 CSR given with the B<-csr> option,
|
||||
if any, or else the current client key, if given.
|
||||
|
||||
=item B<-newkeypass> I<arg>
|
||||
|
||||
Pass phrase source for the key given with the B<-newkey> option.
|
||||
If not given here, the password will be prompted for if needed.
|
||||
|
||||
For more information about the format of B<arg> see the
|
||||
B<PASS PHRASE ARGUMENTS> section in L<openssl(1)>.
|
||||
|
||||
=item B<-subject> I<name>
|
||||
|
||||
X509 Distinguished Name (DN) of subject to use in the requested certificate
|
||||
template.
|
||||
For KUR, it defaults to the subject DN of the reference certificate
|
||||
(see B<-oldcert>).
|
||||
This default is used for IR and CR only if no SANs are set.
|
||||
|
||||
The argument must be formatted as I</type0=value0/type1=value1/type2=...>,
|
||||
characters may be escaped by C<\>E<nbsp>(backslash), no spaces are skipped.
|
||||
|
||||
In case B<-cert> is not set, for instance when using MSG_MAC_ALG,
|
||||
the subject DN is also used as sender of the PKI message.
|
||||
|
||||
=item B<-issuer> I<name>
|
||||
|
||||
X509 issuer Distinguished Name (DN) of the CA server
|
||||
to place in the requested certificate template in IR/CR/KUR.
|
||||
|
||||
The argument must be formatted as I</type0=value0/type1=value1/type2=...>,
|
||||
characters may be escaped by C<\>E<nbsp>(backslash), no spaces are skipped.
|
||||
|
||||
If neither B<-srvcert> nor B<-recipient> is available,
|
||||
the name given in this option is also set as the recipient of the CMP message.
|
||||
|
||||
=item B<-days> I<number>
|
||||
|
||||
Number of days the new certificate is requested to be valid for, counting from
|
||||
the current time of the host.
|
||||
Also triggers the explicit request that the
|
||||
validity period starts from the current time (as seen by the host).
|
||||
|
||||
=item B<-reqexts> I<name>
|
||||
|
||||
Name of section in OpenSSL config file defining certificate request extensions.
|
||||
|
||||
=item B<-sans> I<spec>
|
||||
|
||||
One or more IP addresses, DNS names, or URIs separated by commas or whitespace
|
||||
(where in the latter case the whole argument must be enclosed in "...")
|
||||
to add as Subject Alternative Name(s) (SAN) certificate request extension.
|
||||
If the special element "critical" is given the SANs are flagged as critical.
|
||||
Cannot be used if any Subject Alternative Name extension is set via B<-reqexts>.
|
||||
|
||||
=item B<-san_nodefault>
|
||||
|
||||
When Subject Alternative Names are not given via B<-sans>
|
||||
nor defined via B<-reqexts>,
|
||||
they are copied by default from the reference certificate (see B<-oldcert>).
|
||||
This can be disabled by giving the B<-san_nodefault> option.
|
||||
|
||||
=item B<-policies> I<name>
|
||||
|
||||
Name of section in OpenSSL config file defining policies to be set
|
||||
as certificate request extension.
|
||||
This option cannot be used together with B<-policy_oids>.
|
||||
|
||||
=item B<-policy_oids> I<names>
|
||||
|
||||
One or more OID(s), separated by commas and/or whitespace
|
||||
(where in the latter case the whole argument must be enclosed in "...")
|
||||
to add as certificate policies request extension.
|
||||
This option cannot be used together with B<-policies>.
|
||||
|
||||
=item B<-policy_oids_critical>
|
||||
|
||||
Flag the policies given with B<-policy_oids> as critical.
|
||||
|
||||
=item B<-popo> I<number>
|
||||
|
||||
Proof-of-Possession (POPO) method to use for IR/CR/KUR; values: C<-1>..<2> where
|
||||
C<-1> = NONE, C<0> = RAVERIFIED, C<1> = SIGNATURE (default), C<2> = KEYENC.
|
||||
|
||||
Note that a signature-based POPO can only be produced if a private key
|
||||
is provided via the B<-newkey> or B<-key> options.
|
||||
|
||||
=item B<-csr> I<filename>
|
||||
|
||||
CSR in PKCS#10 format to use in legacy P10CR messages.
|
||||
|
||||
=item B<-out_trusted> I<filenames>
|
||||
|
||||
Trusted certificate(s) to use for verifying the newly enrolled certificate.
|
||||
|
||||
Multiple filenames may be given, separated by commas and/or whitespace
|
||||
(where in the latter case the whole argument must be enclosed in "...").
|
||||
Each source may contain multiple certificates.
|
||||
|
||||
=item B<-verify_hostname> I<name>
|
||||
|
||||
When verification of the newly enrolled certificate is enabled (with the
|
||||
B<-out_trusted> option), check if any DNS Subject Alternative Name (or if no
|
||||
DNS SAN is included, the Common Name in the subject) equals the given B<name>.
|
||||
|
||||
=item B<-verify_ip> I<ip>
|
||||
|
||||
When verification of the newly enrolled certificate is enabled (with the
|
||||
B<-out_trusted> option), check if there is
|
||||
an IP address Subject Alternative Name matching the given IP address.
|
||||
|
||||
=item B<-verify_email> I<email>
|
||||
|
||||
When verification of the newly enrolled certificate is enabled (with the
|
||||
B<-out_trusted> option), check if there is
|
||||
an email address Subject Alternative Name matching the given email address.
|
||||
|
||||
=item B<-implicit_confirm>
|
||||
|
||||
Request implicit confirmation of newly enrolled certificates.
|
||||
|
||||
=item B<-disable_confirm>
|
||||
|
||||
Do not send certificate confirmation message for newly enrolled certificate
|
||||
without requesting implicit confirmation
|
||||
to cope with broken servers not supporting implicit confirmation correctly.
|
||||
B<WARNING:> This leads to behavior violating RFC 4210.
|
||||
|
||||
=item B<-certout> I<filename>
|
||||
|
||||
The file where the newly enrolled certificate should be saved.
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 Certificate revocation options
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-oldcert> I<filename>
|
||||
|
||||
The certificate to be updated (i.e., renewed or re-keyed) in Key Update Request
|
||||
(KUR) messages or to be revoked in Revocation Request (RR) messages.
|
||||
It must be given for RR, while for KUR it defaults to B<-cert>.
|
||||
|
||||
The reference certificate determined in this way, if any, is also used for
|
||||
deriving default subject DN and Subject Alternative Names for IR, CR, and KUR.
|
||||
Its issuer, if any, is used as default recipient in the CMP message header
|
||||
if neither B<-srvcert>, B<-recipient>, nor B<-issuer> is available.
|
||||
|
||||
=item B<-revreason> I<number>
|
||||
|
||||
Set CRLReason to be included in revocation request (RR); values: C<0>..C<10>
|
||||
or C<-1> for none (which is the default).
|
||||
|
||||
Reason numbers defined in RFC 5280 are:
|
||||
|
||||
CRLReason ::= ENUMERATED {
|
||||
unspecified (0),
|
||||
keyCompromise (1),
|
||||
cACompromise (2),
|
||||
affiliationChanged (3),
|
||||
superseded (4),
|
||||
cessationOfOperation (5),
|
||||
certificateHold (6),
|
||||
-- value 7 is not used
|
||||
removeFromCRL (8),
|
||||
privilegeWithdrawn (9),
|
||||
aACompromise (10)
|
||||
}
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 Message transfer options
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-server> I<[http[s]://]address[:port]>
|
||||
|
||||
The IP address or DNS hostname and optionally port (defaulting to 80 or 443)
|
||||
of the CMP server to connect to using HTTP(S) transport.
|
||||
The optional "http://" or "https://" prefix is ignored.
|
||||
|
||||
=item B<-proxy> I<[http[s]://]address[:port][/path]>
|
||||
|
||||
The HTTP(S) proxy server to use for reaching the CMP server unless B<no_proxy>
|
||||
applies, see below.
|
||||
The optional "http://" or "https://" prefix and any trailing path are ignored.
|
||||
Defaults to the environment variable C<http_proxy> if set, else C<HTTP_PROXY>
|
||||
in case no TLS is used, otherwise C<https_proxy> if set, else C<HTTPS_PROXY>.
|
||||
|
||||
=item B<-no_proxy> I<addresses>
|
||||
List of IP addresses and/or DNS names of servers
|
||||
not to use an HTTP(S) proxy for, separated by commas and/or whitespace
|
||||
(where in the latter case the whole argument must be enclosed in "...").
|
||||
Default is from the environment variable C<no_proxy> if set, else C<NO_PROXY>.
|
||||
|
||||
=item B<-path> I<remote_path>
|
||||
|
||||
HTTP path at the CMP server (aka CMP alias) to use for POST requests.
|
||||
Defaults to "/".
|
||||
|
||||
=item B<-msg_timeout> I<seconds>
|
||||
|
||||
Number of seconds (or 0 for infinite) a CMP request-response message round trip
|
||||
is allowed to take before a timeout error is returned.
|
||||
Default is 120.
|
||||
|
||||
=item B<-total_timeout> I<seconds>
|
||||
|
||||
Maximum number seconds an overall enrollment transaction may take,
|
||||
including attempts polling for certificates on C<waiting> PKIStatus.
|
||||
Default is 0 (infinite).
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 Server authentication options
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-trusted> I<filenames>
|
||||
|
||||
When verifying signature-based protection of CMP response messages,
|
||||
these are the CA certificate(s) to trust while checking certificate chains
|
||||
during CMP server authentication.
|
||||
This option gives more flexibility than the B<-srvcert> option because
|
||||
it does not pin down the expected CMP server by allowing only one certificate.
|
||||
|
||||
Multiple filenames may be given, separated by commas and/or whitespace
|
||||
(where in the latter case the whole argument must be enclosed in "...").
|
||||
Each source may contain multiple certificates.
|
||||
|
||||
=item B<-untrusted> I<sources>
|
||||
|
||||
Non-trusted intermediate certificate(s) that may be useful
|
||||
for constructing the TLS client certificate chain (if TLS is enabled) and
|
||||
for building certificate chains while verifying the CMP server certificate
|
||||
(when checking signature-based CMP message protection)
|
||||
and while verifying the newly enrolled certificate.
|
||||
These may get added to the extraCerts field sent in requests as far as needed.
|
||||
|
||||
Multiple filenames may be given, separated by commas and/or whitespace.
|
||||
Each file may contain multiple certificates.
|
||||
|
||||
=item B<-srvcert> I<filename>
|
||||
|
||||
The specific CMP server certificate to use and directly trust (even if it is
|
||||
expired) when verifying signature-based protection of CMP response messages.
|
||||
May be set alternatively to the B<-trusted> option
|
||||
if the certificate is available and only this one shall be accepted.
|
||||
|
||||
If set, the issuer of the certificate is also used as the recipient of the CMP
|
||||
request and as the expected sender of the CMP response,
|
||||
overriding any potential B<-recipient> option.
|
||||
|
||||
=item B<-recipient> I<name>
|
||||
|
||||
This option may be used to explicitly set the Distinguished Name (DN)
|
||||
of the CMP message recipient, i.e., the CMP server (usually a CA or RA entity).
|
||||
|
||||
The argument must be formatted as I</type0=value0/type1=value1/type2=...>,
|
||||
characters may be escaped by C<\>E<nbsp>(backslash), no spaces are skipped.
|
||||
|
||||
If a CMP server certificate is given with the B<-srvcert> option, its subject
|
||||
name is taken as the recipient name and the B<-recipient> option is ignored.
|
||||
If neither of the two are given, the recipient of the PKI message is
|
||||
determined in the following order: from the B<-issuer> option if present,
|
||||
the issuer of old cert given with the B<-oldcert> option if present,
|
||||
the issuer of the client certificate (B<-cert> option) if present.
|
||||
|
||||
The recipient field in the header of CMP messagese is mandatory.
|
||||
If none of the options that enable the derivation of the recipient name are
|
||||
given, no suitable value for the recipient in the PKIHeader is available.
|
||||
As a last resort it is set to NULL-DN.
|
||||
|
||||
When a response is received, its sender must match the recipient of the request.
|
||||
|
||||
=item B<-expect_sender> I<name>
|
||||
|
||||
Distinguished Name (DN) of the expected sender of CMP response messages when
|
||||
MSG_SIG_ALG is used for protection.
|
||||
This can be used to ensure that only a particular entity is accepted
|
||||
as the CMP server, and attackers are not able to use arbitrary certificates
|
||||
of a trusted PKI hierarchy to fraudulently pose as a CMP server.
|
||||
Note that this option gives slightly more freedom than B<-srvcert>,
|
||||
which pins down the server to a particular certificate,
|
||||
while B<-expect_sender> I<name> will continue to match after updates of the
|
||||
server cert.
|
||||
|
||||
The argument must be formatted as I</type0=value0/type1=value1/type2=...>,
|
||||
characters may be escaped by C<\>E<nbsp>(backslash), no spaces are skipped.
|
||||
|
||||
If not given, the subject DN of B<-srvcert>, if provided, will be used.
|
||||
|
||||
=item B<-ignore_keyusage>
|
||||
|
||||
Ignore key usage restrictions in CMP signer certificates when verifying
|
||||
signature-based protection of incoming CMP messages,
|
||||
else C<digitalSignature> must be allowed for signer certificate.
|
||||
|
||||
=item B<-unprotected_errors>
|
||||
|
||||
Accept missing or invalid protection of negative responses from the server.
|
||||
This applies to the following message types and contents:
|
||||
|
||||
=over 4
|
||||
|
||||
=item * error messages
|
||||
|
||||
=item * negative certificate responses (IP/CP/KUP)
|
||||
|
||||
=item * negative revocation responses (RP)
|
||||
|
||||
=item * negative PKIConf messages
|
||||
|
||||
=back
|
||||
|
||||
B<WARNING:> This setting leads to unspecified behavior and it is meant
|
||||
exclusively to allow interoperability with server implementations violating
|
||||
RFC 4210, e.g.:
|
||||
|
||||
=over 4
|
||||
|
||||
=item * section 5.1.3.1 allows exceptions from protecting only for special
|
||||
cases:
|
||||
"There MAY be cases in which the PKIProtection BIT STRING is deliberately not
|
||||
used to protect a message [...] because other protection, external to PKIX, will
|
||||
be applied instead."
|
||||
|
||||
=item * section 5.3.21 is clear on ErrMsgContent: "The CA MUST always sign it
|
||||
with a signature key."
|
||||
|
||||
=item * appendix D.4 shows PKIConf message having protection
|
||||
|
||||
=back
|
||||
|
||||
=item B<-extracertsout> I<filename>
|
||||
|
||||
The file where to save any extra certificates received in the extraCerts field
|
||||
of response messages.
|
||||
|
||||
=item B<-cacertsout> I<filename>
|
||||
|
||||
The file where to save any CA certificates received in the caPubs field of
|
||||
Initializiation Response (IP) messages.
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 Client authentication options
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-ref> I<value>
|
||||
|
||||
Reference number/string/value to use as fallback senderKID; this is required
|
||||
if no sender name can be determined from the B<-cert> or <-subject> options and
|
||||
is typically used when authenticating with pre-shared key (password-based MAC).
|
||||
|
||||
=item B<-secret> I<arg>
|
||||
|
||||
Source of secret value to use for creating PBM-based protection of outgoing
|
||||
messages and for verifying any PBM-based protection of incoming messages.
|
||||
PBM stands for Password-Based Message Authentication Code.
|
||||
This takes precedence over the B<-cert> option.
|
||||
|
||||
For more information about the format of B<arg> see the
|
||||
B<PASS PHRASE ARGUMENTS> section in L<openssl(1)>.
|
||||
|
||||
=item B<-cert> I<filename>
|
||||
|
||||
The client's current certificate.
|
||||
Requires the corresponding key to be given with B<-key>.
|
||||
The subject of this certificate will be used as the "sender" field
|
||||
of outgoing CMP messages, while B<-subjectName> may provide a fallback value.
|
||||
When using signature-based message protection, this "protection certificate"
|
||||
will be included first in the extraCerts field of outgoing messages.
|
||||
In Initialization Request (IR) messages this can be used for authenticating
|
||||
using an external entity certificate as defined in appendix E.7 of RFC 4210.
|
||||
For Key Update Request (KUR) messages this is also used as
|
||||
the certificate to be updated if the B<-oldcert> option is not given.
|
||||
If the file includes further certs, they are appended to the untrusted certs.
|
||||
These may get added to the extraCerts field sent in requests as far as needed.
|
||||
|
||||
=item B<-key> I<filename>
|
||||
|
||||
The corresponding private key file for the client's current certificate given in
|
||||
the B<-cert> option.
|
||||
This will be used for signature-based message protection unless
|
||||
the B<-secret> option indicating PBM or B<-unprotected_requests> is given.
|
||||
|
||||
=item B<-keypass> I<arg>
|
||||
|
||||
Pass phrase source for the private key given with the B<-key> option.
|
||||
Also used for B<-cert> and B<-oldcert> in case it is an encrypted PKCS#12 file.
|
||||
If not given here, the password will be prompted for if needed.
|
||||
|
||||
For more information about the format of B<arg> see the
|
||||
B<PASS PHRASE ARGUMENTS> section in L<openssl(1)>.
|
||||
|
||||
=item B<-digest> I<name>
|
||||
|
||||
Specifies name of supported digest to use in RFC 4210's MSG_SIG_ALG
|
||||
and as the one-way function (OWF) in MSG_MAC_ALG.
|
||||
If applicable, this is used for message protection and
|
||||
Proof-of-Possession (POPO) signatures.
|
||||
To see the list of supported digests, use B<openssl list -digest-commands>.
|
||||
Defaults to C<sha256>.
|
||||
|
||||
=item B<-mac> I<name>
|
||||
|
||||
Specifies the name of the MAC algorithm in MSG_MAC_ALG.
|
||||
To get the names of supported MAC algorithms use B<openssl list -mac-algorithms>
|
||||
and possibly combine such a name with the name of a supported digest algorithm,
|
||||
e.g., hmacWithSHA256.
|
||||
Defaults to C<hmac-sha1> as per RFC 4210.
|
||||
|
||||
=item B<-extracerts> I<sources>
|
||||
|
||||
Certificates to append in the extraCerts field when sending messages.
|
||||
|
||||
Multiple filenames or URLs may be given, separated by commas and/or whitespace
|
||||
(where in the latter case the whole argument must be enclosed in "...").
|
||||
Each source may contain multiple certificates.
|
||||
|
||||
=item B<-unprotected_requests>
|
||||
|
||||
Send messages without CMP-level protection.
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 Credentials format options
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-certform> I<PEM|DER>
|
||||
|
||||
File format to use when saving a certificate to a file.
|
||||
Default value is PEM.
|
||||
|
||||
=item B<-keyform> I<PEM|DER|P12>
|
||||
|
||||
Format to assume when reading key files.
|
||||
Default value is PEM.
|
||||
|
||||
=item B<-certsform> I<PEM|DER|P12>
|
||||
|
||||
Format to try first when reading multiple certificates from file(s).
|
||||
Default value is PEM.
|
||||
|
||||
=item B<-otherpass> I<arg>
|
||||
|
||||
Pass phrase source for certificate given with the B<-trusted>, B<-untrusted>,
|
||||
B<-out_trusted>, B<-extracerts>, B<-tls_extra>, or B<-tls_trusted> options.
|
||||
If not given here, the password will be prompted for if needed.
|
||||
|
||||
For more information about the format of B<arg> see the
|
||||
B<PASS PHRASE ARGUMENTS> section in L<openssl(1)>.
|
||||
|
||||
=item B<-engine> I<id>
|
||||
|
||||
Specifying a crypto engine B<id> will lead to obtaining a functional
|
||||
reference to the specified engine, initializing it if needed.
|
||||
The engine will be used for all algorithms supported for keys
|
||||
prefixed by C<engine:>.
|
||||
Engines may be defined in the OpenSSL config file as usual in an engine section.
|
||||
|
||||
Options specifying keys, like B<-key>, B<-newkey>, B<-tls_key> can prefix
|
||||
C<engine:> to engine-specific identifiers for security tokens objects held by
|
||||
the engine.
|
||||
The following example utilizes the RFC 7512 PKCS #11 URI scheme
|
||||
as supported, e.g., by libp11:
|
||||
C<-key engine:pkcs11:object=my-private-key;type=private;pin-value=1234>
|
||||
|
||||
{- $OpenSSL::safe::opt_provider_item -}
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 TLS options
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-tls_used>
|
||||
|
||||
Enable using TLS (even when other TLS_related options are not set)
|
||||
when connecting to CMP server.
|
||||
|
||||
=item B<-tls_cert> I<filename>
|
||||
|
||||
Client's TLS certificate.
|
||||
If the file includes further certificates,
|
||||
they are used for constructing the client cert chain provided to the TLS server.
|
||||
|
||||
=item B<-tls_key> I<filename>
|
||||
|
||||
Private key for the client's TLS certificate.
|
||||
|
||||
=item B<-tls_keypass> I<arg>
|
||||
|
||||
Pass phrase source for client's private TLS key B<tls_key>.
|
||||
Also used for B<-tls_cert> in case it is an encrypted PKCS#12 file.
|
||||
If not given here, the password will be prompted for if needed.
|
||||
|
||||
For more information about the format of B<arg> see the
|
||||
B<PASS PHRASE ARGUMENTS> section in L<openssl(1)>.
|
||||
|
||||
=item B<-tls_extra> I<filenames>
|
||||
|
||||
Extra certificates to provide to TLS server during TLS handshake
|
||||
|
||||
=item B<-tls_trusted> I<filenames>
|
||||
|
||||
Trusted certificate(s) to use for verifying the TLS server certificate.
|
||||
This implies hostname validation.
|
||||
|
||||
Multiple filenames may be given, separated by commas and/or whitespace
|
||||
(where in the latter case the whole argument must be enclosed in "...").
|
||||
Each source may contain multiple certificates.
|
||||
|
||||
=item B<-tls_host> I<name>
|
||||
|
||||
Address to be checked during hostname validation.
|
||||
This may be a DNS name or an IP address.
|
||||
If not given it defaults to the B<-server> address.
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 Client-side debugging options
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-batch>
|
||||
|
||||
Do not interactively prompt for input, for instance when a password is needed.
|
||||
This can be useful for batch processing and testing.
|
||||
|
||||
=item B<-repeat> I<number>
|
||||
|
||||
Invoke the command the given number of times with the same parameters.
|
||||
Default is one invocation.
|
||||
|
||||
=item B<-reqin> I<filenames>
|
||||
|
||||
Take sequence of CMP requests from file(s).
|
||||
Multiple filenames may be given, separated by commas and/or whitespace
|
||||
(where in the latter case the whole argument must be enclosed in "...").
|
||||
As many files are read as needed for a complete transaction.
|
||||
|
||||
=item B<-reqin_new_tid>
|
||||
|
||||
Use a fresh transactionID for CMP request messages read using B<-reqin>,
|
||||
which requires re-protecting them as far as they were protected before.
|
||||
This may be needed in case the sequence of requests is reused
|
||||
and the CMP server complains that the transaction ID has already been used.
|
||||
|
||||
=item B<-reqout> I<filenames>
|
||||
|
||||
Save sequence of CMP requests to file(s).
|
||||
Multiple filenames may be given, separated by commas and/or whitespace.
|
||||
As many files are written as needed to store the complete transaction.
|
||||
|
||||
=item B<-rspin> I<filenames>
|
||||
|
||||
Process sequence of CMP responses provided in file(s), skipping server.
|
||||
Multiple filenames may be given, separated by commas and/or whitespace.
|
||||
As many files are read as needed for the complete transaction.
|
||||
|
||||
=item B<-rspout> I<filenames>
|
||||
|
||||
Save sequence of CMP responses to file(s).
|
||||
Multiple filenames may be given, separated by commas and/or whitespace.
|
||||
As many files are written as needed to store the complete transaction.
|
||||
|
||||
=item B<-use_mock_srv>
|
||||
|
||||
Use the internal mock server for testing the client.
|
||||
This works at API level, bypassing HTTP transport.
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 Certificate verification options, for both CMP and TLS
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-policy>, B<-purpose>, B<-verify_name>, B<-verify_depth>,
|
||||
B<-attime>,
|
||||
B<-ignore_critical>, B<-issuer_checks>,
|
||||
B<-policy_check>,
|
||||
B<-explicit_policy>, B<-inhibit_any>, B<-inhibit_map>,
|
||||
B<-x509_strict>, B<-extended_crl>, B<-use_deltas>,
|
||||
B<-policy_print>, B<-check_ss_sig>, B<-crl_check>, B<-crl_check_all>,
|
||||
B<-trusted_first>,
|
||||
B<-suiteB_128_only>, B<-suiteB_128>, B<-suiteB_192>,
|
||||
B<-partial_chain>, B<-no_alt_chains>, B<-no_check_time>,
|
||||
B<-auth_level>,
|
||||
B<-allow_proxy_certs>
|
||||
|
||||
Set various options of certificate chain verification.
|
||||
See L<openssl(1)/Verification Options> for details.
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head2 Mock server options, for testing purposes only
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-port> I<number>
|
||||
|
||||
Act as CMP HTTP server mock-up listening on the given port.
|
||||
|
||||
=item B<-max_msgs> I<number>
|
||||
|
||||
Maximum number of CMP (request) messages the CMP HTTP server mock-up
|
||||
should handle, which must be non-negative.
|
||||
The default value is 0, which means that no limit is imposed.
|
||||
In any case the server terminates on internal errors, but not when it
|
||||
detects a CMP-level error that it can successfully answer with an error message.
|
||||
|
||||
=item B<-srv_ref> I<value>
|
||||
|
||||
Reference value to use as senderKID of server in case no B<-srv_cert> is given.
|
||||
|
||||
=item B<-srv_secret> I<arg>
|
||||
|
||||
Password source for server authentication with a pre-shared key (secret).
|
||||
|
||||
=item B<-srv_cert> I<filename>
|
||||
|
||||
Certificate of the server.
|
||||
|
||||
=item B<-srv_key> I<filename>
|
||||
|
||||
Private key used by the server for signing messages.
|
||||
|
||||
=item B<-srv_keypass> I<arg>
|
||||
|
||||
Server private key (and cert) file pass phrase source.
|
||||
|
||||
=item B<-srv_trusted> I<filenames>
|
||||
|
||||
Trusted certificates for client authentication.
|
||||
|
||||
=item B<-srv_untrusted> I<filenames>
|
||||
|
||||
Intermediate CA certs that may be useful when verifying client certificates.
|
||||
|
||||
=item B<-rsp_cert> I<filename>
|
||||
|
||||
Certificate to be returned as mock enrollment result.
|
||||
|
||||
=item B<-rsp_extracerts> I<filenames>
|
||||
|
||||
Extra certificates to be included in mock certification responses.
|
||||
|
||||
=item B<-rsp_capubs> I<filenames>
|
||||
|
||||
CA certificates to be included in mock Initialization Response (IP) message.
|
||||
|
||||
=item B<-poll_count> I<number>
|
||||
|
||||
Number of times the client must poll before receiving a certificate.
|
||||
|
||||
=item B<-check_after> I<number>
|
||||
|
||||
The checkAfter value (number of seconds to wait) to include in poll response.
|
||||
|
||||
|
||||
=item B<-grant_implicitconf>
|
||||
|
||||
Grant implicit confirmation of newly enrolled certificate.
|
||||
|
||||
=item B<-pkistatus> I<number>
|
||||
|
||||
PKIStatus to be included in server response.
|
||||
Valid range is 0 (accepted) .. 6 (keyUpdateWarning).
|
||||
|
||||
=item B<-failure> I<number>
|
||||
|
||||
A single failure info bit number to be included in server response.
|
||||
Valid range is 0 (badAlg) .. 26 (duplicateCertReq).
|
||||
|
||||
=item B<-failurebits> I<number>
|
||||
Number representing failure bits to be included in server response.
|
||||
Valid range is 0 .. 2^27 - 1.
|
||||
|
||||
=item B<-statusstring> I<arg>
|
||||
|
||||
Text to be included as status string in server response.
|
||||
|
||||
=item B<-send_error>
|
||||
|
||||
Force server to reply with error message.
|
||||
|
||||
=item B<-send_unprotected>
|
||||
|
||||
Send response messages without CMP-level protection.
|
||||
|
||||
=item B<-send_unprot_err>
|
||||
|
||||
In case of negative responses, server shall send unprotected error messages,
|
||||
certificate responses (IP/CP/KUP), and revocation responses (RP).
|
||||
WARNING: This setting leads to behavior violating RFC 4210.
|
||||
|
||||
=item B<-accept_unprotected>
|
||||
|
||||
Accept missing or invalid protection of requests.
|
||||
|
||||
=item B<-accept_unprot_err>
|
||||
|
||||
Accept unprotected error messages from client.
|
||||
|
||||
=item B<-accept_raverified>
|
||||
|
||||
Accept RAVERIFED as proof-of-possession (POPO).
|
||||
|
||||
=back
|
||||
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
When setting up CMP configurations and experimenting with enrollment options
|
||||
typically various errors occur until the configuration is correct and complete.
|
||||
When the CMP server reports an error the client will by default
|
||||
check the protection of the CMP response message.
|
||||
Yet some CMP services tend not to protect negative responses.
|
||||
In this case the client will reject them, and thus their contents are not shown
|
||||
although they usually contain hints that would be helpful for diagnostics.
|
||||
For assisting in such cases the CMP client offers a workaround via the
|
||||
B<-unprotected_errors> option, which allows accepting such negative messages.
|
||||
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
=head2 Simple examples using the default OpenSSL configuration file
|
||||
|
||||
This CMP client implementation comes with demonstrative CMP sections
|
||||
in the example configuration file F<openssl/apps/openssl.cnf>,
|
||||
which can be used to interact conveniently with the Insta Demo CA.
|
||||
|
||||
In order to enroll an initial certificate from that CA it is sufficient
|
||||
to issue the following shell commands.
|
||||
|
||||
cd /path/to/openssl
|
||||
export OPENSSL_CONF=openssl.cnf
|
||||
wget 'http://pki.certificate.fi:8080/install-ca-cert.html/ca-certificate.crt\
|
||||
?ca-id=632&download-certificate=1' -O insta.ca.crt
|
||||
openssl genrsa -out insta.priv.pem
|
||||
openssl cmp -section insta
|
||||
|
||||
This should produce the file F<insta.cert.pem> containing a new certificate
|
||||
for the private key held in F<insta.priv.pem>.
|
||||
It can be viewed using, e.g.,
|
||||
|
||||
openssl x509 -noout -text -in insta.cert.pem
|
||||
|
||||
In case the network setup requires using an HTTP proxy it may be given as usual
|
||||
via the environment variable B<http_proxy> or via the B<proxy> option or
|
||||
the CMP command-line argument B<-proxy>, for example
|
||||
|
||||
-proxy http://192.168.1.1:8080
|
||||
|
||||
In the Insta Demo CA scenario both clients and the server may use the pre-shared
|
||||
secret "insta" and the reference value "3078" to authenticate to each other.
|
||||
|
||||
Alternatively, CMP messages may be protected in signature-based manner,
|
||||
where the trust anchor in this case is F<insta.ca.crt>
|
||||
and the client may use any certificate already obtained from that CA,
|
||||
as specified in the B<[signature]> section of the example configuration.
|
||||
This can be used in combination with the B<[insta]> section simply by
|
||||
|
||||
openssl cmp -section insta,signature
|
||||
|
||||
By default the CMP IR message type is used, yet CR works equally here.
|
||||
This may be specified directly at the command line:
|
||||
|
||||
openssl cmp -section insta -cmd cr
|
||||
|
||||
or by referencing in addition the B<[cr]> section of the example configuration:
|
||||
|
||||
openssl cmp -section insta,cr
|
||||
|
||||
In order to update the enrolled certificate one may call
|
||||
|
||||
openssl cmp -section insta,kur
|
||||
|
||||
using with PBM-based protection or
|
||||
|
||||
openssl cmp -section insta,kur,signature
|
||||
|
||||
using signature-based protection.
|
||||
|
||||
In a similar way any previously enrolled certificate may be revoked by
|
||||
|
||||
openssl cmp -section insta,rr -trusted insta.ca.crt
|
||||
|
||||
or
|
||||
|
||||
openssl cmp -section insta,rr,signature
|
||||
|
||||
Many more options can be used in the configuration file
|
||||
and/or on the command line.
|
||||
|
||||
|
||||
=head2 Certificate enrollment
|
||||
|
||||
The following examples at first do not make use of a configuration file.
|
||||
They assume that a CMP server can be contacted on the local TCP port 80
|
||||
and accepts requests under the alias "/pkix/".
|
||||
|
||||
For enrolling its very first certificate the client generates a first client key
|
||||
and sends an initial request message to the local CMP server
|
||||
using a pre-shared secret key for mutual authentication.
|
||||
In this example the client does not have the CA certificate yet,
|
||||
so we specify the name of the CA with the B<-recipient> option
|
||||
and save any CA certificates that we may receive in the C<capubs.pem> file.
|
||||
|
||||
In below command line usage examples the C<\> at line ends is just used
|
||||
for formatting; each of the command invocations should be on a single line.
|
||||
|
||||
openssl genrsa -out cl_key.pem
|
||||
openssl cmp -cmd ir -server 127.0.0.1:80 -path pkix/ \
|
||||
-ref 1234 -secret pass:1234-5678-1234-5678 \
|
||||
-recipient "/CN=CMPserver" \
|
||||
-newkey cl_key.pem -subject "/CN=MyName" \
|
||||
-cacertsout capubs.pem -certout cl_cert.pem
|
||||
|
||||
|
||||
=head2 Certificate update
|
||||
|
||||
Then, when the client certificate and its related key pair needs to be updated,
|
||||
the client can send a key update request taking the certs in C<capubs.pem>
|
||||
as trusted for authenticating the server and using the previous cert and key
|
||||
for its own authentication.
|
||||
Then it can start using the new cert and key.
|
||||
|
||||
openssl genrsa -out cl_key_new.pem
|
||||
openssl cmp -cmd kur -server 127.0.0.1:80 -path pkix/ \
|
||||
-trusted capubs.pem \
|
||||
-cert cl_cert.pem -key cl_key.pem \
|
||||
-newkey cl_key_new.pem -certout cl_cert.pem
|
||||
cp cl_key_new.pem cl_key.pem
|
||||
|
||||
This command sequence can be repated as often as needed.
|
||||
|
||||
|
||||
=head2 Requesting information from CMP server
|
||||
|
||||
Requesting "all relevant information" with an empty General Message.
|
||||
This prints information about all received ITAV B<infoType>s to stdout.
|
||||
|
||||
openssl cmp -cmd genm -server 127.0.0.1 -path pkix/ \
|
||||
-ref 1234 -secret pass:1234-5678-1234-5678 \
|
||||
-recipient "/CN=CMPserver"
|
||||
|
||||
|
||||
=head2 Using a custom configuration file
|
||||
|
||||
For CMP client invocations, in particular for certificate enrollment,
|
||||
usually many parameters need to be set, which is tedious and error-prone to do
|
||||
on the command line.
|
||||
Therefore the client offers the possibility to read
|
||||
options from sections of the OpenSSL config file, usually called B<openssl.cnf>.
|
||||
The values found there can still be extended and even overridden by any
|
||||
subsequently loaded sections and on the command line.
|
||||
|
||||
After including in the configuration file the following sections:
|
||||
|
||||
[cmp]
|
||||
server = 127.0.0.1
|
||||
path = pkix/
|
||||
trusted = capubs.pem
|
||||
cert = cl_cert.pem
|
||||
key = cl_key.pem
|
||||
newkey = cl_key.pem
|
||||
certout = cl_cert.pem
|
||||
|
||||
[cmp-init]
|
||||
recipient = "/CN=CMPserver"
|
||||
trusted =
|
||||
cert =
|
||||
key =
|
||||
ref = 1234
|
||||
secret = pass:1234-5678-1234-567
|
||||
subject = "/CN=MyName"
|
||||
cacertsout = capubs.pem
|
||||
|
||||
the above enrollment invocations reduce to
|
||||
|
||||
openssl cmp -section cmp,cmp-init
|
||||
openssl cmp -cmd kur -newkey cl_key_new.pem
|
||||
|
||||
and the above genm call reduces to
|
||||
|
||||
openssl cmp -section cmp,cmp-init -cmd genm
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<openssl-genrsa(1)>, L<openssl-ecparam(1)>, L<openssl-list(1)>,
|
||||
L<openssl-req(1)>, L<openssl-x509(1)>, L<x509v3_config(5)>
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
Licensed under the OpenSSL license (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
|
||||
L<https://www.openssl.org/source/license.html>.
|
||||
|
||||
=cut
|
||||
@@ -36,7 +36,7 @@ B<openssl> B<cms>
|
||||
[B<-inform> B<DER>|B<PEM>|B<SMIME>]
|
||||
[B<-outform> B<DER>|B<PEM>|B<SMIME>]
|
||||
[B<-rctform> B<DER>|B<PEM>|B<SMIME>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<ENGINE>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-stream>]
|
||||
[B<-indef>]
|
||||
[B<-noindef>]
|
||||
@@ -82,7 +82,7 @@ B<openssl> B<cms>
|
||||
{- $OpenSSL::safe::opt_r_synopsis -}
|
||||
{- $OpenSSL::safe::opt_engine_synopsis -}
|
||||
{- $OpenSSL::safe::opt_provider_synopsis -}
|
||||
[I<cert.pem> ...]
|
||||
[I<recipient-cert> ...]
|
||||
|
||||
=for openssl ifdef des-wrap engine
|
||||
|
||||
@@ -107,7 +107,7 @@ Print out a usage message.
|
||||
|
||||
Encrypt mail for the given recipient certificates. Input file is the message
|
||||
to be encrypted. The output file is the encrypted mail in MIME format. The
|
||||
actual CMS type is <B>EnvelopedData<B>.
|
||||
actual CMS type is B<EnvelopedData>.
|
||||
|
||||
Note that no revocation check is done for the recipient cert, so if that
|
||||
key has been compromised, others may be able to decrypt the text.
|
||||
@@ -235,9 +235,10 @@ The output format of the CMS structure (if one is being written);
|
||||
the default is B<SMIME>.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<ENGINE>
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The format of the private key file; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-rctform> B<DER>|B<PEM>|B<SMIME>
|
||||
@@ -370,7 +371,7 @@ the MIME type multipart/signed is used.
|
||||
|
||||
Allows additional certificates to be specified. When signing these will
|
||||
be included with the message. When verifying these will be searched for
|
||||
the signers certificates. The certificates should be in PEM format.
|
||||
the signers certificates.
|
||||
|
||||
=item B<-certsout> I<file>
|
||||
|
||||
@@ -493,7 +494,7 @@ Any verification errors cause the command to exit.
|
||||
|
||||
{- $OpenSSL::safe::opt_provider_item -}
|
||||
|
||||
=item I<cert.pem> ...
|
||||
=item I<recipient-cert> ...
|
||||
|
||||
One or more certificates of message recipients: used when encrypting
|
||||
a message.
|
||||
@@ -766,6 +767,9 @@ was added in OpenSSL 1.0.2.
|
||||
|
||||
The -no_alt_chains option was added in OpenSSL 1.0.2b.
|
||||
|
||||
All B<-keyform> values except B<ENGINE> have become obsolete in OpenSSL 3.0.0
|
||||
and have no effect.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -12,7 +12,7 @@ B<openssl> B<crl>
|
||||
[B<-inform> B<DER>|B<PEM>]
|
||||
[B<-outform> B<DER>|B<PEM>]
|
||||
[B<-key> I<filename>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<ENGINE>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<P12>]
|
||||
[B<-text>]
|
||||
[B<-in> I<filename>]
|
||||
[B<-out> I<filename>]
|
||||
@@ -45,19 +45,24 @@ This command processes CRL files in DER or PEM format.
|
||||
|
||||
Print out a usage message.
|
||||
|
||||
=item B<-inform> B<DER>|B<PEM>, B<-outform> B<DER>|B<PEM>
|
||||
=item B<-inform> B<DER>|B<PEM>
|
||||
|
||||
The input and output formats of the CRL; the default is B<PEM>.
|
||||
The CRL input format.
|
||||
This option has no effect and is retained for backward compatibility only.
|
||||
|
||||
=item B<-outform> B<DER>|B<PEM>
|
||||
|
||||
The CRL output format; the default is B<PEM>.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-key> I<filename>
|
||||
|
||||
The private key to be used to sign the CRL.
|
||||
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<ENGINE>
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<P12>
|
||||
|
||||
The format of the private key file; the default is B<PEM>.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
The format of the private key file.
|
||||
This option has no effect and is retained for backward compatibility only.
|
||||
|
||||
=item B<-in> I<filename>
|
||||
|
||||
@@ -136,7 +141,7 @@ Convert a CRL file from PEM to DER:
|
||||
|
||||
Output the text form of a DER encoded certificate:
|
||||
|
||||
openssl crl -in crl.der -inform DER -text -noout
|
||||
openssl crl -in crl.der -text -noout
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
@@ -151,6 +156,11 @@ L<openssl-ca(1)>,
|
||||
L<openssl-x509(1)>,
|
||||
L<ossl_store-file(7)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
The B<-inform> and B<-keyform> options have become obsolete in OpenSSL 3.0.0
|
||||
and have no effect.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -103,6 +103,7 @@ command instead for this.
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The format of the key to sign with; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-sigopt> I<nm>:I<v>
|
||||
@@ -247,6 +248,9 @@ L<openssl-mac(1)>
|
||||
The default digest was changed from MD5 to SHA256 in OpenSSL 1.1.0.
|
||||
The FIPS-related options were removed in OpenSSL 1.1.0.
|
||||
|
||||
All B<-keyform> values except B<ENGINE> have become obsolete in OpenSSL 3.0.0
|
||||
and have no effect.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -30,9 +30,6 @@ B<openssl dhparam>
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This command has been deprecated.
|
||||
The L<openssl-pkeyparam(1)> command should be used instead.
|
||||
|
||||
This command is used to manipulate DH parameter files.
|
||||
|
||||
=head1 OPTIONS
|
||||
@@ -62,6 +59,8 @@ as the input filename.
|
||||
|
||||
=item B<-dsaparam>
|
||||
|
||||
This option is deprecated.
|
||||
|
||||
If this option is used, DSA rather than DH parameters are read or created;
|
||||
they are converted to DH format. Otherwise, "strong" primes (such
|
||||
that (p-1)/2 is also prime) will be used for DH parameter generation.
|
||||
@@ -136,7 +135,7 @@ L<openssl-dsaparam(1)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
This command was deprecated in OpenSSL 3.0.
|
||||
The B<-dsaparam> option was deprecated in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
|
||||
@@ -43,9 +43,6 @@ B<openssl> B<dsa>
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This command has been deprecated.
|
||||
The L<openssl-pkey(1)> command should be used instead.
|
||||
|
||||
This command processes DSA keys. They can be converted between various
|
||||
forms and their components printed out. B<Note> This command uses the
|
||||
traditional SSLeay compatible format for private key encryption: newer
|
||||
@@ -162,10 +159,6 @@ L<openssl-gendsa(1)>,
|
||||
L<openssl-rsa(1)>,
|
||||
L<openssl-genrsa(1)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
This command was deprecated in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -25,9 +25,6 @@ B<openssl dsaparam>
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This command has been deprecated.
|
||||
The L<openssl-pkeyparam(1)> command should be used instead.
|
||||
|
||||
This command is used to manipulate or generate DSA parameter files.
|
||||
|
||||
DSA parameter generation can be a slow process and as a result the same set of
|
||||
@@ -107,10 +104,6 @@ L<openssl-dsa(1)>,
|
||||
L<openssl-genrsa(1)>,
|
||||
L<openssl-rsa(1)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
This command was deprecated in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -13,7 +13,7 @@ openssl-ec - EC key processing
|
||||
|
||||
B<openssl> B<ec>
|
||||
[B<-help>]
|
||||
[B<-inform> B<DER>|B<PEM>]
|
||||
[B<-inform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-outform> B<DER>|B<PEM>]
|
||||
[B<-in> I<filename>]
|
||||
[B<-passin> I<arg>]
|
||||
@@ -38,9 +38,6 @@ B<openssl> B<ec>
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This command has been deprecated.
|
||||
The L<openssl-pkey(1)> command should be used instead.
|
||||
|
||||
The L<openssl-ec(1)> command processes EC keys. They can be converted between
|
||||
various forms and their components printed out. B<Note> OpenSSL uses the
|
||||
private key format specified in 'SEC 1: Elliptic Curve Cryptography'
|
||||
@@ -55,9 +52,15 @@ PKCS#8 private key format use the L<openssl-pkcs8(1)> command.
|
||||
|
||||
Print out a usage message.
|
||||
|
||||
=item B<-inform> B<DER>|B<PEM>, B<-outform> B<DER>|B<PEM>
|
||||
=item B<-inform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The input and formats; the default is B<PEM>.
|
||||
The key input format; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-outform> B<DER>|B<PEM>
|
||||
|
||||
The key output formats; the default is B<PEM>.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
Private keys are an SEC1 private key or PKCS#8 format.
|
||||
@@ -183,10 +186,6 @@ L<openssl-ecparam(1)>,
|
||||
L<openssl-dsa(1)>,
|
||||
L<openssl-rsa(1)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
This command was deprecated in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2003-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -32,10 +32,6 @@ B<openssl ecparam>
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This command has been deprecated.
|
||||
The L<openssl-genpkey(1)> and L<openssl-pkeyparam(1)> commands
|
||||
should be used instead.
|
||||
|
||||
This command is used to manipulate or generate EC parameter files.
|
||||
|
||||
OpenSSL is currently not able to generate new groups and therefore
|
||||
@@ -172,10 +168,6 @@ L<openssl-genpkey(1)>,
|
||||
L<openssl-ec(1)>,
|
||||
L<openssl-dsaparam(1)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
This command was deprecated in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2003-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -168,7 +168,7 @@ L<EVP_MAC(3)>
|
||||
|
||||
Copyright 2019-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
Licensed under the OpenSSL license (the "License"). You may not use
|
||||
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
|
||||
L<https://www.openssl.org/source/license.html>.
|
||||
|
||||
@@ -33,9 +33,6 @@ B<openssl> B<gendsa>
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This command has been deprecated.
|
||||
The L<openssl-genpkey(1)> command should be used instead.
|
||||
|
||||
This command generates a DSA private key from a DSA parameter file
|
||||
(which will be typically generated by the L<openssl-dsaparam(1)> command).
|
||||
|
||||
@@ -95,10 +92,6 @@ L<openssl-dsa(1)>,
|
||||
L<openssl-genrsa(1)>,
|
||||
L<openssl-rsa(1)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
This command was deprecated in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -167,7 +167,7 @@ Added in OpenSSL 3.0
|
||||
|
||||
Copyright 2019-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
Licensed under the OpenSSL license (the "License"). You may not use
|
||||
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
|
||||
L<https://www.openssl.org/source/license.html>.
|
||||
|
||||
@@ -158,7 +158,7 @@ L<EVP_MAC-Poly1305(7)>
|
||||
|
||||
Copyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
Licensed under the OpenSSL license (the "License"). You may not use
|
||||
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
|
||||
L<https://www.openssl.org/source/license.html>.
|
||||
|
||||
@@ -103,8 +103,8 @@ specify output filename, default is standard output.
|
||||
=item B<-issuer> I<filename>
|
||||
|
||||
This specifies the current issuer certificate. This option can be used
|
||||
multiple times. The certificate specified in I<filename> must be in
|
||||
PEM format. This option B<MUST> come before any B<-cert> options.
|
||||
multiple times.
|
||||
This option B<MUST> come before any B<-cert> options.
|
||||
|
||||
=item B<-cert> I<filename>
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ openssl-pkey - public or private key processing command
|
||||
|
||||
B<openssl> B<pkey>
|
||||
[B<-help>]
|
||||
[B<-inform> B<DER>|B<PEM>]
|
||||
[B<-inform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-outform> B<DER>|B<PEM>]
|
||||
[B<-in> I<filename>]
|
||||
[B<-passin> I<arg>]
|
||||
@@ -48,9 +48,15 @@ converted between various forms and their components printed out.
|
||||
|
||||
Print out a usage message.
|
||||
|
||||
=item B<-inform> B<DER>|B<PEM>, B<-outform> B<DER>|B<PEM>
|
||||
=item B<-inform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The input and formats; the default is B<PEM>.
|
||||
The key input format; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-outform> B<DER>|B<PEM>
|
||||
|
||||
The key output formats; the default is B<PEM>.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-in> I<filename>
|
||||
|
||||
@@ -15,10 +15,10 @@ B<openssl> B<pkeyutl>
|
||||
[B<-out> I<file>]
|
||||
[B<-sigfile> I<file>]
|
||||
[B<-inkey> I<file>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<ENGINE>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-passin> I<arg>]
|
||||
[B<-peerkey> I<file>]
|
||||
[B<-peerform> B<DER>|B<PEM>|B<ENGINE>]
|
||||
[B<-peerform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-pubin>]
|
||||
[B<-certin>]
|
||||
[B<-rev>]
|
||||
@@ -89,9 +89,10 @@ Signature file, required for B<-verify> operations only
|
||||
|
||||
The input key file, by default it should be a private key.
|
||||
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<ENGINE>
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The key format; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-passin> I<arg>
|
||||
@@ -103,9 +104,10 @@ see L<openssl(1)/Pass Phrase Options>.
|
||||
|
||||
The peer key file, used by key derivation (agreement) operations.
|
||||
|
||||
=item B<-peerform> B<DER>|B<PEM>|B<ENGINE>
|
||||
=item B<-peerform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The peer key format; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-pubin>
|
||||
@@ -402,6 +404,10 @@ L<openssl-kdf(1)>
|
||||
L<EVP_PKEY_CTX_set_hkdf_md(3)>,
|
||||
L<EVP_PKEY_CTX_set_tls1_prf_md(3)>,
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
All B<-keyform> values except B<ENGINE> have become obsolete in OpenSSL 3.0.0
|
||||
and have no effect.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
{- OpenSSL::safe::output_do_not_edit_headers(); -}
|
||||
|
||||
=for comment
|
||||
Original text by James Westby, contributed under the OpenSSL license.
|
||||
Original text by James Westby.
|
||||
|
||||
=head1 NAME
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ B<openssl> B<req>
|
||||
[B<-pkeyopt> I<opt>:I<value>]
|
||||
[B<-nodes>]
|
||||
[B<-key> I<filename>]
|
||||
[B<-keyform> B<DER>|B<PEM>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-keyout> I<filename>]
|
||||
[B<-keygen_engine> I<id>]
|
||||
[B<-I<digest>>]
|
||||
@@ -186,9 +186,10 @@ See L<openssl-genpkey(1)/KEY GENERATION OPTIONS> for more details.
|
||||
This specifies the file to read the private key from. It also
|
||||
accepts PKCS#8 format private keys for PEM format files.
|
||||
|
||||
=item B<-keyform> B<DER>|B<PEM>
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The format of the private key; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-keyout> I<filename>
|
||||
@@ -691,6 +692,9 @@ L<x509v3_config(5)>
|
||||
|
||||
The B<-section> option was added in OpenSSL 3.0.0.
|
||||
|
||||
All B<-keyform> values except B<ENGINE> have become obsolete in OpenSSL 3.0.0
|
||||
and have no effect.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -13,7 +13,7 @@ openssl-rsa - RSA key processing command
|
||||
|
||||
B<openssl> B<rsa>
|
||||
[B<-help>]
|
||||
[B<-inform> B<DER>|B<PEM>]
|
||||
[B<-inform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-outform> B<DER>|B<PEM>]
|
||||
[B<-in> I<filename>]
|
||||
[B<-passin> I<arg>]
|
||||
@@ -46,9 +46,6 @@ B<openssl> B<rsa>
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This command has been deprecated.
|
||||
The L<openssl-pkey(1)> command should be used instead.
|
||||
|
||||
This command processes RSA keys. They can be converted between
|
||||
various forms and their components printed out. B<Note> this command uses the
|
||||
traditional SSLeay compatible format for private key encryption: newer
|
||||
@@ -64,9 +61,15 @@ L<openssl-pkcs8(1)> command.
|
||||
Print out a usage message.
|
||||
|
||||
|
||||
=item B<-inform> B<DER>|B<PEM>, B<-outform> B<DER>|B<PEM>
|
||||
=item B<-inform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The input and formats; the default is B<PEM>.
|
||||
The key input format; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-outform> B<DER>|B<PEM>
|
||||
|
||||
The key output format; the default is B<PEM>.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-inform> B<DER>|B<PEM>
|
||||
@@ -184,10 +187,6 @@ L<openssl-dsa(1)>,
|
||||
L<openssl-genrsa(1)>,
|
||||
L<openssl-gendsa(1)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
This command was deprecated in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -14,7 +14,7 @@ B<openssl> B<rsautl>
|
||||
[B<-rev>]
|
||||
[B<-out> I<file>]
|
||||
[B<-inkey> I<file>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<ENGINE>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-pubin>]
|
||||
[B<-certin>]
|
||||
[B<-sign>]
|
||||
@@ -76,9 +76,10 @@ default.
|
||||
|
||||
The input key file, by default it should be an RSA private key.
|
||||
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<ENGINE>
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The key format; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-pubin>
|
||||
@@ -237,6 +238,9 @@ L<openssl-genrsa(1)>
|
||||
|
||||
This command was deprecated in OpenSSL 3.0.
|
||||
|
||||
All B<-keyform> values except B<ENGINE> have become obsolete in OpenSSL 3.0.0
|
||||
and have no effect.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -29,14 +29,14 @@ B<openssl> B<s_client>
|
||||
[B<-verifyCApath> I<dir>]
|
||||
[B<-verifyCAstore> I<uri>]
|
||||
[B<-cert> I<filename>]
|
||||
[B<-certform> B<DER>|B<PEM>]
|
||||
[B<-certform> B<DER>|B<PEM>|B<P12>]
|
||||
[B<-cert_chain> I<filename>]
|
||||
[B<-build_chain>]
|
||||
[B<-CRL> I<filename>]
|
||||
[B<-CRLform> B<DER>|B<PEM>]
|
||||
[B<-crl_download>]
|
||||
[B<-key> I<filename>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<ENGINE>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-pass> I<arg>]
|
||||
[B<-chainCAfile> I<filename>]
|
||||
[B<-chainCApath> I<directory>]
|
||||
@@ -240,10 +240,10 @@ The default is not to use a certificate.
|
||||
|
||||
The chain for the client certificate may be specified using B<-cert_chain>.
|
||||
|
||||
=item B<-certform> B<DER>|B<PEM>
|
||||
=item B<-certform> B<DER>|B<PEM>|B<P12>
|
||||
|
||||
The client certificate file format to use; the default is B<PEM>.
|
||||
see L<openssl(1)/Format Options>.
|
||||
This option has no effect and is retained for backward compatibility only.
|
||||
|
||||
=item B<-cert_chain>
|
||||
|
||||
@@ -273,9 +273,10 @@ Download CRL from distribution points in the certificate.
|
||||
The client private key file to use.
|
||||
If not specified then the certificate file will be used to read also the key.
|
||||
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<ENGINE>
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The key format; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-pass> I<arg>
|
||||
@@ -850,7 +851,7 @@ for an appropriate page.
|
||||
|
||||
If a certificate is specified on the command line using the B<-cert>
|
||||
option it will not be used unless the server specifically requests
|
||||
a client certificate. Therefor merely including a client certificate
|
||||
a client certificate. Therefore merely including a client certificate
|
||||
on the command line is no guarantee that the certificate works.
|
||||
|
||||
If there are problems verifying a server certificate then the
|
||||
@@ -894,6 +895,11 @@ L<ossl_store-file(7)>
|
||||
The B<-no_alt_chains> option was added in OpenSSL 1.1.0.
|
||||
The B<-name> option was added in OpenSSL 1.1.1.
|
||||
|
||||
The B<-certform> option has become obsolete in OpenSSL 3.0.0 and has no effect.
|
||||
|
||||
All B<-keyform> values except B<ENGINE> have become obsolete in OpenSSL 3.0.0
|
||||
and have no effect.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -20,19 +20,19 @@ B<openssl> B<s_server>
|
||||
[B<-Verify> I<int>]
|
||||
[B<-cert> I<infile>]
|
||||
[B<-cert2> I<infile>]
|
||||
[B<-certform> B<DER>|B<PEM>]
|
||||
[B<-certform> B<DER>|B<PEM>|B<P12>]
|
||||
[B<-cert_chain> I<infile>]
|
||||
[B<-build_chain>]
|
||||
[B<-serverinfo> I<val>]
|
||||
[B<-key> I<infile>]
|
||||
[B<-key2> I<infile>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<ENGINE>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-pass> I<val>]
|
||||
[B<-dcert> I<infile>]
|
||||
[B<-dcertform> B<DER>|B<PEM>]
|
||||
[B<-dcertform> B<DER>|B<PEM>|B<P12>]
|
||||
[B<-dcert_chain> I<infile>]
|
||||
[B<-dkey> I<infile>]
|
||||
[B<-dkeyform> B<DER>|B<PEM>|B<ENGINE>]
|
||||
[B<-dkeyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-dpass> I<val>]
|
||||
[B<-nbio_test>]
|
||||
[B<-crlf>]
|
||||
@@ -46,6 +46,7 @@ B<openssl> B<s_server>
|
||||
[B<-www>]
|
||||
[B<-WWW>]
|
||||
[B<-http_server_binmode>]
|
||||
[B<-no_ca_names>]
|
||||
[B<-servername>]
|
||||
[B<-servername_fatal>]
|
||||
[B<-tlsextdebug>]
|
||||
@@ -219,10 +220,10 @@ certificate and some require a certificate with a certain public key type:
|
||||
for example the DSS cipher suites require a certificate containing a DSS
|
||||
(DSA) key. If not specified then the filename F<server.pem> will be used.
|
||||
|
||||
=item B<-certform> B<DER>|B<PEM>
|
||||
=item B<-certform> B<DER>|B<PEM>|B<P12>
|
||||
|
||||
The server certificate file format; the default is B<PEM>.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
The server certificate file format.
|
||||
This option has no effect and is retained for backward compatibility only.
|
||||
|
||||
=item B<-cert_chain>
|
||||
|
||||
@@ -247,9 +248,10 @@ ServerHello extension will be returned.
|
||||
The private key to use. If not specified then the certificate file will
|
||||
be used.
|
||||
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<ENGINE>
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The key format; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-pass> I<val>
|
||||
@@ -275,14 +277,15 @@ A file containing untrusted certificates to use when attempting to build the
|
||||
server certificate chain when a certificate specified via the B<-dcert> option
|
||||
is in use.
|
||||
|
||||
=item B<-dcertform> B<DER>|B<PEM>
|
||||
=item B<-dcertform> B<DER>|B<PEM>|B<P12>
|
||||
|
||||
The format of the additional certificate file; the default is B<PEM>.
|
||||
See L<openssl(1)/Format Options>.
|
||||
The format of the additional certificate file.
|
||||
This option has no effect and is retained for backward compatibility only.
|
||||
|
||||
=item B<-dkeyform> B<DER>|B<PEM>|B<ENGINE>
|
||||
=item B<-dkeyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The format of the additional private key; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options>.
|
||||
|
||||
=item B<-dpass> I<val>
|
||||
@@ -411,6 +414,12 @@ Neither of these options can be used in conjunction with B<-early_data>.
|
||||
When acting as web-server (using option B<-WWW> or B<-HTTP>) open files requested
|
||||
by the client in binary mode.
|
||||
|
||||
=item B<-no_ca_names>
|
||||
|
||||
Disable TLS Extension CA Names. You may want to disable it for security reasons
|
||||
or for compatibility with some Windows TLS implementations crashing when this
|
||||
extension is larger than 1024 bytes.
|
||||
|
||||
=item B<-id_prefix> I<val>
|
||||
|
||||
Generate SSL/TLS session IDs prefixed by I<val>. This is mostly useful
|
||||
@@ -815,6 +824,12 @@ The -no_alt_chains option was added in OpenSSL 1.1.0.
|
||||
The
|
||||
-allow-no-dhe-kex and -prioritize_chacha options were added in OpenSSL 1.1.1.
|
||||
|
||||
All B<-keyform> and B<-dkeyform> values except B<ENGINE>
|
||||
have become obsolete in OpenSSL 3.0.0 and have no effect.
|
||||
|
||||
The B<-certform> and B<-dcertform> options have become obsolete in OpenSSL 3.0.0
|
||||
and have no effect.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -164,7 +164,7 @@ send an HTTP request for an appropriate page.
|
||||
|
||||
If a certificate is specified on the command line using the B<-cert>
|
||||
option it will not be used unless the server specifically requests
|
||||
a client certificate. Therefor merely including a client certificate
|
||||
a client certificate. Therefore merely including a client certificate
|
||||
on the command line is no guarantee that the certificate works.
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
@@ -32,7 +32,7 @@ B<openssl> B<smime>
|
||||
[B<-recip> I< file>]
|
||||
[B<-inform> B<DER>|B<PEM>|B<SMIME>]
|
||||
[B<-outform> B<DER>|B<PEM>|B<SMIME>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<ENGINE>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-passin> I<arg>]
|
||||
[B<-inkey> I<file_or_id>]
|
||||
[B<-out> I<file>]
|
||||
@@ -50,7 +50,7 @@ B<openssl> B<smime>
|
||||
{- $OpenSSL::safe::opt_r_synopsis -}
|
||||
{- $OpenSSL::safe::opt_v_synopsis -}
|
||||
{- $OpenSSL::safe::opt_provider_synopsis -}
|
||||
I<cert.pem> ...
|
||||
I<recipcert> ...
|
||||
|
||||
=for openssl ifdef engine
|
||||
|
||||
@@ -125,9 +125,10 @@ The output format of the PKCS#7 (S/MIME) structure (if one is being written);
|
||||
the default is B<SMIME>.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-keyform> B<DER>|B<PEM>
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The key format; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-stream>, B<-indef>, B<-noindef>
|
||||
@@ -235,7 +236,7 @@ option is present B<CRLF> is used instead.
|
||||
|
||||
Allows additional certificates to be specified. When signing these will
|
||||
be included with the message. When verifying these will be searched for
|
||||
the signers certificates. The certificates should be in PEM format.
|
||||
the signers certificates.
|
||||
|
||||
=item B<-signer> I<file>
|
||||
|
||||
@@ -291,7 +292,7 @@ Any verification errors cause the command to exit.
|
||||
|
||||
{- $OpenSSL::safe::opt_provider_item -}
|
||||
|
||||
=item I<cert.pem> ...
|
||||
=item I<recipcert> ...
|
||||
|
||||
One or more certificates of message recipients, used when encrypting
|
||||
a message.
|
||||
@@ -479,6 +480,9 @@ added in OpenSSL 1.0.0
|
||||
|
||||
The -no_alt_chains option was added in OpenSSL 1.1.0.
|
||||
|
||||
All B<-keyform> values except B<ENGINE> have become obsolete in OpenSSL 3.0.0
|
||||
and have no effect.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -16,7 +16,7 @@ B<openssl> B<spkac>
|
||||
[B<-in> I<filename>]
|
||||
[B<-out> I<filename>]
|
||||
[B<-key> I<keyfile>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<ENGINE>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-passin> I<arg>]
|
||||
[B<-challenge> I<string>]
|
||||
[B<-pubkey>]
|
||||
@@ -59,9 +59,10 @@ Create an SPKAC file using the private key in I<keyfile>. The
|
||||
B<-in>, B<-noout>, B<-spksect> and B<-verify> options are ignored if
|
||||
present.
|
||||
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<ENGINE>
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The key format; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-passin> I<arg>
|
||||
@@ -148,6 +149,11 @@ to be used in a "replay attack".
|
||||
L<openssl(1)>,
|
||||
L<openssl-ca(1)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
All B<-keyform> values except B<ENGINE> have become obsolete in OpenSSL 3.0.0
|
||||
and have no effect.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -99,7 +99,6 @@ with a B<->.
|
||||
|
||||
One or more certificates to verify. If no certificates are given,
|
||||
this command will attempt to read a certificate from standard input.
|
||||
Certificates must be in PEM format.
|
||||
If a certificate chain has multiple problems, this program tries to
|
||||
display all of them.
|
||||
|
||||
|
||||
@@ -11,9 +11,9 @@ B<openssl> B<x509>
|
||||
[B<-help>]
|
||||
[B<-inform> B<DER>|B<PEM>]
|
||||
[B<-outform> B<DER>|B<PEM>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<ENGINE>]
|
||||
[B<-CAform> B<DER>|B<PEM>]
|
||||
[B<-CAkeyform> B<DER>|B<PEM>|B<ENGINE>]
|
||||
[B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-CAform> B<DER>|B<PEM>|B<P12>]
|
||||
[B<-CAkeyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>]
|
||||
[B<-in> I<filename>]
|
||||
[B<-out> I<filename>]
|
||||
[B<-serial>]
|
||||
@@ -100,13 +100,18 @@ various sections.
|
||||
|
||||
Print out a usage message.
|
||||
|
||||
=item B<-inform> B<DER>|B<PEM>, B<-outform> B<DER>|B<PEM>
|
||||
=item B<-inform> B<DER>|B<PEM>
|
||||
|
||||
The input and formats; the default is B<PEM>.
|
||||
The CSR input format; the default is B<PEM>.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
The input is normally an X.509 certificate, but this can change if other
|
||||
options such as B<-req> are used.
|
||||
The input is normally an X.509 certificate file of any format,
|
||||
but this can change if other options such as B<-req> are used.
|
||||
|
||||
B<-outform> B<DER>|B<PEM>
|
||||
|
||||
The output format; the default is B<PEM>.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-in> I<filename>
|
||||
|
||||
@@ -355,8 +360,7 @@ can thus behave like a "mini CA".
|
||||
=item B<-signkey> I<arg>
|
||||
|
||||
This option causes the input file to be self signed using the supplied
|
||||
private key or engine. The private key's format is specified with the
|
||||
B<-keyform> option.
|
||||
private key or engine.
|
||||
|
||||
It sets the issuer name to the subject name (i.e., makes it self-issued)
|
||||
and changes the public key to the supplied value (unless overridden by
|
||||
@@ -392,14 +396,21 @@ certificate is being created from another certificate (for example with
|
||||
the B<-signkey> or the B<-CA> options). Normally all extensions are
|
||||
retained.
|
||||
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<ENGINE>
|
||||
=item B<-keyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The key format; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-CAform> B<DER>|B<PEM>, B<-CAkeyform> B<DER>|B<PEM>|B<ENGINE>
|
||||
=item B<-CAform> B<DER>|B<PEM>|B<P12>,
|
||||
|
||||
The format for the CA certificate and key; the default is B<PEM>.
|
||||
The format for the CA certificate.
|
||||
This option has no effect and is retained for backward compatibility.
|
||||
|
||||
=item B<-CAkeyform> B<DER>|B<PEM>|B<P12>|B<ENGINE>
|
||||
|
||||
The format for the CA key; the default is B<PEM>.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-days> I<arg>
|
||||
@@ -502,8 +513,6 @@ self-signed, for instance when the key cannot be used for signing, such as DH.
|
||||
It can also be used in conjunction with b<-new> and B<-subj> to directly
|
||||
generate a certificate containing any desired public key.
|
||||
|
||||
The format of the key file can be specified using the B<-keyform> option.
|
||||
|
||||
=item B<-subj> I<arg>
|
||||
|
||||
When a certificate is created set its subject name to the given value.
|
||||
@@ -821,6 +830,11 @@ of the distinguished name. In OpenSSL 1.0.0 and later it is based on a canonical
|
||||
version of the DN using SHA1. This means that any directories using the old
|
||||
form must have their links rebuilt using L<openssl-rehash(1)> or similar.
|
||||
|
||||
All B<-keyform> and B<-CAkeyform> values except B<ENGINE>
|
||||
have become obsolete in OpenSSL 3.0.0 and have no effect.
|
||||
|
||||
The B<-CAform> option has become obsolete in OpenSSL 3.0.0 and has no effect.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
+20
-16
@@ -525,7 +525,12 @@ parameters start with a minus sign:
|
||||
=head2 Format Options
|
||||
|
||||
Several OpenSSL commands can take input or generate output in a variety
|
||||
of formats. The list of acceptable formats, and the default, is
|
||||
of formats.
|
||||
Since OpenSSL 3.0 keys, single certificates, and CRLs can be read from
|
||||
files in any of the B<DER>, B<PEM>, or B<P12> formats,
|
||||
while specifying their input format is no more needed.
|
||||
|
||||
The list of acceptable formats, and the default, is
|
||||
described in each command documentation. The list of formats is
|
||||
described below. Both uppercase and lowercase are accepted.
|
||||
|
||||
@@ -618,6 +623,8 @@ The format of the input or output streams.
|
||||
=item B<-keyform> I<format>
|
||||
|
||||
Format of a private key input source.
|
||||
The only value with effect is B<ENGINE>; all others have become obsolete.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-CRLform> I<format>
|
||||
|
||||
@@ -789,12 +796,6 @@ OpenSSL command to generate an alternative chain.
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<-xchain_build>
|
||||
|
||||
Specify whether the application should build the certificate chain to be
|
||||
provided to the server for the extra certificates via the B<-xkey>,
|
||||
B<-xcert>, and B<-xchain> options.
|
||||
|
||||
=item B<-xkey> I<infile>, B<-xcert> I<infile>, B<-xchain>
|
||||
|
||||
Specify an extra certificate, private key and certificate chain. These behave
|
||||
@@ -802,21 +803,21 @@ in the same manner as the B<-cert>, B<-key> and B<-cert_chain> options. When
|
||||
specified, the callback returning the first valid chain will be in use by the
|
||||
client.
|
||||
|
||||
=item B<-xcertform> B<DER>|B<PEM>, B<-xkeyform> B<DER>|B<PEM>
|
||||
|
||||
The input format for the extra certificate and key, respectively.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
|
||||
=item B<-xchain_build>
|
||||
|
||||
Specify whether the application should build the certificate chain to be
|
||||
provided to the server for the extra certificates via the B<-xkey>,
|
||||
B<-xcert>, and B<-xchain> options.
|
||||
|
||||
=item B<-xcertform> B<DER>|B<PEM>, B<-xkeyform> B<DER>|B<PEM>
|
||||
=item B<-xcertform> B<DER>|B<PEM>|B<P12>
|
||||
|
||||
The input format for the extra certificate and key, respectively.
|
||||
See L<openssl(1)/Format Options> for details.
|
||||
The input format for the extra certificate.
|
||||
This option has no effect and is retained for backward compatibility only.
|
||||
|
||||
=item B<-xkeyform> B<DER>|B<PEM>|B<P12>
|
||||
|
||||
The input format for the extra key.
|
||||
This option has no effect and is retained for backward compatibility only.
|
||||
|
||||
=back
|
||||
|
||||
@@ -1124,7 +1125,7 @@ values larger than 127, as described in B<esc_ctrl>.
|
||||
|
||||
Escapes some characters by surrounding the entire string with quotation
|
||||
marks, C<">.
|
||||
Without this option, individual special characters are preceeded with
|
||||
Without this option, individual special characters are preceded with
|
||||
a backslash character, C<\>.
|
||||
|
||||
=item B<utf8>
|
||||
@@ -1403,6 +1404,9 @@ manual pages.
|
||||
The B<-issuer_checks> option is deprecated as of OpenSSL 1.1.0 and
|
||||
is silently ignored.
|
||||
|
||||
The B<-xcertform> and B<-xkeyform> options
|
||||
are obsolete since OpenSSL 3.0.0 and have no effect.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
ASN1_INTEGER_new, ASN1_INTEGER_free - ASN1_INTEGER allocation functions
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
=for openssl generic
|
||||
|
||||
#include <openssl/asn1.h>
|
||||
|
||||
ASN1_INTEGER *ASN1_INTEGER_new(void);
|
||||
void ASN1_INTEGER_free(ASN1_INTEGER *a);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
ASN1_INTEGER_new() returns an allocated B<ASN1_INTEGER> structure.
|
||||
|
||||
ASN1_INTEGER_free() frees up a single B<ASN1_INTEGER> object.
|
||||
|
||||
B<ASN1_INTEGER> structure representing the ASN.1 INTEGER type
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
ASN1_INTEGER_new() return a valid B<ASN1_INTEGER> structure or NULL
|
||||
if an error occurred.
|
||||
|
||||
ASN1_INTEGER_free() does not return a value.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<ERR_get_error(3)>
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
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
|
||||
L<https://www.openssl.org/source/license.html>.
|
||||
|
||||
=cut
|
||||
@@ -0,0 +1,52 @@
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
CMS_EnvelopedData_create - Create CMS envelope
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
#include <openssl/cms.h>
|
||||
|
||||
CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
CMS_EnvelopedData_create() creates a B<CMS_ContentInfo> structure with
|
||||
a type B<NID_pkcs7_enveloped>. B<cipher> is the symmetric cipher to use.
|
||||
|
||||
The algorithm passed in the B<cipher> parameter must support ASN1 encoding of
|
||||
its parameters.
|
||||
|
||||
The recipients can be added later using L<CMS_add1_recipient_cert(3)> or
|
||||
L<CMS_add0_recipient_key(3)>.
|
||||
|
||||
The B<CMS_ContentInfo> structure needs to be finalized using L<CMS_final(3)>
|
||||
and then freed using L<CMS_ContentInfo_free(3)>.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
Although CMS_EnvelopedData_create() allocates a new B<CMS_ContentInfo>
|
||||
structure it is usually not used in applications. The wrappers
|
||||
L<CMS_encrypt(3)> and L<CMS_decrypt(3)> are often used instead.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
If the allocation fails, CMS_EnvelopedData_create() returns NULL and sets
|
||||
an error code that can be obtained by L<ERR_get_error(3)>.
|
||||
Otherwise it returns a pointer to the newly allocated structure.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<ERR_get_error(3)>, L<CMS_encrypt(3)>, L<CMS_decrypt(3)>, L<CMS_final(3)>
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
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
|
||||
L<https://www.openssl.org/source/license.html>.
|
||||
|
||||
=cut
|
||||
@@ -64,27 +64,31 @@ functions that wrap around the utility B<OPENSSL_sk_> API.
|
||||
In the description here, B<I<TYPE>> is used
|
||||
as a placeholder for any of the OpenSSL datatypes, such as B<X509>.
|
||||
|
||||
STACK_OF() returns the name for a stack of the specified B<I<TYPE>>.
|
||||
DEFINE_STACK_OF() creates set of functions for a stack of B<I<TYPE>>. This
|
||||
will mean that type B<I<TYPE>> is stored in each stack, the type is referenced by
|
||||
The STACK_OF() macro returns the name for a stack of the specified B<I<TYPE>>.
|
||||
This is an opaque pointer to a structure declaration.
|
||||
This can be used in every header file that references the stack.
|
||||
There are several B<DEFINE...> macros that create static inline functions
|
||||
for all of the functions described on this page.
|
||||
This should normally be used in one source file, and the stack manipulation
|
||||
is wrapped with application-specific functions.
|
||||
|
||||
DEFINE_STACK_OF() creates set of functions for a stack of B<I<TYPE>> elements.
|
||||
The type is referenced by
|
||||
B<STACK_OF>(B<I<TYPE>>) and each function name begins with B<sk_I<TYPE>_>.
|
||||
For example:
|
||||
|
||||
TYPE *sk_TYPE_value(STACK_OF(TYPE) *sk, int idx);
|
||||
|
||||
DEFINE_STACK_OF_CONST() is identical to DEFINE_STACK_OF() except
|
||||
each element is constant. For example:
|
||||
each element is constant.
|
||||
|
||||
/* DEFINE_STACK_OF(TYPE) */
|
||||
TYPE *sk_TYPE_value(STACK_OF(TYPE) *sk, int idx);
|
||||
/* DEFINE_STACK_OF_CONST(TYPE) */
|
||||
const TYPE *sk_TYPE_value(STACK_OF(TYPE) *sk, int idx);
|
||||
|
||||
DEFINE_SPECIAL_STACK_OF() defines a stack of B<I<TYPE>> but
|
||||
each function uses B<FUNCNAME> in the function name. For example:
|
||||
DEFINE_SPECIAL_STACK_OF() and DEFINE_SPECIAL_STACK_OF_CONST() are similar
|
||||
except B<FUNCNAME> is used in the function names:
|
||||
|
||||
/* DEFINE_SPECIAL_STACK_OF(TYPE, FUNCNAME) */
|
||||
TYPE *sk_FUNCNAME_value(STACK_OF(TYPE) *sk, int idx);
|
||||
|
||||
DEFINE_SPECIAL_STACK_OF_CONST() is similar except that each element is
|
||||
constant:
|
||||
|
||||
/* DEFINE_SPECIAL_STACK_OF(TYPE, FUNCNAME) */
|
||||
const TYPE *sk_FUNCNAME_value(STACK_OF(TYPE) *sk, int idx);
|
||||
|
||||
B<sk_I<TYPE>_num>() returns the number of elements in I<sk> or -1 if I<sk> is
|
||||
@@ -266,7 +270,7 @@ B<sk_I<TYPE>_reserve>() and B<sk_I<TYPE>_new_reserve>() were added in OpenSSL
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
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
|
||||
|
||||
+12
-12
@@ -9,39 +9,39 @@ security bits
|
||||
|
||||
#include <openssl/dh.h>
|
||||
|
||||
int DH_bits(const DH *dh);
|
||||
|
||||
Deprecated since OpenSSL 3.0, can be hidden entirely by defining
|
||||
B<OPENSSL_API_COMPAT> with a suitable version value, see
|
||||
L<openssl_user_macros(7)>:
|
||||
|
||||
int DH_size(const DH *dh);
|
||||
|
||||
int DH_bits(const DH *dh);
|
||||
|
||||
int DH_security_bits(const DH *dh);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
All of the functions described on this page are deprecated.
|
||||
Applications should instead use L<EVP_PKEY_bits(3)>,
|
||||
L<EVP_PKEY_security_bits(3)> and L<EVP_PKEY_size(3)>.
|
||||
DH_bits() returns the number of significant bits.
|
||||
|
||||
B<dh> and B<dh-E<gt>p> must not be B<NULL>.
|
||||
|
||||
The remaining functions described on this page are deprecated.
|
||||
Applications should instead use L<EVP_PKEY_security_bits(3)> and
|
||||
L<EVP_PKEY_size(3)>.
|
||||
|
||||
DH_size() returns the Diffie-Hellman prime size in bytes. It can be used
|
||||
to determine how much memory must be allocated for the shared secret
|
||||
computed by L<DH_compute_key(3)>.
|
||||
|
||||
DH_bits() returns the number of significant bits.
|
||||
|
||||
B<dh> and B<dh-E<gt>p> must not be B<NULL>.
|
||||
|
||||
DH_security_bits() returns the number of security bits of the given B<dh>
|
||||
key. See L<BN_security_bits(3)>.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
DH_size() returns the prime size of Diffie-Hellman in bytes.
|
||||
|
||||
DH_bits() returns the number of bits in the key.
|
||||
|
||||
DH_size() returns the prime size of Diffie-Hellman in bytes.
|
||||
|
||||
DH_security_bits() returns the number of security bits.
|
||||
|
||||
=head1 SEE ALSO
|
||||
@@ -52,7 +52,7 @@ L<BN_num_bits(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
All of these functions were deprecated in OpenSSL 3.0.
|
||||
The DH_size() and DH_security_bits() functions were deprecated in OpenSSL 3.0.
|
||||
|
||||
The DH_bits() function was added in OpenSSL 1.1.0.
|
||||
|
||||
|
||||
+12
-10
@@ -8,19 +8,24 @@ DSA_size, DSA_bits, DSA_security_bits - get DSA signature size, key bits or secu
|
||||
|
||||
#include <openssl/dsa.h>
|
||||
|
||||
int DSA_bits(const DSA *dsa);
|
||||
|
||||
Deprecated since OpenSSL 3.0, can be hidden entirely by defining
|
||||
B<OPENSSL_API_COMPAT> with a suitable version value, see
|
||||
L<openssl_user_macros(7)>:
|
||||
|
||||
int DSA_size(const DSA *dsa);
|
||||
int DSA_bits(const DSA *dsa);
|
||||
|
||||
int DSA_security_bits(const DSA *dsa);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
All of the functions described on this page are deprecated.
|
||||
Applications should instead use L<EVP_PKEY_bits(3)>,
|
||||
L<EVP_PKEY_security_bits(3)> and L<EVP_PKEY_size(3)>.
|
||||
DSA_bits() returns the number of bits in key B<dsa>: this is the number
|
||||
of bits in the B<p> parameter.
|
||||
|
||||
The remaining functions described on this page are deprecated.
|
||||
Applications should instead use L<EVP_PKEY_security_bits(3)> and
|
||||
L<EVP_PKEY_size(3)>.
|
||||
|
||||
DSA_size() returns the maximum size of an ASN.1 encoded DSA signature
|
||||
for key B<dsa> in bytes. It can be used to determine how much memory must
|
||||
@@ -28,18 +33,15 @@ be allocated for a DSA signature.
|
||||
|
||||
B<dsa-E<gt>q> must not be B<NULL>.
|
||||
|
||||
DSA_bits() returns the number of bits in key B<dsa>: this is the number
|
||||
of bits in the B<p> parameter.
|
||||
|
||||
DSA_security_bits() returns the number of security bits of the given B<dsa>
|
||||
key. See L<BN_security_bits(3)>.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
DSA_size() returns the signature size in bytes.
|
||||
|
||||
DSA_bits() returns the number of bits in the key.
|
||||
|
||||
DSA_size() returns the signature size in bytes.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<EVP_PKEY_bits(3)>,
|
||||
@@ -49,7 +51,7 @@ L<DSA_new(3)>, L<DSA_sign(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
All of these functions were deprecated in OpenSSL 3.0.
|
||||
The DSA_size() and DSA_security_bits() functions were deprecated in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
|
||||
@@ -18,13 +18,15 @@ EC_POINT_add, EC_POINT_dbl, EC_POINT_invert, EC_POINT_is_at_infinity, EC_POINT_i
|
||||
int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx);
|
||||
int EC_POINTs_make_affine(const EC_GROUP *group, size_t num,
|
||||
EC_POINT *points[], BN_CTX *ctx);
|
||||
int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, size_t num,
|
||||
const EC_POINT *p[], const BIGNUM *m[], BN_CTX *ctx);
|
||||
int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n,
|
||||
const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx);
|
||||
int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
|
||||
int EC_GROUP_have_precompute_mult(const EC_GROUP *group);
|
||||
|
||||
Deprecated since OpenSSL 3.0:
|
||||
|
||||
int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, size_t num,
|
||||
const EC_POINT *p[], const BIGNUM *m[], BN_CTX *ctx);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@@ -43,12 +45,14 @@ The functions EC_POINT_make_affine and EC_POINTs_make_affine force the internal
|
||||
co-ordinate system. In the case of EC_POINTs_make_affine the value B<num> provides the number of points in the array B<points> to be
|
||||
forced.
|
||||
|
||||
EC_POINT_mul is a convenient interface to EC_POINTs_mul: it calculates the value generator * B<n> + B<q> * B<m> and stores the result in B<r>.
|
||||
EC_POINT_mul calculates the value generator * B<n> + B<q> * B<m> and stores the result in B<r>.
|
||||
The value B<n> may be NULL in which case the result is just B<q> * B<m> (variable point multiplication). Alternatively, both B<q> and B<m> may be NULL, and B<n> non-NULL, in which case the result is just generator * B<n> (fixed point multiplication).
|
||||
When performing a single fixed or variable point multiplication, the underlying implementation uses a constant time algorithm, when the input scalar (either B<n> or B<m>) is in the range [0, ec_group_order).
|
||||
|
||||
Although deprecated in OpenSSL 3.0 and should no longer be used,
|
||||
EC_POINTs_mul calculates the value generator * B<n> + B<q[0]> * B<m[0]> + ... + B<q[num-1]> * B<m[num-1]>. As for EC_POINT_mul the value B<n> may be NULL or B<num> may be zero.
|
||||
When performing a fixed point multiplication (B<n> is non-NULL and B<num> is 0) or a variable point multiplication (B<n> is NULL and B<num> is 1), the underlying implementation uses a constant time algorithm, when the input scalar (either B<n> or B<m[0]>) is in the range [0, ec_group_order).
|
||||
Modern versions should instead use EC_POINT_mul(), combined (if needed) with EC_POINT_add() in such rare circumstances.
|
||||
|
||||
The function EC_GROUP_precompute_mult stores multiples of the generator for faster point multiplication, whilst
|
||||
EC_GROUP_have_precompute_mult tests whether precomputation has already been done. See L<EC_GROUP_copy(3)> for information
|
||||
@@ -74,6 +78,10 @@ L<crypto(7)>, L<EC_GROUP_new(3)>, L<EC_GROUP_copy(3)>,
|
||||
L<EC_POINT_new(3)>, L<EC_KEY_new(3)>,
|
||||
L<EC_GFp_simple_method(3)>, L<d2i_ECPKParameters(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
EC_POINTs_mul() was deprecated in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2013-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -226,7 +226,7 @@ EVP_DigestInit_ex() can be called to initialize a new digest operation.
|
||||
=item EVP_DigestFinalXOF()
|
||||
|
||||
Interfaces to extendable-output functions, XOFs, such as SHAKE128 and SHAKE256.
|
||||
It retrieves the digest value from I<ctx> and places it in I<len>-sized <B>md.
|
||||
It retrieves the digest value from I<ctx> and places it in I<len>-sized I<md>.
|
||||
After calling this function no additional calls to EVP_DigestUpdate() can be
|
||||
made, but EVP_DigestInit_ex() can be called to initialize a new operation.
|
||||
|
||||
|
||||
@@ -94,16 +94,16 @@ TODO Write a set of cookbook documents and link to them.
|
||||
* and secure application is expected to use BIGNUMs, and to build
|
||||
* this array dynamically.
|
||||
*/
|
||||
const unsigned long rsa_n = 0xbc747fc5;
|
||||
const unsigned long rsa_e = 0x10001;
|
||||
const unsigned long rsa_d = 0x7b133399;
|
||||
const OSSL_PARAM[] = {
|
||||
unsigned long rsa_n = 0xbc747fc5;
|
||||
unsigned long rsa_e = 0x10001;
|
||||
unsigned long rsa_d = 0x7b133399;
|
||||
OSSL_PARAM params[] = {
|
||||
OSSL_PARAM_ulong("n", &rsa_n),
|
||||
OSSL_PARAM_ulong("e", &rsa_e),
|
||||
OSSL_PARAM_ulong("d", &rsa_d),
|
||||
OSSL_PARAM_END
|
||||
};
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
EVP_PKEY_CTX *ctx = EVP_PKEY_CTX_new_from_name(NULL, "RSA", NULL);
|
||||
|
||||
+43
-10
@@ -5,7 +5,9 @@
|
||||
EVP_PKEY_new,
|
||||
EVP_PKEY_up_ref,
|
||||
EVP_PKEY_free,
|
||||
EVP_PKEY_new_raw_private_key_with_libctx,
|
||||
EVP_PKEY_new_raw_private_key,
|
||||
EVP_PKEY_new_raw_public_key_with_libctx,
|
||||
EVP_PKEY_new_raw_public_key,
|
||||
EVP_PKEY_new_CMAC_key,
|
||||
EVP_PKEY_new_mac_key,
|
||||
@@ -21,8 +23,18 @@ EVP_PKEY_get_raw_public_key
|
||||
int EVP_PKEY_up_ref(EVP_PKEY *key);
|
||||
void EVP_PKEY_free(EVP_PKEY *key);
|
||||
|
||||
EVP_PKEY *EVP_PKEY_new_raw_private_key_with_libctx(OPENSSL_CTX *libctx,
|
||||
const char *keytype,
|
||||
const char *propq,
|
||||
const unsigned char *key,
|
||||
size_t keylen);
|
||||
EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e,
|
||||
const unsigned char *key, size_t keylen);
|
||||
EVP_PKEY *EVP_PKEY_new_raw_public_key_with_libctx(OPENSSL_CTX *libctx,
|
||||
const char *keytype,
|
||||
const char *propq,
|
||||
const unsigned char *key,
|
||||
size_t keylen);
|
||||
EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e,
|
||||
const unsigned char *key, size_t keylen);
|
||||
EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv,
|
||||
@@ -46,16 +58,34 @@ EVP_PKEY_up_ref() increments the reference count of B<key>.
|
||||
EVP_PKEY_free() decrements the reference count of B<key> and, if the reference
|
||||
count is zero, frees it up. If B<key> is NULL, nothing is done.
|
||||
|
||||
EVP_PKEY_new_raw_private_key() allocates a new B<EVP_PKEY>. If B<e> is non-NULL
|
||||
then the new B<EVP_PKEY> structure is associated with the engine B<e>. The
|
||||
B<type> argument indicates what kind of key this is. The value should be a NID
|
||||
for a public key algorithm that supports raw private keys, i.e. one of
|
||||
B<EVP_PKEY_HMAC>, B<EVP_PKEY_POLY1305>, B<EVP_PKEY_SIPHASH>, B<EVP_PKEY_X25519>,
|
||||
B<EVP_PKEY_ED25519>, B<EVP_PKEY_X448> or B<EVP_PKEY_ED448>. B<key> points to the
|
||||
raw private key data for this B<EVP_PKEY> which should be of length B<keylen>.
|
||||
The length should be appropriate for the type of the key. The public key data
|
||||
will be automatically derived from the given private key data (if appropriate
|
||||
for the algorithm type).
|
||||
EVP_PKEY_new_raw_private_key_with_libctx() allocates a new B<EVP_PKEY>. Unless
|
||||
an engine should be used for the key type, a provider for the key is found using
|
||||
the library context I<libctx> and the property query string I<propq>. The
|
||||
I<keytype> argument indicates what kind of key this is. The value should be a
|
||||
string for a public key algorithm that supports raw private keys, i.e one of
|
||||
"POLY1305", "SIPHASH", "X25519", "ED25519", "X448" or "ED448". Note that you may
|
||||
also use "HMAC" which is not a public key algorithm but is treated as such by
|
||||
some OpenSSL APIs. You are encouraged to use the EVP_MAC APIs instead for HMAC
|
||||
(see L<EVP_MAC(3)>). I<key> points to the raw private key data for this
|
||||
B<EVP_PKEY> which should be of length I<keylen>. The length should be
|
||||
appropriate for the type of the key. The public key data will be automatically
|
||||
derived from the given private key data (if appropriate for the algorithm type).
|
||||
|
||||
EVP_PKEY_new_raw_private_key() does the same as
|
||||
EVP_PKEY_new_raw_private_key_with_libctx() except that the default library
|
||||
context and default property query are used instead. If B<e> is non-NULL then
|
||||
the new B<EVP_PKEY> structure is associated with the engine B<e>. The B<type>
|
||||
argument indicates what kind of key this is. The value should be a NID for a
|
||||
public key algorithm that supports raw private keys, i.e. one of
|
||||
B<EVP_PKEY_POLY1305>, B<EVP_PKEY_SIPHASH>, B<EVP_PKEY_X25519>,
|
||||
B<EVP_PKEY_ED25519>, B<EVP_PKEY_X448> or B<EVP_PKEY_ED448>. As for
|
||||
EVP_PKEY_new_raw_private_key_with_libctx() you may also use B<EVP_PKEY_HMAC>.
|
||||
|
||||
EVP_PKEY_new_raw_public_key_with_libctx() works in the same way as
|
||||
EVP_PKEY_new_raw_private_key_with_libctx() except that B<key> points to the raw
|
||||
public key data. The B<EVP_PKEY> structure will be initialised without any
|
||||
private key information. Algorithm types that support raw public keys are
|
||||
"X25519", "ED25519", "X448" or "ED448".
|
||||
|
||||
EVP_PKEY_new_raw_public_key() works in the same way as
|
||||
EVP_PKEY_new_raw_private_key() except that B<key> points to the raw public key
|
||||
@@ -127,6 +157,9 @@ EVP_PKEY_new_raw_private_key(), EVP_PKEY_new_raw_public_key(),
|
||||
EVP_PKEY_new_CMAC_key(), EVP_PKEY_new_raw_private_key() and
|
||||
EVP_PKEY_get_raw_public_key() functions were added in OpenSSL 1.1.1.
|
||||
|
||||
The EVP_PKEY_new_raw_private_key_with_libctx and
|
||||
EVP_PKEY_new_raw_public_key_with_libctx functions were added in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
=head1 NAME
|
||||
|
||||
EVP_set_default_properties
|
||||
EVP_set_default_properties, EVP_default_properties_enable_fips,
|
||||
EVP_default_properties_is_fips_enabled
|
||||
- Set default properties for future algorithm fetches
|
||||
|
||||
=head1 SYNOPSIS
|
||||
@@ -10,6 +11,8 @@ EVP_set_default_properties
|
||||
#include <openssl/evp.h>
|
||||
|
||||
int EVP_set_default_properties(OPENSSL_CTX *libctx, const char *propq);
|
||||
int EVP_default_properties_enable_fips(OPENSSL_CTX *libctx, int enable);
|
||||
int EVP_default_properties_is_fips_enabled(OPENSSL_CTX *libctx);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@@ -27,10 +30,22 @@ given with I<libctx> (NULL signifies the default library context).
|
||||
Any previous default property for the specified library context will
|
||||
be dropped.
|
||||
|
||||
EVP_default_properties_enable_fips() sets the 'fips=yes' to be a default property
|
||||
if I<enable> is non zero, otherwise it clears 'fips' from the default property
|
||||
query for the given I<libctx>. It merges the fips default property query with any
|
||||
existing query strings that have been set via EVP_set_default_properties().
|
||||
|
||||
EVP_default_properties_is_fips_enabled() indicates if 'fips=yes' is a default
|
||||
property for the given I<libctx>.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
EVP_set_default_properties() returns 1 on success, or 0 on failure.
|
||||
The latter adds an error on the error stack.
|
||||
EVP_set_default_properties() and EVP_default_properties_enable_fips() return 1
|
||||
on success, or 0 on failure. An error is placed on the the error stack if a
|
||||
failure occurs.
|
||||
|
||||
EVP_default_properties_is_fips_enabled() returns 1 if the 'fips=yes' default
|
||||
property is set for the given I<libctx>, otherwise it returns 0.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
@@ -42,7 +57,7 @@ The functions described here were added in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2019-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
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
|
||||
|
||||
@@ -28,7 +28,7 @@ OSSL_CMP_CTX_set0_trustedStore,
|
||||
OSSL_CMP_CTX_get0_trustedStore,
|
||||
OSSL_CMP_CTX_set1_untrusted_certs,
|
||||
OSSL_CMP_CTX_get0_untrusted_certs,
|
||||
OSSL_CMP_CTX_set1_clCert,
|
||||
OSSL_CMP_CTX_set1_cert,
|
||||
OSSL_CMP_CTX_set1_pkey,
|
||||
OSSL_CMP_CTX_set1_referenceValue,
|
||||
OSSL_CMP_CTX_set1_secretValue,
|
||||
@@ -102,7 +102,7 @@ OSSL_CMP_CTX_set1_senderNonce
|
||||
STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted_certs(const OSSL_CMP_CTX *ctx);
|
||||
|
||||
/* client authentication: */
|
||||
int OSSL_CMP_CTX_set1_clCert(OSSL_CMP_CTX *ctx, X509 *cert);
|
||||
int OSSL_CMP_CTX_set1_cert(OSSL_CMP_CTX *ctx, X509 *cert);
|
||||
int OSSL_CMP_CTX_set1_pkey(OSSL_CMP_CTX *ctx, EVP_PKEY *pkey);
|
||||
int OSSL_CMP_CTX_set1_referenceValue(OSSL_CMP_CTX *ctx,
|
||||
const unsigned char *ref, int len);
|
||||
@@ -226,18 +226,18 @@ The following options can be set:
|
||||
|
||||
=item B<OSSL_CMP_OPT_DIGEST_ALGNID>
|
||||
|
||||
The digest algorithm NID to be used in RFC 4210's MSG_SIG_ALG,
|
||||
if applicable used for message protection and Proof-of-Possession.
|
||||
The NID of the digest algorithm to be used in RFC 4210's MSG_SIG_ALG
|
||||
for signature-based message protection and Proof-of-Possession (POPO).
|
||||
Default is SHA256.
|
||||
|
||||
OSSL_CMP_OPT_OWF_ALGNID
|
||||
The digest algorithm NID to be used as one-way function (OWF)
|
||||
in RFC 4210's MSG_MAC_ALG, if applicable used for message protection.
|
||||
=item B<OSSL_CMP_OPT_OWF_ALGNID>
|
||||
The NID of the digest algorithm to be used as one-way function (OWF)
|
||||
in RFC 4210's MSG_MAC_ALG for PBM-based message protection.
|
||||
Default is SHA256.
|
||||
|
||||
OSSL_CMP_OPT_MAC_ALGNID
|
||||
The MAC algorithm NID to be used in RFC 4210's MSG_MAC_ALG,
|
||||
if applicable used for message protection.
|
||||
=item B<OSSL_CMP_OPT_MAC_ALGNID>
|
||||
The NID of the MAC algorithm to be used in RFC 4210's MSG_MAC_ALG
|
||||
for PBM-based message protection.
|
||||
Default is HMAC-SHA1 as per RFC 4210.
|
||||
|
||||
=item B<OSSL_CMP_OPT_REVOCATION_REASON>
|
||||
@@ -403,26 +403,26 @@ parameter the entry is cleared.
|
||||
OSSL_CMP_CTX_get0_trustedStore() returns a pointer to the certificate store
|
||||
containing trusted root CA certificates, which may be empty if unset.
|
||||
|
||||
OSSL_CMP_CTX_set1_untrusted_certs() takes over a list of certificates containing
|
||||
non-trusted intermediate certs used for path construction in authentication
|
||||
of the CMP server and potentially others (TLS server, newly enrolled cert).
|
||||
OSSL_CMP_CTX_set1_untrusted_certs() sets up a list of non-trusted certificates
|
||||
of intermediate CAs that may be useful for path construction when authenticating
|
||||
the CMP server and when verifying newly enrolled certificates.
|
||||
The reference counts of those certificates handled successfully are increased.
|
||||
|
||||
OSSL_CMP_CTX_get0_untrusted_certs(OSSL_CMP_CTX *ctx) returns a pointer to the
|
||||
list of untrusted certs, which my be empty if unset.
|
||||
list of untrusted certs, which may be empty if unset.
|
||||
|
||||
OSSL_CMP_CTX_set1_clCert() sets the client certificate in the given B<ctx>.
|
||||
The public key of this B<clCert> must correspond to
|
||||
OSSL_CMP_CTX_set1_cert() sets the certificate used for CMP message protection.
|
||||
The public key of this B<cert> must correspond to
|
||||
the private key set via B<OSSL_CMP_CTX_set1_pkey()>.
|
||||
When using signature-based protection of CMP request messages
|
||||
this "protection certificate" will be included first in the extraCerts field.
|
||||
The subject of this B<clCert> will be used as the "sender" field
|
||||
The subject of this B<cert> will be used as the "sender" field
|
||||
of outgoing CMP messages, with the fallback being
|
||||
the B<subjectName> set via B<OSSL_CMP_CTX_set1_subjectName()>.
|
||||
The B<cert> argument may be NULL to clear the entry.
|
||||
|
||||
OSSL_CMP_CTX_set1_pkey() sets the private key corresponding to
|
||||
the client certificate B<clCert> set via B<OSSL_CMP_CTX_set1_clCert()>.
|
||||
OSSL_CMP_CTX_set1_pkey() sets the private key corresponding to the
|
||||
protecting certificate B<cert> set via B<OSSL_CMP_CTX_set1_cert()>.
|
||||
This key is used create signature-based protection (protectionAlg = MSG_SIG_ALG)
|
||||
of outgoing messages
|
||||
unless a PBM secret has been set via B<OSSL_CMP_CTX_set1_secretValue()>.
|
||||
@@ -438,11 +438,11 @@ PBM-based protection takes precedence over signature-based protection.
|
||||
OSSL_CMP_CTX_set1_referenceValue() sets the given referenceValue B<ref> with
|
||||
length B<len> in the given B<ctx> or clears it if the B<ref> argument is NULL.
|
||||
According to RFC 4210 section 5.1.1, if no value for the "sender" field in
|
||||
CMP message headers can be determined (i.e., no B<clCert> and no B<subjectName>
|
||||
is given) then the "sender" field will contain the NULL-DN
|
||||
CMP message headers can be determined (i.e., no protecting certificate B<cert>
|
||||
and no B<subjectName> is given) then the "sender" field will contain the NULL-DN
|
||||
and the senderKID field of the CMP message header must be set.
|
||||
When signature-based protection is used the senderKID will be set to
|
||||
the subjectKeyIdentifier of the <clCert> as far as present.
|
||||
the subjectKeyIdentifier of the protecting B<cert> as far as present.
|
||||
If not present or when PBM-based protection is used
|
||||
the B<ref> value is taken as the fallback value for the senderKID.
|
||||
|
||||
@@ -451,7 +451,7 @@ PKIHeader of a request message, i.e. the X509 name of the (CA) server.
|
||||
Setting is overruled by subject of B<srvCert> if set.
|
||||
If neither B<srvCert> nor recipient are set, the recipient of the PKI message is
|
||||
determined in the following order: issuer, issuer of old cert (oldCert),
|
||||
issuer of client cert (B<clCert>), else NULL-DN.
|
||||
issuer of protecting certificate (B<cert>), else NULL-DN.
|
||||
When a response is received, its sender must match the recipient of the request.
|
||||
|
||||
OSSL_CMP_CTX_push0_geninfo_ITAV() adds B<itav> to the stack in the B<ctx> to be
|
||||
@@ -481,7 +481,7 @@ the CertTemplate structure when requesting a new cert. For Key Update Requests
|
||||
see B<OSSL_CMP_CTX_set1_oldCert()>. This default is used for Initialization
|
||||
Requests (IR) and Certification Requests (CR) only if no SANs are set.
|
||||
The B<subjectName> is also used as the "sender" field for outgoing CMP messages
|
||||
if no B<clCert> has been set (e.g., in case requests are protected using PBM).
|
||||
if no B<cert> has been set (e.g., in case requests are protected using PBM).
|
||||
|
||||
OSSL_CMP_CTX_push1_subjectAltName() adds the given X509 name to the list of
|
||||
alternate names on the certificate template request. This cannot be used if
|
||||
@@ -507,7 +507,7 @@ to the X509_EXTENSIONS of the requested certificate template.
|
||||
|
||||
OSSL_CMP_CTX_set1_oldCert() sets the old certificate to be updated in
|
||||
Key Update Requests (KUR) or to be revoked in Revocation Requests (RR).
|
||||
It must be given for RR, else it defaults to B<clCert>.
|
||||
It must be given for RR, else it defaults to the protecting B<cert>.
|
||||
The B<reference certificate> determined in this way, if any, is also used for
|
||||
deriving default subject DN and Subject Alternative Names for IR, CR, and KUR.
|
||||
Its issuer, if any, is used as default recipient in the CMP message header.
|
||||
@@ -608,53 +608,57 @@ All other functions return 1 on success, 0 on error.
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
The following code does an Initialization Request:
|
||||
The following code omits error handling.
|
||||
|
||||
cmp_ctx = OSSL_CMP_CTX_new();
|
||||
OSSL_CMP_CTX_set1_server(cmp_ctx, address);
|
||||
OSSL_CMP_CTX_set1_referenceValue(cmp_ctx, ref, ref_len);
|
||||
OSSL_CMP_CTX_set1_secretValue(cmp_ctx, sec, sec_len);
|
||||
OSSL_CMP_CTX_set0_newPkey(cmp_ctx, new_pkey, 1);
|
||||
OSSL_CMP_CTX_set1_caCert(cmp_ctx, ca_cert);
|
||||
|
||||
initialClCert = OSSL_CMP_exec_IR_ses(cmp_ctx);
|
||||
|
||||
The following code does an Initialization Request using an
|
||||
external identity certificate (RFC 4210, Appendix E.7):
|
||||
|
||||
cmp_ctx = OSSL_CMP_CTX_new();
|
||||
OSSL_CMP_CTX_set1_server(cmp_ctx, sname);
|
||||
OSSL_CMP_CTX_set1_clCert(cmp_ctx, cl_cert);
|
||||
OSSL_CMP_CTX_set1_pkey(cmp_ctx, pkey);
|
||||
OSSL_CMP_CTX_set0_newPkey(cmp_ctx, new_pkey, 1);
|
||||
OSSL_CMP_CTX_set1_caCert(cmp_ctx, ca_cert);
|
||||
|
||||
initialClCert = OSSL_CMP_exec_IR_ses(cmp_ctx);
|
||||
|
||||
Here externalCert is an X509 certificate granted to the EE by another CA
|
||||
which is trusted by the current CA the code will connect to.
|
||||
|
||||
|
||||
The following code does a Key Update Request:
|
||||
|
||||
cmp_ctx = OSSL_CMP_CTX_new();
|
||||
OSSL_CMP_CTX_set1_server(cmp_ctx, url);
|
||||
OSSL_CMP_CTX_set1_pkey(cmp_ctx, pkey);
|
||||
OSSL_CMP_CTX_set0_newPkey(cmp_ctx, new_pkey, 1);
|
||||
OSSL_CMP_CTX_set1_clCert(cmp_ctx, cl_cert);
|
||||
OSSL_CMP_CTX_set1_caCert(cmp_ctx, ca_cert);
|
||||
|
||||
updatedClCert = OSSL_CMP_exec_KUR_ses(cmp_ctx);
|
||||
|
||||
The following code (which omits error handling) sends a General Message
|
||||
including, as an example, the id-it-signKeyPairTypes OID and prints info on
|
||||
the General Response contents.
|
||||
Set up a CMP client context for sending requests and verifying responses:
|
||||
|
||||
cmp_ctx = OSSL_CMP_CTX_new();
|
||||
OSSL_CMP_CTX_set1_server(cmp_ctx, sname);
|
||||
OSSL_CMP_CTX_set1_server(cmp_ctx, name_or_address);
|
||||
OSSL_CMP_CTX_set1_serverPort(cmp_ctx, port_string);
|
||||
OSSL_CMP_CTX_set1_serverPath(cmp_ctx, path_or_alias);
|
||||
OSSL_CMP_CTX_set0_trustedStore(cmp_ctx, ts);
|
||||
|
||||
Set up client credentials for password-based protection (PBM):
|
||||
|
||||
OSSL_CMP_CTX_set1_referenceValue(cmp_ctx, ref, ref_len);
|
||||
OSSL_CMP_CTX_set1_secretValue(cmp_ctx, sec, sec_len);
|
||||
|
||||
Set up the details for certificate requests:
|
||||
|
||||
OSSL_CMP_CTX_set1_subjectName(cmp_ctx, name);
|
||||
OSSL_CMP_CTX_set0_newPkey(cmp_ctx, 1, initialKey);
|
||||
|
||||
Perform an Initialization Request transaction:
|
||||
|
||||
initialCert = OSSL_CMP_exec_IR_ses(cmp_ctx);
|
||||
|
||||
Reset the transaction state of the CMP context and the credentials:
|
||||
|
||||
OSSL_CMP_CTX_reinit(cmp_ctx);
|
||||
OSSL_CMP_CTX_set1_referenceValue(cmp_ctx, NULL, 0);
|
||||
OSSL_CMP_CTX_set1_secretValue(cmp_ctx, NULL, 0);
|
||||
|
||||
Perform a Certification Request transaction, making use of the new credentials:
|
||||
|
||||
OSSL_CMP_CTX_set1_cert(cmp_ctx, initialCert);
|
||||
OSSL_CMP_CTX_set1_pkey(cmp_ctx, initialKey);
|
||||
OSSL_CMP_CTX_set0_newPkey(cmp_ctx, 1, curentKey);
|
||||
currentCert = OSSL_CMP_exec_CR_ses(cmp_ctx);
|
||||
|
||||
Perform a Key Update Request, signed using the cert (and key) to be updated:
|
||||
|
||||
OSSL_CMP_CTX_reinit(cmp_ctx);
|
||||
OSSL_CMP_CTX_set1_cert(cmp_ctx, currentCert);
|
||||
OSSL_CMP_CTX_set1_pkey(cmp_ctx, currentKey);
|
||||
OSSL_CMP_CTX_set0_newPkey(cmp_ctx, 1, updatedKey);
|
||||
currentCert = OSSL_CMP_exec_KUR_ses(cmp_ctx);
|
||||
currentKey = updatedKey;
|
||||
|
||||
Perform a General Message transaction including, as an example,
|
||||
the id-it-signKeyPairTypes OID and prints info on the General Response contents:
|
||||
|
||||
OSSL_CMP_CTX_reinit(cmp_ctx);
|
||||
|
||||
ASN1_OBJECT *type = OBJ_txt2obj("1.3.6.1.5.5.7.4.2", 1);
|
||||
OSSL_CMP_ITAV *itav = OSSL_CMP_ITAV_new(type, NULL);
|
||||
OSSL_CMP_CTX_push0_genm_ITAV(cmp_ctx, itav);
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
=head1 NAME
|
||||
|
||||
OSSL_CMP_MSG_get0_header,
|
||||
OSSL_CMP_MSG_update_transactionID,
|
||||
d2i_OSSL_CMP_MSG_bio,
|
||||
i2d_OSSL_CMP_MSG_bio
|
||||
- function(s) manipulating CMP messages
|
||||
@@ -12,17 +13,22 @@ i2d_OSSL_CMP_MSG_bio
|
||||
#include <openssl/cmp.h>
|
||||
|
||||
OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg);
|
||||
int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg);
|
||||
OSSL_CMP_MSG *d2i_OSSL_CMP_MSG_bio(BIO *bio, OSSL_CMP_MSG **msg);
|
||||
int i2d_OSSL_CMP_MSG_bio(BIO *bio, const OSSL_CMP_MSG *msg);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
OSSL_CMP_MSG_get0_header returns the header of the given CMP message.
|
||||
OSSL_CMP_MSG_get0_header() returns the header of the given CMP message.
|
||||
|
||||
d2i_OSSL_CMP_MSG_bio parses an ASN.1-encoded OSSL_CMP_MSG from the BIO I<bio>.
|
||||
OSSL_CMP_MSG_update_transactionID() updates the transactionID field
|
||||
in the header of the given message according to the CMP_CTX.
|
||||
This requires re-protecting the message (if it was protected).
|
||||
|
||||
d2i_OSSL_CMP_MSG_bio() parses an ASN.1-encoded OSSL_CMP_MSG from the BIO I<bio>.
|
||||
It assigns a pointer to the new structure to I<*msg> if I<msg> is not NULL.
|
||||
|
||||
i2d_OSSL_CMP_MSG_bio writes the OSSL_CMP_MSG I<msg> in ASN.1 encoding
|
||||
i2d_OSSL_CMP_MSG_bio() writes the OSSL_CMP_MSG I<msg> in ASN.1 encoding
|
||||
to BIO I<bio>.
|
||||
|
||||
=head1 NOTES
|
||||
@@ -36,7 +42,8 @@ or NULL if the respective entry does not exist and on error.
|
||||
|
||||
d2i_OSSL_CMP_MSG_bio() returns the parsed message or NULL on error.
|
||||
|
||||
i2d_OSSL_CMP_MSG_bio() returns 1 on success or 0 on error.
|
||||
i2d_OSSL_CMP_MSG_bio() and OSSL_CMP_MSG_update_transactionID()
|
||||
return 1 on success, 0 on error.
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
|
||||
@@ -17,16 +17,18 @@ OSSL_CRMF_MSG_get_certReqId
|
||||
|
||||
OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm);
|
||||
ASN1_INTEGER
|
||||
*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||
X509_NAME *OSSL_CRMF_CERTTEMPLATE_get0_issuer(OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||
*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||
X509_NAME
|
||||
*OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl);
|
||||
|
||||
ASN1_INTEGER *OSSL_CRMF_CERTID_get0_serialNumber(const OSSL_CRMF_CERTID *cid);
|
||||
const X509_NAME *OSSL_CRMF_CERTID_get0_issuer(const OSSL_CRMF_CERTID *cid);
|
||||
|
||||
X509 *OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(OSSL_CRMF_ENCRYPTEDVALUE *ecert,
|
||||
EVP_PKEY *pkey);
|
||||
X509
|
||||
*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert,
|
||||
EVP_PKEY *pkey);
|
||||
|
||||
int OSSL_CRMF_MSG_get_certReqId(OSSL_CRMF_MSG *crm);
|
||||
int OSSL_CRMF_MSG_get_certReqId(const OSSL_CRMF_MSG *crm);
|
||||
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@@ -38,7 +38,7 @@ OSSL_HTTP_parse_url
|
||||
OSSL_HTTP_bio_cb_t bio_update_fn, void *arg,
|
||||
const STACK_OF(CONF_VALUE) *headers,
|
||||
const char *content_type,
|
||||
ASN1_VALUE *req, const ASN1_ITEM *req_it,
|
||||
const ASN1_VALUE *req, const ASN1_ITEM *req_it,
|
||||
int maxline, unsigned long max_resp_len,
|
||||
int timeout, const char *expected_ct,
|
||||
const ASN1_ITEM *rsp_it);
|
||||
|
||||
@@ -233,7 +233,9 @@ OSSL_PARAM_get_octet_string() retrieves an OCTET string from the parameter
|
||||
pointed to by B<p>.
|
||||
The OCTETs are either stored into B<*val> with a length limit of B<max_len> or,
|
||||
in the case when B<*val> is B<NULL>, memory is allocated and
|
||||
B<max_len> is ignored.
|
||||
B<max_len> is ignored. B<*used_len> is populated with the number of OCTETs
|
||||
stored. If B<val> is NULL then the OCTETS are not stored, but B<*used_len> is
|
||||
still populated.
|
||||
If memory is allocated by this function, it must be freed by the caller.
|
||||
|
||||
OSSL_PARAM_set_octet_string() sets an OCTET string from the parameter
|
||||
|
||||
@@ -4,12 +4,14 @@
|
||||
|
||||
OSSL_STORE_LOADER, OSSL_STORE_LOADER_CTX, OSSL_STORE_LOADER_new,
|
||||
OSSL_STORE_LOADER_get0_engine, OSSL_STORE_LOADER_get0_scheme,
|
||||
OSSL_STORE_LOADER_set_open, OSSL_STORE_LOADER_set_ctrl,
|
||||
OSSL_STORE_LOADER_set_expect, OSSL_STORE_LOADER_set_find,
|
||||
OSSL_STORE_LOADER_set_load, OSSL_STORE_LOADER_set_eof,
|
||||
OSSL_STORE_LOADER_set_error, OSSL_STORE_LOADER_set_close,
|
||||
OSSL_STORE_LOADER_set_open, OSSL_STORE_LOADER_set_attach,
|
||||
OSSL_STORE_LOADER_set_ctrl, OSSL_STORE_LOADER_set_expect,
|
||||
OSSL_STORE_LOADER_set_find, OSSL_STORE_LOADER_set_load,
|
||||
OSSL_STORE_LOADER_set_eof, OSSL_STORE_LOADER_set_error,
|
||||
OSSL_STORE_LOADER_set_close,
|
||||
OSSL_STORE_LOADER_free, OSSL_STORE_register_loader,
|
||||
OSSL_STORE_unregister_loader, OSSL_STORE_open_fn, OSSL_STORE_ctrl_fn,
|
||||
OSSL_STORE_unregister_loader,
|
||||
OSSL_STORE_open_fn, OSSL_STORE_attach_fn, OSSL_STORE_ctrl_fn,
|
||||
OSSL_STORE_expect_fn, OSSL_STORE_find_fn,
|
||||
OSSL_STORE_load_fn, OSSL_STORE_eof_fn, OSSL_STORE_error_fn,
|
||||
OSSL_STORE_close_fn - Types and functions to manipulate, register and
|
||||
@@ -35,6 +37,16 @@ unregister STORE loaders for different URI schemes
|
||||
void *ui_data);
|
||||
int OSSL_STORE_LOADER_set_open(OSSL_STORE_LOADER *store_loader,
|
||||
OSSL_STORE_open_fn store_open_function);
|
||||
typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_attach_fn)(const OSSL_STORE_LOADER
|
||||
*loader,
|
||||
BIO *bio,
|
||||
OPENSSL_CTX *libctx,
|
||||
const char *propq,
|
||||
const UI_METHOD
|
||||
*ui_method,
|
||||
void *ui_data);
|
||||
int OSSL_STORE_LOADER_set_attach(OSSL_STORE_LOADER *loader,
|
||||
OSSL_STORE_attach_fn attach_function);
|
||||
typedef int (*OSSL_STORE_ctrl_fn)(OSSL_STORE_LOADER_CTX *ctx, int cmd,
|
||||
va_list args);
|
||||
int OSSL_STORE_LOADER_set_ctrl(OSSL_STORE_LOADER *store_loader,
|
||||
@@ -99,6 +111,10 @@ initialized, to create a private data store (B<OSSL_STORE_LOADER_CTX>, see
|
||||
above), and to return it.
|
||||
If something goes wrong, this function is expected to return NULL.
|
||||
|
||||
=item B<OSSL_STORE_open_fn>
|
||||
|
||||
This function takes a B<BIO>, otherwise works like B<OSSL_STORE_open_fn>.
|
||||
|
||||
=item B<OSSL_STORE_ctrl_fn>
|
||||
|
||||
This function takes a B<OSSL_STORE_LOADER_CTX> pointer, a command number
|
||||
@@ -189,6 +205,9 @@ OSSL_STORE_LOADER_get0_scheme() returns the scheme of the B<store_loader>.
|
||||
OSSL_STORE_LOADER_set_open() sets the opener function for the
|
||||
B<store_loader>.
|
||||
|
||||
OSSL_STORE_LOADER_set_attach() sets the attacher function for the
|
||||
B<store_loader>.
|
||||
|
||||
OSSL_STORE_LOADER_set_ctrl() sets the control function for the
|
||||
B<store_loader>.
|
||||
|
||||
@@ -254,7 +273,7 @@ were added in OpenSSL 1.1.1.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
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
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
=pod
|
||||
|
||||
=head1 NAME
|
||||
|
||||
OSSL_STORE_attach - Functions to read objects from a BIO
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
#include <openssl/store.h>
|
||||
|
||||
OSSL_STORE_CTX *OSSL_STORE_attach(BIO *bio, OPENSSL_CTX *libctx,
|
||||
const char *scheme, const char *propq,
|
||||
const UI_METHOD *ui_method, void *ui_data,
|
||||
OSSL_STORE_post_process_info_fn post_process,
|
||||
void *post_process_data);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
OSSL_STORE_attach() works like L<OSSL_STORE_open(3)>, except it takes a B<BIO>
|
||||
I<bio> instead of a I<uri>, along with a I<scheme> to determine what loader
|
||||
should be used to process the data.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
OSSL_STORE_attach() returns a pointer to a B<OSSL_STORE_CTX> on success, or
|
||||
NULL on failure.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<ossl_store(7)>, L<OSSL_STORE_open(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
OSSL_STORE_attach() was added in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
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
|
||||
L<https://www.openssl.org/source/license.html>.
|
||||
|
||||
=cut
|
||||
+10
-10
@@ -8,19 +8,23 @@ RSA_size, RSA_bits, RSA_security_bits - get RSA modulus size or security bits
|
||||
|
||||
#include <openssl/rsa.h>
|
||||
|
||||
int RSA_bits(const RSA *rsa);
|
||||
|
||||
Deprecated since OpenSSL 3.0, can be hidden entirely by defining
|
||||
B<OPENSSL_API_COMPAT> with a suitable version value, see
|
||||
L<openssl_user_macros(7)>:
|
||||
|
||||
int RSA_size(const RSA *rsa);
|
||||
|
||||
int RSA_bits(const RSA *rsa);
|
||||
|
||||
int RSA_security_bits(const RSA *rsa)
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
All of the functions described on this page are deprecated.
|
||||
RSA_bits() returns the number of significant bits.
|
||||
|
||||
B<rsa> and B<rsa-E<gt>n> must not be B<NULL>.
|
||||
|
||||
The remaining functions described on this page are deprecated.
|
||||
Applications should instead use L<EVP_PKEY_size(3)>, L<EVP_PKEY_bits(3)>
|
||||
and L<EVP_PKEY_security_bits(3)>.
|
||||
|
||||
@@ -28,18 +32,14 @@ RSA_size() returns the RSA modulus size in bytes. It can be used to
|
||||
determine how much memory must be allocated for an RSA encrypted
|
||||
value.
|
||||
|
||||
RSA_bits() returns the number of significant bits.
|
||||
|
||||
B<rsa> and B<rsa-E<gt>n> must not be B<NULL>.
|
||||
|
||||
RSA_security_bits() returns the number of security bits of the given B<rsa>
|
||||
key. See L<BN_security_bits(3)>.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
RSA_size() returns the size of modulus in bytes.
|
||||
RSA_bits() returns the number of bits in the key.
|
||||
|
||||
DSA_bits() returns the number of bits in the key.
|
||||
RSA_size() returns the size of modulus in bytes.
|
||||
|
||||
RSA_security_bits() returns the number of security bits.
|
||||
|
||||
@@ -49,7 +49,7 @@ L<BN_num_bits(3)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
All of these functions were deprecated in OpenSSL 3.0.
|
||||
The RSA_size() and RSA_security_bits() functions were deprecated in OpenSSL 3.0.
|
||||
|
||||
The RSA_bits() function was added in OpenSSL 1.1.0.
|
||||
|
||||
|
||||
@@ -507,6 +507,10 @@ B<ExtendedMasterSecret>: use extended master secret extension, enabled by
|
||||
default. Inverse of B<SSL_OP_NO_EXTENDED_MASTER_SECRET>: that is,
|
||||
B<-ExtendedMasterSecret> is the same as setting B<SSL_OP_NO_EXTENDED_MASTER_SECRET>.
|
||||
|
||||
B<CANames>: use CA names extension, enabled by
|
||||
default. Inverse of B<SSL_OP_DISABLE_TLSEXT_CA_NAMES>: that is,
|
||||
B<-CANames> is the same as setting B<SSL_OP_DISABLE_TLSEXT_CA_NAMES>.
|
||||
|
||||
=item B<VerifyMode>
|
||||
|
||||
The B<value> argument is a comma separated list of flags to set.
|
||||
|
||||
@@ -80,7 +80,7 @@ The SSL_CTX_config() and SSL_config() functions were added in OpenSSL 1.1.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
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
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
SSL_set_num_tickets,
|
||||
SSL_get_num_tickets,
|
||||
SSL_CTX_set_num_tickets,
|
||||
SSL_CTX_get_num_tickets
|
||||
SSL_CTX_get_num_tickets,
|
||||
SSL_new_session_ticket
|
||||
- control the number of TLSv1.3 session tickets that are issued
|
||||
|
||||
=head1 SYNOPSIS
|
||||
@@ -16,6 +17,7 @@ SSL_CTX_get_num_tickets
|
||||
size_t SSL_get_num_tickets(SSL *s);
|
||||
int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets);
|
||||
size_t SSL_CTX_get_num_tickets(SSL_CTX *ctx);
|
||||
int SSL_new_session_ticket(SSL *s);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@@ -40,14 +42,29 @@ handshake then SSL_set_num_tickets() can be called again prior to calling
|
||||
SSL_verify_client_post_handshake() to update the number of tickets that will be
|
||||
sent.
|
||||
|
||||
To issue tickets after other events (such as application-layer changes),
|
||||
SSL_new_session_ticket() is used by a server application to request that a new
|
||||
ticket be sent when it is safe to do so. New tickets are only allowed to be
|
||||
sent in this manner after the initial handshake has completed, and only for TLS
|
||||
1.3 connections. The ticket generation and transmission are delayed until the
|
||||
server is starting a new write operation, so that it is bundled with other
|
||||
application data being written and properly aligned to a record boundary.
|
||||
SSL_new_session_ticket() can be called more than once to request additional
|
||||
tickets be sent; all such requests are queued and written together when it is
|
||||
safe to do so. Note that a successful return from SSL_new_session_ticket()
|
||||
indicates only that the request to send a ticket was processed, not that the
|
||||
ticket itself was sent. To be notified when the ticket itself is sent, a
|
||||
new-session callback can be registered with L<SSL_CTX_sess_set_new_cb(3)> that
|
||||
will be invoked as the ticket or tickets are generated.
|
||||
|
||||
SSL_CTX_get_num_tickets() and SSL_get_num_tickets() return the number of
|
||||
tickets set by a previous call to SSL_CTX_set_num_tickets() or
|
||||
SSL_set_num_tickets(), or 2 if no such call has been made.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
SSL_CTX_set_num_tickets() and SSL_set_num_tickets() return 1 on success or 0 on
|
||||
failure.
|
||||
SSL_CTX_set_num_tickets(), SSL_set_num_tickets(), and
|
||||
SSL_new_session_ticket() return 1 on success or 0 on failure.
|
||||
|
||||
SSL_CTX_get_num_tickets() and SSL_get_num_tickets() return the number of tickets
|
||||
that have been previously set.
|
||||
@@ -58,11 +75,13 @@ L<ssl(7)>
|
||||
|
||||
=head1 HISTORY
|
||||
|
||||
These functions were added in OpenSSL 1.1.1.
|
||||
SSL_new_session_ticket() was added in OpenSSL 3.0.0.
|
||||
SSL_set_num_tickets(), SSL_get_num_tickets(), SSL_CTX_set_num_tickets(), and
|
||||
SSL_CTX_get_num_tickets() were added in OpenSSL 1.1.1.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
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
|
||||
|
||||
@@ -67,6 +67,12 @@ The following B<bug workaround> options are available:
|
||||
Don't prefer ECDHE-ECDSA ciphers when the client appears to be Safari on OS X.
|
||||
OS X 10.8..10.8.3 has broken support for ECDHE-ECDSA ciphers.
|
||||
|
||||
=item SSL_OP_DISABLE_TLSEXT_CA_NAMES
|
||||
|
||||
Disable TLS Extension CA Names. You may want to disable it for security reasons
|
||||
or for compatibility with some Windows TLS implementations crashing when this
|
||||
extension is larger than 1024 bytes.
|
||||
|
||||
=item SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
|
||||
|
||||
Disables a countermeasure against a SSL 3.0/TLS 1.0 protocol
|
||||
@@ -378,7 +384,7 @@ The B<SSL_OP_NO_EXTENDED_MASTER_SECRET> option was added in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
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
|
||||
|
||||
@@ -88,7 +88,7 @@ Otherwise it returns NULL.
|
||||
=item On the client, during or after the handshake and a TLSv1.2 (or below)
|
||||
resumption occurred
|
||||
|
||||
If the session from the orignal handshake had a servername accepted by the
|
||||
If the session from the original handshake had a servername accepted by the
|
||||
server then it will return that servername.
|
||||
|
||||
Otherwise it returns the servername set via SSL_set_tlsext_host_name() or NULL
|
||||
@@ -157,12 +157,12 @@ corner cases. This has been fixed from OpenSSL 1.1.1e.
|
||||
|
||||
Prior to 1.1.1e, when the client requested a servername in an initial TLSv1.2
|
||||
handshake, the server accepted it, and then the client successfully resumed but
|
||||
set a different explict servername in the second handshake then when called by
|
||||
set a different explicit servername in the second handshake then when called by
|
||||
the client it returned the servername from the second handshake. This has now
|
||||
been changed to return the servername requested in the original handshake.
|
||||
|
||||
Also prior to 1.1.1e, if the client sent a servername in the first handshake but
|
||||
the server did not accept it, and then a second handshake occured where TLSv1.2
|
||||
the server did not accept it, and then a second handshake occurred where TLSv1.2
|
||||
resumption was successful then when called by the server it returned the
|
||||
servername requested in the original handshake. This has now been changed to
|
||||
NULL.
|
||||
|
||||
@@ -121,9 +121,9 @@ SSL_get_async_status() were first added to OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2019-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
Licensed under the OpenSSL license (the "License"). You may not use
|
||||
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
|
||||
L<https://www.openssl.org/source/license.html>.
|
||||
|
||||
@@ -75,6 +75,16 @@ state but not actually send the close_notify alert messages,
|
||||
see L<SSL_CTX_set_quiet_shutdown(3)>.
|
||||
When "quiet shutdown" is enabled, SSL_shutdown() will always succeed
|
||||
and return 1.
|
||||
Note that this is not standard compliant behaviour.
|
||||
It should only be done when the peer has a way to make sure all
|
||||
data has been received and doesn't wait for the close_notify alert
|
||||
message, otherwise an unexpected EOF will be reported.
|
||||
|
||||
There are implementations that do not send the required close_notify alert.
|
||||
If there is a need to communicate with such an implementation, and it's clear
|
||||
that all data has been received, do not wait for the peer's close_notify alert.
|
||||
Waiting for the close_notify alert when the peer just closes the connection will
|
||||
result in an error being generated.
|
||||
|
||||
=head2 First to close the connection
|
||||
|
||||
@@ -124,8 +134,10 @@ The following return values can occur:
|
||||
The shutdown is not yet finished: the close_notify was sent but the peer
|
||||
did not send it back yet.
|
||||
Call SSL_read() to do a bidirectional shutdown.
|
||||
The output of L<SSL_get_error(3)> may be misleading, as an
|
||||
erroneous SSL_ERROR_SYSCALL may be flagged even though no error occurred.
|
||||
|
||||
Unlike most other function, returning 0 does not indicate an error.
|
||||
L<SSL_get_error(3)> should not get called, it may misleadingly
|
||||
indicate an error even though no error occurred.
|
||||
|
||||
=item Z<>1
|
||||
|
||||
@@ -153,7 +165,7 @@ L<ssl(7)>, L<bio(7)>
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
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
|
||||
|
||||
@@ -327,7 +327,7 @@ Unhandled critical CRL extension.
|
||||
|
||||
Invalid non-CA certificate has CA markings.
|
||||
|
||||
=item B<X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED: proxy path length contraint exceeded>
|
||||
=item B<X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED: proxy path length constraint exceeded>
|
||||
|
||||
Proxy path length constraint exceeded.
|
||||
|
||||
@@ -340,7 +340,7 @@ certificates.
|
||||
|
||||
Proxy certificates not allowed unless the B<-allow_proxy_certs> option is used.
|
||||
|
||||
=item B<X509_V_ERR_UNNESTED_RESOURCE: RFC 3779 resource not subset of parent's resrouces>
|
||||
=item B<X509_V_ERR_UNNESTED_RESOURCE: RFC 3779 resource not subset of parent's resources>
|
||||
|
||||
See RFC 3779 for details.
|
||||
|
||||
@@ -415,7 +415,7 @@ recognized by the OCSP responder.
|
||||
|
||||
The issuer certificate does not have a public key.
|
||||
|
||||
=item B<X509_V_ERROR_SIGNATURE_ALGORITHM_MISMATCH, Subject signature algorithm and issuer public key algoritm mismatch>
|
||||
=item B<X509_V_ERROR_SIGNATURE_ALGORITHM_MISMATCH, Subject signature algorithm and issuer public key algorithm mismatch>
|
||||
|
||||
The issuer's public key is not of the type required by the signature in
|
||||
the subject's certificate.
|
||||
|
||||
@@ -10,11 +10,13 @@ X509_VERIFY_PARAM_get_depth, X509_VERIFY_PARAM_set_auth_level,
|
||||
X509_VERIFY_PARAM_get_auth_level, X509_VERIFY_PARAM_set_time,
|
||||
X509_VERIFY_PARAM_get_time,
|
||||
X509_VERIFY_PARAM_add0_policy, X509_VERIFY_PARAM_set1_policies,
|
||||
X509_VERIFY_PARAM_get0_host,
|
||||
X509_VERIFY_PARAM_set1_host, X509_VERIFY_PARAM_add1_host,
|
||||
X509_VERIFY_PARAM_set_hostflags,
|
||||
X509_VERIFY_PARAM_get_hostflags,
|
||||
X509_VERIFY_PARAM_get0_peername,
|
||||
X509_VERIFY_PARAM_set1_email, X509_VERIFY_PARAM_set1_ip,
|
||||
X509_VERIFY_PARAM_get0_email, X509_VERIFY_PARAM_set1_email,
|
||||
X509_VERIFY_PARAM_set1_ip, X509_VERIFY_PARAM_get1_ip_asc,
|
||||
X509_VERIFY_PARAM_set1_ip_asc
|
||||
- X509 verification parameters
|
||||
|
||||
@@ -50,6 +52,7 @@ X509_VERIFY_PARAM_set1_ip_asc
|
||||
int auth_level);
|
||||
int X509_VERIFY_PARAM_get_auth_level(const X509_VERIFY_PARAM *param);
|
||||
|
||||
char *X509_VERIFY_PARAM_get0_host(X509_VERIFY_PARAM *param, int n);
|
||||
int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param,
|
||||
const char *name, size_t namelen);
|
||||
int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param,
|
||||
@@ -58,8 +61,10 @@ X509_VERIFY_PARAM_set1_ip_asc
|
||||
unsigned int flags);
|
||||
unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param);
|
||||
char *X509_VERIFY_PARAM_get0_peername(const X509_VERIFY_PARAM *param);
|
||||
char *X509_VERIFY_PARAM_get0_email(X509_VERIFY_PARAM *param);
|
||||
int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param,
|
||||
const char *email, size_t emaillen);
|
||||
char *X509_VERIFY_PARAM_get1_ip_asc(X509_VERIFY_PARAM *param);
|
||||
int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param,
|
||||
const unsigned char *ip, size_t iplen);
|
||||
int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, const char *ipasc);
|
||||
@@ -128,6 +133,11 @@ Security level 1 requires at least 80-bit-equivalent security and is broadly
|
||||
interoperable, though it will, for example, reject MD5 signatures or RSA keys
|
||||
shorter than 1024 bits.
|
||||
|
||||
X509_VERIFY_PARAM_get0_host() returns the B<n>th expected DNS hostname that has
|
||||
been set using X509_VERIFY_PARAM_set1_host() or X509_VERIFY_PARAM_add1_host().
|
||||
To obtain all names start with B<n> = 0 and increment B<n> as long as no NULL
|
||||
pointer is returned.
|
||||
|
||||
X509_VERIFY_PARAM_set1_host() sets the expected DNS hostname to
|
||||
B<name> clearing any previously specified hostname. If
|
||||
B<name> is NULL, or empty the list of hostnames is cleared, and
|
||||
@@ -177,12 +187,17 @@ string is allocated by the library and is no longer valid once the
|
||||
associated B<param> argument is freed. Applications must not free
|
||||
the return value.
|
||||
|
||||
X509_VERIFY_PARAM_get0_email() returns the expected RFC822 email address.
|
||||
|
||||
X509_VERIFY_PARAM_set1_email() sets the expected RFC822 email address to
|
||||
B<email>. If B<email> is NUL-terminated, B<emaillen> may be zero, otherwise
|
||||
B<emaillen> must be set to the length of B<email>. When an email address
|
||||
is specified, certificate verification automatically invokes
|
||||
L<X509_check_email(3)>.
|
||||
|
||||
X509_VERIFY_PARAM_get1_ip_asc() returns the expected IP address as a string.
|
||||
The caller is responsible for freeing it.
|
||||
|
||||
X509_VERIFY_PARAM_set1_ip() sets the expected IP address to B<ip>.
|
||||
The B<ip> argument is in binary format, in network byte-order and
|
||||
B<iplen> must be set to 4 for IPv4 and 16 for IPv6. When an IP
|
||||
@@ -205,6 +220,10 @@ X509_VERIFY_PARAM_set1_email(), X509_VERIFY_PARAM_set1_ip() and
|
||||
X509_VERIFY_PARAM_set1_ip_asc() return 1 for success and 0 for
|
||||
failure.
|
||||
|
||||
X509_VERIFY_PARAM_get0_host(), X509_VERIFY_PARAM_get0_email(), and
|
||||
X509_VERIFY_PARAM_get1_ip_asc(), return the string pointers pecified above
|
||||
or NULL if the respective value has not been set or on error.
|
||||
|
||||
X509_VERIFY_PARAM_get_flags() returns the current verification flags.
|
||||
|
||||
X509_VERIFY_PARAM_get_hostflags() returns any current host flags.
|
||||
@@ -374,6 +393,9 @@ and has no effect.
|
||||
|
||||
The X509_VERIFY_PARAM_get_hostflags() function was added in OpenSSL 1.1.0i.
|
||||
|
||||
The X509_VERIFY_PARAM_get0_host(), X509_VERIFY_PARAM_get0_email(),
|
||||
and X509_VERIFY_PARAM_get1_ip_asc() functions were added in OpenSSL 3.0.
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
@@ -24,7 +24,7 @@ X509_load_http() and X509_CRL_load_http() loads a certificate or a CRL,
|
||||
respectively, in ASN.1 format using HTTP from the given B<url>.
|
||||
|
||||
If B<bio> is given and B<rbio> is NULL then this BIO is used instead of an
|
||||
interal one for connecting, writing the request, and reading the response.
|
||||
internal one for connecting, writing the request, and reading the response.
|
||||
If both B<bio> and B<rbio> are given (which may be memory BIOs, for instance)
|
||||
then no explicit connection is attempted,
|
||||
B<bio> is used for writing the request, and B<rbio> for reading the response.
|
||||
@@ -36,7 +36,7 @@ while a value < 0 immediately leads to a timeout condition.
|
||||
|
||||
X509_http_nbio() and X509_CRL_http_nbio() are macros for backward compatibility
|
||||
that have the same effect as the functions above but with infinite timeout
|
||||
and without the possiblity to specify custom BIOs.
|
||||
and without the possibility to specify custom BIOs.
|
||||
|
||||
=head1 RETURN VALUES
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ i2s_ASN1_ENUMERATED_TABLE,
|
||||
=head1 DESCRIPTION
|
||||
|
||||
These functions convert OpenSSL objects to and from their ASN.1/string
|
||||
representation. This function is used for B<X509v3> extentions.
|
||||
representation. This function is used for B<X509v3> extensions.
|
||||
|
||||
=head1 NOTES
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ This functionality was added to OpenSSL 3.0.
|
||||
|
||||
Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
Licensed under the OpenSSL license (the "License"). You may not use
|
||||
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
|
||||
L<https://www.openssl.org/source/license.html>.
|
||||
|
||||
@@ -148,9 +148,9 @@ L<EVP_KDF(3)/PARAMETERS>
|
||||
|
||||
=head1 COPYRIGHT
|
||||
|
||||
Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
||||
Licensed under the OpenSSL license (the "License"). You may not use
|
||||
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
|
||||
L<https://www.openssl.org/source/license.html>.
|
||||
|
||||
@@ -9,12 +9,18 @@ EVP_KEYMGMT-X25519, EVP_KEYMGMT-X448, EVP_KEYMGMT-ED25519, EVP_KEYMGMT-ED448
|
||||
=head1 DESCRIPTION
|
||||
|
||||
The B<X25519>, B<X448>, B<ED25519> and B<ED448> keytypes are
|
||||
implemented in OpenSSL's default provider.
|
||||
implemented in OpenSSL's default and FIPS providers. These implementations
|
||||
support the associated key, containing the public key I<pub> and the
|
||||
private key I<priv>.
|
||||
|
||||
In the FIPS provider they are non-approved algorithms and do not have the
|
||||
"fips=yes" property set.
|
||||
|
||||
=head2 Common X25519, X448, ED25519 and ED448 parameters
|
||||
|
||||
The following Import/Export types are available for the built-in X25519, X448,
|
||||
ED25519 and X448 algorithms:
|
||||
In addition to the common parameters that all keytypes should support (see
|
||||
L<provider-keymgmt(7)/Common parameters>), the implementation of these keytypes
|
||||
support the following.
|
||||
|
||||
=over 4
|
||||
|
||||
|
||||
+35
-20
@@ -16,15 +16,15 @@ provider-base
|
||||
*/
|
||||
|
||||
/* Functions offered by libcrypto to the providers */
|
||||
const OSSL_ITEM *core_gettable_params(const OSSL_PROVIDER *prov);
|
||||
int core_get_params(const OSSL_PROVIDER *prov, OSSL_PARAM params[]);
|
||||
int core_thread_start(const OSSL_PROVIDER *prov,
|
||||
const OSSL_ITEM *core_gettable_params(const OSSL_CORE_HANDLE *handle);
|
||||
int core_get_params(const OSSL_CORE_HANDLE *handle, OSSL_PARAM params[]);
|
||||
int core_thread_start(const OSSL_CORE_HANDLE *handle,
|
||||
OSSL_thread_stop_handler_fn handfn);
|
||||
OPENSSL_CTX *core_get_library_context(const OSSL_PROVIDER *prov);
|
||||
void core_new_error(const OSSL_PROVIDER *prov);
|
||||
void core_set_error_debug(const OSSL_PROVIDER *prov,
|
||||
OPENSSL_CORE_CTX *core_get_library_context(const OSSL_CORE_HANDLE *handle);
|
||||
void core_new_error(const OSSL_CORE_HANDLE *handle);
|
||||
void core_set_error_debug(const OSSL_CORE_HANDLE *handle,
|
||||
const char *file, int line, const char *func);
|
||||
void core_vset_error(const OSSL_PROVIDER *prov,
|
||||
void core_vset_error(const OSSL_CORE_HANDLE *handle,
|
||||
uint32_t reason, const char *fmt, va_list args);
|
||||
|
||||
/*
|
||||
@@ -52,7 +52,19 @@ provider-base
|
||||
const char *file, int line);
|
||||
int CRYPTO_secure_allocated(const void *ptr);
|
||||
void OPENSSL_cleanse(void *ptr, size_t len);
|
||||
unsigned char *OPENSSL_hexstr2buf(const char *str, long *len);
|
||||
|
||||
OSSL_CORE_BIO * BIO_new_file(const char *filename, const char *mode)
|
||||
OSSL_CORE_BIO * BIO_new_membuf(const void *buf, int len)
|
||||
int BIO_read_ex(OSSL_CORE_BIO *bio, void *data, size_t data_len,
|
||||
size_t *bytes_read))
|
||||
int BIO_write_ex(OSSL_CORE_BIO *bio, const void *data, size_t data_len,
|
||||
size_t *written)
|
||||
int BIO_free(OSSL_CORE_BIO *bio))
|
||||
int BIO_vprintf(OSSL_CORE_BIO *bio, const char *format, va_list args)
|
||||
int BIO_vsnprintf(char *buf, size_t n, const char *fmt, va_list args)
|
||||
|
||||
void self_test_cb(OPENSSL_CORE_CTX *ctx, OSSL_CALLBACK **cb, void **cbarg)
|
||||
|
||||
|
||||
/* Functions offered by the provider to libcrypto */
|
||||
void provider_teardown(void *provctx);
|
||||
@@ -76,8 +88,8 @@ function pointer from a B<OSSL_DISPATCH> element named
|
||||
B<OSSL_get_{name}>.
|
||||
For example, the "function" core_gettable_params() has these:
|
||||
|
||||
typedef OSSL_ITEM *
|
||||
(OSSL_core_gettable_params_fn)(const OSSL_PROVIDER *prov);
|
||||
typedef OSSL_PARAM *
|
||||
(OSSL_core_gettable_params_fn)(const OSSL_CORE_HANDLE *handle);
|
||||
static ossl_inline OSSL_NAME_core_gettable_params_fn
|
||||
OSSL_get_core_gettable_params(const OSSL_DISPATCH *opf);
|
||||
|
||||
@@ -114,7 +126,6 @@ provider):
|
||||
BIO_free OSSL_FUNC_BIO_FREE
|
||||
BIO_vprintf OSSL_FUNC_BIO_VPRINTF
|
||||
OPENSSL_cleanse OSSL_FUNC_OPENSSL_CLEANSE
|
||||
OPENSSL_hexstr2buf OSSL_FUNC_OPENSSL_HEXSTR2BUF
|
||||
OSSL_SELF_TEST_set_callback OSSL_FUNC_SELF_TEST_CB
|
||||
|
||||
For I<*out> (the B<OSSL_DISPATCH> array passed from the provider to
|
||||
@@ -131,20 +142,20 @@ F<libcrypto>):
|
||||
core_gettable_params() returns a constant array of descriptor
|
||||
B<OSSL_PARAM>, for parameters that core_get_params() can handle.
|
||||
|
||||
core_get_params() retrieves I<prov> parameters from the core.
|
||||
core_get_params() retrieves parameters from the core for the given I<handle>.
|
||||
See L</Core parameters> below for a description of currently known
|
||||
parameters.
|
||||
|
||||
=for comment core_thread_start() TBA
|
||||
|
||||
core_get_library_context() retrieves the library context in which the
|
||||
B<OSSL_PROVIDER> object I<prov> is stored.
|
||||
core_get_library_context() retrieves the library context in which the library
|
||||
object for the current provider is stored, accessible through the I<handle>.
|
||||
This may sometimes be useful if the provider wishes to store a
|
||||
reference to its context in the same library context.
|
||||
|
||||
core_new_error(), core_set_error_debug() and core_set_error() are
|
||||
building blocks for reporting an error back to the core, with
|
||||
reference to the provider object I<prov>.
|
||||
reference to the I<handle>.
|
||||
|
||||
=over 4
|
||||
|
||||
@@ -188,7 +199,10 @@ BIO_new_file(), BIO_new_mem_buf(), BIO_read_ex(), BIO_free(),
|
||||
BIO_vprintf(), OPENSSL_cleanse(), and OPENSSL_hexstr2buf()
|
||||
correspond exactly to the public functions with the same name.
|
||||
As a matter of fact, the pointers in the B<OSSL_DISPATCH> array are
|
||||
direct pointers to those public functions.
|
||||
direct pointers to those public functions. Note that the BIO functions take an
|
||||
B<OSSL_CORE_BIO> type rather than the standard B<BIO> type. This is to ensure
|
||||
that a provider does not mix BIOs from the core with BIOs used on the provider
|
||||
side (the two are not compatible).
|
||||
OSSL_SELF_TEST_set_callback() is used to set an optional callback that can be
|
||||
passed into a provider. This may be ignored by a provider.
|
||||
|
||||
@@ -327,7 +341,7 @@ operation C<BAR>.
|
||||
|
||||
/* Provider context */
|
||||
struct prov_ctx_st {
|
||||
OSSL_PROVIDER *prov;
|
||||
OSSL_CORE_HANDLE *handle;
|
||||
}
|
||||
|
||||
/* operation context for the algorithm FOO */
|
||||
@@ -343,7 +357,7 @@ operation C<BAR>.
|
||||
if (fooctx != NULL)
|
||||
fooctx->provctx = provctx;
|
||||
else
|
||||
c_put_error(provctx->prov, E_MALLOC, __FILE__, __LINE__);
|
||||
c_put_error(provctx->handle, E_MALLOC, __FILE__, __LINE__);
|
||||
return fooctx;
|
||||
}
|
||||
|
||||
@@ -419,7 +433,7 @@ operation C<BAR>.
|
||||
{ 0, NULL }
|
||||
};
|
||||
|
||||
int OSSL_provider_init(const OSSL_PROVIDER *provider,
|
||||
int OSSL_provider_init(const OSSL_CORE_HANDLE *handle,
|
||||
const OSSL_DISPATCH *in,
|
||||
const OSSL_DISPATCH **out,
|
||||
void **provctx)
|
||||
@@ -440,9 +454,10 @@ operation C<BAR>.
|
||||
* ALEA IACTA EST, if the core retrieves the reason table
|
||||
* regardless, that string will be displayed, otherwise not.
|
||||
*/
|
||||
c_put_error(provider, E_MALLOC, __FILE__, __LINE__);
|
||||
c_put_error(handle, E_MALLOC, __FILE__, __LINE__);
|
||||
return 0;
|
||||
}
|
||||
pctx->handle = handle;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,8 +22,6 @@ provider-keymgmt - The KEYMGMT library E<lt>-E<gt> provider functions
|
||||
int OP_keymgmt_gen_set_template(void *genctx, void *template);
|
||||
int OP_keymgmt_gen_set_params(void *genctx, const OSSL_PARAM params[]);
|
||||
const OSSL_PARAM *OP_keymgmt_gen_settable_params(void *provctx);
|
||||
int OP_keymgmt_gen_get_params(void *genctx, const OSSL_PARAM params[]);
|
||||
const OSSL_PARAM *OP_keymgmt_gen_gettable_params(void *provctx);
|
||||
void *OP_keymgmt_gen(void *genctx, OSSL_CALLBACK *cb, void *cbarg);
|
||||
void OP_keymgmt_gen_cleanup(void *genctx);
|
||||
|
||||
@@ -93,8 +91,6 @@ macros in L<openssl-core_numbers.h(7)>, as follows:
|
||||
OP_keymgmt_gen_set_template OSSL_FUNC_KEYMGMT_GEN_SET_TEMPLATE
|
||||
OP_keymgmt_gen_set_params OSSL_FUNC_KEYMGMT_GEN_SET_PARAMS
|
||||
OP_keymgmt_gen_settable_params OSSL_FUNC_KEYMGMT_GEN_SETTABLE_PARAMS
|
||||
OP_keymgmt_gen_get_params OSSL_FUNC_KEYMGMT_GEN_GET_PARAMS
|
||||
OP_keymgmt_gen_gettable_params OSSL_FUNC_KEYMGMT_GEN_GETTABLE_PARAMS
|
||||
OP_keymgmt_gen OSSL_FUNC_KEYMGMT_GEN
|
||||
OP_keymgmt_gen_cleanup OSSL_FUNC_KEYMGMT_GEN_CLEANUP
|
||||
|
||||
@@ -213,7 +209,6 @@ OP_keymgmt_free() should free the passed I<keydata>.
|
||||
|
||||
OP_keymgmt_gen_init(), OP_keymgmt_gen_set_template(),
|
||||
OP_keymgmt_gen_set_params(), OP_keymgmt_gen_settable_params(),
|
||||
OP_keymgmt_gen_get_params(), OP_keymgmt_gen_gettable_params(),
|
||||
OP_keymgmt_gen() and OP_keymgmt_gen_cleanup() work together as a more
|
||||
elaborate context based key object constructor.
|
||||
|
||||
@@ -235,13 +230,6 @@ OP_keymgmt_gen_settable_params() should return a constant array of
|
||||
descriptor B<OSSL_PARAM>, for parameters that OP_keymgmt_gen_set_params()
|
||||
can handle.
|
||||
|
||||
OP_keymgmt_gen_get_params() should extract information data associated
|
||||
with the key object generation context I<genctx>.
|
||||
|
||||
OP_keymgmt_gen_gettable_params() should return a constant array of
|
||||
descriptor B<OSSL_PARAM>, for parameters that OP_keymgmt_gen_get_params()
|
||||
can handle.
|
||||
|
||||
OP_keymgmt_gen() should perform the key object generation itself, and
|
||||
return the result. The callback I<cb> should be called at regular
|
||||
intervals with indications on how the key object generation
|
||||
|
||||
@@ -28,10 +28,10 @@ Future development will also include deserializing functions.
|
||||
|
||||
/* Functions to serialize object data */
|
||||
int OP_serializer_serialize_data(void *ctx, const OSSL_PARAM *data,
|
||||
BIO *out,
|
||||
OSSL_CORE_BIO *out,
|
||||
OSSL_PASSPHRASE_CALLBACK *cb,
|
||||
void *cbarg);
|
||||
int OP_serializer_serialize_object(void *ctx, void *obj, BIO *out,
|
||||
int OP_serializer_serialize_object(void *ctx, void *obj, OSSL_CORE_BIO *out,
|
||||
OSSL_PASSPHRASE_CALLBACK *cb,
|
||||
void *cbarg);
|
||||
|
||||
@@ -39,11 +39,11 @@ Future development will also include deserializing functions.
|
||||
|
||||
The SERIALIZER is a generic method to serialize any set of object data
|
||||
in L<OSSL_PARAM(3)> array form, or any provider side object into
|
||||
serialized form, and write it to the given BIO. If the caller wants
|
||||
serialized form, and write it to the given OSSL_CORE_BIO. If the caller wants
|
||||
to get the serialized stream to memory, it should provide a
|
||||
L<BIO_s_membuf(3)>.
|
||||
|
||||
The serializer doesn't need to know more about the B<BIO> pointer than
|
||||
The serializer doesn't need to know more about the B<OSSL_CORE_BIO> pointer than
|
||||
being able to pass it to the appropriate BIO upcalls (see
|
||||
L<provider-base(7)/Core functions>).
|
||||
|
||||
@@ -71,7 +71,7 @@ For example, the "function" OP_serializer_serialize_data() has these:
|
||||
typedef int
|
||||
(OSSL_OP_serializer_serialize_data_fn)(void *provctx,
|
||||
const OSSL_PARAM params[],
|
||||
BIO *out);
|
||||
OSSL_CORE_BIO *out);
|
||||
static ossl_inline OSSL_OP_serializer_serialize_data_fn
|
||||
OSSL_get_OP_serializer_serialize_data(const OSSL_DISPATCH *opf);
|
||||
|
||||
@@ -180,11 +180,11 @@ by OP_serializer_set_ctx_params() and OP_serializer_settable_ctx_params().
|
||||
OP_serializer_serialize_data() should take an array of B<OSSL_PARAM>,
|
||||
I<data>, and if it contains the data necessary for the object type
|
||||
that the implementation handles, it should output the object in
|
||||
serialized form to the B<BIO>.
|
||||
serialized form to the B<OSSL_CORE_BIO>.
|
||||
|
||||
OP_serializer_serialize_object() should take a pointer to an object
|
||||
that it knows intimately, and output that object in serialized form to
|
||||
the B<BIO>. The caller I<must> ensure that this function is called
|
||||
the B<OSSL_CORE_BIO>. The caller I<must> ensure that this function is called
|
||||
with a pointer that the provider of this function is familiar with.
|
||||
It is not suitable to use with object pointers coming from other
|
||||
providers.
|
||||
|
||||
@@ -253,7 +253,7 @@ although this may be ignored by providers.
|
||||
OP_signature_digest_sign_update() provides data to be signed in the I<data>
|
||||
parameter which should be of length I<datalen>. A previously initialised
|
||||
signature context is passed in the I<ctx> parameter. This function may be called
|
||||
multiple times to cummulatively add data to be signed.
|
||||
multiple times to cumulatively add data to be signed.
|
||||
|
||||
OP_signature_digest_sign_final() finalises a signature operation previously
|
||||
started through OP_signature_digest_sign_init() and
|
||||
@@ -288,7 +288,7 @@ although this may be ignored by providers.
|
||||
OP_signature_digest_verify_update() provides data to be verified in the I<data>
|
||||
parameter which should be of length I<datalen>. A previously initialised
|
||||
verification context is passed in the I<ctx> parameter. This function may be
|
||||
called multiple times to cummulatively add data to be verified.
|
||||
called multiple times to cumulatively add data to be verified.
|
||||
|
||||
OP_signature_digest_verify_final() finalises a verification operation previously
|
||||
started through OP_signature_digest_verify_init() and
|
||||
@@ -347,7 +347,7 @@ By default it retries until a signature is calculated.
|
||||
Setting the value to 0 causes the sign operation to retry,
|
||||
otherwise the sign operation is only tried once and returns whether or not it
|
||||
was successful.
|
||||
Known answer tests can be performed if the random generator is overriden to
|
||||
Known answer tests can be performed if the random generator is overridden to
|
||||
supply known values that either pass or fail.
|
||||
|
||||
=back
|
||||
|
||||
+11
-5
@@ -42,16 +42,15 @@ If it's built-in, the initialization function may have any name.
|
||||
|
||||
The initialization function must have the following signature:
|
||||
|
||||
int NAME(const OSSL_PROVIDER *provider,
|
||||
int NAME(const OSSL_CORE_HANDLE *handle,
|
||||
const OSSL_DISPATCH *in, const OSSL_DISPATCH **out,
|
||||
void **provctx);
|
||||
|
||||
I<provider> is the OpenSSL library object for the provider, and works
|
||||
I<handle> is the OpenSSL library object for the provider, and works
|
||||
as a handle for everything the OpenSSL libraries need to know about
|
||||
the provider.
|
||||
For the provider itself, it may hold some interesting information,
|
||||
and is also passed to some of the functions given in the dispatch
|
||||
array I<in>.
|
||||
For the provider itself, it is passed to some of the functions given in the
|
||||
dispatch array I<in>.
|
||||
|
||||
I<in> is a dispatch array of base functions offered by the OpenSSL
|
||||
libraries, and the available functions are further described in
|
||||
@@ -288,6 +287,13 @@ Should it be needed (if other providers are loaded and offer
|
||||
implementations of the same algorithms), the property "provider=legacy" can be
|
||||
used as a search criterion for these implementations.
|
||||
|
||||
=head2 Null provider
|
||||
|
||||
The null provider is built in as part of the F<libcrypto> library. It contains
|
||||
no algorithms in it at all. When fetching algorithms the default provider will
|
||||
be automatically loaded if no other provider has been explicitly loaded. To
|
||||
prevent that from happening you can explicitly load the null provider.
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
=head2 Fetching
|
||||
|
||||
Reference in New Issue
Block a user