Fix isValidEncryptionKeyPacket function: access key flags by index
This commit is contained in:
parent
ce1239f4e8
commit
57849437d9
10
src/key.js
10
src/key.js
|
@ -327,17 +327,17 @@ Key.prototype.getPreferredHashAlgorithm = function() {
|
||||||
function isValidEncryptionKeyPacket(keyPacket, signature) {
|
function isValidEncryptionKeyPacket(keyPacket, signature) {
|
||||||
return keyPacket.algorithm !== enums.read(enums.publicKey, enums.publicKey.dsa) &&
|
return keyPacket.algorithm !== enums.read(enums.publicKey, enums.publicKey.dsa) &&
|
||||||
keyPacket.algorithm !== enums.read(enums.publicKey, enums.publicKey.rsa_sign) &&
|
keyPacket.algorithm !== enums.read(enums.publicKey, enums.publicKey.rsa_sign) &&
|
||||||
((signature.keyFlags & enums.keyFlags.encrypt_communication) !== 0 ||
|
(!signature.keyFlags ||
|
||||||
(signature.keyFlags & enums.keyFlags.encrypt_storage) !== 0 ||
|
(signature.keyFlags[0] & enums.keyFlags.encrypt_communication) !== 0 ||
|
||||||
!signature.keyFlags);
|
(signature.keyFlags[0] & enums.keyFlags.encrypt_storage) !== 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isValidSigningKeyPacket(keyPacket, signature) {
|
function isValidSigningKeyPacket(keyPacket, signature) {
|
||||||
return (keyPacket.algorithm == enums.read(enums.publicKey, enums.publicKey.dsa) ||
|
return (keyPacket.algorithm == enums.read(enums.publicKey, enums.publicKey.dsa) ||
|
||||||
keyPacket.algorithm == enums.read(enums.publicKey, enums.publicKey.rsa_sign) ||
|
keyPacket.algorithm == enums.read(enums.publicKey, enums.publicKey.rsa_sign) ||
|
||||||
keyPacket.algorithm == enums.read(enums.publicKey, enums.publicKey.rsa_encrypt_sign)) &&
|
keyPacket.algorithm == enums.read(enums.publicKey, enums.publicKey.rsa_encrypt_sign)) &&
|
||||||
((signature.keyFlags & enums.keyFlags.sign_data) !== 0 ||
|
(!signature.keyFlags ||
|
||||||
!signature.keyFlags);
|
(signature.keyFlags[0] & enums.keyFlags.sign_data) !== 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -293,5 +293,20 @@ describe('Key', function() {
|
||||||
expect(status).to.equal(openpgp.enums.keyStatus.revoked);
|
expect(status).to.equal(openpgp.enums.keyStatus.revoked);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('Evaluate key flags to find valid encryption key packet', function() {
|
||||||
|
var pubKeys = openpgp.key.readArmored(pub_sig_test);
|
||||||
|
expect(pubKeys).to.exist;
|
||||||
|
expect(pubKeys.err).to.not.exist;
|
||||||
|
expect(pubKeys.keys).to.have.length(1);
|
||||||
|
|
||||||
|
var pubKey = pubKeys.keys[0];
|
||||||
|
// remove subkeys
|
||||||
|
pubKey.subKeys = null;
|
||||||
|
// primary key has only key flags for signing
|
||||||
|
var keyPacket = pubKey.getEncryptionKeyPacket();
|
||||||
|
expect(keyPacket).to.not.exist;
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user