Blame doc/man3/PKCS12_create.pod

Packit c4476c
=pod
Packit c4476c
Packit c4476c
=head1 NAME
Packit c4476c
Packit c4476c
PKCS12_create - create a PKCS#12 structure
Packit c4476c
Packit c4476c
=head1 SYNOPSIS
Packit c4476c
Packit c4476c
 #include <openssl/pkcs12.h>
Packit c4476c
Packit c4476c
 PKCS12 *PKCS12_create(const char *pass, const char *name, EVP_PKEY *pkey,
Packit c4476c
                       X509 *cert, STACK_OF(X509) *ca,
Packit c4476c
                       int nid_key, int nid_cert, int iter, int mac_iter, int keytype);
Packit c4476c
Packit c4476c
=head1 DESCRIPTION
Packit c4476c
Packit c4476c
PKCS12_create() creates a PKCS#12 structure.
Packit c4476c
Packit c4476c
B<pass> is the passphrase to use. B<name> is the B<friendlyName> to use for
Packit c4476c
the supplied certificate and key. B<pkey> is the private key to include in
Packit c4476c
the structure and B<cert> its corresponding certificates. B<ca>, if not B<NULL>
Packit c4476c
is an optional set of certificates to also include in the structure.
Packit c4476c
Packit c4476c
B<nid_key> and B<nid_cert> are the encryption algorithms that should be used
Packit c4476c
for the key and certificate respectively. The modes
Packit c4476c
GCM, CCM, XTS, and OCB are unsupported. B<iter> is the encryption algorithm
Packit c4476c
iteration count to use and B<mac_iter> is the MAC iteration count to use.
Packit c4476c
B<keytype> is the type of key.
Packit c4476c
Packit c4476c
=head1 NOTES
Packit c4476c
Packit c4476c
The parameters B<nid_key>, B<nid_cert>, B<iter>, B<mac_iter> and B<keytype>
Packit c4476c
can all be set to zero and sensible defaults will be used.
Packit c4476c
Packit c4476c
These defaults are: 40 bit RC2 encryption for certificates, triple DES
Packit c4476c
encryption for private keys, a key iteration count of PKCS12_DEFAULT_ITER
Packit c4476c
(currently 2048) and a MAC iteration count of 1.
Packit c4476c
Packit c4476c
The default MAC iteration count is 1 in order to retain compatibility with
Packit c4476c
old software which did not interpret MAC iteration counts. If such compatibility
Packit c4476c
is not required then B<mac_iter> should be set to PKCS12_DEFAULT_ITER.
Packit c4476c
Packit c4476c
B<keytype> adds a flag to the store private key. This is a non standard extension
Packit c4476c
that is only currently interpreted by MSIE. If set to zero the flag is omitted,
Packit c4476c
if set to B<KEY_SIG> the key can be used for signing only, if set to B<KEY_EX>
Packit c4476c
it can be used for signing and encryption. This option was useful for old
Packit c4476c
export grade software which could use signing only keys of arbitrary size but
Packit c4476c
had restrictions on the permissible sizes of keys which could be used for
Packit c4476c
encryption.
Packit c4476c
Packit c4476c
If a certificate contains an B<alias> or B<keyid> then this will be
Packit c4476c
used for the corresponding B<friendlyName> or B<localKeyID> in the
Packit c4476c
PKCS12 structure.
Packit c4476c
Packit c4476c
Either B<pkey>, B<cert> or both can be B<NULL> to indicate that no key or
Packit c4476c
certificate is required. In previous versions both had to be present or
Packit c4476c
a fatal error is returned.
Packit c4476c
Packit c4476c
B<nid_key> or B<nid_cert> can be set to -1 indicating that no encryption
Packit c4476c
should be used.
Packit c4476c
Packit c4476c
B<mac_iter> can be set to -1 and the MAC will then be omitted entirely.
Packit c4476c
Packit c4476c
PKCS12_create() makes assumptions regarding the encoding of the given pass
Packit c4476c
phrase.
Packit c4476c
See L<passphrase-encoding(7)> for more information.
Packit c4476c
Packit c4476c
=head1 RETURN VALUES
Packit c4476c
Packit c4476c
PKCS12_create() returns a valid B<PKCS12> structure or NULL if an error occurred.
Packit c4476c
Packit c4476c
=head1 SEE ALSO
Packit c4476c
Packit c4476c
L<d2i_PKCS12(3)>,
Packit c4476c
L<passphrase-encoding(7)>
Packit c4476c
Packit c4476c
=head1 COPYRIGHT
Packit c4476c
Packit c4476c
Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved.
Packit c4476c
Packit c4476c
Licensed under the OpenSSL license (the "License").  You may not use
Packit c4476c
this file except in compliance with the License.  You can obtain a copy
Packit c4476c
in the file LICENSE in the source distribution or at
Packit c4476c
L<https://www.openssl.org/source/license.html>.
Packit c4476c
Packit c4476c
=cut