From 742265dd8a7e799d74ce697243ea2267cb1d021d Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Tue, 4 Aug 2020 22:07:54 -0700 Subject: [PATCH] test: split test-crypto-dh-hash MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit test-crypto-dh-hash times out on some platforms. A single test case is responsible for around 50% of the time to run, so split that test case into its own file. PR-URL: https://github.com/nodejs/node/pull/34631 Reviewed-By: Anna Henningsen Reviewed-By: Michaƫl Zasso --- test/pummel/test-crypto-dh-hash-modp18.js | 42 +++++++++++++++++++++++ test/pummel/test-crypto-dh-hash.js | 1 - 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 test/pummel/test-crypto-dh-hash-modp18.js diff --git a/test/pummel/test-crypto-dh-hash-modp18.js b/test/pummel/test-crypto-dh-hash-modp18.js new file mode 100644 index 00000000000000..288a647bdd321d --- /dev/null +++ b/test/pummel/test-crypto-dh-hash-modp18.js @@ -0,0 +1,42 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; +const common = require('../common'); +if (!common.hasCrypto) + common.skip('node compiled without OpenSSL.'); + +const assert = require('assert'); +const crypto = require('crypto'); + +const hashes = { + modp18: 'a870b491bbbec9b131ae9878d07449d32e54f160' +}; + +for (const name in hashes) { + const group = crypto.getDiffieHellman(name); + const private_key = group.getPrime('hex'); + const hash1 = hashes[name]; + const hash2 = crypto.createHash('sha1') + .update(private_key.toUpperCase()).digest('hex'); + assert.strictEqual(hash1, hash2); + assert.strictEqual(group.getGenerator('hex'), '02'); +} diff --git a/test/pummel/test-crypto-dh-hash.js b/test/pummel/test-crypto-dh-hash.js index ffe11d1c12491b..7188fbb32b9197 100644 --- a/test/pummel/test-crypto-dh-hash.js +++ b/test/pummel/test-crypto-dh-hash.js @@ -35,7 +35,6 @@ const hashes = { modp15: '7bdd39e5cdbb9748113933e5c2623b559c534e74', modp16: 'daea5277a7ad0116e734a8e0d2f297ef759d1161', modp17: '3b62aaf0142c2720f0bf26a9589b0432c00eadc1', - modp18: 'a870b491bbbec9b131ae9878d07449d32e54f160' }; for (const name in hashes) {