-.\" $OpenBSD: RSA_public_encrypt.3,v 1.12 2019/06/10 14:58:48 schwarze Exp $
+.\" $OpenBSD: RSA_public_encrypt.3,v 1.13 2023/09/10 16:04:15 schwarze Exp $
.\" OpenSSL RSA_public_encrypt.pod 1e3f62a3 Jul 17 16:47:13 2017 +0200
.\"
-.\" This file was written by Ulf Moeller <ulf@openssl.org>.
+.\" This file is a derived work.
+.\" The changes are covered by the following Copyright and license:
+.\"
+.\" Copyright (c) 2023 Ingo Schwarze <schwarze@openbsd.org>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" The original file was written by Ulf Moeller <ulf@openssl.org>.
.\" Copyright (c) 2000, 2004 The OpenSSL Project. All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
.\" OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd $Mdocdate: June 10 2019 $
+.Dd $Mdocdate: September 10 2023 $
.Dt RSA_PUBLIC_ENCRYPT 3
.Os
.Sh NAME
.Nm RSA_public_encrypt ,
-.Nm RSA_private_decrypt
+.Nm RSA_private_decrypt ,
+.Nm EVP_PKEY_encrypt_old ,
+.Nm EVP_PKEY_decrypt_old
.Nd RSA public key cryptography
.Sh SYNOPSIS
.In openssl/rsa.h
.Fa "RSA *rsa"
.Fa "int padding"
.Fc
+.In openssl/evp.h
+.Ft int
+.Fo EVP_PKEY_encrypt_old
+.Fa "unsigned char *to"
+.Fa "const unsigned char *from"
+.Fa "int flen"
+.Fa "EVP_PKEY *pkey"
+.Fc
+.Ft int
+.Fo EVP_PKEY_decrypt_old
+.Fa "unsigned char *to"
+.Fa "const unsigned char *from"
+.Fa "int flen"
+.Fa "EVP_PKEY *pkey"
+.Fc
.Sh DESCRIPTION
.Fn RSA_public_encrypt
encrypts the
.Fn RSA_size rsa ) .
.Fa padding
is the padding mode that was used to encrypt the data.
+.Pp
+.Fn EVP_PKEY_encrypt_old
+is a deprecated wrapper around
+.Fn RSA_public_encrypt
+that uses the
+.Vt RSA
+public key stored in
+.Fa pkey
+and
+.Dv RSA_PKCS1_PADDING .
+.Pp
+.Fn EVP_PKEY_decrypt_old
+is a deprecated wrapper around
+.Fn RSA_private_decrypt
+that uses the
+.Vt RSA
+private key stored in
+.Fa pkey
+and
+.Dv RSA_PKCS1_PADDING .
.Sh RETURN VALUES
.Fn RSA_public_encrypt
-returns the size of the encrypted data (i.e.\&
+and
+.Fn EVP_PKEY_encrypt_old
+return the size of the encrypted data (i.e.\&
.Fn RSA_size rsa ) .
.Fn RSA_private_decrypt
+and
+.Fn EVP_PKEY_decrypt_old
returns the size of the recovered plaintext.
-.Pp
-On error, -1 is returned; the error codes can be obtained by
+On error, \-1 is returned; the error codes can be obtained by
.Xr ERR_get_error 3 .
+.Pp
+In addition to the return values documented above,
+.Fn EVP_PKEY_encrypt_old
+may return 0 if the
+.Xr EVP_PKEY_id 3
+of
+.Fa pkey
+is not
+.Dv EVP_PKEY_RSA .
.Sh SEE ALSO
+.Xr EVP_PKEY_decrypt 3 ,
+.Xr EVP_PKEY_encrypt 3 ,
.Xr RSA_meth_set_priv_dec 3 ,
.Xr RSA_new 3 ,
.Xr RSA_size 3
appeared in SSLeay 0.4 or earlier and have been available since
.Ox 2.4 .
.Pp
+.Fn EVP_PKEY_encrypt
+and
+.Fn EVP_PKEY_decrypt
+first appeared in SSLeay 0.9.0 and have been available since
+.Ox 2.4 .
+There were renamed to
+.Fn EVP_PKEY_encrypt_old
+and
+.Fn EVP_PKEY_decrypt_old
+in OpenSSL 1.0.0 and
+.Ox 4.9 .
+.Pp
.Dv RSA_NO_PADDING
is available since SSLeay 0.9.0.
OAEP was added in OpenSSL 0.9.2b.