CryptoKey string tag imprecise for detection #45987
Copy link
Copy link
Closed
Labels
cryptoIssues and PRs related to the crypto subsystem.Issues and PRs related to the crypto subsystem.webcryptoIssues and PRs related to the Web Crypto API.Issues and PRs related to the Web Crypto API.
Description
Version
v18.12.1
Platform
Darwin MacBook-Air-2.local 22.2.0 Darwin Kernel Version 22.2.0: Fri Nov 11 02:04:44 PST 2022; root:xnu-8792.61.2~4/RELEASE_ARM64_T8103 arm64
Subsystem
No response
What steps will reproduce the bug?
import {webcrypto as crypto} from 'node:crypto';
const key = await crypto.subtle.generateKey(
{
name: 'HMAC',
hash: {name: 'SHA-512'}
},
true, // Extractable
['sign', 'verify']
);
const stringTag = Object.prototype.toString.call(key).slice(8, -1);
console.log(stringTag);How often does it reproduce? Is there a required condition?
Always
What is the expected behavior?
On the browser, this logs CryptoKey and allows for detection of object type and we expect it here.
What do you see instead?
Object
Additional information
This can be readily remedied by adding Symbol.toStringTag to the CryptoKey class returning the value, "CryptoKey".
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
cryptoIssues and PRs related to the crypto subsystem.Issues and PRs related to the crypto subsystem.webcryptoIssues and PRs related to the Web Crypto API.Issues and PRs related to the Web Crypto API.
Activity
INCOMPLETE: the new rollup/plugin-terser still needs source maps and …
bnoordhuis commentedon Dec 27, 2022
Pull request welcome, but...
We do WPT conformance testing so this is probably not a spec requirement. It'd be best to update upstream WPT first before making changes to node. There's a CryptoKey validator you could add a check to.
brettz9 commentedon Dec 28, 2022
Thanks for the info. IIRC, there are some separate WebIDL-based tests in WPT which might cover class string (string tag) checks for interfaces (and these tests weren't always contained in the same part of the directory structure).
As far as a spec basis for this, there is some mention of class strings in https://webidl.spec.whatwg.org/ , though I only see it mentioned there for interface prototypes, not necessarily interface objects. I wonder if it is implied elsewhere within WebIDL though.
crypto: add CryptoKey Symbol.toStringTag
panva commentedon Jan 1, 2023
I am not sure about this being a spec requirement too but if all existing implementations adhere, I don't see the point of not adding this to Node.js and WPT.
PR for the WPT repository web-platform-tests/wpt#37716.
INCOMPLETE: the new rollup/plugin-terser still needs source maps and …
INCOMPLETE: the new rollup/plugin-terser still needs source maps and …
INCOMPLETE: webcrypto detection isn't working due to nodejs/node#45987
INCOMPLETE: webcrypto detection isn't working due to nodejs/node#45987
crypto: add CryptoKey Symbol.toStringTag
INCOMPLETE: webcrypto detection depends on a release after nodejs/nod…
crypto: add CryptoKey Symbol.toStringTag
crypto: add CryptoKey Symbol.toStringTag
crypto: add CryptoKey Symbol.toStringTag
crypto: add CryptoKey Symbol.toStringTag