106 lines
4.2 KiB
HTML
106 lines
4.2 KiB
HTML
<?xml version="1.0" ?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>RSA_public_encrypt</title>
|
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
|
<link rev="made" href="mailto:nwani@atx-osx1010-2.corp.continuum.io" />
|
|
</head>
|
|
|
|
<body>
|
|
|
|
|
|
|
|
<ul id="index">
|
|
<li><a href="#NAME">NAME</a></li>
|
|
<li><a href="#SYNOPSIS">SYNOPSIS</a></li>
|
|
<li><a href="#DESCRIPTION">DESCRIPTION</a></li>
|
|
<li><a href="#RETURN-VALUES">RETURN VALUES</a></li>
|
|
<li><a href="#WARNING">WARNING</a></li>
|
|
<li><a href="#CONFORMING-TO">CONFORMING TO</a></li>
|
|
<li><a href="#SEE-ALSO">SEE ALSO</a></li>
|
|
<li><a href="#COPYRIGHT">COPYRIGHT</a></li>
|
|
</ul>
|
|
|
|
<h1 id="NAME">NAME</h1>
|
|
|
|
<p>RSA_public_encrypt, RSA_private_decrypt - RSA public key cryptography</p>
|
|
|
|
<h1 id="SYNOPSIS">SYNOPSIS</h1>
|
|
|
|
<pre><code> #include <openssl/rsa.h>
|
|
|
|
int RSA_public_encrypt(int flen, unsigned char *from,
|
|
unsigned char *to, RSA *rsa, int padding);
|
|
|
|
int RSA_private_decrypt(int flen, unsigned char *from,
|
|
unsigned char *to, RSA *rsa, int padding);</code></pre>
|
|
|
|
<h1 id="DESCRIPTION">DESCRIPTION</h1>
|
|
|
|
<p>RSA_public_encrypt() encrypts the <b>flen</b> bytes at <b>from</b> (usually a session key) using the public key <b>rsa</b> and stores the ciphertext in <b>to</b>. <b>to</b> must point to RSA_size(<b>rsa</b>) bytes of memory.</p>
|
|
|
|
<p><b>padding</b> denotes one of the following modes:</p>
|
|
|
|
<dl>
|
|
|
|
<dt id="RSA_PKCS1_PADDING">RSA_PKCS1_PADDING</dt>
|
|
<dd>
|
|
|
|
<p>PKCS #1 v1.5 padding. This currently is the most widely used mode.</p>
|
|
|
|
</dd>
|
|
<dt id="RSA_PKCS1_OAEP_PADDING">RSA_PKCS1_OAEP_PADDING</dt>
|
|
<dd>
|
|
|
|
<p>EME-OAEP as defined in PKCS #1 v2.0 with SHA-1, MGF1 and an empty encoding parameter. This mode is recommended for all new applications.</p>
|
|
|
|
</dd>
|
|
<dt id="RSA_SSLV23_PADDING">RSA_SSLV23_PADDING</dt>
|
|
<dd>
|
|
|
|
<p>PKCS #1 v1.5 padding with an SSL-specific modification that denotes that the server is SSL3 capable.</p>
|
|
|
|
</dd>
|
|
<dt id="RSA_NO_PADDING">RSA_NO_PADDING</dt>
|
|
<dd>
|
|
|
|
<p>Raw RSA encryption. This mode should <i>only</i> be used to implement cryptographically sound padding modes in the application code. Encrypting user data directly with RSA is insecure.</p>
|
|
|
|
</dd>
|
|
</dl>
|
|
|
|
<p><b>flen</b> must be less than RSA_size(<b>rsa</b>) - 11 for the PKCS #1 v1.5 based padding modes, less than RSA_size(<b>rsa</b>) - 41 for RSA_PKCS1_OAEP_PADDING and exactly RSA_size(<b>rsa</b>) for RSA_NO_PADDING. The random number generator must be seeded prior to calling RSA_public_encrypt().</p>
|
|
|
|
<p>RSA_private_decrypt() decrypts the <b>flen</b> bytes at <b>from</b> using the private key <b>rsa</b> and stores the plaintext in <b>to</b>. <b>to</b> must point to a memory section large enough to hold the decrypted data (which is smaller than RSA_size(<b>rsa</b>)). <b>padding</b> is the padding mode that was used to encrypt the data.</p>
|
|
|
|
<h1 id="RETURN-VALUES">RETURN VALUES</h1>
|
|
|
|
<p>RSA_public_encrypt() returns the size of the encrypted data (i.e., RSA_size(<b>rsa</b>)). RSA_private_decrypt() returns the size of the recovered plaintext.</p>
|
|
|
|
<p>On error, -1 is returned; the error codes can be obtained by <a href="../man3/ERR_get_error.html">ERR_get_error(3)</a>.</p>
|
|
|
|
<h1 id="WARNING">WARNING</h1>
|
|
|
|
<p>Decryption failures in the RSA_PKCS1_PADDING mode leak information which can potentially be used to mount a Bleichenbacher padding oracle attack. This is an inherent weakness in the PKCS #1 v1.5 padding design. Prefer RSA_PKCS1_OAEP_PADDING.</p>
|
|
|
|
<h1 id="CONFORMING-TO">CONFORMING TO</h1>
|
|
|
|
<p>SSL, PKCS #1 v2.0</p>
|
|
|
|
<h1 id="SEE-ALSO">SEE ALSO</h1>
|
|
|
|
<p><a href="../man3/ERR_get_error.html">ERR_get_error(3)</a>, <a href="../man3/RAND_bytes.html">RAND_bytes(3)</a>, <a href="../man3/RSA_size.html">RSA_size(3)</a></p>
|
|
|
|
<h1 id="COPYRIGHT">COPYRIGHT</h1>
|
|
|
|
<p>Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.</p>
|
|
|
|
<p>Licensed under the OpenSSL license (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <a href="https://www.openssl.org/source/license.html">https://www.openssl.org/source/license.html</a>.</p>
|
|
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
|