<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8"> <title>JSDoc: Class: PublicKeyEncryptedSessionKeyPacket</title>
<script src="scripts/prettify/prettify.js"> </script> <script src="scripts/prettify/lang-css.js"> </script> <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">Class: PublicKeyEncryptedSessionKeyPacket</h1>
<section>
<header> <h2><span class="attribs"><span class="type-signature"></span></span>PublicKeyEncryptedSessionKeyPacket<span class="signature">()</span><span class="type-signature"></span></h2> <div class="class-description"><p>Public-Key Encrypted Session Key Packets (Tag 1)</p><p><a href="https://tools.ietf.org/html/rfc4880#section-5.1">RFC4880 5.1</a>:A Public-Key Encrypted Session Key packet holds the session keyused to encrypt a message. Zero or more Public-Key Encrypted Session Keypackets and/or Symmetric-Key Encrypted Session Key packets may precede aSymmetrically Encrypted Data Packet, which holds an encrypted message. Themessage is encrypted with the session key, and the session key is itselfencrypted and stored in the Encrypted Session Key packet(s). TheSymmetrically Encrypted Data Packet is preceded by one Public-Key EncryptedSession Key packet for each OpenPGP key to which the message is encrypted.The recipient of the message finds a session key that is encrypted to theirpublic key, decrypts the session key, and then uses the session key todecrypt the message.</p></div> </header>
<article> <div class="container-overview">
<h2>Constructor</h2>
<h4 class="name" id="PublicKeyEncryptedSessionKeyPacket"><span class="type-signature"></span>new PublicKeyEncryptedSessionKeyPacket<span class="signature">()</span><span class="type-signature"></span></h4>
<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/v5.3.0/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v5.3.0/src/packet/public_key_encrypted_session_key.js#L47">line 47</a> </li></ul></dd>
</dl>
</div>
<h3 class="subsection-title">Members</h3>
<h4 class="name" id="encrypted"><span class="type-signature"></span>encrypted<span class="type-signature"> :Object</span></h4>
<h5>Type:</h5> <ul> <li> <span class="param-type">Object</span>
</li> </ul>
<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/v5.3.0/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v5.3.0/src/packet/public_key_encrypted_session_key.js#L61">line 61</a> </li></ul></dd>
</dl>
<h4 class="name" id="sessionKeyAlgorithm"><span class="type-signature"></span>sessionKeyAlgorithm<span class="type-signature"> :enums.symmetric</span></h4>
<div class="description"> <p>Algorithm to encrypt the message with</p></div>
<h5>Type:</h5> <ul> <li> <span class="param-type">enums.symmetric</span>
</li> </ul>
<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/v5.3.0/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v5.3.0/src/packet/public_key_encrypted_session_key.js#L58">line 58</a> </li></ul></dd>
</dl>
<h3 class="subsection-title">Methods</h3>
<h4 class="name" id="decrypt"><span class="type-signature">(async) </span>decrypt<span class="signature">(key, randomSessionKey<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h4>
<div class="description"> <p>Decrypts the session key (only for public key encrypted session key packets (tag 1)</p></div>
<h5>Parameters:</h5>
<table class="params"> <thead> <tr> <th>Name</th>
<th>Type</th>
<th>Attributes</th>
<th class="last">Description</th> </tr> </thead>
<tbody>
<tr> <td class="name"><code>key</code></td>
<td class="type"> <span class="param-type"><a href="SecretKeyPacket.html">SecretKeyPacket</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>decrypted private key</p></td> </tr>
<tr> <td class="name"><code>randomSessionKey</code></td>
<td class="type"> <span class="param-type">Object</span>
</td>
<td class="attributes"> <optional><br>
</td>
<td class="description last"><p>Bogus session key to use in case of sensitive decryption error, or if the decrypted session key is of a different type/size.This is needed for constant-time processing. Expected object of the form: { sessionKey: Uint8Array, sessionKeyAlgorithm: enums.symmetric }</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/v5.3.0/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v5.3.0/src/packet/public_key_encrypted_session_key.js#L120">line 120</a> </li></ul></dd>
</dl>
<h5>Throws:</h5>
<dl> <dt> <div class="param-desc"> <p>if decryption failed, unless <code>randomSessionKey</code> is given</p> </div> </dt> <dd></dd> <dt> <dl> <dt> Type </dt> <dd> <span class="param-type">Error</span>
</dd> </dl> </dt> <dd></dd></dl>
<h4 class="name" id="encrypt"><span class="type-signature">(async) </span>encrypt<span class="signature">(key)</span><span class="type-signature"></span></h4>
<div class="description"> <p>Encrypt session key packet</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>key</code></td>
<td class="type"> <span class="param-type"><a href="PublicKeyPacket.html">PublicKeyPacket</a></span>
</td>
<td class="description last"><p>Public key</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/v5.3.0/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v5.3.0/src/packet/public_key_encrypted_session_key.js#L101">line 101</a> </li></ul></dd>
</dl>
<h5>Throws:</h5>
<dl> <dt> <div class="param-desc"> <p>if encryption failed</p> </div> </dt> <dd></dd> <dt> <dl> <dt> Type </dt> <dd> <span class="param-type">Error</span>
</dd> </dl> </dt> <dd></dd></dl>
<h4 class="name" id="read"><span class="type-signature"></span>read<span class="signature">(bytes)</span><span class="type-signature"></span></h4>
<div class="description"> <p>Parsing function for a publickey encrypted session key packet (tag 1).</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>bytes</code></td>
<td class="type"> <span class="param-type">Uint8Array</span>
</td>
<td class="description last"><p>Payload of a tag 1 packet</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/v5.3.0/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v5.3.0/src/packet/public_key_encrypted_session_key.js#L69">line 69</a> </li></ul></dd>
</dl>
<h4 class="name" id="write"><span class="type-signature"></span>write<span class="signature">()</span><span class="type-signature"> → {Uint8Array}</span></h4>
<div class="description"> <p>Create a binary representation of a tag 1 packet</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/v5.3.0/src/packet/public_key_encrypted_session_key.js">packet/public_key_encrypted_session_key.js</a>, <a href="https://github.com/openpgpjs/openpgpjs/blob/v5.3.0/src/packet/public_key_encrypted_session_key.js#L84">line 84</a> </li></ul></dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc"> <p>The Uint8Array representation.</p></div>
<dl> <dt> Type </dt> <dd> <span class="param-type">Uint8Array</span>
</dd></dl>
</article>
</section>
</div>
<nav> <h2><a href="index.html">Home</a></h2><h3>Functions</h3><ul><li><a href="global.html#aes">aes</a></li><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#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#newPacketFromTag">newPacketFromTag</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#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></ul><h3>Modules</h3><ul><li><a href="module-config.html">config</a></li><li><a href="module-enums.html">enums</a></li></ul><h3>Classes</h3><ul><li><a href="AEADEncryptedDataPacket.html">AEADEncryptedDataPacket</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-crypto_random-RandomBuffer.html">RandomBuffer</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-S2K.html">S2K</a></li><li><a href="OnePassSignaturePacket.html">OnePassSignaturePacket</a></li><li><a href="PacketList.html">PacketList</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.4</a></footer>
<script> prettyPrint(); </script><script src="scripts/linenumber.js"> </script></body></html>