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) {
|
||||
return keyPacket.algorithm !== enums.read(enums.publicKey, enums.publicKey.dsa) &&
|
||||
keyPacket.algorithm !== enums.read(enums.publicKey, enums.publicKey.rsa_sign) &&
|
||||
((signature.keyFlags & enums.keyFlags.encrypt_communication) !== 0 ||
|
||||
(signature.keyFlags & enums.keyFlags.encrypt_storage) !== 0 ||
|
||||
!signature.keyFlags);
|
||||
(!signature.keyFlags ||
|
||||
(signature.keyFlags[0] & enums.keyFlags.encrypt_communication) !== 0 ||
|
||||
(signature.keyFlags[0] & enums.keyFlags.encrypt_storage) !== 0);
|
||||
}
|
||||
|
||||
function isValidSigningKeyPacket(keyPacket, signature) {
|
||||
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_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);
|
||||
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