=pod

=head1 NAME

X509_STORE_CTX_get_ex_new_index, X509_STORE_CTX_set_ex_data, X509_STORE_CTX_get_ex_data - add application specific data to X509_STORE_CTX structures

=head1 SYNOPSIS

 #include <openssl/x509_vfy.h>

 int X509_STORE_CTX_get_ex_new_index(long argl, void *argp,
		CRYPTO_EX_new *new_func,
		CRYPTO_EX_dup *dup_func,
		CRYPTO_EX_free *free_func);

 int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *d, int idx, void *arg);

 void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *d, int idx);

=head1 DESCRIPTION

These functions handle application specific data in X509_STORE_CTX structures.
Their usage is identical to that of RSA_get_ex_new_index(), RSA_set_ex_data()
and RSA_get_ex_data() as described in L<RSA_get_ex_new_index(3)>.

=head1 NOTES

This mechanism is used internally by the B<ssl> library to store the B<SSL>
structure associated with a verification operation in an B<X509_STORE_CTX>
structure. 

=head1 SEE ALSO

L<RSA_get_ex_new_index(3)|RSA_get_ex_new_index(3)>

=head1 HISTORY

X509_STORE_CTX_get_ex_new_index(), X509_STORE_CTX_set_ex_data() and
X509_STORE_CTX_get_ex_data() are available since OpenSSL 0.9.5.

=cut
