add detached sign/verify options to cleartext

This commit is contained in:
Sanjana Rajan 2017-03-06 16:12:55 -08:00
parent 4fd4c13ddd
commit c3908cbec0

View File

@ -69,6 +69,15 @@ CleartextMessage.prototype.getSigningKeyIds = function() {
* @param {Array<module:key~Key>} privateKeys private keys with decrypted secret key data for signing * @param {Array<module:key~Key>} privateKeys private keys with decrypted secret key data for signing
*/ */
CleartextMessage.prototype.sign = function(privateKeys) { CleartextMessage.prototype.sign = function(privateKeys) {
this.signature = this.signDetached(privateKeys);
};
/**
* Sign the cleartext message
* @param {Array<module:key~Key>} privateKeys private keys with decrypted secret key data for signing
* @return {module:signature~Signature} new detached signature of message content
*/
CleartextMessage.prototype.signDetached = function(privateKeys) {
var packetlist = new packet.List(); var packetlist = new packet.List();
var literalDataPacket = new packet.Literal(); var literalDataPacket = new packet.Literal();
literalDataPacket.setText(this.text); literalDataPacket.setText(this.text);
@ -87,7 +96,7 @@ CleartextMessage.prototype.sign = function(privateKeys) {
signaturePacket.sign(signingKeyPacket, literalDataPacket); signaturePacket.sign(signingKeyPacket, literalDataPacket);
packetlist.push(signaturePacket); packetlist.push(signaturePacket);
} }
this.signature = new sigModule.Signature(packetlist); return new sigModule.Signature(packetlist);
}; };
/** /**
@ -96,8 +105,17 @@ CleartextMessage.prototype.sign = function(privateKeys) {
* @return {Array<{keyid: module:type/keyid, valid: Boolean}>} list of signer's keyid and validity of signature * @return {Array<{keyid: module:type/keyid, valid: Boolean}>} list of signer's keyid and validity of signature
*/ */
CleartextMessage.prototype.verify = function(keys) { CleartextMessage.prototype.verify = function(keys) {
return this.verifyDetached(this.signature, keys);
};
/**
* Verify signatures of cleartext signed message
* @param {Array<module:key~Key>} keys array of keys to verify signatures
* @return {Array<{keyid: module:type/keyid, valid: Boolean}>} list of signer's keyid and validity of signature
*/
CleartextMessage.prototype.verifyDetached = function(signature, keys) {
var result = []; var result = [];
var signatureList = this.signature.packets; var signatureList = signature.packets;
var literalDataPacket = new packet.Literal(); var literalDataPacket = new packet.Literal();
// we assume that cleartext signature is generated based on UTF8 cleartext // we assume that cleartext signature is generated based on UTF8 cleartext
literalDataPacket.setText(this.text); literalDataPacket.setText(this.text);