refactor cleartext message to use signature object instead of packetlist
This commit is contained in:
parent
4ed7f25836
commit
4fd4c13ddd
|
@ -29,23 +29,26 @@ import config from './config';
|
|||
import packet from './packet';
|
||||
import enums from './enums.js';
|
||||
import armor from './encoding/armor.js';
|
||||
import * as sigModule from './signature.js';
|
||||
|
||||
/**
|
||||
* @class
|
||||
* @classdesc Class that represents an OpenPGP cleartext signed message.
|
||||
* See {@link http://tools.ietf.org/html/rfc4880#section-7}
|
||||
* @param {String} text The cleartext of the signed message
|
||||
* @param {module:packet/packetlist} packetlist The packetlist with signature packets or undefined
|
||||
* if message not yet signed
|
||||
* @param {module:Signature} signature The detached signature or an empty signature if message not yet signed
|
||||
*/
|
||||
|
||||
export function CleartextMessage(text, packetlist) {
|
||||
export function CleartextMessage(text, signature) {
|
||||
if (!(this instanceof CleartextMessage)) {
|
||||
return new CleartextMessage(text, packetlist);
|
||||
return new CleartextMessage(text, signature);
|
||||
}
|
||||
// normalize EOL to canonical form <CR><LF>
|
||||
this.text = text.replace(/\r/g, '').replace(/[\t ]+\n/g, "\n").replace(/\n/g,"\r\n");
|
||||
this.packets = packetlist || new packet.List();
|
||||
if (signature && !(signature instanceof sigModule.Signature)) {
|
||||
throw new Error('Invalid signature input');
|
||||
}
|
||||
this.signature = signature || new sigModule.Signature([]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -54,7 +57,7 @@ export function CleartextMessage(text, packetlist) {
|
|||
*/
|
||||
CleartextMessage.prototype.getSigningKeyIds = function() {
|
||||
var keyIds = [];
|
||||
var signatureList = this.packets.filterByTag(enums.packet.signature);
|
||||
var signatureList = this.signature.packets;
|
||||
signatureList.forEach(function(packet) {
|
||||
keyIds.push(packet.issuerKeyId);
|
||||
});
|
||||
|
@ -84,7 +87,7 @@ CleartextMessage.prototype.sign = function(privateKeys) {
|
|||
signaturePacket.sign(signingKeyPacket, literalDataPacket);
|
||||
packetlist.push(signaturePacket);
|
||||
}
|
||||
this.packets = packetlist;
|
||||
this.signature = new sigModule.Signature(packetlist);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -94,7 +97,7 @@ CleartextMessage.prototype.sign = function(privateKeys) {
|
|||
*/
|
||||
CleartextMessage.prototype.verify = function(keys) {
|
||||
var result = [];
|
||||
var signatureList = this.packets.filterByTag(enums.packet.signature);
|
||||
var signatureList = this.signature.packets;
|
||||
var literalDataPacket = new packet.Literal();
|
||||
// we assume that cleartext signature is generated based on UTF8 cleartext
|
||||
literalDataPacket.setText(this.text);
|
||||
|
@ -137,7 +140,7 @@ CleartextMessage.prototype.armor = function() {
|
|||
var body = {
|
||||
hash: enums.read(enums.hash, config.prefer_hash_algorithm).toUpperCase(),
|
||||
text: this.text,
|
||||
data: this.packets.write()
|
||||
data: this.signature.packets.write()
|
||||
};
|
||||
return armor.encode(enums.armor.signed, body);
|
||||
};
|
||||
|
@ -157,7 +160,8 @@ export function readArmored(armoredText) {
|
|||
var packetlist = new packet.List();
|
||||
packetlist.read(input.data);
|
||||
verifyHeaders(input.headers, packetlist);
|
||||
var newMessage = new CleartextMessage(input.text, packetlist);
|
||||
var signature = new sigModule.Signature(packetlist);
|
||||
var newMessage = new CleartextMessage(input.text, signature);
|
||||
return newMessage;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user