| 'use strict'; |
| const common = require('../common'); |
| if (!common.hasCrypto) |
| common.skip('missing crypto'); |
| |
| // Issue https://github.com/nodejs/node/issues/35263 |
| // Description: Test that passing keyobject to worker thread does not crash. |
| const { |
| generateKeySync, |
| generateKeyPairSync, |
| } = require('crypto'); |
| const { subtle } = globalThis.crypto; |
| |
| const assert = require('assert'); |
| |
| const { Worker, isMainThread, workerData } = require('worker_threads'); |
| |
| if (isMainThread) { |
| (async () => { |
| const secretKey = generateKeySync('aes', { length: 128 }); |
| const { publicKey, privateKey } = generateKeyPairSync('rsa', { |
| modulusLength: 1024 |
| }); |
| const cryptoKey = await subtle.generateKey( |
| { name: 'AES-CBC', length: 128 }, false, ['encrypt']); |
| |
| for (const key of [secretKey, publicKey, privateKey, cryptoKey]) { |
| new Worker(__filename, { workerData: key }); |
| } |
| })().then(common.mustCall()); |
| } else { |
| console.log(workerData); |
| assert.notDeepStrictEqual(workerData, {}); |
| } |