Fix tests on IE11

This commit is contained in:
Daniel Huigens 2018-07-11 13:52:46 +02:00
parent 29271accef
commit 61a0e3fa69
3 changed files with 22 additions and 28 deletions

View File

@ -138,6 +138,7 @@ describe('Elliptic Curve Cryptography', function () {
])
}
};
signature_data.hashed = openpgp.crypto.hash.digest(8, signature_data.message);
describe('Basic Operations', function () {
it('Creating curve from name or oid', function (done) {
for (let name_or_oid in openpgp.enums.curves) {
@ -171,24 +172,24 @@ describe('Elliptic Curve Cryptography', function () {
const curve = new elliptic_curves.Curve('p256');
const key = curve.keyFromPublic(signature_data.pub);
expect(
key.verify(signature_data.message, signature_data.signature, 8)
key.verify(signature_data.message, signature_data.signature, 8, signature_data.hashed)
).to.eventually.be.true.notify(done);
});
it('Invalid signature', function (done) {
const curve = new elliptic_curves.Curve('p256');
const key = curve.keyFromPublic(key_data.p256.pub);
expect(
key.verify(signature_data.message, signature_data.signature, 8)
key.verify(signature_data.message, signature_data.signature, 8, signature_data.hashed)
).to.eventually.be.false.notify(done);
});
it('Signature generation', function () {
const curve = new elliptic_curves.Curve('p256');
let key = curve.keyFromPrivate(key_data.p256.priv);
return key.sign(signature_data.message, 8).then(async ({ r, s }) => {
return key.sign(signature_data.message, 8, signature_data.hashed).then(async ({ r, s }) => {
const signature = { r: new Uint8Array(r.toArray()), s: new Uint8Array(s.toArray()) };
key = curve.keyFromPublic(key_data.p256.pub);
await expect(
key.verify(signature_data.message, signature, 8)
key.verify(signature_data.message, signature, 8, signature_data.hashed)
).to.eventually.be.true;
});
});
@ -213,7 +214,7 @@ describe('Elliptic Curve Cryptography', function () {
}
const ecdsa = elliptic_curves.ecdsa;
return ecdsa.verify(
oid, hash, { r: new Uint8Array(r), s: new Uint8Array(s) }, message, new Uint8Array(pub)
oid, hash, { r: new Uint8Array(r), s: new Uint8Array(s) }, message, new Uint8Array(pub), openpgp.crypto.hash.digest(hash, message)
);
};
const secp256k1_dummy_value = new Uint8Array([
@ -295,8 +296,8 @@ describe('Elliptic Curve Cryptography', function () {
const keyPrivate = new Uint8Array(keyPair.getPrivate());
const oid = curve.oid;
const message = p384_message;
return elliptic_curves.ecdsa.sign(oid, 10, message, keyPrivate).then(async signature => {
await expect(elliptic_curves.ecdsa.verify(oid, 10, signature, message, keyPublic))
return elliptic_curves.ecdsa.sign(oid, 10, message, keyPrivate, openpgp.crypto.hash.digest(10, message)).then(async signature => {
await expect(elliptic_curves.ecdsa.verify(oid, 10, signature, message, keyPublic, openpgp.crypto.hash.digest(10, message)))
.to.eventually.be.true;
});
});

View File

@ -7,27 +7,17 @@ chai.use(require('chai-as-promised'));
const { expect } = chai;
describe('Key', function() {
let webCrypto = openpgp.util.getWebCryptoAll();
let rsaGenStub;
let rsaGenValue = openpgp.crypto.publicKey.rsa.generate(openpgp.util.getWebCryptoAll() ? 2048 : 512, "10001");
if (webCrypto) {
let generateKey = webCrypto.generateKey;
let keyGenStub;
let keyGenValue;
beforeEach(function() {
rsaGenStub = stub(openpgp.crypto.publicKey.rsa, 'generate');
rsaGenStub.returns(rsaGenValue);
});
beforeEach(function() {
keyGenStub = stub(webCrypto, 'generateKey');
keyGenStub.callsFake(function() {
if (!keyGenValue) {
keyGenValue = generateKey.apply(webCrypto, arguments);
}
return keyGenValue;
});
});
afterEach(function() {
keyGenStub.restore();
});
}
afterEach(function() {
rsaGenStub.restore();
});
describe('V4', tests);
@ -1763,10 +1753,12 @@ VYGdb3eNlV8CfoEC
it('Generate key - setting date to the past', function() {
const past = new Date(0);
const opt = {
numBits: 512,
userIds: { name: 'Test User', email: 'text@example.com' },
passphrase: 'secret',
date: past
};
if (openpgp.util.getWebCryptoAll()) { opt.numBits = 2048; } // webkit webcrypto accepts minimum 2048 bit keys
return openpgp.generateKey(opt).then(function(newKey) {
expect(newKey.key).to.exist;
@ -1821,7 +1813,8 @@ VYGdb3eNlV8CfoEC
it('Generate key - override main key options for subkey', function() {
const userId = 'test <a@b.com>';
const opt = {numBits: 2048, userIds: [userId], passphrase: '123', subkeys:[{curve: 'curve25519'}]};
const opt = {numBits: 512, userIds: [userId], passphrase: '123', subkeys:[{curve: 'curve25519'}]};
if (openpgp.util.getWebCryptoAll()) { opt.numBits = 2048; } // webkit webcrypto accepts minimum 2048 bit keys
return openpgp.generateKey(opt).then(function(key) {
key = key.key;
expect(key.users.length).to.equal(1);

View File

@ -374,7 +374,7 @@ describe('OpenPGP.js public api tests', function() {
describe('generateKey - validate user ids', function() {
let rsaGenStub;
let rsaGenValue = openpgp.crypto.publicKey.rsa.generate(2048, "10001");
let rsaGenValue = openpgp.crypto.publicKey.rsa.generate(openpgp.util.getWebCryptoAll() ? 2048 : 512, "10001");
beforeEach(function() {
rsaGenStub = stub(openpgp.crypto.publicKey.rsa, 'generate');