Skip to main content
Module

x/openpgp/docs/module-crypto_signature.html

OpenPGP implementation for JavaScript
Go to Latest
File
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8"> <title>JSDoc: Module: crypto/signature</title>
<script src="scripts/prettify/prettify.js"> </script> <script src="scripts/prettify/lang-css.js"> </script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"></head>
<body>
<div id="main">
<h1 class="page-title">Module: crypto/signature</h1>




<section>
<header> </header>
<article> <div class="container-overview"> <div class="description"><p>Provides functions for asymmetric signing and signature verification</p></div>















<dl class="details">













<dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.0.0-beta.0/src/crypto/signature.js">crypto/signature.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.0.0-beta.0/src/crypto/signature.js#L1">line 1</a> </li></ul></dd>


</dl>



















</div>







<h3 class="subsection-title">Methods</h3>


<h4 class="name" id=".parseSignatureParams"><span class="type-signature">(async, static) </span>parseSignatureParams<span class="signature">(algo, signature)</span><span class="type-signature"> &rarr; {Promise.&lt;Object>}</span></h4>



<div class="description"> <p>Parse signature in binary form to get the parameters.The returned values are only padded for EdDSA, since in the other cases their expected lengthdepends on the key params, hence we delegate the padding to the signature verification function.See <a href="https://tools.ietf.org/html/rfc4880#section-9.1">RFC 4880 9.1</a>See <a href="https://tools.ietf.org/html/rfc4880#section-5.2.2">RFC 4880 5.2.2.</a></p></div>








<h5>Parameters:</h5>
<table class="params"> <thead> <tr> <th>Name</th>
<th>Type</th>


<th class="last">Description</th> </tr> </thead>
<tbody>
<tr> <td class="name"><code>algo</code></td>
<td class="type"> <span class="param-type"><a href="module-enums.html#.publicKey">module:enums.publicKey</a></span>

</td>


<td class="description last"><p>Public key algorithm</p></td> </tr>

<tr> <td class="name"><code>signature</code></td>
<td class="type"> <span class="param-type">Uint8Array</span>

</td>


<td class="description last"><p>Data for which the signature was created</p></td> </tr>
</tbody></table>





<dl class="details">













<dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.0.0-beta.0/src/crypto/signature.js">crypto/signature.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.0.0-beta.0/src/crypto/signature.js#L22">line 22</a> </li></ul></dd>


</dl>














<h5>Returns:</h5>
<div class="param-desc"> <p>True if signature is valid.</p></div>


<dl> <dt> Type </dt> <dd> <span class="param-type">Promise.&lt;Object></span>

</dd></dl>







<h4 class="name" id=".sign"><span class="type-signature">(async, static) </span>sign<span class="signature">(algo, hashAlgo, publicKeyParams, privateKeyParams, data, hashed)</span><span class="type-signature"> &rarr; {Promise.&lt;Object>}</span></h4>



<div class="description"> <p>Creates a signature on data using specified algorithms and private key parameters.See <a href="https://tools.ietf.org/html/rfc4880#section-9.1">RFC 4880 9.1</a>and <a href="https://tools.ietf.org/html/rfc4880#section-9.4">RFC 4880 9.4</a>for public key and hash algorithms.</p></div>








<h5>Parameters:</h5>
<table class="params"> <thead> <tr> <th>Name</th>
<th>Type</th>


<th class="last">Description</th> </tr> </thead>
<tbody>
<tr> <td class="name"><code>algo</code></td>
<td class="type"> <span class="param-type"><a href="module-enums.html#.publicKey">module:enums.publicKey</a></span>

</td>


<td class="description last"><p>Public key algorithm</p></td> </tr>

<tr> <td class="name"><code>hashAlgo</code></td>
<td class="type"> <span class="param-type"><a href="module-enums.html#.hash">module:enums.hash</a></span>

</td>


<td class="description last"><p>Hash algorithm</p></td> </tr>

<tr> <td class="name"><code>publicKeyParams</code></td>
<td class="type"> <span class="param-type">Object</span>

</td>


<td class="description last"><p>Algorithm-specific public and private key parameters</p></td> </tr>

<tr> <td class="name"><code>privateKeyParams</code></td>
<td class="type"> <span class="param-type">Object</span>

</td>


<td class="description last"><p>Algorithm-specific public and private key parameters</p></td> </tr>

<tr> <td class="name"><code>data</code></td>
<td class="type"> <span class="param-type">Uint8Array</span>

</td>


<td class="description last"><p>Data to be signed</p></td> </tr>

<tr> <td class="name"><code>hashed</code></td>
<td class="type"> <span class="param-type">Uint8Array</span>

</td>


<td class="description last"><p>The hashed data</p></td> </tr>
</tbody></table>





<dl class="details">













<dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.0.0-beta.0/src/crypto/signature.js">crypto/signature.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.0.0-beta.0/src/crypto/signature.js#L138">line 138</a> </li></ul></dd>


</dl>














<h5>Returns:</h5>
<div class="param-desc"> <p>Signature Object containing named signature parameters.</p></div>


<dl> <dt> Type </dt> <dd> <span class="param-type">Promise.&lt;Object></span>

</dd></dl>







<h4 class="name" id=".verify"><span class="type-signature">(async, static) </span>verify<span class="signature">(algo, hashAlgo, signature, publicParams, data, hashed)</span><span class="type-signature"> &rarr; {Promise.&lt;Boolean>}</span></h4>



<div class="description"> <p>Verifies the signature provided for data using specified algorithms and public key parameters.See <a href="https://tools.ietf.org/html/rfc4880#section-9.1">RFC 4880 9.1</a>and <a href="https://tools.ietf.org/html/rfc4880#section-9.4">RFC 4880 9.4</a>for public key and hash algorithms.</p></div>








<h5>Parameters:</h5>
<table class="params"> <thead> <tr> <th>Name</th>
<th>Type</th>


<th class="last">Description</th> </tr> </thead>
<tbody>
<tr> <td class="name"><code>algo</code></td>
<td class="type"> <span class="param-type"><a href="module-enums.html#.publicKey">module:enums.publicKey</a></span>

</td>


<td class="description last"><p>Public key algorithm</p></td> </tr>

<tr> <td class="name"><code>hashAlgo</code></td>
<td class="type"> <span class="param-type"><a href="module-enums.html#.hash">module:enums.hash</a></span>

</td>


<td class="description last"><p>Hash algorithm</p></td> </tr>

<tr> <td class="name"><code>signature</code></td>
<td class="type"> <span class="param-type">Object</span>

</td>


<td class="description last"><p>Named algorithm-specific signature parameters</p></td> </tr>

<tr> <td class="name"><code>publicParams</code></td>
<td class="type"> <span class="param-type">Object</span>

</td>


<td class="description last"><p>Algorithm-specific public key parameters</p></td> </tr>

<tr> <td class="name"><code>data</code></td>
<td class="type"> <span class="param-type">Uint8Array</span>

</td>


<td class="description last"><p>Data for which the signature was created</p></td> </tr>

<tr> <td class="name"><code>hashed</code></td>
<td class="type"> <span class="param-type">Uint8Array</span>

</td>


<td class="description last"><p>The hashed data</p></td> </tr>
</tbody></table>





<dl class="details">













<dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.0.0-beta.0/src/crypto/signature.js">crypto/signature.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v6.0.0-beta.0/src/crypto/signature.js#L87">line 87</a> </li></ul></dd>


</dl>














<h5>Returns:</h5>
<div class="param-desc"> <p>True if signature is valid.</p></div>


<dl> <dt> Type </dt> <dd> <span class="param-type">Promise.&lt;Boolean></span>

</dd></dl>







</article>
</section>



</div>
<nav> <h2><a href="index.html">Home</a></h2><h3>Functions</h3><ul><li><a href="global.html#armor">armor</a></li><li><a href="global.html#createCleartextMessage">createCleartextMessage</a></li><li><a href="global.html#createKey">createKey</a></li><li><a href="global.html#createMessage">createMessage</a></li><li><a href="global.html#decrypt">decrypt</a></li><li><a href="global.html#decryptKey">decryptKey</a></li><li><a href="global.html#decryptSessionKeys">decryptSessionKeys</a></li><li><a href="global.html#detectBigInt">detectBigInt</a></li><li><a href="global.html#encrypt">encrypt</a></li><li><a href="global.html#encryptKey">encryptKey</a></li><li><a href="global.html#encryptSessionKey">encryptSessionKey</a></li><li><a href="global.html#formatObject">formatObject</a></li><li><a href="global.html#generateKey">generateKey</a></li><li><a href="global.html#generateSessionKey">generateSessionKey</a></li><li><a href="global.html#getCipherBlockSize">getCipherBlockSize</a></li><li><a href="global.html#getCipherKeySize">getCipherKeySize</a></li><li><a href="global.html#getCipherParams">getCipherParams</a></li><li><a href="global.html#getCompressionStreamInstantiators">getCompressionStreamInstantiators</a></li><li><a href="global.html#newPacketFromTag">newPacketFromTag</a></li><li><a href="global.html#newS2KFromConfig">newS2KFromConfig</a></li><li><a href="global.html#newS2KFromType">newS2KFromType</a></li><li><a href="global.html#produceEncryptionKey">produceEncryptionKey</a></li><li><a href="global.html#readCleartextMessage">readCleartextMessage</a></li><li><a href="global.html#readKey">readKey</a></li><li><a href="global.html#readKeys">readKeys</a></li><li><a href="global.html#readMessage">readMessage</a></li><li><a href="global.html#readPrivateKey">readPrivateKey</a></li><li><a href="global.html#readPrivateKeys">readPrivateKeys</a></li><li><a href="global.html#readSignature">readSignature</a></li><li><a href="global.html#reformatKey">reformatKey</a></li><li><a href="global.html#revokeKey">revokeKey</a></li><li><a href="global.html#runAEAD">runAEAD</a></li><li><a href="global.html#sign">sign</a></li><li><a href="global.html#unarmor">unarmor</a></li><li><a href="global.html#verify">verify</a></li><li><a href="global.html#wrapKeyObject">wrapKeyObject</a></li><li><a href="global.html#zlib">zlib</a></li></ul><h3>Modules</h3><ul><li><a href="module-config.html">config</a></li><li><a href="module-crypto.html">crypto</a></li><li><a href="module-crypto_aes_kw.html">crypto/aes_kw</a></li><li><a href="module-crypto_cmac.html">crypto/cmac</a></li><li><a href="module-crypto_crypto.html">crypto/crypto</a></li><li><a href="module-crypto_hash.html">crypto/hash</a></li><li><a href="module-crypto_hkdf.html">crypto/hkdf</a></li><li><a href="module-crypto_mode.html">crypto/mode</a></li><li><a href="module-crypto_mode_cfb.html">crypto/mode/cfb</a></li><li><a href="module-crypto_mode_eax.html">crypto/mode/eax</a></li><li><a href="module-crypto_mode_gcm.html">crypto/mode/gcm</a></li><li><a href="module-crypto_mode_ocb.html">crypto/mode/ocb</a></li><li><a href="module-crypto_pkcs1.html">crypto/pkcs1</a></li><li><a href="module-crypto_public_key.html">crypto/public_key</a></li><li><a href="module-crypto_public_key_dsa.html">crypto/public_key/dsa</a></li><li><a href="module-crypto_public_key_elgamal.html">crypto/public_key/elgamal</a></li><li><a href="module-crypto_public_key_elliptic.html">crypto/public_key/elliptic</a></li><li><a href="module-crypto_public_key_elliptic_curve.html">crypto/public_key/elliptic/curve</a></li><li><a href="module-crypto_public_key_elliptic_ecdh.html">crypto/public_key/elliptic/ecdh</a></li><li><a href="module-crypto_public_key_elliptic_ecdsa.html">crypto/public_key/elliptic/ecdsa</a></li><li><a href="module-crypto_public_key_elliptic_eddsa.html">crypto/public_key/elliptic/eddsa</a></li><li><a href="module-crypto_public_key_elliptic_eddsa_legacy.html">crypto/public_key/elliptic/eddsa_legacy</a></li><li><a href="module-crypto_public_key_prime.html">crypto/public_key/prime</a></li><li><a href="module-crypto_public_key_rsa.html">crypto/public_key/rsa</a></li><li><a href="module-crypto_random.html">crypto/random</a></li><li><a href="module-crypto_signature.html">crypto/signature</a></li><li><a href="module-encoding_base64.html">encoding/base64</a></li><li><a href="module-enums.html">enums</a></li><li><a href="module-key_helper.html">key/helper</a></li><li><a href="module-key_Subkey.html">key/Subkey</a></li><li><a href="module-key_User.html">key/User</a></li><li><a href="module-packet_packet.html">packet/packet</a></li><li><a href="module-type_ecdh_symkey.html">type/ecdh_symkey</a></li><li><a href="module-type_keyid.html">type/keyid</a></li><li><a href="module-type_oid.html">type/oid</a></li><li><a href="module-type_s2k.html">type/s2k</a></li><li><a href="module-type_x25519x448_symkey.html">type/x25519x448_symkey</a></li><li><a href="module-util.html">util</a></li></ul><h3>Classes</h3><ul><li><a href="AEADEncryptedDataPacket.html">AEADEncryptedDataPacket</a></li><li><a href="Argon2S2K.html">Argon2S2K</a></li><li><a href="CleartextMessage.html">CleartextMessage</a></li><li><a href="CompressedDataPacket.html">CompressedDataPacket</a></li><li><a href="Key.html">Key</a></li><li><a href="LiteralDataPacket.html">LiteralDataPacket</a></li><li><a href="MarkerPacket.html">MarkerPacket</a></li><li><a href="Message.html">Message</a></li><li><a href="module-key_Subkey-Subkey.html">Subkey</a></li><li><a href="module-key_User-User.html">User</a></li><li><a href="module-type_kdf_params-KDFParams.html">KDFParams</a></li><li><a href="module-type_keyid-KeyID.html">KeyID</a></li><li><a href="module-type_s2k-GenericS2K.html">GenericS2K</a></li><li><a href="OnePassSignaturePacket.html">OnePassSignaturePacket</a></li><li><a href="PacketList.html">PacketList</a></li><li><a href="PaddingPacket.html">PaddingPacket</a></li><li><a href="PrivateKey.html">PrivateKey</a></li><li><a href="PublicKey.html">PublicKey</a></li><li><a href="PublicKeyEncryptedSessionKeyPacket.html">PublicKeyEncryptedSessionKeyPacket</a></li><li><a href="PublicKeyPacket.html">PublicKeyPacket</a></li><li><a href="PublicSubkeyPacket.html">PublicSubkeyPacket</a></li><li><a href="SecretKeyPacket.html">SecretKeyPacket</a></li><li><a href="SecretSubkeyPacket.html">SecretSubkeyPacket</a></li><li><a href="Signature.html">Signature</a></li><li><a href="SignaturePacket.html">SignaturePacket</a></li><li><a href="SymEncryptedIntegrityProtectedDataPacket.html">SymEncryptedIntegrityProtectedDataPacket</a></li><li><a href="SymEncryptedSessionKeyPacket.html">SymEncryptedSessionKeyPacket</a></li><li><a href="SymmetricallyEncryptedDataPacket.html">SymmetricallyEncryptedDataPacket</a></li><li><a href="TrustPacket.html">TrustPacket</a></li><li><a href="UserAttributePacket.html">UserAttributePacket</a></li><li><a href="UserIDPacket.html">UserIDPacket</a></li></ul></nav>
<br class="clear">
<footer> Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 3.6.11</a></footer>
<script> prettyPrint(); </script><script src="scripts/linenumber.js"> </script></body></html>