mirror of
https://github.com/openpgpjs/openpgpjs.git
synced 2025-06-06 22:26:46 +00:00

and make the high-level API accessible from an asynchronous proxy. Entropy is seeded to worker on each generateKeyPair() call. Allow serialization of packets and custom types for messaging API.
79 lines
2.8 KiB
JavaScript
79 lines
2.8 KiB
JavaScript
/**
|
|
* @requires enums
|
|
* @module packet
|
|
*/
|
|
var enums = require('../enums.js');
|
|
|
|
// This is pretty ugly, but browserify needs to have the requires explicitly written.
|
|
|
|
module.exports = {
|
|
/** @see module:packet/compressed */
|
|
Compressed: require('./compressed.js'),
|
|
/** @see module:packet/sym_encrypted_integrity_protected */
|
|
SymEncryptedIntegrityProtected: require('./sym_encrypted_integrity_protected.js'),
|
|
/** @see module:packet/public_key_encrypted_session_key */
|
|
PublicKeyEncryptedSessionKey: require('./public_key_encrypted_session_key.js'),
|
|
/** @see module:packet/sym_encrypted_session_key */
|
|
SymEncryptedSessionKey: require('./sym_encrypted_session_key.js'),
|
|
/** @see module:packet/literal */
|
|
Literal: require('./literal.js'),
|
|
/** @see module:packet/public_key */
|
|
PublicKey: require('./public_key.js'),
|
|
/** @see module:packet/symmetrically_encrypted */
|
|
SymmetricallyEncrypted: require('./symmetrically_encrypted.js'),
|
|
/** @see module:packet/marker */
|
|
Marker: require('./marker.js'),
|
|
/** @see module:packet/public_subkey */
|
|
PublicSubkey: require('./public_subkey.js'),
|
|
/** @see module:packet/user_attribute */
|
|
UserAttribute: require('./user_attribute.js'),
|
|
/** @see module:packet/one_pass_signature */
|
|
OnePassSignature: require('./one_pass_signature.js'),
|
|
/** @see module:packet/secret_key */
|
|
SecretKey: require('./secret_key.js'),
|
|
/** @see module:packet/userid */
|
|
Userid: require('./userid.js'),
|
|
/** @see module:packet/secret_subkey */
|
|
SecretSubkey: require('./secret_subkey.js'),
|
|
/** @see module:packet/signature */
|
|
Signature: require('./signature.js'),
|
|
/** @see module:packet/trust */
|
|
Trust: require('./trust.js'),
|
|
/**
|
|
* Allocate a new packet
|
|
* @param {String} tag property name from {@link module:enums.packet}
|
|
* @returns {Object} new packet object with type based on tag
|
|
*/
|
|
newPacketFromTag: function (tag) {
|
|
return new this[packetClassFromTagName(tag)]();
|
|
},
|
|
/**
|
|
* Allocate a new packet from structured packet clone
|
|
* See {@link http://www.w3.org/html/wg/drafts/html/master/infrastructure.html#safe-passing-of-structured-data}
|
|
* @param {Object} packetClone packet clone
|
|
* @returns {Object} new packet object with data from packet clone
|
|
*/
|
|
fromStructuredClone: function(packetClone) {
|
|
var tagName = enums.read(enums.packet, packetClone.tag)
|
|
var packet = this.newPacketFromTag(tagName);
|
|
for (var attr in packetClone) {
|
|
if (packetClone.hasOwnProperty(attr)) {
|
|
packet[attr] = packetClone[attr];
|
|
}
|
|
}
|
|
if (packet.postCloneTypeFix) {
|
|
packet.postCloneTypeFix();
|
|
}
|
|
return packet;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Convert tag name to class name
|
|
* @param {String} tag property name from {@link module:enums.packet}
|
|
* @returns {String}
|
|
*/
|
|
function packetClassFromTagName(tag) {
|
|
return tag.substr(0, 1).toUpperCase() + tag.substr(1);
|
|
}
|