From c1ea7ca4646c0564123509fc89f9f18f5132ff11 Mon Sep 17 00:00:00 2001 From: larabr <7375870+larabr@users.noreply.github.com> Date: Tue, 15 Jul 2025 13:50:06 +0200 Subject: [PATCH] Tests: update ECDH negative test expectations to match WebKit Windows behavior AES-KW unwrapping failure does not throw an OperationError there, instead it returns an empty buffer, which then fails to be PKCS5 decoded. --- test/crypto/ecdh.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/crypto/ecdh.js b/test/crypto/ecdh.js index de17e9a8..e44c8a32 100644 --- a/test/crypto/ecdh.js +++ b/test/crypto/ecdh.js @@ -91,13 +91,13 @@ export default () => describe('ECDH key exchange @lightweight', function () { 'secp256k1', 2, 7, secp256k1_value, secp256k1_point, secp256k1_invalid_point, secp256k1_data, [] )).to.be.rejectedWith(/Public key is not valid for specified curve|Failed to translate Buffer to a EC_POINT|bad point/).notify(done); }); - it('Invalid key data integrity', function (done) { + it('Invalid key data integrity', async function () { if (!openpgp.config.useEllipticFallback && !util.getNodeCrypto()) { this.skip(); } - expect(decrypt_message( + await expect(decrypt_message( 'secp256k1', 2, 7, secp256k1_value, secp256k1_point, secp256k1_point, secp256k1_data, [] - )).to.be.rejectedWith(/Key Data Integrity failed/).notify(done); + )).to.be.rejectedWith(/Key Data Integrity faile|Invalid padding/); // invalid padding thrown by webkit on Windows }); const Q1 = new Uint8Array([ @@ -160,7 +160,7 @@ export default () => describe('ECDH key exchange @lightweight', function () { const { publicKey: V, wrappedKey: C } = await ecdh.encrypt(oid, kdfParams, data, Q1, fingerprint1); await expect( ecdh.decrypt(oid, kdfParams, V, C, Q2, d2, fingerprint1) - ).to.be.rejectedWith(/Key Data Integrity failed/); + ).to.be.rejectedWith(/Key Data Integrity failed|Invalid padding/); // invalid padding thrown by webkit on Windows }); it('Invalid fingerprint', async function () { @@ -171,7 +171,7 @@ export default () => describe('ECDH key exchange @lightweight', function () { const { publicKey: V, wrappedKey: C } = await ecdh.encrypt(oid, kdfParams, data, Q2, fingerprint1); await expect( ecdh.decrypt(oid, kdfParams, V, C, Q2, d2, fingerprint2) - ).to.be.rejectedWith(/Key Data Integrity failed/); + ).to.be.rejectedWith(/Key Data Integrity failed|Invalid padding/); // invalid padding thrown by webkit on Windows }); it('Successful exchange x25519 (legacy)', async function () {