=pod

=head1 NAME

DSA_SIG_new, DSA_SIG_free - allocate and free DSA signature objects

=head1 SYNOPSIS

 #include <openssl/dsa.h>

 DSA_SIG *DSA_SIG_new(void);

 void	DSA_SIG_free(DSA_SIG *a);

=head1 DESCRIPTION

DSA_SIG_new() allocates and initializes a B<DSA_SIG> structure.

DSA_SIG_free() frees the B<DSA_SIG> structure and its components. The
values are erased before the memory is returned to the system.

=head1 RETURN VALUES

If the allocation fails, DSA_SIG_new() returns B<NULL> and sets an
error code that can be obtained by
L<ERR_get_error(3)|ERR_get_error(3)>. Otherwise it returns a pointer
to the newly allocated structure.

DSA_SIG_free() returns no value.

=head1 SEE ALSO

L<dsa(3)|dsa(3)>, L<ERR_get_error(3)|ERR_get_error(3)>,
L<DSA_do_sign(3)|DSA_do_sign(3)>

=head1 HISTORY

DSA_SIG_new() and DSA_SIG_free() were added in OpenSSL 0.9.3.

=cut
