blob: da0ffd42a0f44ab5b35234be44da2ec6ae6f2850 [file] [log] [blame]
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Rivest–Shamir–Adleman cryptosystem"><meta name="keywords" content="rust, rustlang, rust-lang, rsa"><title>openssl::rsa - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" href="../../normalize.css"><link rel="stylesheet" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../../ayu.css" disabled><link rel="stylesheet" href="../../dark.css" disabled><link rel="stylesheet" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script defer src="../../main.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../../openssl/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../openssl/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Module rsa</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Module <a href="../index.html">openssl</a>::<wbr><a class="mod" href="#">rsa</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/openssl/rsa.rs.html#1-852">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Rivest–Shamir–Adleman cryptosystem</p>
<p>RSA is one of the earliest asymmetric public key encryption schemes.
Like many other cryptosystems, RSA relies on the presumed difficulty of a hard
mathematical problem, namely factorization of the product of two large prime
numbers. At the moment there does not exist an algorithm that can factor such
large numbers in reasonable time. RSA is used in a wide variety of
applications including digital signatures and key exchanges such as
establishing a TLS/SSL connection.</p>
<p>The RSA acronym is derived from the first letters of the surnames of the
algorithm’s founding trio.</p>
<h2 id="example"><a href="#example">Example</a></h2>
<p>Generate a 2048-bit RSA key pair and use the public key to encrypt some data.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>openssl::rsa::{Rsa, Padding};
<span class="kw">let </span>rsa = Rsa::generate(<span class="number">2048</span>).unwrap();
<span class="kw">let </span>data = <span class="string">b&quot;foobar&quot;</span>;
<span class="kw">let </span><span class="kw-2">mut </span>buf = <span class="macro">vec!</span>[<span class="number">0</span>; rsa.size() <span class="kw">as </span>usize];
<span class="kw">let </span>encrypted_len = rsa.public_encrypt(data, <span class="kw-2">&amp;mut </span>buf, Padding::PKCS1).unwrap();</code></pre></div>
</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Padding.html" title="openssl::rsa::Padding struct">Padding</a></div><div class="item-right docblock-short">Type of encryption padding to use.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Rsa.html" title="openssl::rsa::Rsa struct">Rsa</a></div><div class="item-right docblock-short">An RSA key.</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.RsaPrivateKeyBuilder.html" title="openssl::rsa::RsaPrivateKeyBuilder struct">RsaPrivateKeyBuilder</a></div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.RsaRef.html" title="openssl::rsa::RsaRef struct">RsaRef</a></div><div class="item-right docblock-short">Reference to <code>RSA</code></div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="openssl" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>