=pod

=head1 NAME

X509_STORE_get0_param, X509_STORE_set1_param,
X509_STORE_get1_objects, X509_STORE_get0_objects, X509_STORE_get1_all_certs
- X509_STORE setter and getter functions

=head1 SYNOPSIS

 #include <openssl/x509_vfy.h>

 X509_VERIFY_PARAM *X509_STORE_get0_param(const X509_STORE *xs);
 int X509_STORE_set1_param(X509_STORE *xs, const X509_VERIFY_PARAM *pm);
 STACK_OF(X509_OBJECT) *X509_STORE_get1_objects(X509_STORE *xs);
 STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(const X509_STORE *xs);
 STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *xs);

=head1 DESCRIPTION

X509_STORE_set1_param() sets the verification parameters to I<pm> for I<xs>.

X509_STORE_get0_param() retrieves an internal pointer to the verification
parameters for I<xs>. The returned pointer must not be freed by the
calling application

X509_STORE_get1_objects() returns a snapshot of all objects in the store's X509
cache. The cache contains B<X509> and B<X509_CRL> objects. The caller
is responsible for freeing the returned list,
using sk_X509_OBJECT_pop_free(sk, X509_OBJECT_free).

X509_STORE_get0_objects() was deprecated in OpenSSL 4.0. Applications
should instead use X509_STORE_get1_objects() to avoid potential
issues associated with X509_STORE_get0_objects(). The
X509_STORE_get0_objects() returns an internal pointer to the
store's cache of X509 and X509_CRL objects. This pointer
references internal data structures and must not be freed by the
application. Since the returned pointer exposes shared internal state, its use in
multithreaded contexts is inherently unsafe without external
synchronisation. When a store is shared across threads, callers are
required to acquire the store lock via X509_STORE_lock() before
invoking X509_STORE_get0_objects().

X509_STORE_get1_all_certs() returns a list of all certificates in the store.
The caller is responsible for freeing the returned list
with OSSL_STACK_OF_X509_free().

=head1 RETURN VALUES

X509_STORE_get0_param() returns a pointer to an
B<X509_VERIFY_PARAM> structure.

X509_STORE_set1_param() returns 1 for success and 0 for failure.

X509_STORE_get1_objects() returns a pointer to a stack of the retrieved
objects on success, else NULL.

X509_STORE_get0_objects() returns a pointer to a stack of B<X509_OBJECT>.

X509_STORE_get1_all_certs() returns a pointer to a stack of the retrieved
certificates on success, else NULL.

=head1 SEE ALSO

L<DEFINE_STACK_OF(3)>,
L<X509_STORE_new(3)>

=head1 HISTORY

B<X509_STORE_get0_param> and B<X509_STORE_get0_objects> were added in
OpenSSL 1.1.0.
B<X509_STORE_get1_certs> was added in OpenSSL 3.0.
B<X509_STORE_get1_objects> was added in OpenSSL 3.3.

=head1 COPYRIGHT

Copyright 2016-2024 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
