mirror of https://github.com/openssl/openssl.git
111 lines
4.1 KiB
Plaintext
111 lines
4.1 KiB
Plaintext
=pod
|
|
|
|
=head1 NAME
|
|
|
|
OSSL_DECODER_CTX_new_by_EVP_PKEY,
|
|
OSSL_DECODER_CTX_set_passphrase,
|
|
OSSL_DECODER_CTX_set_pem_password_cb,
|
|
OSSL_DECODER_CTX_set_passphrase_ui,
|
|
OSSL_DECODER_CTX_set_passphrase_cb
|
|
- Decoder routines to decode EVP_PKEYs
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
#include <openssl/decoder.h>
|
|
|
|
OSSL_DECODER_CTX *
|
|
OSSL_DECODER_CTX_new_by_EVP_PKEY(const EVP_PKEY *pkey, const char *input_type,
|
|
OPENSSL_CTX *libctx, const char *propquery);
|
|
|
|
int OSSL_DECODER_CTX_set_passphrase(OSSL_DECODER_CTX *ctx,
|
|
const unsigned char *kstr,
|
|
size_t klen);
|
|
int OSSL_DECODER_CTX_set_pem_password_cb(OSSL_DECODER_CTX *ctx,
|
|
pem_password_cb *cb,
|
|
void *cbarg);
|
|
int OSSL_DECODER_CTX_set_passphrase_ui(OSSL_DECODER_CTX *ctx,
|
|
const UI_METHOD *ui_method,
|
|
void *ui_data);
|
|
int OSSL_DECODER_CTX_set_passphrase_cb(OSSL_DECODER_CTX *ctx,
|
|
OSSL_PASSPHRASE_CALLBACK *cb,
|
|
void *cbarg);
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
OSSL_DECODER_CTX_new_by_EVP_PKEY() is a utility function that
|
|
creates a B<OSSL_DECODER_CTX>, finds all applicable decoder
|
|
implementations and sets them up, so all the caller has to do next is
|
|
call functions like OSSL_DECODE_from_bio().
|
|
|
|
Internally OSSL_DECODER_CTX_new_by_EVP_PKEY() searches for all
|
|
available L<EVP_KEYMGMT(3)> implementations, and then builds a list of all
|
|
potential decoder implementations that may be able to process the
|
|
encoded input into data suitable for B<EVP_PKEY>s. All these
|
|
implementations are implicitly fetched using I<libctx> and I<propquery>.
|
|
|
|
The search of decoder implementations can be limited with
|
|
I<input_type>, which specifies a starting input type. This is further
|
|
explained in L<OSSL_DECODER_CTX_set_input_type(3)>.
|
|
|
|
If no suitable decoder was found, OSSL_DECODER_CTX_new_by_EVP_PKEY()
|
|
still creates a B<OSSL_DECODER_CTX>, but with no associated
|
|
decoder (L<OSSL_DECODER_CTX_num_decoders(3)> returns
|
|
zero). This helps the caller distinguish between an error when
|
|
creating the B<OSSL_DECODER_CTX>, and the lack the decoder
|
|
support and act accordingly.
|
|
|
|
OSSL_DECODER_CTX_set_passphrase() gives the implementation a
|
|
pass phrase to use when decrypting the encoded private key.
|
|
Alternatively, a pass phrase callback may be specified with the
|
|
following functions.
|
|
|
|
OSSL_DECODER_CTX_set_pem_password_cb(),
|
|
OSSL_DECODER_CTX_set_passphrase_ui() and
|
|
OSSL_DECODER_CTX_set_passphrase_cb() set up a callback method that
|
|
the implementation can use to prompt for a pass phrase, giving the caller
|
|
the choice of prefered pass phrase callback form. These are called
|
|
indirectly, through an internal B<OSSL_PASSPHRASE_CALLBACK> function.
|
|
|
|
The internal B<OSSL_PASSPHRASE_CALLBACK> function caches the pass phrase,
|
|
to be re-used in all decodings that are performed in the same decoding run
|
|
(for example, within one L<OSSL_DECODER_from_bio(3)> call).
|
|
|
|
=head1 RETURN VALUES
|
|
|
|
OSSL_DECODER_CTX_new_by_EVP_PKEY() returns a pointer to a
|
|
B<OSSL_DECODER_CTX>, or NULL if it couldn't be created.
|
|
|
|
OSSL_DECODER_CTX_set_passphrase(),
|
|
OSSL_DECODER_CTX_set_pem_password_cb(),
|
|
OSSL_DECODER_CTX_set_passphrase_ui() and
|
|
OSSL_DECODER_CTX_set_passphrase_cb()
|
|
all return 1 on success, or 0 on failure.
|
|
|
|
=head1 NOTES
|
|
|
|
Parts of the function names are made to match already existing OpenSSL
|
|
names.
|
|
|
|
B<EVP_PKEY> in OSSL_DECODER_CTX_new_by_EVP_PKEY() matches the type
|
|
name, thus making for the naming pattern
|
|
B<OSSL_DECODER_CTX_new_by_I<TYPE>>() when new types are handled.
|
|
|
|
=head1 SEE ALSO
|
|
|
|
L<provider(7)>, L<OSSL_DECODER(3)>, L<OSSL_DECODER_CTX(3)>
|
|
|
|
=head1 HISTORY
|
|
|
|
The functions described here were 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
|