Skip to content

Commit 1204ece

Browse files
committed
doc: import from crypto/web
1 parent 3df26be commit 1204ece

File tree

2 files changed

+51
-53
lines changed

2 files changed

+51
-53
lines changed

doc/api/crypto.md

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1870,30 +1870,28 @@ added: v15.0.0
18701870
Example: Converting a `CryptoKey` instance to a `KeyObject`:
18711871

18721872
```mjs
1873-
const { webcrypto, KeyObject } = await import('crypto');
1874-
const { subtle } = webcrypto;
1875-
1876-
const key = await subtle.generateKey({
1877-
name: 'HMAC',
1878-
hash: 'SHA-256',
1879-
length: 256
1880-
}, true, ['sign', 'verify']);
1881-
1882-
const keyObject = KeyObject.from(key);
1883-
console.log(keyObject.symmetricKeySize);
1884-
// Prints: 32 (symmetric key size in bytes)
1873+
import { KeyObject } from 'crypto';
1874+
import { crypto } from 'crypto/web';
1875+
1876+
(async function() {
1877+
const key = await crypto.subtle.generateKey({
1878+
name: 'HMAC',
1879+
hash: 'SHA-256',
1880+
length: 256
1881+
}, true, ['sign', 'verify']);
1882+
1883+
const keyObject = KeyObject.from(key);
1884+
console.log(keyObject.symmetricKeySize);
1885+
// Prints: 32 (symmetric key size in bytes)
1886+
})();
18851887
```
18861888

18871889
```cjs
1888-
const {
1889-
webcrypto: {
1890-
subtle,
1891-
},
1892-
KeyObject,
1893-
} = require('crypto');
1890+
const { KeyObject } = require('crypto');
1891+
const { crypto } = require('crypto/web');
18941892

18951893
(async function() {
1896-
const key = await subtle.generateKey({
1894+
const key = await crypto.subtle.generateKey({
18971895
name: 'HMAC',
18981896
hash: 'SHA-256',
18991897
length: 256

doc/api/webcrypto.md

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,20 @@
66
77
Node.js provides an implementation of the standard [Web Crypto API][].
88

9-
Use `require('crypto').webcrypto` to access this module.
9+
Use `require('crypto/web').crypto` to access this module.
1010

1111
```js
12-
const { subtle } = require('crypto').webcrypto;
12+
const { crypto } = require('crypto/web');
1313

1414
(async function() {
1515

16-
const key = await subtle.generateKey({
16+
const key = await crypto.subtle.generateKey({
1717
name: 'HMAC',
1818
hash: 'SHA-256',
1919
length: 256
2020
}, true, ['sign', 'verify']);
2121

22-
const digest = await subtle.sign({
22+
const digest = await crypto.subtle.sign({
2323
name: 'HMAC'
2424
}, key, 'I love cupcakes');
2525

@@ -36,10 +36,10 @@ or asymmetric key pairs (public key and private key).
3636
#### AES keys
3737

3838
```js
39-
const { subtle } = require('crypto').webcrypto;
39+
const { crypto } = require('crypto/web');
4040

4141
async function generateAesKey(length = 256) {
42-
const key = await subtle.generateKey({
42+
const key = await crypto.subtle.generateKey({
4343
name: 'AES-CBC',
4444
length
4545
}, true, ['encrypt', 'decrypt']);
@@ -51,13 +51,13 @@ async function generateAesKey(length = 256) {
5151
#### Elliptic curve key pairs
5252

5353
```js
54-
const { subtle } = require('crypto').webcrypto;
54+
const { crypto } = require('crypto/web');
5555

5656
async function generateEcKey(namedCurve = 'P-521') {
5757
const {
5858
publicKey,
5959
privateKey
60-
} = await subtle.generateKey({
60+
} = await crypto.subtle.generateKey({
6161
name: 'ECDSA',
6262
namedCurve,
6363
}, true, ['sign', 'verify']);
@@ -69,7 +69,7 @@ async function generateEcKey(namedCurve = 'P-521') {
6969
#### ED25519/ED448/X25519/X448 Elliptic curve key pairs
7070

7171
```js
72-
const { subtle } = require('crypto').webcrypto;
72+
const { crypto } = require('crypto/web');
7373

7474
async function generateEd25519Key() {
7575
return subtle.generateKey({
@@ -89,10 +89,10 @@ async function generateX25519Key() {
8989
#### HMAC keys
9090

9191
```js
92-
const { subtle } = require('crypto').webcrypto;
92+
const { crypto } = require('crypto/web');
9393

9494
async function generateHmacKey(hash = 'SHA-256') {
95-
const key = await subtle.generateKey({
95+
const key = await crypto.subtle.generateKey({
9696
name: 'HMAC',
9797
hash
9898
}, true, ['sign', 'verify']);
@@ -104,14 +104,14 @@ async function generateHmacKey(hash = 'SHA-256') {
104104
#### RSA key pairs
105105

106106
```js
107-
const { subtle } = require('crypto').webcrypto;
107+
const { crypto } = require('crypto/web');
108108
const publicExponent = new Uint8Array([1, 0, 1]);
109109

110110
async function generateRsaKey(modulusLength = 2048, hash = 'SHA-256') {
111111
const {
112112
publicKey,
113113
privateKey
114-
} = await subtle.generateKey({
114+
} = await crypto.subtle.generateKey({
115115
name: 'RSASSA-PKCS1-v1_5',
116116
modulusLength,
117117
publicExponent,
@@ -125,14 +125,14 @@ async function generateRsaKey(modulusLength = 2048, hash = 'SHA-256') {
125125
### Encryption and decryption
126126

127127
```js
128-
const { subtle, getRandomValues } = require('crypto').webcrypto;
128+
const { crypto } = require('crypto/web').webcrypto;
129129

130130
async function aesEncrypt(plaintext) {
131131
const ec = new TextEncoder();
132132
const key = await generateAesKey();
133-
const iv = getRandomValues(new Uint8Array(16));
133+
const iv = crypto.getRandomValues(new Uint8Array(16));
134134

135-
const ciphertext = await subtle.encrypt({
135+
const ciphertext = await crypto.subtle.encrypt({
136136
name: 'AES-CBC',
137137
iv,
138138
}, key, ec.encode(plaintext));
@@ -146,7 +146,7 @@ async function aesEncrypt(plaintext) {
146146

147147
async function aesDecrypt(ciphertext, key, iv) {
148148
const dec = new TextDecoder();
149-
const plaintext = await subtle.decrypt({
149+
const plaintext = await crypto.subtle.decrypt({
150150
name: 'AES-CBC',
151151
iv,
152152
}, key, ciphertext);
@@ -158,10 +158,10 @@ async function aesDecrypt(ciphertext, key, iv) {
158158
### Exporting and importing keys
159159

160160
```js
161-
const { subtle } = require('crypto').webcrypto;
161+
const { crypto } = require('crypto/web');
162162

163163
async function generateAndExportHmacKey(format = 'jwk', hash = 'SHA-512') {
164-
const key = await subtle.generateKey({
164+
const key = await crypto.subtle.generateKey({
165165
name: 'HMAC',
166166
hash
167167
}, true, ['sign', 'verify']);
@@ -170,7 +170,7 @@ async function generateAndExportHmacKey(format = 'jwk', hash = 'SHA-512') {
170170
}
171171

172172
async function importHmacKey(keyData, format = 'jwk', hash = 'SHA-512') {
173-
const key = await subtle.importKey(format, keyData, {
173+
const key = await crypto.subtle.importKey(format, keyData, {
174174
name: 'HMAC',
175175
hash
176176
}, true, ['sign', 'verify']);
@@ -182,7 +182,7 @@ async function importHmacKey(keyData, format = 'jwk', hash = 'SHA-512') {
182182
### Wrapping and unwrapping keys
183183

184184
```js
185-
const { subtle } = require('crypto').webcrypto;
185+
const { crypto } = require('crypto/web');
186186

187187
async function generateAndWrapHmacKey(format = 'jwk', hash = 'SHA-512') {
188188
const [
@@ -198,7 +198,7 @@ async function generateAndWrapHmacKey(format = 'jwk', hash = 'SHA-512') {
198198
}, true, ['wrapKey', 'unwrapKey']),
199199
]);
200200

201-
const wrappedKey = await subtle.wrapKey(format, key, wrappingKey, 'AES-KW');
201+
const wrappedKey = await crypto.subtle.wrapKey(format, key, wrappingKey, 'AES-KW');
202202

203203
return wrappedKey;
204204
}
@@ -209,7 +209,7 @@ async function unwrapHmacKey(
209209
format = 'jwk',
210210
hash = 'SHA-512') {
211211

212-
const key = await subtle.unwrapKey(
212+
const key = await crypto.subtle.unwrapKey(
213213
format,
214214
wrappedKey,
215215
unwrappingKey,
@@ -225,19 +225,19 @@ async function unwrapHmacKey(
225225
### Sign and verify
226226

227227
```js
228-
const { subtle } = require('crypto').webcrypto;
228+
const { crypto } = require('crypto/web');
229229

230230
async function sign(key, data) {
231231
const ec = new TextEncoder();
232232
const signature =
233-
await subtle.sign('RSASSA-PKCS1-v1_5', key, ec.encode(data));
233+
await crypto.subtle.sign('RSASSA-PKCS1-v1_5', key, ec.encode(data));
234234
return signature;
235235
}
236236

237237
async function verify(key, signature, data) {
238238
const ec = new TextEncoder();
239239
const verified =
240-
await subtle.verify(
240+
await crypto.subtle.verify(
241241
'RSASSA-PKCS1-v1_5',
242242
key,
243243
signature,
@@ -249,17 +249,17 @@ async function verify(key, signature, data) {
249249
### Deriving bits and keys
250250

251251
```js
252-
const { subtle } = require('crypto').webcrypto;
252+
const { crypto } = require('crypto/web');
253253

254254
async function pbkdf2(pass, salt, iterations = 1000, length = 256) {
255255
const ec = new TextEncoder();
256-
const key = await subtle.importKey(
256+
const key = await crypto.subtle.importKey(
257257
'raw',
258258
ec.encode(pass),
259259
'PBKDF2',
260260
false,
261261
['deriveBits']);
262-
const bits = await subtle.deriveBits({
262+
const bits = await crypto.subtle.deriveBits({
263263
name: 'PBKDF2',
264264
hash: 'SHA-512',
265265
salt: ec.encode(salt),
@@ -270,13 +270,13 @@ async function pbkdf2(pass, salt, iterations = 1000, length = 256) {
270270

271271
async function pbkdf2Key(pass, salt, iterations = 1000, length = 256) {
272272
const ec = new TextEncoder();
273-
const keyMaterial = await subtle.importKey(
273+
const keyMaterial = await crypto.subtle.importKey(
274274
'raw',
275275
ec.encode(pass),
276276
'PBKDF2',
277277
false,
278278
['deriveKey']);
279-
const key = await subtle.deriveKey({
279+
const key = await crypto.subtle.deriveKey({
280280
name: 'PBKDF2',
281281
hash: 'SHA-512',
282282
salt: ec.encode(salt),
@@ -292,11 +292,11 @@ async function pbkdf2Key(pass, salt, iterations = 1000, length = 256) {
292292
### Digest
293293

294294
```js
295-
const { subtle } = require('crypto').webcrypto;
295+
const { crypto } = require('crypto/web');
296296

297297
async function digest(data, algorithm = 'SHA-512') {
298298
const ec = new TextEncoder();
299-
const digest = await subtle.digest(algorithm, ec.encode(data));
299+
const digest = await crypto.subtle.digest(algorithm, ec.encode(data));
300300
return digest;
301301
}
302302
```
@@ -336,7 +336,7 @@ implementation and the APIs supported for each:
336336
added: v15.0.0
337337
-->
338338

339-
Calling `require('crypto').webcrypto` returns an instance of the `Crypto` class.
339+
Calling `require('crypto/web').webcrypto` returns an instance of the `Crypto` class.
340340
`Crypto` is a singleton that provides access to the remainder of the crypto API.
341341

342342
### `crypto.subtle`

0 commit comments

Comments
 (0)