> const k = await crypto.subtle.exportKey('jwk', await crypto.subtle.generateKey({name: "ChaCha20-Poly1305" }, true, ['encrypt']))
> await crypto.subtle.importKey('jwk', k, "ChaCha20-Poly1305", true, ['encrypt', 'encrypt'])
CryptoKey {
type: 'secret',
extractable: true,
algorithm: { name: 'ChaCha20-Poly1305' },
usages: [ 'encrypt', 'encrypt' ] // duplicated
}
> await crypto.subtle.exportKey('jwk', _)
{
key_ops: [ 'encrypt', 'encrypt' ], // duplicated
ext: true,
alg: 'C20P',
kty: 'oct',
k: '...'
}
> const k = await crypto.subtle.exportKey('jwk', await crypto.subtle.generateKey({name: "AES-GCM", length: 256 }, true, ['encrypt']))
undefined
> await crypto.subtle.importKey('jwk', k, {name: "AES-GCM", length: 256 }, true, ['encrypt', 'encrypt'])
CryptoKey {
type: 'secret',
extractable: true,
algorithm: { name: 'AES-GCM', length: 256 },
usages: [ 'encrypt', 'encrypt' ] // duplicated
}
> await crypto.subtle.exportKey('jwk', _)
{
key_ops: [ 'encrypt', 'encrypt' ], // duplicated
ext: true,
alg: 'A256GCM',
kty: 'oct',
k: '...'
}
> k = await crypto.subtle.generateKey({ name: "RSA-OAEP", hash: "SHA-256", modulusLength: 2048, publicExponent: Uint8Array.of(1, 0, 1) }, true, [ 'encrypt', 'decrypt'])
> p = await crypto.subtle.exportKey('jwk', k.publicKey)
> await crypto.subtle.importKey('jwk', p, { name: "RSA-OAEP", hash: "SHA-256" }, true, ['encrypt', 'encrypt'])
CryptoKey {
type: 'public',
extractable: true,
algorithm: {
name: 'RSA-OAEP',
modulusLength: 2048,
publicExponent: [Uint8Array],
hash: [Object]
},
usages: [ 'encrypt', 'encrypt' ] // duplicate
}
> await crypto.subtle.exportKey('jwk', _)
{
key_ops: [ 'encrypt', 'encrypt' ], // duplicate
ext: true,
alg: 'RSA-OAEP-256',
kty: 'RSA',
n: '...',
e: 'AQAB'
}
Chrome deduplicates:
Source:
chacha20_poly1305
https://github.com/nodejs/node/blob/HEAD/lib/internal/crypto/chacha20_poly1305.js#L143
aes
https://github.com/nodejs/node/blob/HEAD/lib/internal/crypto/aes.js#L288
rsa
https://github.com/nodejs/node/blob/HEAD/lib/internal/crypto/rsa.js#L284

Chrome deduplicates:
Source:
chacha20_poly1305
https://github.com/nodejs/node/blob/HEAD/lib/internal/crypto/chacha20_poly1305.js#L143
aes
https://github.com/nodejs/node/blob/HEAD/lib/internal/crypto/aes.js#L288
rsa
https://github.com/nodejs/node/blob/HEAD/lib/internal/crypto/rsa.js#L284