mirror of
https://github.com/openssl/openssl.git
synced 2025-01-18 13:44:20 +08:00
8c1cbc7210
CLA: trivial Reviewed-by: Shane Lontis <shane.lontis@oracle.com> Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> (Merged from https://github.com/openssl/openssl/pull/12320)
56 lines
1.8 KiB
Plaintext
56 lines
1.8 KiB
Plaintext
=pod
|
|
|
|
=head1 NAME
|
|
|
|
EVP_PKEY - an internal description
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
#include "crypto/evp.h"
|
|
|
|
struct evp_pkey_st;
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
I<This is not a complete description yet>
|
|
|
|
B<EVP_PKEY> is a complex type that's essentially a container for
|
|
private/public key key pairs, but has had other uses as well.
|
|
|
|
=for comment "uses" could as well be "abuses"...
|
|
|
|
It can contain the legacy form of keys -- i.e. pointers to the low-level key types, such as B<RSA>, B<DSA> and B<EC> --, but also the
|
|
provided form of keys -- i.e. pointers to provider side key data.
|
|
Those two forms are mutually exclusive; an B<EVP_PKEY> instance can't
|
|
contain both a key in legacy form and in provided form. Regardless of
|
|
form, this key is commonly referred to as the "origin".
|
|
|
|
An B<EVP_PKEY> also contains a cache of provider side copies of the
|
|
key, each adapted for the provider that is going to use that copy to
|
|
perform some operation.
|
|
For a legacy "origin", the B<EVP_PKEY_ASN1_METHOD>'s functions
|
|
export_to() and dirty_cnt() must be implemented for such caching to be
|
|
possible. For a provider side "origin", the B<EVP_KEYMGMT>'s function
|
|
OP_keymgmt_export() must be implemented. In all cases, the receiving
|
|
B<EVP_KEYMGMT> must have an implemented OP_keygmt_import().
|
|
|
|
If such caching isn't supported, the operations that can be performed
|
|
with that key are limited to the same backend as the "origin" key
|
|
(ENGINE for legacy "origin" keys, provider for provider side "origin"
|
|
keys).
|
|
|
|
=head1 SEE ALSO
|
|
|
|
L<provider-keymgmt(7)>
|
|
|
|
=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
|