fork-openpgpjs/src/packet/all_packets.js
2018-05-01 17:36:15 +02:00

117 lines
3.2 KiB
JavaScript

/**
* @fileoverview Exports all OpenPGP packet types
* @requires enums
* @module packet/all_packets
*/
import enums from '../enums.js';
import * as packets from './all_packets.js'; // re-import module to parse packets from tag
export {
/** @see module:packet.Compressed */
default as Compressed
} from './compressed.js';
export {
/** @see module:packet.SymEncryptedIntegrityProtected */
default as SymEncryptedIntegrityProtected
} from './sym_encrypted_integrity_protected.js';
export {
/** @see module:packet.SymEncryptedAEADProtected */
default as SymEncryptedAEADProtected
} from './sym_encrypted_aead_protected.js';
export {
/** @see module:packet.PublicKeyEncryptedSessionKey */
default as PublicKeyEncryptedSessionKey
} from './public_key_encrypted_session_key.js';
export {
/** @see module:packet.SymEncryptedSessionKey */
default as SymEncryptedSessionKey
} from './sym_encrypted_session_key.js';
export {
/** @see module:packet.Literal */
default as Literal
} from './literal.js';
export {
/** @see module:packet.PublicKey */
default as PublicKey
} from './public_key.js';
export {
/** @see module:packet.SymmetricallyEncrypted */
default as SymmetricallyEncrypted
} from './symmetrically_encrypted.js';
export {
/** @see module:packet.Marker */
default as Marker
} from './marker.js';
export {
/** @see module:packet.PublicSubkey */
default as PublicSubkey
} from './public_subkey.js';
export {
/** @see module:packet.UserAttribute */
default as UserAttribute
} from './user_attribute.js';
export {
/** @see module:packet.OnePassSignature */
default as OnePassSignature
} from './one_pass_signature.js';
export {
/** @see module:packet.SecretKey */
default as SecretKey
} from './secret_key.js';
export {
/** @see module:packet.Userid */
default as Userid
} from './userid.js';
export {
/** @see module:packet.SecretSubkey */
default as SecretSubkey
} from './secret_subkey.js';
export {
/** @see module:packet.Signature */
default as Signature
} from './signature.js';
export {
/** @see module:packet.Trust */
default as Trust
} from './trust.js';
/**
* Allocate a new packet
* @function newPacketFromTag
* @memberof module:packet
* @param {String} tag property name from {@link module:enums.packet}
* @returns {Object} new packet object with type based on tag
*/
export function newPacketFromTag(tag) {
return new packets[packetClassFromTagName(tag)]();
}
/**
* Allocate a new packet from structured packet clone
* @see {@link https://w3c.github.io/html/infrastructure.html#safe-passing-of-structured-data}
* @function fromStructuredClone
* @memberof module:packet
* @param {Object} packetClone packet clone
* @returns {Object} new packet object with data from packet clone
*/
export function fromStructuredClone(packetClone) {
const tagName = enums.read(enums.packet, packetClone.tag);
const packet = newPacketFromTag(tagName);
Object.assign(packet, packetClone);
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}
* @private
*/
function packetClassFromTagName(tag) {
return tag.substr(0, 1).toUpperCase() + tag.substr(1);
}