1.\" $OpenBSD: DSA_sign.3,v 1.10 2019/06/10 14:58:48 schwarze Exp $ 2.\" OpenSSL b97fdb57 Nov 11 09:33:09 2016 +0100 3.\" 4.\" This file was written by Ulf Moeller <ulf@openssl.org>. 5.\" Copyright (c) 2000 The OpenSSL Project. All rights reserved. 6.\" 7.\" Redistribution and use in source and binary forms, with or without 8.\" modification, are permitted provided that the following conditions 9.\" are met: 10.\" 11.\" 1. Redistributions of source code must retain the above copyright 12.\" notice, this list of conditions and the following disclaimer. 13.\" 14.\" 2. Redistributions in binary form must reproduce the above copyright 15.\" notice, this list of conditions and the following disclaimer in 16.\" the documentation and/or other materials provided with the 17.\" distribution. 18.\" 19.\" 3. All advertising materials mentioning features or use of this 20.\" software must display the following acknowledgment: 21.\" "This product includes software developed by the OpenSSL Project 22.\" for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 23.\" 24.\" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 25.\" endorse or promote products derived from this software without 26.\" prior written permission. For written permission, please contact 27.\" openssl-core@openssl.org. 28.\" 29.\" 5. Products derived from this software may not be called "OpenSSL" 30.\" nor may "OpenSSL" appear in their names without prior written 31.\" permission of the OpenSSL Project. 32.\" 33.\" 6. Redistributions of any form whatsoever must retain the following 34.\" acknowledgment: 35.\" "This product includes software developed by the OpenSSL Project 36.\" for use in the OpenSSL Toolkit (http://www.openssl.org/)" 37.\" 38.\" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 39.\" EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 40.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 41.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 42.\" ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 43.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 44.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 45.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 46.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 47.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 48.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 49.\" OF THE POSSIBILITY OF SUCH DAMAGE. 50.\" 51.Dd $Mdocdate: June 10 2019 $ 52.Dt DSA_SIGN 3 53.Os 54.Sh NAME 55.Nm DSA_sign , 56.Nm DSA_sign_setup , 57.Nm DSA_verify 58.Nd DSA signatures 59.Sh SYNOPSIS 60.In openssl/dsa.h 61.Ft int 62.Fo DSA_sign 63.Fa "int type" 64.Fa "const unsigned char *dgst" 65.Fa "int len" 66.Fa "unsigned char *sigret" 67.Fa "unsigned int *siglen" 68.Fa "DSA *dsa" 69.Fc 70.Ft int 71.Fo DSA_sign_setup 72.Fa "DSA *dsa" 73.Fa "BN_CTX *ctx" 74.Fa "BIGNUM **kinvp" 75.Fa "BIGNUM **rp" 76.Fc 77.Ft int 78.Fo DSA_verify 79.Fa "int type" 80.Fa "const unsigned char *dgst" 81.Fa "int len" 82.Fa "unsigned char *sigbuf" 83.Fa "int siglen" 84.Fa "DSA *dsa" 85.Fc 86.Sh DESCRIPTION 87.Fn DSA_sign 88computes a digital signature on the 89.Fa len 90byte message digest 91.Fa dgst 92using the private key 93.Fa dsa 94and places its ASN.1 DER encoding at 95.Fa sigret . 96The length of the signature is placed in 97.Pf * Fa siglen . 98.Fa sigret 99must point to 100.Fn DSA_size dsa 101bytes of memory. 102.Pp 103.Fn DSA_sign_setup 104may be used to precompute part of the signing operation in case 105signature generation is time-critical. 106It expects 107.Fa dsa 108to contain DSA parameters. 109It places the precomputed values in newly allocated 110.Vt BIGNUM Ns s 111at 112.Pf * Fa kinvp 113and 114.Pf * Fa rp , 115after freeing the old ones unless 116.Fa kinvp 117and 118.Fa rp 119are 120.Dv NULL . 121These values may be passed to 122.Fn DSA_sign 123in 124.Fa dsa->kinv 125and 126.Sy dsa->r . 127.Fa ctx 128is a pre-allocated 129.Vt BN_CTX 130or 131.Dv NULL . 132.Pp 133.Fn DSA_verify 134verifies that the signature 135.Fa sigbuf 136of size 137.Fa siglen 138matches a given message digest 139.Fa dgst 140of size 141.Fa len . 142.Fa dsa 143is the signer's public key. 144.Pp 145The 146.Fa type 147parameter is ignored. 148.Sh RETURN VALUES 149.Fn DSA_sign 150and 151.Fn DSA_sign_setup 152return 1 on success or 0 on error. 153.Fn DSA_verify 154returns 1 for a valid signature, 0 for an incorrect signature, 155and -1 on error. 156The error codes can be obtained by 157.Xr ERR_get_error 3 . 158.Sh SEE ALSO 159.Xr DSA_do_sign 3 , 160.Xr DSA_get0_key 3 , 161.Xr DSA_new 3 162.Sh STANDARDS 163US Federal Information Processing Standard FIPS 186 (Digital Signature 164Standard, DSS), ANSI X9.30 165.Sh HISTORY 166.Fn DSA_sign 167and 168.Fn DSA_verify 169first appeared in SSLeay 0.6.0. 170.Fn DSA_sign_setup 171first appeared in SSLeay 0.8.0. 172All these functions have been available since 173.Ox 2.4 . 174