1.\" $OpenBSD: RSA_private_encrypt.3,v 1.10 2019/06/10 14:58:48 schwarze Exp $ 2.\" OpenSSL RSA_private_encrypt.pod b41f6b64 Mar 10 15:49:04 2017 +0000 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 RSA_PRIVATE_ENCRYPT 3 53.Os 54.Sh NAME 55.Nm RSA_private_encrypt , 56.Nm RSA_public_decrypt 57.Nd low level signature operations 58.Sh SYNOPSIS 59.In openssl/rsa.h 60.Ft int 61.Fo RSA_private_encrypt 62.Fa "int flen" 63.Fa "const unsigned char *from" 64.Fa "unsigned char *to" 65.Fa "RSA *rsa" 66.Fa "int padding" 67.Fc 68.Ft int 69.Fo RSA_public_decrypt 70.Fa "int flen" 71.Fa "const unsigned char *from" 72.Fa "unsigned char *to" 73.Fa "RSA *rsa" 74.Fa "int padding" 75.Fc 76.Sh DESCRIPTION 77These functions handle RSA signatures at a low level. 78.Pp 79.Fn RSA_private_encrypt 80signs the 81.Fa flen 82bytes at 83.Fa from 84(usually a message digest with an algorithm identifier) using the 85private key 86.Fa rsa 87and stores the signature in 88.Fa to . 89.Fa to 90must point to 91.Fn RSA_size rsa 92bytes of memory. 93.Pp 94.Fa padding 95denotes one of the following modes: 96.Bl -tag -width Ds 97.It Dv RSA_PKCS1_PADDING 98PKCS #1 v1.5 padding. 99This function does not handle the 100.Sy algorithmIdentifier 101specified in PKCS #1. 102When generating or verifying PKCS #1 signatures, 103.Xr RSA_sign 3 104and 105.Xr RSA_verify 3 106should be used. 107.It Dv RSA_NO_PADDING 108Raw RSA signature. 109This mode should only be used to implement cryptographically sound 110padding modes in the application code. 111Signing user data directly with RSA is insecure. 112.El 113.Pp 114.Fn RSA_public_decrypt 115recovers the message digest from the 116.Fa flen 117bytes long signature at 118.Fa from 119using the signer's public key 120.Fa rsa . 121.Fa to 122must point to a memory section large enough to hold the message digest 123(which is smaller than 124.Fn RSA_size rsa 125- 11). 126.Fa padding 127is the padding mode that was used to sign the data. 128.Sh RETURN VALUES 129.Fn RSA_private_encrypt 130returns the size of the signature (i.e.\& 131.Fn RSA_size rsa ) . 132.Fn RSA_public_decrypt 133returns the size of the recovered message digest. 134.Pp 135On error, -1 is returned; the error codes can be obtained by 136.Xr ERR_get_error 3 . 137.Sh SEE ALSO 138.Xr RSA_meth_set_priv_enc 3 , 139.Xr RSA_new 3 , 140.Xr RSA_sign 3 , 141.Xr RSA_verify 3 142.Sh HISTORY 143.Fn RSA_private_encrypt 144and 145.Fn RSA_public_decrypt 146appeared in SSLeay 0.4 or earlier and have been available since 147.Ox 2.4 . 148.Pp 149.Dv RSA_NO_PADDING 150is available since SSLeay 0.9.0. 151