11# Implementation Coverage - NodeJS
22This document attempts to describe the implementation status of Crypto APIs/Interfaces from Node.js in the ` react-native-quick-crypto ` library.
33
4- > Note: This is the status for version 1.x and higher. For version ` 0.x ` see [ this document] ( https://github.com/margelo/react-native-quick-crypto/blob/0.x/docs/implementation-coverage.md ) and the [ 0.x branch] ( https://github.com/margelo/react-native-quick-crypto/tree/0.x ) .
5-
64* ` ` - not implemented in Node
75* ❌ - implemented in Node, not RNQC
86* ✅ - implemented in Node and RNQC
7+ * 🚧 - work in progress
8+
9+ ## Post-Quantum Cryptography (PQC)
10+
11+ - ** ML-DSA** (Module Lattice Digital Signature Algorithm, FIPS 204) - ML-DSA-44, ML-DSA-65, ML-DSA-87
12+ - ** ML-KEM** (Module Lattice Key Encapsulation Mechanism, FIPS 203) - ML-KEM-512, ML-KEM-768, ML-KEM-1024
13+
14+ These algorithms provide quantum-resistant cryptography.
915
1016# ` Crypto `
1117
@@ -147,13 +153,11 @@ This document attempts to describe the implementation status of Crypto APIs/Inte
147153 * ❌ ` crypto.secureHeapUsed() `
148154 * ❌ ` crypto.setEngine(engine[, flags]) `
149155 * ❌ ` crypto.setFips(bool) `
150- * 🚧 ` crypto.sign(algorithm, data, key[, callback]) `
156+ * ✅ ` crypto.sign(algorithm, data, key[, callback]) `
151157 * 🚧 ` crypto.subtle ` (see below)
152158 * ❌ ` crypto.timingSafeEqual(a, b) `
153- * 🚧 ` crypto.verify(algorithm, data, key, signature[, callback]) `
154- * ❌ ` crypto.webcrypto ` (see below)
155-
156- 🚧 Details below still a work in progress 🚧
159+ * ✅ ` crypto.verify(algorithm, data, key, signature[, callback]) `
160+ * 🚧 ` crypto.webcrypto ` (see below)
157161
158162## ` crypto.diffieHellman `
159163| type | Status |
@@ -204,22 +208,22 @@ This document attempts to describe the implementation status of Crypto APIs/Inte
204208## ` crypto.sign `
205209| Algorithm | Status |
206210| --------- | :----: |
207- | ` RSASSA-PKCS1-v1_5 ` | ❌ |
208- | ` RSA-PSS ` | ❌ |
209- | ` ECDSA ` | ❌ |
211+ | ` RSASSA-PKCS1-v1_5 ` | ✅ |
212+ | ` RSA-PSS ` | ✅ |
213+ | ` ECDSA ` | ✅ |
210214| ` Ed25519 ` | ✅ |
211215| ` Ed448 ` | ✅ |
212- | ` HMAC ` | ❌ |
216+ | ` HMAC ` | ✅ |
213217
214218## ` crypto.verify `
215219| Algorithm | Status |
216220| --------- | :----: |
217- | ` RSASSA-PKCS1-v1_5 ` | ❌ |
218- | ` RSA-PSS ` | ❌ |
219- | ` ECDSA ` | ❌ |
221+ | ` RSASSA-PKCS1-v1_5 ` | ✅ |
222+ | ` RSA-PSS ` | ✅ |
223+ | ` ECDSA ` | ✅ |
220224| ` Ed25519 ` | ✅ |
221225| ` Ed448 ` | ✅ |
222- | ` HMAC ` | ❌ |
226+ | ` HMAC ` | ✅ |
223227
224228# ` WebCrypto `
225229
@@ -240,7 +244,7 @@ This document attempts to describe the implementation status of Crypto APIs/Inte
240244
241245# ` SubtleCrypto `
242246
243- * 🚧 Class: ` SubtleCrypto `
247+ * ❌ Class: ` SubtleCrypto `
244248 * ❌ static ` supports(operation, algorithm[, lengthOrAdditionalAlgorithm]) `
245249 * ❌ ` subtle.decapsulateBits(decapsulationAlgorithm, decapsulationKey, ciphertext) `
246250 * ❌ ` subtle.decapsulateKey(decapsulationAlgorithm, decapsulationKey, ciphertext, sharedKeyAlgorithm, extractable, usages) `
@@ -255,9 +259,9 @@ This document attempts to describe the implementation status of Crypto APIs/Inte
255259 * 🚧 ` subtle.generateKey(algorithm, extractable, keyUsages) `
256260 * ❌ ` subtle.getPublicKey(key, keyUsages) `
257261 * 🚧 ` subtle.importKey(format, keyData, algorithm, extractable, keyUsages) `
258- * 🚧 ` subtle.sign(algorithm, key, data) `
262+ * ✅ ` subtle.sign(algorithm, key, data) `
259263 * ❌ ` subtle.unwrapKey(format, wrappedKey, unwrappingKey, unwrapAlgo, unwrappedKeyAlgo, extractable, keyUsages) `
260- * 🚧 ` subtle.verify(algorithm, key, signature, data) `
264+ * ✅ ` subtle.verify(algorithm, key, signature, data) `
261265 * ❌ ` subtle.wrapKey(format, key, wrappingKey, wrapAlgo) `
262266
263267## ` subtle.decrypt `
@@ -311,27 +315,27 @@ This document attempts to describe the implementation status of Crypto APIs/Inte
311315
312316## ` subtle.exportKey `
313317| Key Type | ` spki ` | ` pkcs8 ` | ` jwk ` | ` raw ` | ` raw-secret ` | ` raw-public ` | ` raw-seed ` |
314- | ------------------- | :----: | :-----: | :---: | :---: | :---: | :---: | :---: |
315- | ` AES-CBC ` | | | ✅ | ✅ | ✅ | | |
316- | ` AES-CTR ` | | | ✅ | ✅ | ✅ | | |
317- | ` AES-GCM ` | | | ✅ | ✅ | ✅ | | |
318- | ` AES-KW ` | | | ✅ | ✅ | ✅ | | |
319- | ` AES-OCB ` | | | ❌ | | ❌ | | |
320- | ` ChaCha20-Poly1305 ` | | | ❌ | | ❌ | | |
321- | ` ECDH ` | ✅ | ✅ | ✅ | ✅ | | ✅ | |
322- | ` ECDSA ` | ✅ | ✅ | ✅ | ✅ | | ✅ | |
323- | ` Ed25519 ` | ❌ | ❌ | ❌ | ❌ | | ❌ | |
324- | ` Ed448 ` | ❌ | ❌ | ❌ | ❌ | | ❌ | |
325- | ` HMAC ` | | | ✅ | ✅ | ✅ | | |
326- | ` ML-DSA-44 ` | ❌ | ❌ | ❌ | | | ❌ | ❌ |
327- | ` ML-DSA-65 ` | ❌ | ❌ | ❌ | | | ❌ | ❌ |
328- | ` ML-DSA-87 ` | ❌ | ❌ | ❌ | | | ❌ | ❌ |
329- | ` ML-KEM-512 ` | ❌ | ❌ | | | | ❌ | ❌ |
330- | ` ML-KEM-768 ` | ❌ | ❌ | | | | ❌ | ❌ |
331- | ` ML-KEM-1024 ` | ❌ | ❌ | | | | ❌ | ❌ |
332- | ` RSA-OAEP ` | ✅ | ✅ | ✅ | | | | |
333- | ` RSA-PSS ` | ✅ | ✅ | ✅ | | | | |
334- | ` RSASSA-PKCS1-v1_5 ` | ✅ | ✅ | ✅ | | | | |
318+ | ------------------- | :----: | :-----: | :---: | :---: | :---------- : | :---------- : | :----- ---: |
319+ | ` AES-CBC ` | | | ✅ | ✅ | ✅ | | |
320+ | ` AES-CTR ` | | | ✅ | ✅ | ✅ | | |
321+ | ` AES-GCM ` | | | ✅ | ✅ | ✅ | | |
322+ | ` AES-KW ` | | | ✅ | ✅ | ✅ | | |
323+ | ` AES-OCB ` | | | ❌ | | ❌ | | |
324+ | ` ChaCha20-Poly1305 ` | | | ❌ | | ❌ | | |
325+ | ` ECDH ` | ✅ | ✅ | ✅ | ✅ | | ✅ | |
326+ | ` ECDSA ` | ✅ | ✅ | ✅ | ✅ | | ✅ | |
327+ | ` Ed25519 ` | ✅ | ✅ | ❌ | ❌ | | ❌ | |
328+ | ` Ed448 ` | ✅ | ✅ | ❌ | ❌ | | ❌ | |
329+ | ` HMAC ` | | | ✅ | ✅ | ✅ | | |
330+ | ` ML-DSA-44 ` | ✅ | ✅ | ✅ | | | ✅ | ✅ |
331+ | ` ML-DSA-65 ` | ✅ | ✅ | ✅ | | | ✅ | ✅ |
332+ | ` ML-DSA-87 ` | ✅ | ✅ | ✅ | | | ✅ | ✅ |
333+ | ` ML-KEM-512 ` | ❌ | ❌ | | | | ❌ | ❌ |
334+ | ` ML-KEM-768 ` | ❌ | ❌ | | | | ❌ | ❌ |
335+ | ` ML-KEM-1024 ` | ❌ | ❌ | | | | ❌ | ❌ |
336+ | ` RSA-OAEP ` | ✅ | ✅ | ✅ | | | | |
337+ | ` RSA-PSS ` | ✅ | ✅ | ✅ | | | | |
338+ | ` RSASSA-PKCS1-v1_5 ` | ✅ | ✅ | ✅ | | | | |
335339
336340* ` ` - not implemented in Node
337341* ❌ - implemented in Node, not RNQC
@@ -346,9 +350,9 @@ This document attempts to describe the implementation status of Crypto APIs/Inte
346350| ` ECDSA ` | ✅ |
347351| ` Ed25519 ` | ✅ |
348352| ` Ed448 ` | ✅ |
349- | ` ML-DSA-44 ` | ❌ |
350- | ` ML-DSA-65 ` | ❌ |
351- | ` ML-DSA-87 ` | ❌ |
353+ | ` ML-DSA-44 ` | ✅ |
354+ | ` ML-DSA-65 ` | ✅ |
355+ | ` ML-DSA-87 ` | ✅ |
352356| ` ML-KEM-512 ` | ❌ |
353357| ` ML-KEM-768 ` | ❌ |
354358| ` ML-KEM-1024 ` | ❌ |
@@ -367,48 +371,48 @@ This document attempts to describe the implementation status of Crypto APIs/Inte
367371| ` AES-KW ` | ❌ |
368372| ` AES-OCB ` | ❌ |
369373| ` ChaCha20-Poly1305 ` | ❌ |
370- | ` HMAC ` | ❌ |
374+ | ` HMAC ` | ✅ |
371375
372376## ` subtle.importKey `
373377| Key Type | ` spki ` | ` pkcs8 ` | ` jwk ` | ` raw ` | ` raw-secret ` | ` raw-public ` | ` raw-seed ` |
374- | ------------------- | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
375- | ` AES-CBC ` | | | ✅ | ✅ | ✅ | | |
376- | ` AES-CTR ` | | | ✅ | ✅ | ✅ | | |
377- | ` AES-GCM ` | | | ✅ | ✅ | ✅ | | |
378- | ` AES-KW ` | | | ✅ | ✅ | ✅ | | |
379- | ` AES-OCB ` | | | ❌ | | ❌ | | |
380- | ` ChaCha20-Poly1305 ` | | | ❌ | | ❌ | | |
381- | ` ECDH ` | ✅ | ✅ | ✅ | ✅ | | ✅ | |
382- | ` ECDSA ` | ✅ | ✅ | ✅ | ✅ | | ✅ | |
383- | ` Ed25519 ` | ❌ | ❌ | ❌ | ❌ | | ❌ | |
384- | ` Ed448 ` | ❌ | ❌ | ❌ | ❌ | | ❌ | |
385- | ` HDKF ` | | | | ❌ | ❌ | | |
386- | ` HMAC ` | | | ✅ | ✅ | ✅ | | |
387- | ` ML-DSA-44 ` | ❌ | ❌ | ❌ | | | ❌ | ❌ |
388- | ` ML-DSA-65 ` | ❌ | ❌ | ❌ | | | ❌ | ❌ |
389- | ` ML-DSA-87 ` | ❌ | ❌ | ❌ | | | ❌ | ❌ |
390- | ` ML-KEM-512 ` | ❌ | ❌ | | | | ❌ | ❌ |
391- | ` ML-KEM-768 ` | ❌ | ❌ | | | | ❌ | ❌ |
392- | ` ML-KEM-1024 ` | ❌ | ❌ | | | | ❌ | ❌ |
393- | ` PBKDF2 ` | | | | ✅ | ✅ | | |
394- | ` RSA-OAEP ` | ✅ | ❌ | ✅ | | | | |
395- | ` RSA-PSS ` | ✅ | ❌ | ✅ | | | | |
396- | ` RSASSA-PKCS1-v1_5 ` | ✅ | ❌ | ✅ | | | | |
397- | ` X25519 ` | ❌ | ❌ | ❌ | ❌ | | ❌ | |
398- | ` X448 ` | ❌ | ❌ | ❌ | ❌ | | ❌ | |
378+ | ------------------- | :---- : | :----- : | :---: | :---: | :---------- : | :---------- : | :----- ---: |
379+ | ` AES-CBC ` | | | ✅ | ✅ | ✅ | | |
380+ | ` AES-CTR ` | | | ✅ | ✅ | ✅ | | |
381+ | ` AES-GCM ` | | | ✅ | ✅ | ✅ | | |
382+ | ` AES-KW ` | | | ✅ | ✅ | ✅ | | |
383+ | ` AES-OCB ` | | | ❌ | | ❌ | | |
384+ | ` ChaCha20-Poly1305 ` | | | ❌ | | ❌ | | |
385+ | ` ECDH ` | ✅ | ✅ | ✅ | ✅ | | ✅ | |
386+ | ` ECDSA ` | ✅ | ✅ | ✅ | ✅ | | ✅ | |
387+ | ` Ed25519 ` | ✅ | ✅ | ❌ | ❌ | | ❌ | |
388+ | ` Ed448 ` | ✅ | ✅ | ❌ | ❌ | | ❌ | |
389+ | ` HKDF ` | | | | ❌ | ❌ | | |
390+ | ` HMAC ` | | | ✅ | ✅ | ✅ | | |
391+ | ` ML-DSA-44 ` | ✅ | ✅ | ✅ | | | ✅ | ✅ |
392+ | ` ML-DSA-65 ` | ✅ | ✅ | ✅ | | | ✅ | ✅ |
393+ | ` ML-DSA-87 ` | ✅ | ✅ | ✅ | | | ✅ | ✅ |
394+ | ` ML-KEM-512 ` | ❌ | ❌ | | | | ❌ | ❌ |
395+ | ` ML-KEM-768 ` | ❌ | ❌ | | | | ❌ | ❌ |
396+ | ` ML-KEM-1024 ` | ❌ | ❌ | | | | ❌ | ❌ |
397+ | ` PBKDF2 ` | | | | ✅ | ✅ | | |
398+ | ` RSA-OAEP ` | ✅ | ✅ | ✅ | | | | |
399+ | ` RSA-PSS ` | ✅ | ✅ | ✅ | | | | |
400+ | ` RSASSA-PKCS1-v1_5 ` | ✅ | ✅ | ✅ | | | | |
401+ | ` X25519 ` | ❌ | ❌ | ❌ | ❌ | | ❌ | |
402+ | ` X448 ` | ❌ | ❌ | ❌ | ❌ | | ❌ | |
399403
400404## ` subtle.sign `
401405| Algorithm | Status |
402406| --------- | :----: |
403407| ` ECDSA ` | ✅ |
404- | ` Ed25519 ` | ❌ |
405- | ` Ed448 ` | ❌ |
406- | ` HMAC ` | ❌ |
407- | ` ML-DSA-44 ` | ❌ |
408- | ` ML-DSA-65 ` | ❌ |
409- | ` ML-DSA-87 ` | ❌ |
410- | ` RSA-PSS ` | ❌ |
411- | ` RSASSA-PKCS1-v1_5 ` | ❌ |
408+ | ` Ed25519 ` | ✅ |
409+ | ` Ed448 ` | ✅ |
410+ | ` HMAC ` | ✅ |
411+ | ` ML-DSA-44 ` | ✅ |
412+ | ` ML-DSA-65 ` | ✅ |
413+ | ` ML-DSA-87 ` | ✅ |
414+ | ` RSA-PSS ` | ✅ |
415+ | ` RSASSA-PKCS1-v1_5 ` | ✅ |
412416
413417## ` subtle.unwrapKey `
414418
@@ -453,14 +457,14 @@ This document attempts to describe the implementation status of Crypto APIs/Inte
453457| Algorithm | Status |
454458| --------- | :----: |
455459| ` ECDSA ` | ✅ |
456- | ` Ed25519 ` | ❌ |
457- | ` Ed448 ` | ❌ |
458- | ` HMAC ` | ❌ |
459- | ` ML-DSA-44 ` | ❌ |
460- | ` ML-DSA-65 ` | ❌ |
461- | ` ML-DSA-87 ` | ❌ |
462- | ` RSA-PSS ` | ❌ |
463- | ` RSASSA-PKCS1-v1_5 ` | ❌ |
460+ | ` Ed25519 ` | ✅ |
461+ | ` Ed448 ` | ✅ |
462+ | ` HMAC ` | ✅ |
463+ | ` ML-DSA-44 ` | ✅ |
464+ | ` ML-DSA-65 ` | ✅ |
465+ | ` ML-DSA-87 ` | ✅ |
466+ | ` RSA-PSS ` | ✅ |
467+ | ` RSASSA-PKCS1-v1_5 ` | ✅ |
464468
465469## ` subtle.wrapKey `
466470
0 commit comments