Files
SwiftECC/docs/Classes/ECPrivateKey.html
T
2023-04-20 10:01:52 +02:00

1666 lines
82 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<title>ECPrivateKey Class Reference</title>
<link rel="stylesheet" type="text/css" href="../css/jazzy.css" />
<link rel="stylesheet" type="text/css" href="../css/highlight.css" />
<meta charset='utf-8'>
<script src="../js/jquery.min.js" defer></script>
<script src="../js/jazzy.js" defer></script>
<script src="../js/lunr.min.js" defer></script>
<script src="../js/typeahead.jquery.js" defer></script>
<script src="../js/jazzy.search.js" defer></script>
</head>
<body>
<a name="//apple_ref/swift/Class/ECPrivateKey" class="dashAnchor"></a>
<a title="ECPrivateKey Class Reference"></a>
<header>
<div class="content-wrapper">
<p><a href="../index.html">SwiftECC Docs</a> (100% documented)</p>
<div class="header-right">
<form role="search" action="../search.json">
<input type="text" placeholder="Search documentation" data-typeahead>
</form>
</div>
</div>
</header>
<div class="content-wrapper">
<p id="breadcrumbs">
<a href="../index.html">SwiftECC Reference</a>
<img id="carat" src="../img/carat.png" alt=""/>
ECPrivateKey Class Reference
</p>
</div>
<div class="content-wrapper">
<nav class="sidebar">
<ul class="nav-groups">
<li class="nav-group-name">
<a href="../Classes.html">Classes</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Classes/Domain.html">Domain</a>
</li>
<li class="nav-group-task">
<a href="../Classes/ECPrivateKey.html">ECPrivateKey</a>
</li>
<li class="nav-group-task">
<a href="../Classes/ECPublicKey.html">ECPublicKey</a>
</li>
<li class="nav-group-task">
<a href="../Classes/ECSignature.html">ECSignature</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Enums.html">Enumerations</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Enums/AESCipher.html">AESCipher</a>
</li>
<li class="nav-group-task">
<a href="../Enums/BlockMode.html">BlockMode</a>
</li>
<li class="nav-group-task">
<a href="../Enums/ECCurve.html">ECCurve</a>
</li>
<li class="nav-group-task">
<a href="../Enums/ECException.html">ECException</a>
</li>
<li class="nav-group-task">
<a href="../Enums/MessageDigestAlgorithm.html">MessageDigestAlgorithm</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Structs.html">Structures</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Structs/Base64.html">Base64</a>
</li>
<li class="nav-group-task">
<a href="../Structs/Point.html">Point</a>
</li>
<li class="nav-group-task">
<a href="../Structs/RP.html">RP</a>
</li>
</ul>
</li>
<li class="nav-group-name">
<a href="../Typealiases.html">Type Aliases</a>
<ul class="nav-group-tasks">
<li class="nav-group-task">
<a href="../Typealiases.html#/s:8SwiftECC4Bytea">Byte</a>
</li>
<li class="nav-group-task">
<a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a>
</li>
</ul>
</li>
</ul>
</nav>
<article class="main-content">
<section>
<section class="section">
<h1>ECPrivateKey</h1>
<div class="declaration">
<div class="language">
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">class</span> <span class="kt">ECPrivateKey</span> <span class="p">:</span> <span class="kt">CustomStringConvertible</span></code></pre>
</div>
</div>
<p>An Elliptic Curve private key</p>
</section>
<section class="section task-group-section">
<div class="task-group">
<div class="task-name-container">
<a name="/Initializers"></a>
<a name="//apple_ref/swift/Section/Initializers" class="dashAnchor"></a>
<div class="section-name-container">
<a class="section-name-link" href="#/Initializers"></a>
<h3 class="section-name"><span>Initializers</span>
</h3>
</div>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC6domain1sAcA6DomainC_6BigInt4BIntVtKcfc"></a>
<a name="//apple_ref/swift/Method/init(domain:s:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC6domain1sAcA6DomainC_6BigInt4BIntVtKcfc">init(domain:<wbr>s:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Creates a private key</p>
<div class="aside aside-throws">
<p class="aside-title">Throws</p>
An exception if s &lt; 1 or s &gt;= the domain order
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="nf">init</span><span class="p">(</span><span class="nv">domain</span><span class="p">:</span> <span class="kt"><a href="../Classes/Domain.html">Domain</a></span><span class="p">,</span> <span class="nv">s</span><span class="p">:</span> <span class="kt">BInt</span><span class="p">)</span> <span class="k">throws</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>domain</em>
</code>
</td>
<td>
<div>
<p>The domain the key belongs to</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>s</em>
</code>
</td>
<td>
<div>
<p>The secret key value</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC3der5pkcs8ACSays5UInt8VG_SbtKcfc"></a>
<a name="//apple_ref/swift/Method/init(der:pkcs8:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC3der5pkcs8ACSays5UInt8VG_SbtKcfc">init(der:<wbr>pkcs8:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Creates a private key from its DER encoding</p>
<div class="aside aside-throws">
<p class="aside-title">Throws</p>
An exception if the DER encoding is wrong
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">convenience</span> <span class="nf">init</span><span class="p">(</span><span class="nv">der</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span><span class="p">,</span> <span class="nv">pkcs8</span><span class="p">:</span> <span class="kt">Bool</span> <span class="o">=</span> <span class="kc">false</span><span class="p">)</span> <span class="k">throws</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>der</em>
</code>
</td>
<td>
<div>
<p>The DER encoding of the key</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>pkcs8</em>
</code>
</td>
<td>
<div>
<p><em>true</em> if the encoding is in PKCS#8 format - else <em>false</em></p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC3pemACSS_tKcfc"></a>
<a name="//apple_ref/swift/Method/init(pem:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC3pemACSS_tKcfc">init(pem:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Creates a private key from its PEM encoding.
The PEM type is either &lsquo;PRIVATE KEY&rsquo; meaning the format is PKCS#8,
or it is &lsquo;EC PRIVATE KEY&rsquo; meaning the format is not PKCS#8</p>
<div class="aside aside-throws">
<p class="aside-title">Throws</p>
An exception if the PEM encoding is wrong
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">convenience</span> <span class="nf">init</span><span class="p">(</span><span class="nv">pem</span><span class="p">:</span> <span class="kt">String</span><span class="p">)</span> <span class="k">throws</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>pem</em>
</code>
</td>
<td>
<div>
<p>The PEM encoding of the key</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC3der8passwordACSays5UInt8VG_AHtKcfc"></a>
<a name="//apple_ref/swift/Method/init(der:password:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC3der8passwordACSays5UInt8VG_AHtKcfc">init(der:<wbr>password:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Creates a private key from its encrypted DER encoding.<br/>
The key must have been encrypted with one of the ciphers AES-128, AES-192 or AES-256 in CBC mode.</p>
<div class="aside aside-throws">
<p class="aside-title">Throws</p>
An exception if the DER encoding is wrong
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">convenience</span> <span class="nf">init</span><span class="p">(</span><span class="nv">der</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span><span class="p">,</span> <span class="nv">password</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span><span class="p">)</span> <span class="k">throws</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>der</em>
</code>
</td>
<td>
<div>
<p>The DER encoding of the encrypted key</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>password</em>
</code>
</td>
<td>
<div>
<p>The password</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC3pem8passwordACSS_Says5UInt8VGtKcfc"></a>
<a name="//apple_ref/swift/Method/init(pem:password:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC3pem8passwordACSS_Says5UInt8VGtKcfc">init(pem:<wbr>password:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Creates a private key from its encrypted PEM encoding.<br/>
The key must have been encrypted with one of the ciphers AES-128, AES-192 or AES-256 in CBC mode.<br/>
The PEM type is &lsquo;ENCRYPTED PRIVATE KEY&rsquo;</p>
<div class="aside aside-throws">
<p class="aside-title">Throws</p>
An exception if the PEM encoding is wrong
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">convenience</span> <span class="nf">init</span><span class="p">(</span><span class="nv">pem</span><span class="p">:</span> <span class="kt">String</span><span class="p">,</span> <span class="nv">password</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span><span class="p">)</span> <span class="k">throws</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>pem</em>
</code>
</td>
<td>
<div>
<p>The PEM encoding of the encrypted key</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>password</em>
</code>
</td>
<td>
<div>
<p>The password</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Stored%20Properties"></a>
<a name="//apple_ref/swift/Section/Stored Properties" class="dashAnchor"></a>
<div class="section-name-container">
<a class="section-name-link" href="#/Stored%20Properties"></a>
<h3 class="section-name"><span>Stored Properties</span>
</h3>
</div>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC6domainAA6DomainCvp"></a>
<a name="//apple_ref/swift/Property/domain" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC6domainAA6DomainCvp">domain</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The domain the key belongs to</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">domain</span><span class="p">:</span> <span class="kt"><a href="../Classes/Domain.html">Domain</a></span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC1s6BigInt4BIntVvp"></a>
<a name="//apple_ref/swift/Property/s" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC1s6BigInt4BIntVvp">s</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The private value - a positive integer</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">let</span> <span class="nv">s</span><span class="p">:</span> <span class="kt">BInt</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Computed%20Properties"></a>
<a name="//apple_ref/swift/Section/Computed Properties" class="dashAnchor"></a>
<div class="section-name-container">
<a class="section-name-link" href="#/Computed%20Properties"></a>
<h3 class="section-name"><span>Computed Properties</span>
</h3>
</div>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC4asn14ASN1AECvp"></a>
<a name="//apple_ref/swift/Property/asn1" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC4asn14ASN1AECvp">asn1</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The ASN1 encoding of <em>self</em></p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">asn1</span><span class="p">:</span> <span class="kt">ASN1</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC3derSays5UInt8VGvp"></a>
<a name="//apple_ref/swift/Property/der" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC3derSays5UInt8VGvp">der</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The DER encoding of <em>self</em></p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">der</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC3pemSSvp"></a>
<a name="//apple_ref/swift/Property/pem" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC3pemSSvp">pem</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The PEM base 64 encoding of <em>self</em></p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">pem</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC8derPkcs8Says5UInt8VGvp"></a>
<a name="//apple_ref/swift/Property/derPkcs8" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC8derPkcs8Says5UInt8VGvp">derPkcs8</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The DER encoding of <em>self</em> in PKCS#8 format</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">derPkcs8</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC8pemPkcs8SSvp"></a>
<a name="//apple_ref/swift/Property/pemPkcs8" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC8pemPkcs8SSvp">pemPkcs8</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>The PEM base 64 encoding of <em>self</em> in PKCS#8 format</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">pemPkcs8</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC11descriptionSSvp"></a>
<a name="//apple_ref/swift/Property/description" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC11descriptionSSvp">description</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>A textual representation of the ASN1 encoding of <em>self</em></p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">description</span><span class="p">:</span> <span class="kt">String</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>
</div>
</div>
</section>
</div>
</li>
</ul>
</div>
<div class="task-group">
<div class="task-name-container">
<a name="/Instance%20Methods"></a>
<a name="//apple_ref/swift/Section/Instance Methods" class="dashAnchor"></a>
<div class="section-name-container">
<a class="section-name-link" href="#/Instance%20Methods"></a>
<h3 class="section-name"><span>Instance Methods</span>
</h3>
</div>
</div>
<ul>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC12derEncrypted8password6cipherSays5UInt8VGAI_AA9AESCipherOtF"></a>
<a name="//apple_ref/swift/Method/derEncrypted(password:cipher:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC12derEncrypted8password6cipherSays5UInt8VGAI_AA9AESCipherOtF">derEncrypted(password:<wbr>cipher:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Computes the password based encrypted encoding of <em>self</em> in DER format,<br/>
using cipher block mode = CBC, iteration count = 2048 and salt = 8 random bytes</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">derEncrypted</span><span class="p">(</span><span class="nv">password</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span><span class="p">,</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/AESCipher.html">AESCipher</a></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>password</em>
</code>
</td>
<td>
<div>
<p>The password</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>cipher</em>
</code>
</td>
<td>
<div>
<p>the AES cipher to use</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The DER encrypted encoding</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC12pemEncrypted8password6cipherSSSays5UInt8VG_AA9AESCipherOtF"></a>
<a name="//apple_ref/swift/Method/pemEncrypted(password:cipher:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC12pemEncrypted8password6cipherSSSays5UInt8VG_AA9AESCipherOtF">pemEncrypted(password:<wbr>cipher:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Computes the password based encrypted encoding of <em>self</em> in PEM format,<br/>
using cipher block mode = CBC, iteration count = 2048 and salt = 8 random bytes</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">pemEncrypted</span><span class="p">(</span><span class="nv">password</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span><span class="p">,</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/AESCipher.html">AESCipher</a></span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">String</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>password</em>
</code>
</td>
<td>
<div>
<p>The password</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>cipher</em>
</code>
</td>
<td>
<div>
<p>the AES cipher to use</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The PEM encrypted encoding</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC4sign3msg13deterministicAA11ECSignatureCSays5UInt8VG_SbtF"></a>
<a name="//apple_ref/swift/Method/sign(msg:deterministic:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC4sign3msg13deterministicAA11ECSignatureCSays5UInt8VG_SbtF">sign(msg:<wbr>deterministic:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Signs a byte array message with ECDSA</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">sign</span><span class="p">(</span><span class="nv">msg</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span><span class="p">,</span> <span class="nv">deterministic</span><span class="p">:</span> <span class="kt">Bool</span> <span class="o">=</span> <span class="kc">false</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt"><a href="../Classes/ECSignature.html">ECSignature</a></span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>msg</em>
</code>
</td>
<td>
<div>
<p>The message to sign</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>deterministic</em>
</code>
</td>
<td>
<div>
<p>If <em>true</em> generate a deterministic signature according to RFC-6979, if <em>false</em> generate a non-deterministic signature - <em>false</em> is default</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The signature</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC4sign3msg13deterministicAA11ECSignatureC10Foundation4DataV_SbtF"></a>
<a name="//apple_ref/swift/Method/sign(msg:deterministic:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC4sign3msg13deterministicAA11ECSignatureC10Foundation4DataV_SbtF">sign(msg:<wbr>deterministic:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Signs a Data message with ECDSA</p>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">sign</span><span class="p">(</span><span class="nv">msg</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">deterministic</span><span class="p">:</span> <span class="kt">Bool</span> <span class="o">=</span> <span class="kc">false</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kt"><a href="../Classes/ECSignature.html">ECSignature</a></span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>msg</em>
</code>
</td>
<td>
<div>
<p>The message to sign</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>deterministic</em>
</code>
</td>
<td>
<div>
<p>If <em>true</em> generate a deterministic signature according to RFC-6979, if <em>false</em> generate a non-deterministic signature - <em>false</em> is default</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The signature</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC7decrypt3msg6cipher4modeSays5UInt8VGAJ_AA9AESCipherOAA9BlockModeOtKF"></a>
<a name="//apple_ref/swift/Method/decrypt(msg:cipher:mode:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC7decrypt3msg6cipher4modeSays5UInt8VGAJ_AA9AESCipherOAA9BlockModeOtKF">decrypt(msg:<wbr>cipher:<wbr>mode:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Decrypts a byte array message with ECIES using the AES cipher<br/>
Using this method with block mode GCM is deprecated. Use <em>decryptAESGCM</em> instead for much better performance</p>
<div class="aside aside-throws">
<p class="aside-title">Throws</p>
An exception if message authentication fails or the message is too short
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">msg</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span><span class="p">,</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/AESCipher.html">AESCipher</a></span><span class="p">,</span> <span class="nv">mode</span><span class="p">:</span> <span class="kt"><a href="../Enums/BlockMode.html">BlockMode</a></span> <span class="o">=</span> <span class="o">.</span><span class="kt">GCM</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-&gt;</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>msg</em>
</code>
</td>
<td>
<div>
<p>The bytes to decrypt</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>cipher</em>
</code>
</td>
<td>
<div>
<p>The AES cipher to use</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>mode</em>
</code>
</td>
<td>
<div>
<p>The block mode to use - GCM is default</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The decrypted message</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC7decrypt3msg6cipher4mode10Foundation4DataVAJ_AA9AESCipherOAA9BlockModeOtKF"></a>
<a name="//apple_ref/swift/Method/decrypt(msg:cipher:mode:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC7decrypt3msg6cipher4mode10Foundation4DataVAJ_AA9AESCipherOAA9BlockModeOtKF">decrypt(msg:<wbr>cipher:<wbr>mode:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Decrypts a Data message with ECIES using the AES cipher<br/>
Using this method with block mode GCM is deprecated. Use <em>decryptAESGCM</em> instead for much better performance</p>
<div class="aside aside-throws">
<p class="aside-title">Throws</p>
An exception if message authentication fails or the message is too short
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decrypt</span><span class="p">(</span><span class="nv">msg</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/AESCipher.html">AESCipher</a></span><span class="p">,</span> <span class="nv">mode</span><span class="p">:</span> <span class="kt"><a href="../Enums/BlockMode.html">BlockMode</a></span> <span class="o">=</span> <span class="o">.</span><span class="kt">GCM</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-&gt;</span> <span class="kt">Data</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>msg</em>
</code>
</td>
<td>
<div>
<p>The data to decrypt</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>cipher</em>
</code>
</td>
<td>
<div>
<p>The AES cipher to use</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>mode</em>
</code>
</td>
<td>
<div>
<p>The block mode to use - GCM is default</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The decrypted message</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC03getD6AndMac3msg6cipher4modeSays5UInt8VG3key_AJ3mactAJ_AA9AESCipherOAA9BlockModeOtKF"></a>
<a name="//apple_ref/swift/Method/getKeyAndMac(msg:cipher:mode:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC03getD6AndMac3msg6cipher4modeSays5UInt8VG3key_AJ3mactAJ_AA9AESCipherOAA9BlockModeOtKF">getKeyAndMac(msg:<wbr>cipher:<wbr>mode:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns the AES key and HMAC key that were used to encrypt the message</p>
<div class="aside aside-throws">
<p class="aside-title">Throws</p>
An exception if the message is too short
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">getKeyAndMac</span><span class="p">(</span><span class="nv">msg</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span><span class="p">,</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/AESCipher.html">AESCipher</a></span><span class="p">,</span> <span class="nv">mode</span><span class="p">:</span> <span class="kt"><a href="../Enums/BlockMode.html">BlockMode</a></span> <span class="o">=</span> <span class="o">.</span><span class="kt">GCM</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-&gt;</span> <span class="p">(</span><span class="nv">key</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span><span class="p">,</span> <span class="nv">mac</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>msg</em>
</code>
</td>
<td>
<div>
<p>The encrypted data</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>cipher</em>
</code>
</td>
<td>
<div>
<p>The AES cipher that was used to encrypt</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>mode</em>
</code>
</td>
<td>
<div>
<p>The block mode that was used to encrypt - GCM is default</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The AES key and HMAC key that were used during encryption</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC03getD6AndMac3msg6cipher4mode10Foundation4DataV3key_AJ3mactAJ_AA9AESCipherOAA9BlockModeOtKF"></a>
<a name="//apple_ref/swift/Method/getKeyAndMac(msg:cipher:mode:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC03getD6AndMac3msg6cipher4mode10Foundation4DataV3key_AJ3mactAJ_AA9AESCipherOAA9BlockModeOtKF">getKeyAndMac(msg:<wbr>cipher:<wbr>mode:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns the AES key and HMAC key that were used to encrypt the message</p>
<div class="aside aside-throws">
<p class="aside-title">Throws</p>
An exception if the message is too short
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">getKeyAndMac</span><span class="p">(</span><span class="nv">msg</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/AESCipher.html">AESCipher</a></span><span class="p">,</span> <span class="nv">mode</span><span class="p">:</span> <span class="kt"><a href="../Enums/BlockMode.html">BlockMode</a></span> <span class="o">=</span> <span class="o">.</span><span class="kt">GCM</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-&gt;</span> <span class="p">(</span><span class="nv">key</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">mac</span><span class="p">:</span> <span class="kt">Data</span><span class="p">)</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>msg</em>
</code>
</td>
<td>
<div>
<p>The encrypted data</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>cipher</em>
</code>
</td>
<td>
<div>
<p>The AES cipher that was used to encrypt</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>mode</em>
</code>
</td>
<td>
<div>
<p>The block mode that was used to encrypt - GCM is default</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The AES key and HMAC key that were used during encryption</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC010decryptChaF03msg3aadSays5UInt8VGAI_AItKF"></a>
<a name="//apple_ref/swift/Method/decryptChaCha(msg:aad:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC010decryptChaF03msg3aadSays5UInt8VGAI_AItKF">decryptChaCha(msg:<wbr>aad:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Decrypts a byte array message with ECIES using the ChaCha20/Poly1305 algorithm - possibly with additional authenticated data</p>
<div class="aside aside-throws">
<p class="aside-title">Throws</p>
An exception if message authentication fails or the message is too short
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decryptChaCha</span><span class="p">(</span><span class="nv">msg</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span><span class="p">,</span> <span class="nv">aad</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span> <span class="o">=</span> <span class="p">[])</span> <span class="k">throws</span> <span class="o">-&gt;</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>msg</em>
</code>
</td>
<td>
<div>
<p>The bytes to decrypt</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>aad</em>
</code>
</td>
<td>
<div>
<p>Additional authenticated data - an empty array is default</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The decrypted message</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC010decryptChaF03msg3aad10Foundation4DataVAI_AItKF"></a>
<a name="//apple_ref/swift/Method/decryptChaCha(msg:aad:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC010decryptChaF03msg3aad10Foundation4DataVAI_AItKF">decryptChaCha(msg:<wbr>aad:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Decrypts a Data message with ECIES using the ChaCha20/Poly1305 algorithm - possibly with additional authenticated data</p>
<div class="aside aside-throws">
<p class="aside-title">Throws</p>
An exception if message authentication fails or the message is too short
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decryptChaCha</span><span class="p">(</span><span class="nv">msg</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">aad</span><span class="p">:</span> <span class="kt">Data</span> <span class="o">=</span> <span class="kt">Data</span><span class="p">())</span> <span class="k">throws</span> <span class="o">-&gt;</span> <span class="kt">Data</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>msg</em>
</code>
</td>
<td>
<div>
<p>The data to decrypt</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>aad</em>
</code>
</td>
<td>
<div>
<p>Additional authenticated data - empty data is default</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The decrypted message</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC13decryptAESGCM3msg6cipher3aadSays5UInt8VGAJ_AA9AESCipherOAJtKF"></a>
<a name="//apple_ref/swift/Method/decryptAESGCM(msg:cipher:aad:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC13decryptAESGCM3msg6cipher3aadSays5UInt8VGAJ_AA9AESCipherOAJtKF">decryptAESGCM(msg:<wbr>cipher:<wbr>aad:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Decrypts a byte array message with ECIES using the AES/GCM algorithm - possibly with additional authenticated data</p>
<div class="aside aside-throws">
<p class="aside-title">Throws</p>
An exception if message authentication fails or the message is too short
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decryptAESGCM</span><span class="p">(</span><span class="nv">msg</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span><span class="p">,</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/AESCipher.html">AESCipher</a></span><span class="p">,</span> <span class="nv">aad</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span> <span class="o">=</span> <span class="p">[])</span> <span class="k">throws</span> <span class="o">-&gt;</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>msg</em>
</code>
</td>
<td>
<div>
<p>The bytes to decrypt</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>cipher</em>
</code>
</td>
<td>
<div>
<p>The AES cipher to use</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>aad</em>
</code>
</td>
<td>
<div>
<p>Additional authenticated data - an empty array is default</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The decrypted message</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC13decryptAESGCM3msg6cipher3aad10Foundation4DataVAJ_AA9AESCipherOAJtKF"></a>
<a name="//apple_ref/swift/Method/decryptAESGCM(msg:cipher:aad:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC13decryptAESGCM3msg6cipher3aad10Foundation4DataVAJ_AA9AESCipherOAJtKF">decryptAESGCM(msg:<wbr>cipher:<wbr>aad:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Decrypts a Data message with ECIES using the AES/GCM algorithm - possibly with additional authenticated data</p>
<div class="aside aside-throws">
<p class="aside-title">Throws</p>
An exception if message authentication fails or the message is too short
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">decryptAESGCM</span><span class="p">(</span><span class="nv">msg</span><span class="p">:</span> <span class="kt">Data</span><span class="p">,</span> <span class="nv">cipher</span><span class="p">:</span> <span class="kt"><a href="../Enums/AESCipher.html">AESCipher</a></span><span class="p">,</span> <span class="nv">aad</span><span class="p">:</span> <span class="kt">Data</span> <span class="o">=</span> <span class="kt">Data</span><span class="p">())</span> <span class="k">throws</span> <span class="o">-&gt;</span> <span class="kt">Data</span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>msg</em>
</code>
</td>
<td>
<div>
<p>The data to decrypt</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>cipher</em>
</code>
</td>
<td>
<div>
<p>The AES cipher to use</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>aad</em>
</code>
</td>
<td>
<div>
<p>Additional authenticated data - empty data is default</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The decrypted message</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:8SwiftECC12ECPrivateKeyC12keyAgreement03pubD06length2md10sharedInfo8cofactorSays5UInt8VGAA08ECPublicD0C_SiAA22MessageDigestAlgorithmOALSbtKF"></a>
<a name="//apple_ref/swift/Method/keyAgreement(pubKey:length:md:sharedInfo:cofactor:)" class="dashAnchor"></a>
<a class="token" href="#/s:8SwiftECC12ECPrivateKeyC12keyAgreement03pubD06length2md10sharedInfo8cofactorSays5UInt8VGAA08ECPublicD0C_SiAA22MessageDigestAlgorithmOALSbtKF">keyAgreement(pubKey:<wbr>length:<wbr>md:<wbr>sharedInfo:<wbr>cofactor:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Constructs a shared secret key using Diffie-Hellman key agreement - please refer [SEC 1] section 3.3.1</p>
<div class="aside aside-throws">
<p class="aside-title">Throws</p>
An exception if <em>this</em> and <em>pubKey</em> do not belong to the same domain or <em>length</em> is negative
</div>
</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">keyAgreement</span><span class="p">(</span><span class="nv">pubKey</span><span class="p">:</span> <span class="kt"><a href="../Classes/ECPublicKey.html">ECPublicKey</a></span><span class="p">,</span> <span class="nv">length</span><span class="p">:</span> <span class="kt">Int</span><span class="p">,</span> <span class="nv">md</span><span class="p">:</span> <span class="kt"><a href="../Enums/MessageDigestAlgorithm.html">MessageDigestAlgorithm</a></span><span class="p">,</span> <span class="nv">sharedInfo</span><span class="p">:</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span><span class="p">,</span> <span class="nv">cofactor</span><span class="p">:</span> <span class="kt">Bool</span> <span class="o">=</span> <span class="kc">false</span><span class="p">)</span> <span class="k">throws</span> <span class="o">-&gt;</span> <span class="kt"><a href="../Typealiases.html#/s:8SwiftECC5Bytesa">Bytes</a></span></code></pre>
</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>pubKey</em>
</code>
</td>
<td>
<div>
<p>The other party&rsquo;s public key</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>length</em>
</code>
</td>
<td>
<div>
<p>The required length of the shared secret</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>md</em>
</code>
</td>
<td>
<div>
<p>The message digest algorithm to use</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>sharedInfo</em>
</code>
</td>
<td>
<div>
<p>Information shared with the other party</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>cofactor</em>
</code>
</td>
<td>
<div>
<p>Use cofactor version - <em>false</em> is default</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>A byte array which is the shared secret key</p>
</div>
</section>
</div>
</li>
</ul>
</div>
</section>
</section>
<section id="footer">
<p>&copy; 2023 <a class="link" href="" target="_blank" rel="external noopener"></a>. All rights reserved. (Last updated: 2023-04-19)</p>
<p>Generated by <a class="link" href="https://github.com/realm/jazzy" target="_blank" rel="external noopener">jazzy ♪♫ v0.14.3</a>, a <a class="link" href="https://realm.io" target="_blank" rel="external noopener">Realm</a> project.</p>
</section>
</article>
</div>
</body>
</html>