=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);
 void DSA_SIG_get0(BIGNUM **pr, BIGNUM **ps, DSA_SIG *sig);

=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.

DSA_SIG_get0() returns internal pointers the B<r> and B<s> values contained
in B<sig>. The values can then be examined or initialised.

=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)>. Otherwise it returns a pointer
to the newly allocated structure.

DSA_SIG_free() returns no value.

=head1 SEE ALSO

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

=cut
