1=pod 2 3=head1 NAME 4 5SSL_CTX_set_cert_store, SSL_CTX_set1_cert_store, SSL_CTX_get_cert_store - manipulate X509 certificate verification storage 6 7=head1 SYNOPSIS 8 9 #include <openssl/ssl.h> 10 11 void SSL_CTX_set_cert_store(SSL_CTX *ctx, X509_STORE *store); 12 void SSL_CTX_set1_cert_store(SSL_CTX *ctx, X509_STORE *store); 13 X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *ctx); 14 15=head1 DESCRIPTION 16 17SSL_CTX_set_cert_store() sets/replaces the certificate verification storage 18of B<ctx> to/with B<store>. If another X509_STORE object is currently 19set in B<ctx>, it will be X509_STORE_free()ed. SSL_CTX_set_cert_store() will 20take ownership of the B<store>, i.e., the call C<X509_STORE_free(store)> is no 21longer needed. 22 23SSL_CTX_set1_cert_store() sets/replaces the certificate verification storage 24of B<ctx> to/with B<store>. The B<store>'s reference count is incremented. 25If another X509_STORE object is currently set in B<ctx>, it will be X509_STORE_free()ed. 26 27SSL_CTX_get_cert_store() returns a pointer to the current certificate 28verification storage. B<ctx> B<MUST NOT> be NULL. 29 30=head1 NOTES 31 32In order to verify the certificates presented by the peer, trusted CA 33certificates must be accessed. These CA certificates are made available 34via lookup methods, handled inside the X509_STORE. From the X509_STORE 35the X509_STORE_CTX used when verifying certificates is created. 36 37Typically the trusted certificate store is handled indirectly via using 38L<SSL_CTX_load_verify_locations(3)>. 39Using the SSL_CTX_set_cert_store() and SSL_CTX_get_cert_store() functions 40it is possible to manipulate the X509_STORE object beyond the 41L<SSL_CTX_load_verify_locations(3)> 42call. 43 44Currently no detailed documentation on how to use the X509_STORE 45object is available. Not all members of the X509_STORE are used when 46the verification takes place. So will e.g. the verify_callback() be 47overridden with the verify_callback() set via the 48L<SSL_CTX_set_verify(3)> family of functions. 49This document must therefore be updated when documentation about the 50X509_STORE object and its handling becomes available. 51 52SSL_CTX_set_cert_store() does not increment the B<store>'s reference 53count, so it should not be used to assign an X509_STORE that is owned 54by another SSL_CTX. 55 56To share X509_STOREs between two SSL_CTXs, use SSL_CTX_get_cert_store() 57to get the X509_STORE from the first SSL_CTX, and then use 58SSL_CTX_set1_cert_store() to assign to the second SSL_CTX and 59increment the reference count of the X509_STORE. 60 61=head1 RESTRICTIONS 62 63The X509_STORE structure used by an SSL_CTX is used for verifying peer 64certificates and building certificate chains, it is also shared by 65every child SSL structure. Applications wanting finer control can use 66functions such as SSL_CTX_set1_verify_cert_store() instead. 67 68=head1 RETURN VALUES 69 70SSL_CTX_set_cert_store() does not return diagnostic output. 71 72SSL_CTX_set1_cert_store() does not return diagnostic output. 73 74SSL_CTX_get_cert_store() returns the current setting. 75 76=head1 SEE ALSO 77 78L<ssl(7)>, 79L<SSL_CTX_load_verify_locations(3)>, 80L<SSL_CTX_set_verify(3)> 81 82=head1 COPYRIGHT 83 84Copyright 2001-2024 The OpenSSL Project Authors. All Rights Reserved. 85 86Licensed under the Apache License 2.0 (the "License"). You may not use 87this file except in compliance with the License. You can obtain a copy 88in the file LICENSE in the source distribution or at 89L<https://www.openssl.org/source/license.html>. 90 91=cut 92