.\" $OpenBSD: DSA_sign.3,v 1.2 2016/11/06 15:52:50 jmc Exp $ .\" .Dd $Mdocdate: November 6 2016 $ .Dt DSA_SIGN 3 .Os .Sh NAME .Nm DSA_sign , .Nm DSA_sign_setup , .Nm DSA_verify .Nd DSA signatures .Sh SYNOPSIS .In openssl/dsa.h .Ft int .Fo DSA_sign .Fa "int type" .Fa "const unsigned char *dgst" .Fa "int len" .Fa "unsigned char *sigret" .Fa "unsigned int *siglen" .Fa "DSA *dsa" .Fc .Ft int .Fo DSA_sign_setup .Fa "DSA *dsa" .Fa "BN_CTX *ctx" .Fa "BIGNUM **kinvp" .Fa "BIGNUM **rp" .Fc .Ft int .Fo DSA_verify .Fa "int type" .Fa "const unsigned char *dgst" .Fa "int len" .Fa "unsigned char *sigbuf" .Fa "int siglen" .Fa "DSA *dsa" .Fc .Sh DESCRIPTION .Fn DSA_sign computes a digital signature on the .Fa len byte message digest .Fa dgst using the private key .Fa dsa and places its ASN.1 DER encoding at .Fa sigret . The length of the signature is placed in .Pf * Fa siglen . .Fa sigret must point to .Fn DSA_size dsa bytes of memory. .Pp .Fn DSA_sign_setup may be used to precompute part of the signing operation in case signature generation is time-critical. It expects .Fa dsa to contain DSA parameters. It places the precomputed values in newly allocated .Vt BIGNUM Ns s at .Pf * Fa kinvp and .Pf * Fa rp , after freeing the old ones unless .Fa kinvp and .Fa rp are .Dv NULL . These values may be passed to .Fn DSA_sign in .Fa dsa->kinv and .Sy dsa->r . .Fa ctx is a pre-allocated .Vt BN_CTX or .Dv NULL . .Pp .Fn DSA_verify verifies that the signature .Fa sigbuf of size .Fa siglen matches a given message digest .Fa dgst of size .Fa len . .Fa dsa is the signer's public key. .Pp The .Fa type parameter is ignored. .Sh RETURN VALUES .Fn DSA_sign and .Fn DSA_sign_setup return 1 on success or 0 on error. .Fn DSA_verify returns 1 for a valid signature, 0 for an incorrect signature, and -1 on error. The error codes can be obtained by .Xr ERR_get_error 3 . .Sh SEE ALSO .Xr dsa 3 , .Xr DSA_do_sign 3 , .Xr ERR_get_error 3 , .Xr rand 3 .Sh STANDARDS US Federal Information Processing Standard FIPS 186 (Digital Signature Standard, DSS), ANSI X9.30 .Sh HISTORY .Fn DSA_sign and .Fn DSA_verify are available in all versions of SSLeay. .Fn DSA_sign_setup was added in SSLeay 0.8.