From 465d4643a8ef993fdcabfb61a5fe0e94d3140b6a Mon Sep 17 00:00:00 2001 From: Sanjana Rajan Date: Tue, 7 Mar 2017 16:51:08 -0800 Subject: [PATCH] add clone to packetlist support for signature objects --- src/packet/clone.js | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/packet/clone.js b/src/packet/clone.js index 0fefe29f..1451e642 100644 --- a/src/packet/clone.js +++ b/src/packet/clone.js @@ -26,6 +26,7 @@ import * as key from '../key.js'; import * as message from '../message.js'; import * as cleartext from '../cleartext.js'; +import * as signature from '../signature.js' import Packetlist from './packetlist.js'; import type_keyid from '../type/keyid.js'; @@ -55,6 +56,17 @@ export function clonePackets(options) { if (options.key) { options.key = options.key.toPacketlist(); } + if (options.message) { + //could be either a Message or CleartextMessage object + if (options.message instanceof message.Message) { + options.message = options.message.packets; + } else { + options.message.signature = options.message.signature.packets; + } + } + if (options.signature) { + options.signature = options.signature.packets; + } return options; } @@ -91,7 +103,10 @@ export function parseClonedPackets(options, method) { options.message = packetlistCloneToMessage(options.message); } if (options.signatures) { - options.signatures = options.signatures.map(packetlistCloneToSignature); + options.signatures = options.signatures.map(packetlistCloneToSignatures); + } + if (options.signature) { + options.signature = packetlistCloneToSignature(options.signature); } return options; } @@ -102,16 +117,22 @@ function packetlistCloneToKey(clone) { } function packetlistCloneToMessage(clone) { - const packetlist = Packetlist.fromStructuredClone(clone.packets); + const packetlist = Packetlist.fromStructuredClone(clone); return new message.Message(packetlist); } function packetlistCloneToCleartextMessage(clone) { - var packetlist = Packetlist.fromStructuredClone(clone.packets); - return new cleartext.CleartextMessage(clone.text, packetlist); + var packetlist = Packetlist.fromStructuredClone(clone.signature); + return new cleartext.CleartextMessage(clone.text, new signature.Signature(packetlist)); } -function packetlistCloneToSignature(clone) { +//verification objects +function packetlistCloneToSignatures(clone) { clone.keyid = type_keyid.fromClone(clone.keyid); return clone; } + +function packetlistCloneToSignature(clone) { + var packetlist = Packetlist.fromStructuredClone(clone); + return new signature.Signature(packetlist); +}