OSSL_PARAM_dup.pod 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. =pod
  2. =head1 NAME
  3. OSSL_PARAM_dup, OSSL_PARAM_merge, OSSL_PARAM_free
  4. - OSSL_PARAM array copy functions
  5. =head1 SYNOPSIS
  6. #include <openssl/params.h>
  7. OSSL_PARAM *OSSL_PARAM_dup(const OSSL_PARAM *params);
  8. OSSL_PARAM *OSSL_PARAM_merge(const OSSL_PARAM *params, const OSSL_PARAM *params1);
  9. void OSSL_PARAM_free(OSSL_PARAM *params);
  10. =head1 DESCRIPTION
  11. Algorithm parameters can be exported/imported from/to providers using arrays of
  12. L<OSSL_PARAM(3)>. The following utility functions allow the parameters to be
  13. duplicated and merged with other L<OSSL_PARAM(3)> to assist in this process.
  14. OSSL_PARAM_dup() duplicates the parameter array I<params>. This function does a
  15. deep copy of the data.
  16. OSSL_PARAM_merge() merges the parameter arrays I<params> and I<params1> into a
  17. new parameter array. If I<params> and I<params1> contain values with the same
  18. 'key' then the value from I<params1> will replace the I<param> value. This
  19. function does a shallow copy of the parameters. Either I<params> or I<params1>
  20. may be NULL. The behaviour of the merge is unpredictable if I<params> and
  21. I<params1> contain the same key, and there are multiple entries within either
  22. array that have the same key.
  23. OSSL_PARAM_free() frees the parameter array I<params> that was created using
  24. OSSL_PARAM_dup(), OSSL_PARAM_merge() or OSSL_PARAM_BLD_to_param().
  25. =head1 RETURN VALUES
  26. The functions OSSL_PARAM_dup() and OSSL_PARAM_merge() return a newly allocated
  27. L<OSSL_PARAM(3)> array, or NULL if there was an error. If both parameters are NULL
  28. then NULL is returned.
  29. =head1 SEE ALSO
  30. L<OSSL_PARAM(3)>, L<OSSL_PARAM_BLD(3)>
  31. =head1 HISTORY
  32. The functions were added in OpenSSL 3.0.
  33. =head1 COPYRIGHT
  34. Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
  35. Licensed under the Apache License 2.0 (the "License"). You may not use
  36. this file except in compliance with the License. You can obtain a copy
  37. in the file LICENSE in the source distribution or at
  38. L<https://www.openssl.org/source/license.html>.
  39. =cut