Merge pull request #446 from openpgpjs/issue/443
Implement feature #443
This commit is contained in:
commit
9c76df73ff
16
src/key.js
16
src/key.js
|
@ -365,6 +365,22 @@ Key.prototype.getEncryptionKeyPacket = function() {
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encrypts all secret key and subkey packets
|
||||||
|
* @param {String} passphrase
|
||||||
|
*/
|
||||||
|
Key.prototype.encrypt = function(passphrase) {
|
||||||
|
if (!this.isPrivate()) {
|
||||||
|
throw new Error("Nothing to encrypt in a public key");
|
||||||
|
}
|
||||||
|
|
||||||
|
var keys = this.getAllKeyPackets();
|
||||||
|
for (var i = 0; i < keys.length; i++) {
|
||||||
|
keys[i].encrypt(passphrase);
|
||||||
|
keys[i].clearPrivateMPIs();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Decrypts all secret key and subkey packets
|
* Decrypts all secret key and subkey packets
|
||||||
* @param {String} passphrase
|
* @param {String} passphrase
|
||||||
|
|
|
@ -706,5 +706,28 @@ var pgp_desktop_priv =
|
||||||
}).catch(done);
|
}).catch(done);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('Encrypt key with new passphrase', function(done) {
|
||||||
|
var userId = 'test <a@b.com>';
|
||||||
|
var opt = {numBits: 512, userIds: userId, passphrase: 'passphrase'};
|
||||||
|
if (openpgp.util.getWebCryptoAll()) { opt.numBits = 2048; } // webkit webcrypto accepts minimum 2048 bit keys
|
||||||
|
openpgp.generateKey(opt).then(function(key) {
|
||||||
|
key = key.key;
|
||||||
|
var armor1 = key.armor();
|
||||||
|
var armor2 = key.armor();
|
||||||
|
expect(armor1).to.equal(armor2);
|
||||||
|
expect(key.decrypt('passphrase')).to.be.true;
|
||||||
|
expect(key.primaryKey.isDecrypted).to.be.true;
|
||||||
|
key.encrypt('new_passphrase');
|
||||||
|
expect(key.primaryKey.isDecrypted).to.be.false;
|
||||||
|
expect(key.decrypt('passphrase')).to.be.false;
|
||||||
|
expect(key.primaryKey.isDecrypted).to.be.false;
|
||||||
|
expect(key.decrypt('new_passphrase')).to.be.true;
|
||||||
|
expect(key.primaryKey.isDecrypted).to.be.true;
|
||||||
|
var armor3 = key.armor();
|
||||||
|
expect(armor3).to.not.equal(armor1);
|
||||||
|
done();
|
||||||
|
}).catch(done);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user