Reverted top level api changes

This commit is contained in:
Aydar Zartdinov 2017-02-10 12:12:29 +03:00
parent 5140a946e5
commit 715f98bb38
3 changed files with 15 additions and 123 deletions

View File

@ -507,7 +507,7 @@ function getExpirationTime(keyPacket, selfCertificate) {
Key.prototype.getPrimaryUser = function() { Key.prototype.getPrimaryUser = function() {
var primUser = []; var primUser = [];
for (var i = 0; i < this.users.length; i++) { for (var i = 0; i < this.users.length; i++) {
if ((!this.users[i].userId && !this.users[i].userAttribute) || !this.users[i].selfCertifications) { if (!this.users[i].userId || !this.users[i].selfCertifications) {
continue; continue;
} }
for (var j = 0; j < this.users[i].selfCertifications.length; j++) { for (var j = 0; j < this.users[i].selfCertifications.length; j++) {

View File

@ -34,7 +34,7 @@
import * as messageLib from './message.js'; import * as messageLib from './message.js';
import * as cleartext from './cleartext.js'; import * as cleartext from './cleartext.js';
import * as keyLib from './key.js'; import * as key from './key.js';
import config from './config/config.js'; import config from './config/config.js';
import util from './util'; import util from './util';
import AsyncProxy from './worker/async_proxy.js'; import AsyncProxy from './worker/async_proxy.js';
@ -104,7 +104,7 @@ export function generateKey({ userIds=[], passphrase, numBits=2048, unlocked=fal
return asyncProxy.delegate('generateKey', options); return asyncProxy.delegate('generateKey', options);
} }
return keyLib.generate(options).then(newKey => ({ return key.generate(options).then(newKey => ({
key: newKey, key: newKey,
privateKeyArmored: newKey.armor(), privateKeyArmored: newKey.armor(),
@ -361,65 +361,6 @@ export function decryptSessionKey({ message, privateKey, password }) {
} }
/////////////////////////////////////////////
// //
// Public key signing and verification //
// //
/////////////////////////////////////////////
/**
* Signs a paublic key.
* @param {Key} publicKey public key to be signed
* @param {Key|Array<Key>} privateKeys array of keys or single key with decrypted secret key data to sign public key
* @return {Promise<String|Key>} Public key object in form:
* { publicKey:Key, publicKeyArmored:String }
* @static
*/
export function signPublicKey({ publicKey, privateKeys }) {
checkKey(publicKey, 'publicKey');
privateKeys = toArray(privateKeys);
if (asyncProxy) { // use web worker if available
return asyncProxy.delegate('signPublicKey', { publicKey, privateKeys });
}
return execute(() => {
const signedPublicKey = publicKey.sign(privateKeys);
return {
publicKey: signedPublicKey,
publicKeyArmored: signedPublicKey.armor()
};
}, 'Error signing public key');
}
/**
* Verifies public key
* @param {Key} publicKey public key object with signatures
* @param {Key|Array<Key>} publicKeys array of publicKeys or single key, to verify signatures
* @return {Promise<Object>} cleartext with status of verified signatures in the form of:
* { signatures: [{ keyid:String, valid:Boolean|null }] }
* @static
*/
export function verifyPublicKey({ publicKey, publicKeys }) {
checkKey(publicKey, 'publicKey');
publicKeys = toArray(publicKeys);
if (asyncProxy) { // use web worker if available
return asyncProxy.delegate('verifyPublicKey', { publicKey, publicKeys });
}
return execute(() => ({
signatures: publicKey.verify(publicKeys)
}), 'Error verifying signed public key');
}
////////////////////////// //////////////////////////
// // // //
// Helper functions // // Helper functions //
@ -455,11 +396,6 @@ function checkCleartextMessage(message) {
throw new Error('Parameter [message] needs to be of type CleartextMessage'); throw new Error('Parameter [message] needs to be of type CleartextMessage');
} }
} }
function checkKey(key, name) {
if (!keyLib.Key.prototype.isPrototypeOf(key)) {
throw new Error('Parameter [' + (name || 'key') + '] needs to be of type Key');
}
}
/** /**
* Format user ids for internal use. * Format user ids for internal use.

View File

@ -158,20 +158,6 @@ var priv_key_de =
'=kyeP', '=kyeP',
'-----END PGP PRIVATE KEY BLOCK-----'].join('\n'); '-----END PGP PRIVATE KEY BLOCK-----'].join('\n');
var wrong_pubkey = [
'-----BEGIN PGP PUBLIC KEY BLOCK-----',
'Version: OpenPGP.js v0.9.0',
'Comment: Hoodiecrow - https://hoodiecrow.com',
'',
'xk0EUlhMvAEB/2MZtCUOAYvyLFjDp3OBMGn3Ev8FwjzyPbIF0JUw+L7y2XR5',
'RVGvbK88unV3cU/1tOYdNsXI6pSp/Ztjyv7vbBUAEQEAAc0pV2hpdGVvdXQg',
'VXNlciA8d2hpdGVvdXQudGVzdEB0LW9ubGluZS5kZT7CXAQQAQgAEAUCUlhM',
'vQkQ9vYOm0LN/0wAAAW4Af9C+kYW1AvNWmivdtr0M0iYCUjM9DNOQH1fcvXq',
'IiN602mWrkd8jcEzLsW5IUNzVPLhrFIuKyBDTpLnC07Loce1',
'=6XMW',
'-----END PGP PUBLIC KEY BLOCK-----'].join('\n');
var passphrase = 'hello world'; var passphrase = 'hello world';
var plaintext = 'short message\nnext line\n한국어/조선말'; var plaintext = 'short message\nnext line\n한국어/조선말';
var password1 = 'I am a password'; var password1 = 'I am a password';
@ -621,6 +607,18 @@ describe('OpenPGP.js public api tests', function() {
}); });
describe('AES / RSA encrypt, decrypt, sign, verify', function() { describe('AES / RSA encrypt, decrypt, sign, verify', function() {
var wrong_pubkey = '-----BEGIN PGP PUBLIC KEY BLOCK-----\r\n' +
'Version: OpenPGP.js v0.9.0\r\n' +
'Comment: Hoodiecrow - https://hoodiecrow.com\r\n' +
'\r\n' +
'xk0EUlhMvAEB/2MZtCUOAYvyLFjDp3OBMGn3Ev8FwjzyPbIF0JUw+L7y2XR5\r\n' +
'RVGvbK88unV3cU/1tOYdNsXI6pSp/Ztjyv7vbBUAEQEAAc0pV2hpdGVvdXQg\r\n' +
'VXNlciA8d2hpdGVvdXQudGVzdEB0LW9ubGluZS5kZT7CXAQQAQgAEAUCUlhM\r\n' +
'vQkQ9vYOm0LN/0wAAAW4Af9C+kYW1AvNWmivdtr0M0iYCUjM9DNOQH1fcvXq\r\n' +
'IiN602mWrkd8jcEzLsW5IUNzVPLhrFIuKyBDTpLnC07Loce1\r\n' +
'=6XMW\r\n' +
'-----END PGP PUBLIC KEY BLOCK-----\r\n\r\n';
beforeEach(function() { beforeEach(function() {
expect(privateKey.keys[0].decrypt(passphrase)).to.be.true; expect(privateKey.keys[0].decrypt(passphrase)).to.be.true;
}); });
@ -911,48 +909,6 @@ describe('OpenPGP.js public api tests', function() {
}); });
}); });
}); });
describe('signPublicKey, verifyPublicKey', function() {
beforeEach(function() {
expect(privateKey.keys[0].decrypt(passphrase)).to.be.true;
});
it('should sign and verify public key', function(done) {
var signOpt = {
publicKey: openpgp.key.readArmored(pub_key_de).keys[0],
privateKeys: privateKey.keys
};
var verifyOpt = {
publicKeys: publicKey.keys
};
openpgp.signPublicKey(signOpt).then(function(signed) {
verifyOpt.publicKey = signed.publicKey;
return openpgp.verifyPublicKey(verifyOpt);
}).then(function(verified) {
expect(verified.signatures[0].valid).to.be.true;
expect(verified.signatures[0].keyid.toHex()).to.equal(privateKey.keys[0].getSigningKeyPacket().getKeyId().toHex());
done();
});
});
it('should sign and fail to verify public key with wrong public key', function(done) {
var signOpt = {
publicKey: openpgp.key.readArmored(pub_key_de).keys[0],
privateKeys: privateKey.keys
};
var verifyOpt = {
publicKeys: openpgp.key.readArmored(wrong_pubkey).keys
};
openpgp.signPublicKey(signOpt).then(function(signed) {
verifyOpt.publicKey = signed.publicKey;
return openpgp.verifyPublicKey(verifyOpt);
}).then(function(verified) {
expect(verified.signatures[0].valid).to.be.null;
expect(verified.signatures[0].keyid.toHex()).to.equal(privateKey.keys[0].getSigningKeyPacket().getKeyId().toHex());
done();
});
});
});
} }
}); });