mirror of https://github.com/openssl/openssl
99 lines
3.6 KiB
Plaintext
99 lines
3.6 KiB
Plaintext
=pod
|
|
|
|
=head1 NAME
|
|
|
|
evp_keymgmt_util_export,
|
|
evp_keymgmt_util_export_to_provider,
|
|
evp_keymgmt_util_find_operation_cache,
|
|
evp_keymgmt_util_clear_operation_cache,
|
|
evp_keymgmt_util_cache_keydata,
|
|
evp_keymgmt_util_cache_keyinfo,
|
|
evp_keymgmt_util_fromdata,
|
|
OP_CACHE_ELEM
|
|
- internal KEYMGMT utility functions
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
#include "crypto/evp.h"
|
|
|
|
typedef struct OP_CACHE_ELEM;
|
|
|
|
int evp_keymgmt_util_export(const EVP_PKEY *pk, int selection,
|
|
OSSL_CALLBACK *export_cb, void *export_cbarg);
|
|
void *evp_keymgmt_util_export_to_provider(EVP_PKEY *pk, EVP_KEYMGMT *keymgmt);
|
|
OP_CACHE_ELEM *evp_keymgmt_util_find_operation_cache(EVP_PKEY *pk,
|
|
EVP_KEYMGMT *keymgmt);
|
|
int evp_keymgmt_util_clear_operation_cache(EVP_PKEY *pk, int locking);
|
|
int evp_keymgmt_util_cache_keydata(EVP_PKEY *pk,
|
|
EVP_KEYMGMT *keymgmt, void *keydata);
|
|
void evp_keymgmt_util_cache_keyinfo(EVP_PKEY *pk);
|
|
void *evp_keymgmt_util_fromdata(EVP_PKEY *target, EVP_KEYMGMT *keymgmt,
|
|
int selection, const OSSL_PARAM params[]);
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
evp_keymgmt_util_export() calls L<evp_keymgmt_export(3)> with the
|
|
I<keymgmt> and I<keydata> from I<pk>. This is a convenience function.
|
|
|
|
evp_keymgmt_util_export_to_provider() exports cached key material
|
|
(provider side key material) from the given key I<pk> to a provider
|
|
via a B<EVP_KEYMGMT> interface, if this hasn't already been done.
|
|
It maintains a cache of provider key references in I<pk> to keep track
|
|
of all provider side keys.
|
|
|
|
To export a legacy key, use L<evp_pkey_export_to_provider(3)> instead,
|
|
as this function ignores any legacy key data.
|
|
|
|
evp_keymgmt_util_find_operation_cache() finds
|
|
I<keymgmt> in I<pk>'s cache of provided keys for operations.
|
|
It should only be called while holding I<pk>'s lock (read or write).
|
|
|
|
evp_keymgmt_util_clear_operation_cache() can be used to explicitly
|
|
clear the cache of operation key references. If I<locking> is set to 1 then
|
|
then I<pk>'s lock will be obtained while doing the clear. Otherwise it will be
|
|
assumed that the lock has already been obtained or is not required.
|
|
|
|
evp_keymgmt_util_cache_keydata() can be used to add a provider key
|
|
object to a B<PKEY>.
|
|
|
|
evp_keymgmt_util_cache_keyinfo() can be used to get all kinds of
|
|
information from the provvider "origin" and save it in I<pk>'s
|
|
information cache.
|
|
|
|
evp_keymgmt_util_fromdata() can be used to add key object data to a
|
|
given key I<target> via a B<EVP_KEYMGMT> interface. This is used as a
|
|
helper for L<EVP_PKEY_fromdata(3)>.
|
|
|
|
=head1 RETURN VALUES
|
|
|
|
evp_keymgmt_export_to_provider() and evp_keymgmt_util_fromdata()
|
|
return a pointer to the appropriate provider side key (created or
|
|
found again), or NULL on error.
|
|
|
|
evp_keymgmt_util_find_operation_cache() returns a pointer to the
|
|
operation cache slot. If I<keymgmt> is NULL, or if there is no slot
|
|
with a match for I<keymgmt>, NULL is returned.
|
|
|
|
evp_keymgmt_util_cache_keydata() and evp_keymgmt_util_clear_operation_cache()
|
|
return 1 on success or 0 otherwise.
|
|
|
|
=head1 NOTES
|
|
|
|
"Legacy key" is the term used for any key that has been assigned to an
|
|
B<EVP_PKEY> with EVP_PKEY_assign_RSA() and similar functions.
|
|
|
|
=head1 SEE ALSO
|
|
|
|
L<EVP_PKEY_ASN1_METHOD(3)>, L<EVP_PKEY_assign_RSA(3)>
|
|
|
|
=head1 COPYRIGHT
|
|
|
|
Copyright 2019-2021 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
|