=pod

=head1 NAME

DSA_get_ex_new_index, DSA_set_ex_data, DSA_get_ex_data - add application specific data to DSA structures

=head1 SYNOPSIS

 #include <openssl/DSA.h>

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

 int DSA_set_ex_data(DSA *d, int idx, void *arg);

 char *DSA_get_ex_data(DSA *d, int idx);

=head1 DESCRIPTION

These functions handle application specific data in DSA
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 SEE ALSO

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

=head1 HISTORY

DSA_get_ex_new_index(), DSA_set_ex_data() and DSA_get_ex_data() are
available since OpenSSL 0.9.5.

=cut
