
Rename resources to dist. Eliminate keyring bundle and expose keyring class in openpgp module. Add mochaTest grunt task to run node server-side tests. Add node_pack grunt task to create npm package into dist and install it for testing. Add node_store config property which specifies location of localStorage emulation when using node. Add repository info to package.json. Move util.js to src directory from util since it is the only file there. Rename class properties in openpgp to the new class names.
228 lines
10 KiB
HTML
228 lines
10 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>JSDoc: Source: packet/packetlist.js</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">Source: packet/packetlist.js</h1>
|
|
|
|
|
|
|
|
|
|
|
|
<section>
|
|
<article>
|
|
<pre class="prettyprint source"><code>/**
|
|
* This class represents a list of openpgp packets.
|
|
* Take care when iterating over it - the packets themselves
|
|
* are stored as numerical indices.
|
|
* @requires enums
|
|
* @requires packet
|
|
* @requires packet/packet
|
|
* @module packet/packetlist
|
|
*/
|
|
|
|
module.exports = Packetlist;
|
|
|
|
var packetParser = require('./packet.js'),
|
|
packets = require('./all_packets.js'),
|
|
enums = require('../enums.js');
|
|
|
|
/**
|
|
* @constructor
|
|
*/
|
|
function Packetlist() {
|
|
/** The number of packets contained within the list.
|
|
* @readonly
|
|
* @type {Integer} */
|
|
this.length = 0;
|
|
}
|
|
/**
|
|
* Reads a stream of binary data and interprents it as a list of packets.
|
|
* @param {String} A binary string of bytes.
|
|
*/
|
|
Packetlist.prototype.read = function (bytes) {
|
|
var i = 0;
|
|
|
|
while (i < bytes.length) {
|
|
var parsed = packetParser.read(bytes, i, bytes.length - i);
|
|
i = parsed.offset;
|
|
|
|
var tag = enums.read(enums.packet, parsed.tag);
|
|
var packet = packets.newPacketFromTag(tag);
|
|
|
|
this.push(packet);
|
|
|
|
packet.read(parsed.packet);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Creates a binary representation of openpgp objects contained within the
|
|
* class instance.
|
|
* @returns {String} A binary string of bytes containing valid openpgp packets.
|
|
*/
|
|
Packetlist.prototype.write = function () {
|
|
var bytes = '';
|
|
|
|
for (var i = 0; i < this.length; i++) {
|
|
var packetbytes = this[i].write();
|
|
bytes += packetParser.writeHeader(this[i].tag, packetbytes.length);
|
|
bytes += packetbytes;
|
|
}
|
|
|
|
return bytes;
|
|
};
|
|
|
|
/**
|
|
* Adds a packet to the list. This is the only supported method of doing so;
|
|
* writing to packetlist[i] directly will result in an error.
|
|
*/
|
|
Packetlist.prototype.push = function (packet) {
|
|
if (!packet) return;
|
|
|
|
packet.packets = packet.packets || new Packetlist();
|
|
|
|
this[this.length] = packet;
|
|
this.length++;
|
|
};
|
|
|
|
/**
|
|
* Creates a new PacketList with all packets that pass the test implemented by the provided function.
|
|
*/
|
|
Packetlist.prototype.filter = function (callback) {
|
|
|
|
var filtered = new Packetlist();
|
|
|
|
for (var i = 0; i < this.length; i++) {
|
|
if (callback(this[i], i, this)) {
|
|
filtered.push(this[i]);
|
|
}
|
|
}
|
|
|
|
return filtered;
|
|
};
|
|
|
|
/**
|
|
* Creates a new PacketList with all packets from the given types
|
|
*/
|
|
Packetlist.prototype.filterByTag = function () {
|
|
var args = Array.prototype.slice.call(arguments);
|
|
var filtered = new Packetlist();
|
|
var that = this;
|
|
|
|
for (var i = 0; i < this.length; i++) {
|
|
if (args.some(function(packetType) {return that[i].tag == packetType;})) {
|
|
filtered.push(this[i]);
|
|
}
|
|
}
|
|
|
|
return filtered;
|
|
};
|
|
|
|
/**
|
|
* Executes the provided callback once for each element
|
|
*/
|
|
Packetlist.prototype.forEach = function (callback) {
|
|
for (var i = 0; i < this.length; i++) {
|
|
callback(this[i]);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Traverses packet tree and returns first matching packet
|
|
* @param {module:enums.packet} type The packet type
|
|
* @return {module:packet/packet|null}
|
|
*/
|
|
Packetlist.prototype.findPacket = function (type) {
|
|
var packetlist = this.filterByTag(type);
|
|
if (packetlist.length) {
|
|
return packetlist[0];
|
|
} else {
|
|
var found = null;
|
|
for (var i = 0; i < this.length; i++) {
|
|
if (this[i].packets.length) {
|
|
found = this[i].packets.findPacket(type);
|
|
if (found) return found;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
};
|
|
|
|
/**
|
|
* Returns array of found indices by tag
|
|
*/
|
|
Packetlist.prototype.indexOfTag = function () {
|
|
var args = Array.prototype.slice.call(arguments);
|
|
var tagIndex = [];
|
|
var that = this;
|
|
for (var i = 0; i < this.length; i++) {
|
|
if (args.some(function(packetType) {return that[i].tag == packetType;})) {
|
|
tagIndex.push(i);
|
|
}
|
|
}
|
|
return tagIndex;
|
|
};
|
|
|
|
/**
|
|
* Returns slice of packetlist
|
|
*/
|
|
Packetlist.prototype.slice = function (begin, end) {
|
|
if (!end) {
|
|
end = this.length;
|
|
}
|
|
var part = new Packetlist();
|
|
for (var i = begin; i < end; i++) {
|
|
part.push(this[i]);
|
|
}
|
|
return part;
|
|
};
|
|
|
|
/**
|
|
* Concatenates packetlist or array of packets
|
|
*/
|
|
Packetlist.prototype.concat = function (packetlist) {
|
|
if (packetlist) {
|
|
for (var i = 0; i < packetlist.length; i++) {
|
|
this.push(packetlist[i]);
|
|
}
|
|
}
|
|
};
|
|
</code></pre>
|
|
</article>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<nav>
|
|
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-cleartext.html">cleartext</a></li><li><a href="module-config.html">config</a></li><li><a href="config.html">config/config</a></li><li><a href="localStorage.html">config/localStorage</a></li><li><a href="module-crypto.html">crypto</a></li><li><a href="cfb.html">crypto/cfb</a></li><li><a href="cipher.html">crypto/cipher</a></li><li><a href="aes.html">crypto/cipher/aes</a></li><li><a href="blowfish.html">crypto/cipher/blowfish</a></li><li><a href="cast5.html">crypto/cipher/cast5</a></li><li><a href="des.html">crypto/cipher/des</a></li><li><a href="twofish.html">crypto/cipher/twofish</a></li><li><a href="crypto.html">crypto/crypto</a></li><li><a href="hash.html">crypto/hash</a></li><li><a href="md5.html">crypto/hash/md5</a></li><li><a href="ripe-md.html">crypto/hash/ripe-md</a></li><li><a href="sha.html">crypto/hash/sha</a></li><li><a href="pkcs1.html">crypto/pkcs1</a></li><li><a href="public_key.html">crypto/public_key</a></li><li><a href="dsa.html">crypto/public_key/dsa</a></li><li><a href="elgamal.html">crypto/public_key/elgamal</a></li><li><a href="jsbn.html">crypto/public_key/jsbn</a></li><li><a href="rsa.html">crypto/public_key/rsa</a></li><li><a href="random.html">crypto/random</a></li><li><a href="signature.html">crypto/signature</a></li><li><a href="armor.html">encoding/armor</a></li><li><a href="base64.html">encoding/base64</a></li><li><a href="module-enums.html">enums</a></li><li><a href="module-key.html">key</a></li><li><a href="module-keyring.html">keyring</a></li><li><a href="keyring.html">keyring/keyring</a></li><li><a href="localstore.html">keyring/localstore</a></li><li><a href="module-message.html">message</a></li><li><a href="module-openpgp.html">openpgp</a></li><li><a href="module-packet.html">packet</a></li><li><a href="compressed.html">packet/compressed</a></li><li><a href="literal.html">packet/literal</a></li><li><a href="marker.html">packet/marker</a></li><li><a href="one_pass_signature.html">packet/one_pass_signature</a></li><li><a href="packet.html">packet/packet</a></li><li><a href="packetlist.html">packet/packetlist</a></li><li><a href="public_key_.html">packet/public_key</a></li><li><a href="public_key_encrypted_session_key.html">packet/public_key_encrypted_session_key</a></li><li><a href="public_subkey.html">packet/public_subkey</a></li><li><a href="secret_key.html">packet/secret_key</a></li><li><a href="secret_subkey.html">packet/secret_subkey</a></li><li><a href="signature_.html">packet/signature</a></li><li><a href="sym_encrypted_integrity_protected.html">packet/sym_encrypted_integrity_protected</a></li><li><a href="sym_encrypted_session_key.html">packet/sym_encrypted_session_key</a></li><li><a href="symmetrically_encrypted.html">packet/symmetrically_encrypted</a></li><li><a href="trust.html">packet/trust</a></li><li><a href="user_attribute.html">packet/user_attribute</a></li><li><a href="userid.html">packet/userid</a></li><li><a href="keyid.html">type/keyid</a></li><li><a href="mpi.html">type/mpi</a></li><li><a href="s2k.html">type/s2k</a></li><li><a href="module-util.html">util</a></li></ul><h3>Classes</h3><ul><li><a href="JXG.Util.html">JXG.Util</a></li><li><a href="module-cleartext-CleartextMessage.html">cleartext~CleartextMessage</a></li><li><a href="localStorage-LocalStorage.html">config/localStorage~LocalStorage</a></li><li><a href="keyring-Keyring.html">keyring/keyring~Keyring</a></li><li><a href="module-key-Key.html">key~Key</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-message-Message.html">message~Message</a></li><li><a href="compressed-Compressed.html">packet/compressed~Compressed</a></li><li><a href="literal-Literal.html">packet/literal~Literal</a></li><li><a href="marker-Marker.html">packet/marker~Marker</a></li><li><a href="one_pass_signature-OnePassSignature.html">packet/one_pass_signature~OnePassSignature</a></li><li><a href="packetlist-Packetlist.html">packet/packetlist~Packetlist</a></li><li><a href="public_key_encrypted_session_key-PublicKeyEncryptedSessionKey.html">packet/public_key_encrypted_session_key~PublicKeyEncryptedSessionKey</a></li><li><a href="public_key-PublicKey.html">packet/public_key~PublicKey</a></li><li><a href="public_subkey-PublicSubkey.html">packet/public_subkey~PublicSubkey</a></li><li><a href="secret_key-SecretKey.html">packet/secret_key~SecretKey</a></li><li><a href="secret_subkey-SecretSubkey.html">packet/secret_subkey~SecretSubkey</a></li><li><a href="signature-Signature.html">packet/signature~Signature</a></li><li><a href="sym_encrypted_integrity_protected-SymEncryptedIntegrityProtected.html">packet/sym_encrypted_integrity_protected~SymEncryptedIntegrityProtected</a></li><li><a href="sym_encrypted_session_key-SymEncryptedSessionKey.html">packet/sym_encrypted_session_key~SymEncryptedSessionKey</a></li><li><a href="symmetrically_encrypted-SymmetricallyEncrypted.html">packet/symmetrically_encrypted~SymmetricallyEncrypted</a></li><li><a href="trust-Trust.html">packet/trust~Trust</a></li><li><a href="user_attribute-UserAttribute.html">packet/user_attribute~UserAttribute</a></li><li><a href="userid-Userid.html">packet/userid~Userid</a></li><li><a href="keyid-Keyid.html">type/keyid~Keyid</a></li><li><a href="mpi-MPI.html">type/mpi~MPI</a></li><li><a href="s2k-S2K.html">type/s2k~S2K</a></li></ul>
|
|
</nav>
|
|
|
|
<br clear="both">
|
|
|
|
<footer>
|
|
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Thu Jan 09 2014 02:24:28 GMT-0800 (PST)
|
|
</footer>
|
|
|
|
<script> prettyPrint(); </script>
|
|
<script src="scripts/linenumber.js"> </script>
|
|
</body>
|
|
</html>
|