From 849991c6c47a0e05365feb4c9b1fb841924a5192 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Mon, 14 Feb 2022 17:14:49 +0100 Subject: [PATCH] crypto: expose Web Crypto API on the global scope MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/41938 Refs: https://developer.mozilla.org/en-US/docs/Web/API/crypto_property Refs: https://github.com/nodejs/node/pull/41782 Refs: https://w3c.github.io/webcrypto Reviewed-By: James M Snell Reviewed-By: Michaƫl Zasso Reviewed-By: Filip Skokan --- .eslintrc.js | 4 ++ doc/api/cli.md | 10 ++++ doc/api/crypto.md | 2 + doc/api/globals.md | 52 +++++++++++++++++++ doc/node.1 | 3 ++ lib/.eslintrc.yaml | 8 +++ lib/internal/bootstrap/pre_execution.js | 26 ++++++++++ lib/internal/crypto/webcrypto.js | 1 + lib/internal/main/worker_thread.js | 2 + src/node_options.cc | 4 ++ src/node_options.h | 1 + test/common/index.js | 6 +++ .../parallel/test-global-webcrypto-classes.js | 13 +++++ test/parallel/test-global-webcrypto.js | 13 +++++ 14 files changed, 145 insertions(+) create mode 100644 test/parallel/test-global-webcrypto-classes.js create mode 100644 test/parallel/test-global-webcrypto.js diff --git a/.eslintrc.js b/.eslintrc.js index da17fd47acd4b9..c7c7cc56051b1c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -340,5 +340,9 @@ module.exports = { Headers: 'readable', Request: 'readable', Response: 'readable', + crypto: 'readable', + Crypto: 'readable', + CryptoKey: 'readable', + SubtleCrypto: 'readable', }, }; diff --git a/doc/api/cli.md b/doc/api/cli.md index 10500f130a6b28..a551a3fff9cec6 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -288,6 +288,14 @@ added: v17.5.0 Enable experimental support for the [Fetch API][]. +### `--experimental-global-webcrypto` + + + +Expose the [Web Crypto API][] on the global scope. + ### `--experimental-import-meta-resolve` + ```cjs let crypto; try { diff --git a/doc/api/globals.md b/doc/api/globals.md index 1fa6801dda66c9..f4ea4fb474724f 100644 --- a/doc/api/globals.md +++ b/doc/api/globals.md @@ -307,6 +307,43 @@ added: v0.1.100 Used to print to stdout and stderr. See the [`console`][] section. +## `Crypto` + + + +> Stability: 1 - Experimental. Enable this API with the +> [`--experimental-global-webcrypto`][] CLI flag. + +A browser-compatible implementation of {Crypto}. This global is available +only if the Node.js binary was compiled with including support for the +`crypto` module. + +## `crypto` + + + +> Stability: 1 - Experimental. Enable this API with the +> [`--experimental-global-webcrypto`][] CLI flag. + +A browser-compatible implementation of the [Web Crypto API][]. + +## `CryptoKey` + + + +> Stability: 1 - Experimental. Enable this API with the +> [`--experimental-global-webcrypto`][] CLI flag. + +A browser-compatible implementation of {CryptoKey}. This global is available +only if the Node.js binary was compiled with including support for the +`crypto` module. + ## `Event` + +> Stability: 1 - Experimental. Enable this API with the +> [`--experimental-global-webcrypto`][] CLI flag. + +A browser-compatible implementation of {SubtleCrypto}. This global is available +only if the Node.js binary was compiled with including support for the +`crypto` module. + ## `DOMException`