Fixing the signature to work properly with "hashed" subpackets.
This commit is contained in:
parent
4872b8c720
commit
8baaa7f511
|
@ -1320,7 +1320,7 @@ var config = function() {
|
||||||
this.integrity_protect = true;
|
this.integrity_protect = true;
|
||||||
this.keyserver = "keyserver.linux.it"; // "pgp.mit.edu:11371"
|
this.keyserver = "keyserver.linux.it"; // "pgp.mit.edu:11371"
|
||||||
|
|
||||||
this.versionstring = "OpenPGP.js v0.0.1.20131015";
|
this.versionstring = "OpenPGP.js v0.0.1.20131017";
|
||||||
this.commentstring = "http://openpgpjs.org";
|
this.commentstring = "http://openpgpjs.org";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -11337,8 +11337,6 @@ module.exports = function packet_signature() {
|
||||||
|
|
||||||
this.verified = false;
|
this.verified = false;
|
||||||
|
|
||||||
this.subpacketsData = "";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* parsing function for a signature packet (tag 2).
|
* parsing function for a signature packet (tag 2).
|
||||||
* @param {String} bytes payload of a tag 2 packet
|
* @param {String} bytes payload of a tag 2 packet
|
||||||
|
@ -11439,9 +11437,8 @@ module.exports = function packet_signature() {
|
||||||
|
|
||||||
this.write = function() {
|
this.write = function() {
|
||||||
return this.signatureData +
|
return this.signatureData +
|
||||||
util.writeNumber(this.subpacketsData.length, 2) + // Number of unsigned subpackets.
|
util.writeNumber(0, 2) + // Number of unsigned subpackets.
|
||||||
this.subpacketsData +
|
this.signedHashValue +
|
||||||
this.signedHashValue +
|
|
||||||
this.signature;
|
this.signature;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -11463,21 +11460,12 @@ module.exports = function packet_signature() {
|
||||||
//Calculate subpackets
|
//Calculate subpackets
|
||||||
var creationTimeSubpacket = write_sub_packet(enums.signatureSubpacket.signature_creation_time,
|
var creationTimeSubpacket = write_sub_packet(enums.signatureSubpacket.signature_creation_time,
|
||||||
util.writeDate(new Date()));
|
util.writeDate(new Date()));
|
||||||
var creationTimeHash = crypto.hash.digest(hashAlgorithm, creationTimeSubpacket);
|
|
||||||
this.subpacketsData = creationTimeSubpacket;
|
|
||||||
|
|
||||||
var subpacketsHashLength = creationTimeHash.length;
|
|
||||||
|
|
||||||
var issuerSubpacket = write_sub_packet(enums.signatureSubpacket.issuer, key.getKeyId());
|
var issuerSubpacket = write_sub_packet(enums.signatureSubpacket.issuer, key.getKeyId());
|
||||||
var issuerHash = crypto.hash.digest(hashAlgorithm, issuerSubpacket);
|
|
||||||
this.subpacketsData += issuerSubpacket;
|
|
||||||
|
|
||||||
subpacketsHashLength += issuerHash.length;
|
|
||||||
|
|
||||||
// Add subpackets here
|
// Add subpackets here
|
||||||
result += util.writeNumber(subpacketsHashLength, 2);
|
result += util.writeNumber(creationTimeSubpacket.length + issuerSubpacket.length, 2);
|
||||||
result += creationTimeHash;
|
result += creationTimeSubpacket + issuerSubpacket;
|
||||||
result += issuerHash;
|
|
||||||
|
|
||||||
this.signatureData = result;
|
this.signatureData = result;
|
||||||
|
|
||||||
|
|
10
resources/openpgp.min.js
vendored
10
resources/openpgp.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -73,8 +73,6 @@ module.exports = function packet_signature() {
|
||||||
|
|
||||||
this.verified = false;
|
this.verified = false;
|
||||||
|
|
||||||
this.subpacketsData = "";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* parsing function for a signature packet (tag 2).
|
* parsing function for a signature packet (tag 2).
|
||||||
* @param {String} bytes payload of a tag 2 packet
|
* @param {String} bytes payload of a tag 2 packet
|
||||||
|
@ -175,9 +173,8 @@ module.exports = function packet_signature() {
|
||||||
|
|
||||||
this.write = function() {
|
this.write = function() {
|
||||||
return this.signatureData +
|
return this.signatureData +
|
||||||
util.writeNumber(this.subpacketsData.length, 2) + // Number of unsigned subpackets.
|
util.writeNumber(0, 2) + // Number of unsigned subpackets.
|
||||||
this.subpacketsData +
|
this.signedHashValue +
|
||||||
this.signedHashValue +
|
|
||||||
this.signature;
|
this.signature;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -199,21 +196,12 @@ module.exports = function packet_signature() {
|
||||||
//Calculate subpackets
|
//Calculate subpackets
|
||||||
var creationTimeSubpacket = write_sub_packet(enums.signatureSubpacket.signature_creation_time,
|
var creationTimeSubpacket = write_sub_packet(enums.signatureSubpacket.signature_creation_time,
|
||||||
util.writeDate(new Date()));
|
util.writeDate(new Date()));
|
||||||
var creationTimeHash = crypto.hash.digest(hashAlgorithm, creationTimeSubpacket);
|
|
||||||
this.subpacketsData = creationTimeSubpacket;
|
|
||||||
|
|
||||||
var subpacketsHashLength = creationTimeHash.length;
|
|
||||||
|
|
||||||
var issuerSubpacket = write_sub_packet(enums.signatureSubpacket.issuer, key.getKeyId());
|
var issuerSubpacket = write_sub_packet(enums.signatureSubpacket.issuer, key.getKeyId());
|
||||||
var issuerHash = crypto.hash.digest(hashAlgorithm, issuerSubpacket);
|
|
||||||
this.subpacketsData += issuerSubpacket;
|
|
||||||
|
|
||||||
subpacketsHashLength += issuerHash.length;
|
|
||||||
|
|
||||||
// Add subpackets here
|
// Add subpackets here
|
||||||
result += util.writeNumber(subpacketsHashLength, 2);
|
result += util.writeNumber(creationTimeSubpacket.length + issuerSubpacket.length, 2);
|
||||||
result += creationTimeHash;
|
result += creationTimeSubpacket + issuerSubpacket;
|
||||||
result += issuerHash;
|
|
||||||
|
|
||||||
this.signatureData = result;
|
this.signatureData = result;
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user