@hxa-rn/react-native-quick-crypto 1.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +171 -0
- package/dist/commonjs/argon2.js +39 -0
- package/dist/commonjs/argon2.js.map +1 -0
- package/dist/commonjs/blake3.js +106 -0
- package/dist/commonjs/blake3.js.map +1 -0
- package/dist/commonjs/certificate.js +35 -0
- package/dist/commonjs/certificate.js.map +1 -0
- package/dist/commonjs/cipher.js +202 -0
- package/dist/commonjs/cipher.js.map +1 -0
- package/dist/commonjs/constants.js +32 -0
- package/dist/commonjs/constants.js.map +1 -0
- package/dist/commonjs/dh-groups.js +29 -0
- package/dist/commonjs/dh-groups.js.map +1 -0
- package/dist/commonjs/dhKeyPair.js +113 -0
- package/dist/commonjs/dhKeyPair.js.map +1 -0
- package/dist/commonjs/diffie-hellman.js +155 -0
- package/dist/commonjs/diffie-hellman.js.map +1 -0
- package/dist/commonjs/dsa.js +96 -0
- package/dist/commonjs/dsa.js.map +1 -0
- package/dist/commonjs/ec.js +368 -0
- package/dist/commonjs/ec.js.map +1 -0
- package/dist/commonjs/ecdh.js +114 -0
- package/dist/commonjs/ecdh.js.map +1 -0
- package/dist/commonjs/ed.js +395 -0
- package/dist/commonjs/ed.js.map +1 -0
- package/dist/commonjs/expo-plugin/@types.js +2 -0
- package/dist/commonjs/expo-plugin/@types.js.map +1 -0
- package/dist/commonjs/expo-plugin/withRNQC.js +25 -0
- package/dist/commonjs/expo-plugin/withRNQC.js.map +1 -0
- package/dist/commonjs/expo-plugin/withSodiumAndroid.js +25 -0
- package/dist/commonjs/expo-plugin/withSodiumAndroid.js.map +1 -0
- package/dist/commonjs/expo-plugin/withSodiumIos.js +23 -0
- package/dist/commonjs/expo-plugin/withSodiumIos.js.map +1 -0
- package/dist/commonjs/expo-plugin/withXCode.js +51 -0
- package/dist/commonjs/expo-plugin/withXCode.js.map +1 -0
- package/dist/commonjs/hash.js +241 -0
- package/dist/commonjs/hash.js.map +1 -0
- package/dist/commonjs/hkdf.js +81 -0
- package/dist/commonjs/hkdf.js.map +1 -0
- package/dist/commonjs/hmac.js +121 -0
- package/dist/commonjs/hmac.js.map +1 -0
- package/dist/commonjs/index.js +358 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/keys/classes.js +272 -0
- package/dist/commonjs/keys/classes.js.map +1 -0
- package/dist/commonjs/keys/generateKeyPair.js +156 -0
- package/dist/commonjs/keys/generateKeyPair.js.map +1 -0
- package/dist/commonjs/keys/index.js +327 -0
- package/dist/commonjs/keys/index.js.map +1 -0
- package/dist/commonjs/keys/publicCipher.js +165 -0
- package/dist/commonjs/keys/publicCipher.js.map +1 -0
- package/dist/commonjs/keys/signVerify.js +225 -0
- package/dist/commonjs/keys/signVerify.js.map +1 -0
- package/dist/commonjs/keys/utils.js +123 -0
- package/dist/commonjs/keys/utils.js.map +1 -0
- package/dist/commonjs/mldsa.js +74 -0
- package/dist/commonjs/mldsa.js.map +1 -0
- package/dist/commonjs/mlkem.js +224 -0
- package/dist/commonjs/mlkem.js.map +1 -0
- package/dist/commonjs/pbkdf2.js +106 -0
- package/dist/commonjs/pbkdf2.js.map +1 -0
- package/dist/commonjs/prime.js +96 -0
- package/dist/commonjs/prime.js.map +1 -0
- package/dist/commonjs/random.js +233 -0
- package/dist/commonjs/random.js.map +1 -0
- package/dist/commonjs/rsa.js +207 -0
- package/dist/commonjs/rsa.js.map +1 -0
- package/dist/commonjs/scrypt.js +98 -0
- package/dist/commonjs/scrypt.js.map +1 -0
- package/dist/commonjs/specs/v1/NativeQuickCrypto.js +17 -0
- package/dist/commonjs/specs/v1/NativeQuickCrypto.js.map +1 -0
- package/dist/commonjs/specs/v1/argon2.nitro.js +6 -0
- package/dist/commonjs/specs/v1/argon2.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/blake3.nitro.js +6 -0
- package/dist/commonjs/specs/v1/blake3.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/certificate.nitro.js +6 -0
- package/dist/commonjs/specs/v1/certificate.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/cipher.nitro.js +6 -0
- package/dist/commonjs/specs/v1/cipher.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/dhKeyPair.nitro.js +6 -0
- package/dist/commonjs/specs/v1/dhKeyPair.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/diffie-hellman.nitro.js +6 -0
- package/dist/commonjs/specs/v1/diffie-hellman.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/dsaKeyPair.nitro.js +6 -0
- package/dist/commonjs/specs/v1/dsaKeyPair.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/ecKeyPair.nitro.js +6 -0
- package/dist/commonjs/specs/v1/ecKeyPair.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/ecdh.nitro.js +6 -0
- package/dist/commonjs/specs/v1/ecdh.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/edKeyPair.nitro.js +6 -0
- package/dist/commonjs/specs/v1/edKeyPair.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/hash.nitro.js +6 -0
- package/dist/commonjs/specs/v1/hash.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/hkdf.nitro.js +6 -0
- package/dist/commonjs/specs/v1/hkdf.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/hmac.nitro.js +6 -0
- package/dist/commonjs/specs/v1/hmac.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/keyObjectHandle.nitro.js +6 -0
- package/dist/commonjs/specs/v1/keyObjectHandle.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/kmac.nitro.js +6 -0
- package/dist/commonjs/specs/v1/kmac.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/mlDsaKeyPair.nitro.js +6 -0
- package/dist/commonjs/specs/v1/mlDsaKeyPair.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/mlKemKeyPair.nitro.js +6 -0
- package/dist/commonjs/specs/v1/mlKemKeyPair.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/pbkdf2.nitro.js +6 -0
- package/dist/commonjs/specs/v1/pbkdf2.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/prime.nitro.js +6 -0
- package/dist/commonjs/specs/v1/prime.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/random.nitro.js +6 -0
- package/dist/commonjs/specs/v1/random.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/rsaCipher.nitro.js +6 -0
- package/dist/commonjs/specs/v1/rsaCipher.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/rsaKeyPair.nitro.js +6 -0
- package/dist/commonjs/specs/v1/rsaKeyPair.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/scrypt.nitro.js +6 -0
- package/dist/commonjs/specs/v1/scrypt.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/sign.nitro.js +6 -0
- package/dist/commonjs/specs/v1/sign.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/utils.nitro.js +6 -0
- package/dist/commonjs/specs/v1/utils.nitro.js.map +1 -0
- package/dist/commonjs/specs/v1/x509certificate.nitro.js +6 -0
- package/dist/commonjs/specs/v1/x509certificate.nitro.js.map +1 -0
- package/dist/commonjs/subtle.js +1811 -0
- package/dist/commonjs/subtle.js.map +1 -0
- package/dist/commonjs/utils/cipher.js +64 -0
- package/dist/commonjs/utils/cipher.js.map +1 -0
- package/dist/commonjs/utils/conversion.js +181 -0
- package/dist/commonjs/utils/conversion.js.map +1 -0
- package/dist/commonjs/utils/errors.js +14 -0
- package/dist/commonjs/utils/errors.js.map +1 -0
- package/dist/commonjs/utils/hashnames.js +122 -0
- package/dist/commonjs/utils/hashnames.js.map +1 -0
- package/dist/commonjs/utils/index.js +83 -0
- package/dist/commonjs/utils/index.js.map +1 -0
- package/dist/commonjs/utils/noble.js +82 -0
- package/dist/commonjs/utils/noble.js.map +1 -0
- package/dist/commonjs/utils/timingSafeEqual.js +24 -0
- package/dist/commonjs/utils/timingSafeEqual.js.map +1 -0
- package/dist/commonjs/utils/types.js +55 -0
- package/dist/commonjs/utils/types.js.map +1 -0
- package/dist/commonjs/utils/validation.js +98 -0
- package/dist/commonjs/utils/validation.js.map +1 -0
- package/dist/commonjs/x509certificate.js +193 -0
- package/dist/commonjs/x509certificate.js.map +1 -0
- package/dist/module/argon2.js +32 -0
- package/dist/module/argon2.js.map +1 -0
- package/dist/module/blake3.js +96 -0
- package/dist/module/blake3.js.map +1 -0
- package/dist/module/certificate.js +28 -0
- package/dist/module/certificate.js.map +1 -0
- package/dist/module/cipher.js +194 -0
- package/dist/module/cipher.js.map +1 -0
- package/dist/module/constants.js +26 -0
- package/dist/module/constants.js.map +1 -0
- package/dist/module/dh-groups.js +23 -0
- package/dist/module/dh-groups.js.map +1 -0
- package/dist/module/dhKeyPair.js +104 -0
- package/dist/module/dhKeyPair.js.map +1 -0
- package/dist/module/diffie-hellman.js +147 -0
- package/dist/module/diffie-hellman.js.map +1 -0
- package/dist/module/dsa.js +87 -0
- package/dist/module/dsa.js.map +1 -0
- package/dist/module/ec.js +354 -0
- package/dist/module/ec.js.map +1 -0
- package/dist/module/ecdh.js +106 -0
- package/dist/module/ecdh.js.map +1 -0
- package/dist/module/ed.js +383 -0
- package/dist/module/ed.js.map +1 -0
- package/dist/module/expo-plugin/@types.js +2 -0
- package/dist/module/expo-plugin/@types.js.map +1 -0
- package/dist/module/expo-plugin/withRNQC.js +19 -0
- package/dist/module/expo-plugin/withRNQC.js.map +1 -0
- package/dist/module/expo-plugin/withSodiumAndroid.js +18 -0
- package/dist/module/expo-plugin/withSodiumAndroid.js.map +1 -0
- package/dist/module/expo-plugin/withSodiumIos.js +15 -0
- package/dist/module/expo-plugin/withSodiumIos.js.map +1 -0
- package/dist/module/expo-plugin/withXCode.js +44 -0
- package/dist/module/expo-plugin/withXCode.js.map +1 -0
- package/dist/module/hash.js +230 -0
- package/dist/module/hash.js.map +1 -0
- package/dist/module/hkdf.js +73 -0
- package/dist/module/hkdf.js.map +1 -0
- package/dist/module/hmac.js +114 -0
- package/dist/module/hmac.js.map +1 -0
- package/dist/module/index.js +134 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/keys/classes.js +261 -0
- package/dist/module/keys/classes.js.map +1 -0
- package/dist/module/keys/generateKeyPair.js +148 -0
- package/dist/module/keys/generateKeyPair.js.map +1 -0
- package/dist/module/keys/index.js +190 -0
- package/dist/module/keys/index.js.map +1 -0
- package/dist/module/keys/publicCipher.js +156 -0
- package/dist/module/keys/publicCipher.js.map +1 -0
- package/dist/module/keys/signVerify.js +213 -0
- package/dist/module/keys/signVerify.js.map +1 -0
- package/dist/module/keys/utils.js +112 -0
- package/dist/module/keys/utils.js.map +1 -0
- package/dist/module/mldsa.js +66 -0
- package/dist/module/mldsa.js.map +1 -0
- package/dist/module/mlkem.js +214 -0
- package/dist/module/mlkem.js.map +1 -0
- package/dist/module/pbkdf2.js +98 -0
- package/dist/module/pbkdf2.js.map +1 -0
- package/dist/module/prime.js +87 -0
- package/dist/module/prime.js.map +1 -0
- package/dist/module/random.js +220 -0
- package/dist/module/random.js.map +1 -0
- package/dist/module/rsa.js +197 -0
- package/dist/module/rsa.js.map +1 -0
- package/dist/module/scrypt.js +91 -0
- package/dist/module/scrypt.js.map +1 -0
- package/dist/module/specs/v1/NativeQuickCrypto.js +13 -0
- package/dist/module/specs/v1/NativeQuickCrypto.js.map +1 -0
- package/dist/module/specs/v1/argon2.nitro.js +2 -0
- package/dist/module/specs/v1/argon2.nitro.js.map +1 -0
- package/dist/module/specs/v1/blake3.nitro.js +2 -0
- package/dist/module/specs/v1/blake3.nitro.js.map +1 -0
- package/dist/module/specs/v1/certificate.nitro.js +2 -0
- package/dist/module/specs/v1/certificate.nitro.js.map +1 -0
- package/dist/module/specs/v1/cipher.nitro.js +2 -0
- package/dist/module/specs/v1/cipher.nitro.js.map +1 -0
- package/dist/module/specs/v1/dhKeyPair.nitro.js +2 -0
- package/dist/module/specs/v1/dhKeyPair.nitro.js.map +1 -0
- package/dist/module/specs/v1/diffie-hellman.nitro.js +2 -0
- package/dist/module/specs/v1/diffie-hellman.nitro.js.map +1 -0
- package/dist/module/specs/v1/dsaKeyPair.nitro.js +2 -0
- package/dist/module/specs/v1/dsaKeyPair.nitro.js.map +1 -0
- package/dist/module/specs/v1/ecKeyPair.nitro.js +2 -0
- package/dist/module/specs/v1/ecKeyPair.nitro.js.map +1 -0
- package/dist/module/specs/v1/ecdh.nitro.js +2 -0
- package/dist/module/specs/v1/ecdh.nitro.js.map +1 -0
- package/dist/module/specs/v1/edKeyPair.nitro.js +2 -0
- package/dist/module/specs/v1/edKeyPair.nitro.js.map +1 -0
- package/dist/module/specs/v1/hash.nitro.js +2 -0
- package/dist/module/specs/v1/hash.nitro.js.map +1 -0
- package/dist/module/specs/v1/hkdf.nitro.js +2 -0
- package/dist/module/specs/v1/hkdf.nitro.js.map +1 -0
- package/dist/module/specs/v1/hmac.nitro.js +2 -0
- package/dist/module/specs/v1/hmac.nitro.js.map +1 -0
- package/dist/module/specs/v1/keyObjectHandle.nitro.js +2 -0
- package/dist/module/specs/v1/keyObjectHandle.nitro.js.map +1 -0
- package/dist/module/specs/v1/kmac.nitro.js +2 -0
- package/dist/module/specs/v1/kmac.nitro.js.map +1 -0
- package/dist/module/specs/v1/mlDsaKeyPair.nitro.js +2 -0
- package/dist/module/specs/v1/mlDsaKeyPair.nitro.js.map +1 -0
- package/dist/module/specs/v1/mlKemKeyPair.nitro.js +2 -0
- package/dist/module/specs/v1/mlKemKeyPair.nitro.js.map +1 -0
- package/dist/module/specs/v1/pbkdf2.nitro.js +2 -0
- package/dist/module/specs/v1/pbkdf2.nitro.js.map +1 -0
- package/dist/module/specs/v1/prime.nitro.js +2 -0
- package/dist/module/specs/v1/prime.nitro.js.map +1 -0
- package/dist/module/specs/v1/random.nitro.js +2 -0
- package/dist/module/specs/v1/random.nitro.js.map +1 -0
- package/dist/module/specs/v1/rsaCipher.nitro.js +2 -0
- package/dist/module/specs/v1/rsaCipher.nitro.js.map +1 -0
- package/dist/module/specs/v1/rsaKeyPair.nitro.js +2 -0
- package/dist/module/specs/v1/rsaKeyPair.nitro.js.map +1 -0
- package/dist/module/specs/v1/scrypt.nitro.js +2 -0
- package/dist/module/specs/v1/scrypt.nitro.js.map +1 -0
- package/dist/module/specs/v1/sign.nitro.js +2 -0
- package/dist/module/specs/v1/sign.nitro.js.map +1 -0
- package/dist/module/specs/v1/utils.nitro.js +2 -0
- package/dist/module/specs/v1/utils.nitro.js.map +1 -0
- package/dist/module/specs/v1/x509certificate.nitro.js +2 -0
- package/dist/module/specs/v1/x509certificate.nitro.js.map +1 -0
- package/dist/module/subtle.js +1803 -0
- package/dist/module/subtle.js.map +1 -0
- package/dist/module/utils/cipher.js +54 -0
- package/dist/module/utils/cipher.js.map +1 -0
- package/dist/module/utils/conversion.js +146 -0
- package/dist/module/utils/conversion.js.map +1 -0
- package/dist/module/utils/errors.js +8 -0
- package/dist/module/utils/errors.js.map +1 -0
- package/dist/module/utils/hashnames.js +118 -0
- package/dist/module/utils/hashnames.js.map +1 -0
- package/dist/module/utils/index.js +8 -0
- package/dist/module/utils/index.js.map +1 -0
- package/dist/module/utils/noble.js +74 -0
- package/dist/module/utils/noble.js.map +1 -0
- package/dist/module/utils/timingSafeEqual.js +18 -0
- package/dist/module/utils/timingSafeEqual.js.map +1 -0
- package/dist/module/utils/types.js +55 -0
- package/dist/module/utils/types.js.map +1 -0
- package/dist/module/utils/validation.js +85 -0
- package/dist/module/utils/validation.js.map +1 -0
- package/dist/module/x509certificate.js +186 -0
- package/dist/module/x509certificate.js.map +1 -0
- package/dist/typescript/argon2.d.ts +15 -0
- package/dist/typescript/blake3.d.ts +32 -0
- package/dist/typescript/certificate.d.ts +7 -0
- package/dist/typescript/cipher.d.ts +74 -0
- package/dist/typescript/constants.d.ts +20 -0
- package/dist/typescript/dh-groups.d.ts +4 -0
- package/dist/typescript/dhKeyPair.d.ts +18 -0
- package/dist/typescript/diffie-hellman.d.ts +17 -0
- package/dist/typescript/dsa.d.ts +18 -0
- package/dist/typescript/ec.d.ts +23 -0
- package/dist/typescript/ecdh.d.ts +18 -0
- package/dist/typescript/ed.d.ts +46 -0
- package/dist/typescript/hash.d.ts +125 -0
- package/dist/typescript/hkdf.d.ts +21 -0
- package/dist/typescript/hmac.d.ts +65 -0
- package/dist/typescript/index.d.ts +224 -0
- package/dist/typescript/keys/classes.d.ts +85 -0
- package/dist/typescript/keys/generateKeyPair.d.ts +5 -0
- package/dist/typescript/keys/index.d.ts +23 -0
- package/dist/typescript/keys/publicCipher.d.ts +22 -0
- package/dist/typescript/keys/signVerify.d.ts +34 -0
- package/dist/typescript/keys/utils.d.ts +33 -0
- package/dist/typescript/mldsa.d.ts +17 -0
- package/dist/typescript/mlkem.d.ts +29 -0
- package/dist/typescript/pbkdf2.d.ts +11 -0
- package/dist/typescript/prime.d.ts +18 -0
- package/dist/typescript/random.d.ts +26 -0
- package/dist/typescript/rsa.d.ts +19 -0
- package/dist/typescript/scrypt.d.ts +17 -0
- package/dist/typescript/specs/v1/NativeQuickCrypto.d.ts +17 -0
- package/dist/typescript/specs/v1/argon2.nitro.d.ts +8 -0
- package/dist/typescript/specs/v1/blake3.nitro.d.ts +14 -0
- package/dist/typescript/specs/v1/certificate.nitro.d.ts +9 -0
- package/dist/typescript/specs/v1/cipher.nitro.d.ts +37 -0
- package/dist/typescript/specs/v1/dhKeyPair.nitro.d.ts +13 -0
- package/dist/typescript/specs/v1/diffie-hellman.nitro.d.ts +17 -0
- package/dist/typescript/specs/v1/dsaKeyPair.nitro.d.ts +12 -0
- package/dist/typescript/specs/v1/ecKeyPair.nitro.d.ts +20 -0
- package/dist/typescript/specs/v1/ecdh.nitro.d.ts +14 -0
- package/dist/typescript/specs/v1/edKeyPair.nitro.d.ts +16 -0
- package/dist/typescript/specs/v1/hash.nitro.d.ts +12 -0
- package/dist/typescript/specs/v1/hkdf.nitro.d.ts +8 -0
- package/dist/typescript/specs/v1/hmac.nitro.d.ts +9 -0
- package/dist/typescript/specs/v1/keyObjectHandle.nitro.d.ts +17 -0
- package/dist/typescript/specs/v1/kmac.nitro.d.ts +9 -0
- package/dist/typescript/specs/v1/mlDsaKeyPair.nitro.d.ts +15 -0
- package/dist/typescript/specs/v1/mlKemKeyPair.nitro.d.ts +17 -0
- package/dist/typescript/specs/v1/pbkdf2.nitro.d.ts +8 -0
- package/dist/typescript/specs/v1/prime.nitro.d.ts +10 -0
- package/dist/typescript/specs/v1/random.nitro.d.ts +8 -0
- package/dist/typescript/specs/v1/rsaCipher.nitro.d.ts +53 -0
- package/dist/typescript/specs/v1/rsaKeyPair.nitro.d.ts +19 -0
- package/dist/typescript/specs/v1/scrypt.nitro.d.ts +8 -0
- package/dist/typescript/specs/v1/sign.nitro.d.ts +18 -0
- package/dist/typescript/specs/v1/utils.nitro.d.ts +9 -0
- package/dist/typescript/specs/v1/x509certificate.nitro.d.ts +33 -0
- package/dist/typescript/subtle.d.ts +31 -0
- package/dist/typescript/utils/cipher.d.ts +6 -0
- package/dist/typescript/utils/conversion.d.ts +29 -0
- package/dist/typescript/utils/errors.d.ts +6 -0
- package/dist/typescript/utils/hashnames.d.ts +12 -0
- package/dist/typescript/utils/index.d.ts +7 -0
- package/dist/typescript/utils/noble.d.ts +18 -0
- package/dist/typescript/utils/timingSafeEqual.d.ts +2 -0
- package/dist/typescript/utils/types.d.ts +294 -0
- package/dist/typescript/utils/validation.d.ts +12 -0
- package/dist/typescript/x509certificate.d.ts +63 -0
- package/harmony/quick_crypto/LICENSE +21 -0
- package/harmony/quick_crypto/NOTICE +33 -0
- package/harmony/quick_crypto/OAT.xml +38 -0
- package/harmony/quick_crypto/build-profile.json5 +16 -0
- package/harmony/quick_crypto/deps/blake3/blake3.c +650 -0
- package/harmony/quick_crypto/deps/blake3/blake3.h +86 -0
- package/harmony/quick_crypto/deps/blake3/blake3_avx2.c +326 -0
- package/harmony/quick_crypto/deps/blake3/blake3_avx512.c +1388 -0
- package/harmony/quick_crypto/deps/blake3/blake3_dispatch.c +332 -0
- package/harmony/quick_crypto/deps/blake3/blake3_impl.h +333 -0
- package/harmony/quick_crypto/deps/blake3/blake3_neon.c +366 -0
- package/harmony/quick_crypto/deps/blake3/blake3_portable.c +160 -0
- package/harmony/quick_crypto/deps/blake3/blake3_sse2.c +566 -0
- package/harmony/quick_crypto/deps/blake3/blake3_sse41.c +560 -0
- package/harmony/quick_crypto/deps/blake3/example.c +36 -0
- package/harmony/quick_crypto/deps/blake3/example_tbb.c +57 -0
- package/harmony/quick_crypto/deps/blake3/main.c +166 -0
- package/harmony/quick_crypto/deps/fastpbkdf2/fastpbkdf2.c +356 -0
- package/harmony/quick_crypto/deps/fastpbkdf2/fastpbkdf2.h +68 -0
- package/harmony/quick_crypto/deps/ncrypto/include/dh-primes.h +67 -0
- package/harmony/quick_crypto/deps/ncrypto/include/ncrypto/aead.h +137 -0
- package/harmony/quick_crypto/deps/ncrypto/include/ncrypto/version.h +14 -0
- package/harmony/quick_crypto/deps/ncrypto/include/ncrypto.h +1752 -0
- package/harmony/quick_crypto/deps/ncrypto/src/aead.cpp +302 -0
- package/harmony/quick_crypto/deps/ncrypto/src/engine.cpp +93 -0
- package/harmony/quick_crypto/deps/ncrypto/src/ncrypto.cpp +5331 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/avx512.h +79 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/base64_implementation.h +158 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/base64_tables.h +887 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/common_defs.h +186 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/compiler_check.h +50 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/constexpr_ptr.h +138 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/encoding_types.h +189 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/error.h +126 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/implementation.h +7081 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/internal/isadetection.h +325 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/portability.h +285 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/ascii.h +86 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/atomic_util.h +105 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/base64.h +911 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/latin1.h +26 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/latin1_to_utf16/latin1_to_utf16.h +52 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/latin1_to_utf32/latin1_to_utf32.h +27 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/latin1_to_utf8/latin1_to_utf8.h +191 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/swap_bytes.h +35 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf16.h +226 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/utf16_to_latin1.h +108 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf16_to_latin1/valid_utf16_to_latin1.h +40 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/utf16_to_utf32.h +86 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf16_to_utf32/valid_utf16_to_utf32.h +44 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/utf16_to_utf8.h +295 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf16_to_utf8/valid_utf16_to_utf8.h +91 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf32.h +82 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/utf32_to_latin1.h +68 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf32_to_latin1/valid_utf32_to_latin1.h +67 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/utf32_to_utf16.h +84 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf32_to_utf16/valid_utf32_to_utf16.h +44 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/utf32_to_utf8.h +142 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf32_to_utf8/valid_utf32_to_utf8.h +72 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf8.h +326 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/utf8_to_latin1.h +225 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf8_to_latin1/valid_utf8_to_latin1.h +87 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/utf8_to_utf16.h +342 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf8_to_utf16/valid_utf8_to_utf16.h +106 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/utf8_to_utf32.h +299 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/scalar/utf8_to_utf32/valid_utf8_to_utf32.h +83 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf/simdutf_version.h +26 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf.h +26 -0
- package/harmony/quick_crypto/deps/simdutf/include/simdutf_c.h +342 -0
- package/harmony/quick_crypto/deps/simdutf/src/CMakeLists.txt +78 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_base64.cpp +791 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_latin1_to_utf16.cpp +24 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_latin1_to_utf32.cpp +24 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_latin1_to_utf8.cpp +70 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf16_to_latin1.cpp +61 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf16_to_utf32.cpp +185 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf16_to_utf8.cpp +780 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf32_to_latin1.cpp +60 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf32_to_utf16.cpp +208 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf32_to_utf8.cpp +505 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf8_to_latin1.cpp +69 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf8_to_utf16.cpp +313 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_convert_utf8_to_utf32.cpp +179 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_find.cpp +199 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_utf16fix.cpp +185 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_validate_utf16.cpp +165 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/arm_validate_utf32le.cpp +65 -0
- package/harmony/quick_crypto/deps/simdutf/src/arm64/implementation.cpp +1442 -0
- package/harmony/quick_crypto/deps/simdutf/src/encoding_types.cpp +67 -0
- package/harmony/quick_crypto/deps/simdutf/src/error.cpp +3 -0
- package/harmony/quick_crypto/deps/simdutf/src/fallback/implementation.cpp +589 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/ascii_validation.h +50 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/base64.h +233 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/base64lengths.h +63 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/buf_block_reader.h +109 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/find.h +75 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf16/change_endianness.h +24 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf16/count_code_points_bytemask.h +58 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf16/to_well_formed.h +93 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf16/utf32_length_from_utf16.h +15 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf16/utf8_length_from_utf16.h +35 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf16/utf8_length_from_utf16_bytemask.h +199 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf16.h +73 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf32.h +136 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf8/utf16_length_from_utf8_bytemask.h +53 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf8.h +92 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_to_latin1/utf8_to_latin1.h +316 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_to_latin1/valid_utf8_to_latin1.h +78 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_to_utf16/utf8_to_utf16.h +332 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_to_utf16/valid_utf8_to_utf16.h +74 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_to_utf32/utf8_to_utf32.h +318 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_to_utf32/valid_utf8_to_utf32.h +42 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_validation/utf8_lookup4_algorithm.h +223 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/utf8_validation/utf8_validator.h +84 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/validate_utf16.h +164 -0
- package/harmony/quick_crypto/deps/simdutf/src/generic/validate_utf32.h +99 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_base64.cpp +837 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf16.cpp +28 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf32.cpp +20 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_latin1_to_utf8.cpp +83 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf16_to_latin1.cpp +83 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf32.cpp +210 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf16_to_utf8.cpp +602 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf32_to_latin1.cpp +116 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf16.cpp +164 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf32_to_utf8.cpp +569 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf8_to_latin1.cpp +60 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf16.cpp +195 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_convert_utf8_to_utf32.cpp +135 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_utf16fix.cpp +173 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/avx2_validate_utf16.cpp +17 -0
- package/harmony/quick_crypto/deps/simdutf/src/haswell/implementation.cpp +1447 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_ascii_validation.inl.cpp +19 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_base64.inl.cpp +630 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_common.inl.cpp +37 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf16.inl.cpp +36 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf32.inl.cpp +23 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_latin1_to_utf8.inl.cpp +107 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf16_to_latin1.inl.cpp +103 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf32.inl.cpp +136 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf16_to_utf8.inl.cpp +206 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf32_to_latin1.inl.cpp +74 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf16.inl.cpp +338 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf32_to_utf8.inl.cpp +574 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf8_to_latin1.inl.cpp +104 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_utf8_to_utf16.inl.cpp +75 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_convert_valid_utf8_to_latin1.inl.cpp +69 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_find.inl.cpp +146 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_from_utf8.inl.cpp +266 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_from_valid_utf8.inl.cpp +136 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_macros.inl.cpp +143 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_utf16fix.cpp +138 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_utf32_validation.inl.cpp +63 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_utf8_common.inl.cpp +753 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_utf8_length_from_utf16.inl.cpp +269 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/icelake_utf8_validation.inl.cpp +116 -0
- package/harmony/quick_crypto/deps/simdutf/src/icelake/implementation.cpp +1903 -0
- package/harmony/quick_crypto/deps/simdutf/src/implementation.cpp +2526 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/implementation.cpp +1531 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_base64.cpp +695 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf16.cpp +76 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf32.cpp +55 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_latin1_to_utf8.cpp +65 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf16_to_latin1.cpp +64 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf32.cpp +183 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf16_to_utf8.cpp +550 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf32_to_latin1.cpp +73 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf16.cpp +218 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf32_to_utf8.cpp +589 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf8_to_latin1.cpp +72 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf16.cpp +296 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_convert_utf8_to_utf32.cpp +190 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_find.cpp +64 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_validate_utf16.cpp +13 -0
- package/harmony/quick_crypto/deps/simdutf/src/lasx/lasx_validate_utf32le.cpp +84 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/implementation.cpp +1417 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_base64.cpp +675 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf16.cpp +39 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf32.cpp +27 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_latin1_to_utf8.cpp +56 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf16_to_latin1.cpp +64 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf32.cpp +133 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf16_to_utf8.cpp +518 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf32_to_latin1.cpp +66 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf16.cpp +155 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf32_to_utf8.cpp +459 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf8_to_latin1.cpp +75 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf16.cpp +291 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_convert_utf8_to_utf32.cpp +179 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_find.cpp +60 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_validate_utf16.cpp +13 -0
- package/harmony/quick_crypto/deps/simdutf/src/lsx/lsx_validate_utf32le.cpp +68 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/implementation.cpp +992 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_base64.cpp +480 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_base64_internal_tests.cpp +401 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf16.cpp +12 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf32.cpp +12 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_latin1_to_utf8.cpp +149 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_latin1.cpp +67 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf32.cpp +87 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf16_to_utf8.cpp +296 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_latin1.cpp +57 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf16.cpp +117 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf32_to_utf8.cpp +166 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_latin1.cpp +69 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf16.cpp +211 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_convert_utf8_to_utf32.cpp +153 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_utf16_to_utf8_tables.h +1011 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_utf8_length_from_latin1.cpp +37 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/ppc64_validate_utf16.cpp +19 -0
- package/harmony/quick_crypto/deps/simdutf/src/ppc64/templates.cpp +91 -0
- package/harmony/quick_crypto/deps/simdutf/src/rvv/implementation.cpp +138 -0
- package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_find.cpp +27 -0
- package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_helpers.inl.cpp +23 -0
- package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_latin1_to.inl.cpp +71 -0
- package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_length_from.inl.cpp +164 -0
- package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_utf16_to.inl.cpp +399 -0
- package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_utf16fix.cpp +110 -0
- package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_utf32_to.inl.cpp +307 -0
- package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_utf8_to.inl.cpp +435 -0
- package/harmony/quick_crypto/deps/simdutf/src/rvv/rvv_validate.inl.cpp +275 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/begin.h +2 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/bitmanipulation.h +34 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/end.h +2 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/implementation.h +307 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/intrinsics.h +10 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/simd.h +547 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/simd16-inl.h +403 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/simd32-inl.h +129 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64/simd64-inl.h +28 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/arm64.h +43 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/fallback/begin.h +1 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/fallback/bitmanipulation.h +13 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/fallback/end.h +1 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/fallback/implementation.h +331 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/fallback.h +42 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/begin.h +15 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/bitmanipulation.h +35 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/end.h +13 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/implementation.h +338 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/intrinsics.h +67 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/simd.h +363 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/simd16-inl.h +261 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/simd32-inl.h +111 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell/simd64-inl.h +34 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/haswell.h +63 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/begin.h +14 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/bitmanipulation.h +44 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/end.h +12 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/implementation.h +346 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/intrinsics.h +138 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/simd.h +17 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/simd16-inl.h +90 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake/simd32-inl.h +47 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/icelake.h +81 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/begin.h +8 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/bitmanipulation.h +25 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/end.h +8 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/implementation.h +310 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/intrinsics.h +319 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/simd.h +551 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/simd16-inl.h +234 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/simd32-inl.h +74 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx/simd64-inl.h +52 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lasx.h +49 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/begin.h +2 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/bitmanipulation.h +25 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/end.h +2 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/implementation.h +309 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/intrinsics.h +196 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/simd.h +421 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/simd16-inl.h +242 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/simd32-inl.h +69 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx/simd64-inl.h +50 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/lsx.h +52 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/begin.h +1 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/bitmanipulation.h +29 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/end.h +1 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/implementation.h +348 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/intrinsics.h +19 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/simd.h +177 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/simd16-inl.h +327 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/simd32-inl.h +247 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64/simd8-inl.h +618 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/ppc64.h +40 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/rvv/begin.h +7 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/rvv/end.h +7 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/rvv/implementation.h +321 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/rvv/intrinsics.h +131 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/rvv.h +41 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/begin.h +8 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/bitmanipulation.h +37 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/end.h +8 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/implementation.h +338 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/intrinsics.h +38 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/simd.h +379 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/simd16-inl.h +242 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/simd32-inl.h +151 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere/simd64-inl.h +33 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf/westmere.h +59 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf.cpp +152 -0
- package/harmony/quick_crypto/deps/simdutf/src/simdutf_c.cpp +525 -0
- package/harmony/quick_crypto/deps/simdutf/src/tables/utf16_to_utf8_tables.h +768 -0
- package/harmony/quick_crypto/deps/simdutf/src/tables/utf32_to_utf16_tables.h +53 -0
- package/harmony/quick_crypto/deps/simdutf/src/tables/utf8_to_utf16_tables.h +826 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/implementation.cpp +1479 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/internal/loader.cpp +7 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/internal/write_v_u16_11bits_to_utf8.cpp +66 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_base64.cpp +672 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_latin1_to_utf16.cpp +21 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_latin1_to_utf32.cpp +31 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_latin1_to_utf8.cpp +71 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf16_to_latin1.cpp +70 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf16_to_utf32.cpp +206 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf16_to_utf8.cpp +504 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf32_to_latin1.cpp +82 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf32_to_utf16.cpp +209 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf32_to_utf8.cpp +589 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf8_to_latin1.cpp +58 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf8_to_utf16.cpp +197 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_convert_utf8_to_utf32.cpp +141 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_utf16fix.cpp +82 -0
- package/harmony/quick_crypto/deps/simdutf/src/westmere/sse_validate_utf16.cpp +17 -0
- package/harmony/quick_crypto/hvigorfile.ts +2 -0
- package/harmony/quick_crypto/index.ets +1 -0
- package/harmony/quick_crypto/oh-package.json5 +14 -0
- package/harmony/quick_crypto/src/main/cpp/CMakeLists.txt +296 -0
- package/harmony/quick_crypto/src/main/cpp/QuickCryptoOnLoad.cpp +211 -0
- package/harmony/quick_crypto/src/main/cpp/QuickCryptoOnLoad.hpp +16 -0
- package/harmony/quick_crypto/src/main/cpp/QuickCryptoPackage.h +50 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/argon2/HybridArgon2.cpp +103 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/argon2/HybridArgon2.hpp +32 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/blake3/HybridBlake3.cpp +118 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/blake3/HybridBlake3.hpp +35 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/certificate/HybridCertificate.cpp +42 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/certificate/HybridCertificate.hpp +16 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/CCMCipher.cpp +202 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/CCMCipher.hpp +26 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/ChaCha20Cipher.cpp +99 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/ChaCha20Cipher.hpp +25 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/ChaCha20Poly1305Cipher.cpp +170 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/ChaCha20Poly1305Cipher.hpp +29 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/GCMCipher.cpp +68 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/GCMCipher.hpp +14 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/HybridCipher.cpp +415 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/HybridCipher.hpp +74 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/HybridCipherFactory.hpp +119 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/HybridRsaCipher.cpp +440 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/HybridRsaCipher.hpp +33 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/OCBCipher.cpp +55 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/OCBCipher.hpp +19 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/XChaCha20Poly1305Cipher.cpp +163 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/XChaCha20Poly1305Cipher.hpp +42 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/XSalsa20Cipher.cpp +65 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/XSalsa20Cipher.hpp +33 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/XSalsa20Poly1305Cipher.cpp +147 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/cipher/XSalsa20Poly1305Cipher.hpp +41 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/dh/HybridDhKeyPair.cpp +179 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/dh/HybridDhKeyPair.hpp +37 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/dh/HybridDiffieHellman.cpp +501 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/dh/HybridDiffieHellman.hpp +42 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/dsa/HybridDsaKeyPair.cpp +128 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/dsa/HybridDsaKeyPair.hpp +32 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/ec/HybridEcKeyPair.cpp +479 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/ec/HybridEcKeyPair.hpp +49 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/ecdh/HybridECDH.cpp +228 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/ecdh/HybridECDH.hpp +43 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/ed25519/HybridEdKeyPair.cpp +404 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/ed25519/HybridEdKeyPair.hpp +71 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/hash/HybridHash.cpp +207 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/hash/HybridHash.hpp +43 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/hkdf/HybridHkdf.cpp +96 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/hkdf/HybridHkdf.hpp +28 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/hmac/HybridHmac.cpp +104 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/hmac/HybridHmac.hpp +32 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/keys/HybridKeyObjectHandle.cpp +891 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/keys/HybridKeyObjectHandle.hpp +58 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/keys/KeyObjectData.cpp +284 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/keys/KeyObjectData.hpp +73 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/keys/node.h +5 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/kmac/HybridKmac.cpp +83 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/kmac/HybridKmac.hpp +31 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/mldsa/HybridMlDsaKeyPair.cpp +255 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/mldsa/HybridMlDsaKeyPair.hpp +49 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/mlkem/HybridMlKemKeyPair.cpp +319 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/mlkem/HybridMlKemKeyPair.hpp +48 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/pbkdf2/HybridPbkdf2.cpp +51 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/pbkdf2/HybridPbkdf2.hpp +24 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/prime/HybridPrime.cpp +81 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/prime/HybridPrime.hpp +20 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/random/HybridRandom.cpp +48 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/random/HybridRandom.hpp +32 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/rsa/HybridRsaKeyPair.cpp +154 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/rsa/HybridRsaKeyPair.hpp +43 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/scrypt/HybridScrypt.cpp +62 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/scrypt/HybridScrypt.hpp +28 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/sign/HybridSignHandle.cpp +266 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/sign/HybridSignHandle.hpp +36 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/sign/HybridVerifyHandle.cpp +227 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/sign/HybridVerifyHandle.hpp +36 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/sign/SignUtils.hpp +91 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/utils/HybridUtils.cpp +197 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/utils/HybridUtils.hpp +17 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/utils/Macros.hpp +68 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/utils/QuickCryptoUtils.cpp +44 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/utils/QuickCryptoUtils.hpp +114 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/utils/base64.h +309 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/x509/HybridX509Certificate.cpp +174 -0
- package/harmony/quick_crypto/src/main/cpp/cpp/x509/HybridX509Certificate.hpp +51 -0
- package/harmony/quick_crypto/src/main/cpp/generated/RNOH/generated/BaseQuickCryptoPackage.h +72 -0
- package/harmony/quick_crypto/src/main/cpp/generated/RNOH/generated/dummy.cpp +2 -0
- package/harmony/quick_crypto/src/main/cpp/generated/RNOH/generated/turbo_modules/QuickCrypto.cpp +16 -0
- package/harmony/quick_crypto/src/main/cpp/generated/RNOH/generated/turbo_modules/QuickCrypto.h +16 -0
- package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/ComponentDescriptors.h +24 -0
- package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/EventEmitters.cpp +16 -0
- package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/EventEmitters.h +17 -0
- package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/Props.cpp +19 -0
- package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/Props.h +18 -0
- package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/ShadowNodes.cpp +17 -0
- package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/ShadowNodes.h +23 -0
- package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/States.cpp +16 -0
- package/harmony/quick_crypto/src/main/cpp/generated/react/renderer/components/quick_crypto/States.h +19 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/HarmonyDispatcher.h +84 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/AnyMap.hpp +216 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/ArrayBuffer.hpp +157 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/AssertPromiseState.hpp +34 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/BorrowingReference.hpp +223 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/BoxedHybridObject.hpp +36 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/CachedProp.hpp +44 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/CallInvokerDispatcher.hpp +38 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/CountTrailingOptionals.hpp +64 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/Dispatcher.hpp +83 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/FastVectorCopy.hpp +45 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/FutureType.hpp +28 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/HybridFunction.hpp +269 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/HybridNitroModulesProxy.hpp +52 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/HybridObject.hpp +152 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/HybridObjectPrototype.hpp +93 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/HybridObjectRegistry.hpp +53 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/InstallNitro.hpp +41 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/InstanceMethod.hpp +23 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/IsSharedPtrTo.hpp +27 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSCallback.hpp +132 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSICache.hpp +123 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+AnyMap.hpp +86 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+ArrayBuffer.hpp +96 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Date.hpp +83 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Exception.hpp +59 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Function.hpp +92 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+HostObject.hpp +73 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+NativeState.hpp +93 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Null.hpp +38 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Optional.hpp +50 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Promise.hpp +112 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Tuple.hpp +93 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+UnorderedMap.hpp +70 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Variant.hpp +67 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter+Vector.hpp +69 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIConverter.hpp +197 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/JSIHelpers.hpp +52 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/NitroDefines.hpp +73 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/NitroHash.hpp +61 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/NitroLogger.hpp +69 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/NitroTypeInfo.hpp +66 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/Null.hpp +42 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/ObjectUtils.hpp +94 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/Promise.hpp +324 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/PromiseType.hpp +44 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/PropNameIDCache.hpp +24 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/Prototype.hpp +182 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/PrototypeChain.hpp +78 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/ReferenceState.hpp +40 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/ThreadPool.hpp +66 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/ThreadUtils.hpp +31 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/TypeIndex.hpp +29 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/WeakReference+Owning.hpp +33 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModules/WeakReference.hpp +102 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModulesTurboModule.cpp +92 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/NitroModulesTurboModule.h +74 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/platform/ThreadUtils.cpp +60 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/AnyMap.cpp +202 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/AnyMap.hpp +216 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/ArrayBuffer.cpp +125 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/ArrayBuffer.hpp +157 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/AssertPromiseState.hpp +34 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/BorrowingReference.hpp +223 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/BoxedHybridObject.cpp +30 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/BoxedHybridObject.hpp +36 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/CachedProp.hpp +44 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/CallInvokerDispatcher.hpp +38 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/CountTrailingOptionals.hpp +64 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/Dispatcher.cpp +71 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/Dispatcher.hpp +83 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/FastVectorCopy.hpp +45 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/FutureType.hpp +28 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridFunction.hpp +269 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridNitroModulesProxy.cpp +92 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridNitroModulesProxy.hpp +52 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridObject.cpp +107 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridObject.hpp +152 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridObjectPrototype.cpp +113 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridObjectPrototype.hpp +93 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridObjectRegistry.cpp +105 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/HybridObjectRegistry.hpp +53 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/InstallNitro.cpp +29 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/InstallNitro.hpp +41 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/InstanceMethod.hpp +23 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/IsSharedPtrTo.hpp +27 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSCallback.hpp +132 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSICache.cpp +66 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSICache.hpp +123 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+AnyMap.hpp +86 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+ArrayBuffer.hpp +96 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Date.hpp +83 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Exception.hpp +59 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Function.hpp +92 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+HostObject.hpp +73 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+NativeState.hpp +93 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Null.hpp +38 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Optional.hpp +50 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Promise.hpp +112 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Tuple.hpp +93 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+UnorderedMap.hpp +70 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Variant.hpp +67 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter+Vector.hpp +69 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIConverter.hpp +197 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/JSIHelpers.hpp +52 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/NitroDefines.hpp +73 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/NitroHash.hpp +61 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/NitroLogger.hpp +69 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/NitroTypeInfo.cpp +80 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/NitroTypeInfo.hpp +66 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/Null.hpp +42 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/ObjectUtils.cpp +172 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/ObjectUtils.hpp +94 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/Promise.cpp +136 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/Promise.hpp +324 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/PromiseType.hpp +44 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/Prototype.hpp +182 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/PrototypeChain.hpp +78 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/ReferenceState.hpp +40 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/ThreadPool.cpp +99 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/ThreadPool.hpp +66 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/ThreadUtils.hpp +31 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/TypeIndex.hpp +29 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/WeakReference+Owning.hpp +33 -0
- package/harmony/quick_crypto/src/main/cpp/nitro/shared/WeakReference.hpp +102 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/AsymmetricKeyType.hpp +128 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/CipherArgs.hpp +101 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/CipherInfo.hpp +104 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridArgon2Spec.cpp +22 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridArgon2Spec.hpp +66 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridBlake3Spec.cpp +28 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridBlake3Spec.hpp +74 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridCertificateSpec.cpp +23 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridCertificateSpec.hpp +64 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridCipherFactorySpec.cpp +21 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridCipherFactorySpec.hpp +67 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridCipherSpec.cpp +29 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridCipherSpec.hpp +78 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridDhKeyPairSpec.cpp +27 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridDhKeyPairSpec.hpp +69 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridDiffieHellmanSpec.cpp +31 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridDiffieHellmanSpec.hpp +72 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridDsaKeyPairSpec.cpp +26 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridDsaKeyPairSpec.hpp +68 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridECDHSpec.cpp +28 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridECDHSpec.hpp +70 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridEcKeyPairSpec.cpp +30 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridEcKeyPairSpec.hpp +76 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridEdKeyPairSpec.cpp +30 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridEdKeyPairSpec.hpp +74 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridHashSpec.cpp +26 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridHashSpec.hpp +74 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridHkdfSpec.cpp +22 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridHkdfSpec.hpp +65 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridHmacSpec.cpp +23 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridHmacSpec.hpp +66 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridKeyObjectHandleSpec.cpp +30 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridKeyObjectHandleSpec.hpp +98 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridKmacSpec.cpp +23 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridKmacSpec.hpp +66 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridMlDsaKeyPairSpec.cpp +29 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridMlDsaKeyPairSpec.hpp +72 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridMlKemKeyPairSpec.cpp +31 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridMlKemKeyPairSpec.hpp +74 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridPbkdf2Spec.cpp +22 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridPbkdf2Spec.hpp +65 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridPrimeSpec.cpp +24 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridPrimeSpec.hpp +67 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridRandomSpec.cpp +22 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridRandomSpec.hpp +64 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridRsaCipherSpec.cpp +25 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridRsaCipherSpec.hpp +71 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridRsaKeyPairSpec.cpp +29 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridRsaKeyPairSpec.hpp +75 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridScryptSpec.cpp +22 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridScryptSpec.hpp +64 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridSignHandleSpec.cpp +23 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridSignHandleSpec.hpp +69 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridUtilsSpec.cpp +23 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridUtilsSpec.hpp +65 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridVerifyHandleSpec.cpp +23 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridVerifyHandleSpec.hpp +69 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridX509CertificateHandleSpec.cpp +46 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/HybridX509CertificateHandleSpec.hpp +96 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/JWK.hpp +177 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/JWKkty.hpp +88 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/JWKuse.hpp +76 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/KFormatType.hpp +63 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/KeyDetail.hpp +108 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/KeyEncoding.hpp +64 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/KeyObject.hpp +83 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/KeyType.hpp +63 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/KeyUsage.hpp +116 -0
- package/harmony/quick_crypto/src/main/cpp/nitrogen/shared/NamedCurve.hpp +80 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/README.md +11 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/__DECC_INCLUDE_EPILOGUE.H +22 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/__DECC_INCLUDE_PROLOGUE.H +26 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/aes.h +111 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/asn1.h +1134 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/asn1.h.in +967 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/asn1err.h +142 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/asn1t.h +946 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/asn1t.h.in +923 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/async.h +104 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/asyncerr.h +29 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/bio.h +1022 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/bio.h.in +999 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/bioerr.h +72 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/blowfish.h +78 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/bn.h +590 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/bnerr.h +47 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/buffer.h +62 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/buffererr.h +25 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/byteorder.h +339 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/camellia.h +117 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cast.h +71 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cmac.h +52 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cmp.h +727 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cmp.h.in +584 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cmp_util.h +56 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cmperr.h +134 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cms.h +520 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cms.h.in +422 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cmserr.h +129 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/comp.h +98 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/comp.h.in +76 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/comperr.h +38 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/conf.h +214 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/conf.h.in +177 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/conf_api.h +46 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/conferr.h +52 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/configuration.h +224 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/configuration.h.in +75 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/conftypes.h +44 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/core.h +236 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/core_dispatch.h +1156 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/core_names.h +584 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/core_names.h.in +129 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/core_object.h +41 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/crmf.h +278 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/crmf.h.in +207 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/crmferr.h +57 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/crypto.h +614 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/crypto.h.in +591 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cryptoerr.h +56 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cryptoerr_legacy.h +1466 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ct.h +573 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ct.h.in +525 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/cterr.h +45 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/decoder.h +133 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/decodererr.h +28 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/des.h +211 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/dh.h +339 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/dherr.h +59 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/dsa.h +280 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/dsaerr.h +44 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/dtls1.h +57 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/e_os2.h +310 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/e_ostime.h +38 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ebcdic.h +39 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ec.h +1588 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ecdh.h +10 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ecdsa.h +10 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ecerr.h +104 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/encoder.h +124 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/encodererr.h +28 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/engine.h +833 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/engineerr.h +63 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/err.h +512 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/err.h.in +501 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ess.h +128 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ess.h.in +81 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/esserr.h +32 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/evp.h +2345 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/evperr.h +148 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/fips_names.h +50 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/fipskey.h +41 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/fipskey.h.in +40 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/hmac.h +62 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/hpke.h +169 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/http.h +119 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/httperr.h +56 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/idea.h +82 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/indicator.h +31 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/kdf.h +142 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/kdferr.h +16 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/lhash.h +398 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/lhash.h.in +373 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/macros.h +361 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/md2.h +56 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/md4.h +63 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/md5.h +62 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/mdc2.h +55 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ml_kem.h +31 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/modes.h +219 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/obj_mac.h +6695 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/objects.h +184 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/objectserr.h +28 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ocsp.h +483 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ocsp.h.in +387 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ocsperr.h +53 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/opensslconf.h +17 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/opensslv.h +109 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/opensslv.h.in +108 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ossl_typ.h +16 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/param_build.h +63 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/params.h +166 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pem.h +548 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pem2.h +19 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pemerr.h +59 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pkcs12.h +372 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pkcs12.h.in +349 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pkcs12err.h +46 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pkcs7.h +430 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pkcs7.h.in +359 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/pkcs7err.h +63 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/prov_ssl.h +38 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/proverr.h +171 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/provider.h +94 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/quic.h +75 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/rand.h +131 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/randerr.h +70 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/rc2.h +68 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/rc4.h +47 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/rc5.h +79 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ripemd.h +59 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/rsa.h +615 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/rsaerr.h +107 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/safestack.h +320 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/safestack.h.in +250 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/seed.h +113 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/self_test.h +116 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/sha.h +139 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/srp.h +285 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/srp.h.in +214 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/srtp.h +68 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ssl.h +2940 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ssl.h.in +2893 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ssl2.h +30 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ssl3.h +358 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/sslerr.h +382 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/sslerr_legacy.h +467 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/stack.h +92 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/store.h +379 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/storeerr.h +49 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/symhacks.h +39 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/thread.h +31 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/tls1.h +1226 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/trace.h +321 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ts.h +522 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/tserr.h +67 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/txt_db.h +63 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/types.h +248 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ui.h +407 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/ui.h.in +384 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/uierr.h +38 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/whrlpool.h +62 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509.h +1304 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509.h.in +1110 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509_acert.h +294 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509_acert.h.in +199 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509_vfy.h +921 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509_vfy.h.in +824 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509err.h +70 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509v3.h +1968 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509v3.h.in +1367 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/include/openssl/x509v3err.h +97 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/lib/libcrypto.a +0 -0
- package/harmony/quick_crypto/src/main/cpp/third_party/openssl/lib/libssl.a +0 -0
- package/harmony/quick_crypto/src/main/ets/QuickCryptoTurboModule.ts +14 -0
- package/harmony/quick_crypto/src/main/ets/QuickCryptoTurboModulesFactory.ets +26 -0
- package/harmony/quick_crypto/src/main/ets/generated/index.ets +5 -0
- package/harmony/quick_crypto/src/main/ets/generated/ts.ts +5 -0
- package/harmony/quick_crypto/src/main/ets/generated/turboModules/QuickCrypto.ts +14 -0
- package/harmony/quick_crypto/src/main/ets/generated/turboModules/ts.ts +5 -0
- package/harmony/quick_crypto/src/main/ets/nitro/Logger.ts +58 -0
- package/harmony/quick_crypto/src/main/ets/nitro/NitroModulesModule.ts +134 -0
- package/harmony/quick_crypto/src/main/module.json5 +13 -0
- package/harmony/quick_crypto/src/main/resources/base/element/string.json +8 -0
- package/harmony/quick_crypto/src/main/resources/en_US/element/string.json +8 -0
- package/harmony/quick_crypto/src/main/resources/zh_CN/element/string.json +8 -0
- package/harmony/quick_crypto.har +0 -0
- package/package.json +87 -0
- package/src/argon2.ts +83 -0
- package/src/blake3.ts +124 -0
- package/src/certificate.ts +41 -0
- package/src/cipher.ts +373 -0
- package/src/constants.ts +32 -0
- package/src/dh-groups.ts +27 -0
- package/src/dhKeyPair.ts +156 -0
- package/src/diffie-hellman.ts +195 -0
- package/src/dsa.ts +129 -0
- package/src/ec.ts +557 -0
- package/src/ecdh.ts +132 -0
- package/src/ed.ts +526 -0
- package/src/expo-plugin/@types.ts +7 -0
- package/src/expo-plugin/withRNQC.ts +23 -0
- package/src/expo-plugin/withSodiumAndroid.ts +24 -0
- package/src/expo-plugin/withSodiumIos.ts +25 -0
- package/src/expo-plugin/withXCode.ts +55 -0
- package/src/hash.ts +320 -0
- package/src/hkdf.ts +147 -0
- package/src/hmac.ts +140 -0
- package/src/index.ts +144 -0
- package/src/keys/classes.ts +332 -0
- package/src/keys/generateKeyPair.ts +212 -0
- package/src/keys/index.ts +298 -0
- package/src/keys/publicCipher.ts +250 -0
- package/src/keys/signVerify.ts +318 -0
- package/src/keys/utils.ts +190 -0
- package/src/mldsa.ts +125 -0
- package/src/mlkem.ts +350 -0
- package/src/pbkdf2.ts +183 -0
- package/src/prime.ts +134 -0
- package/src/random.ts +334 -0
- package/src/rsa.ts +311 -0
- package/src/scrypt.ts +134 -0
- package/src/specs/v1/.gitkeep +1 -0
- package/src/specs/v1/NativeQuickCrypto.ts +19 -0
- package/src/specs/v1/argon2.nitro.ts +29 -0
- package/src/specs/v1/blake3.nitro.ts +12 -0
- package/src/specs/v1/certificate.nitro.ts +8 -0
- package/src/specs/v1/cipher.nitro.ts +39 -0
- package/src/specs/v1/dhKeyPair.nitro.ts +14 -0
- package/src/specs/v1/diffie-hellman.nitro.ts +16 -0
- package/src/specs/v1/dsaKeyPair.nitro.ts +13 -0
- package/src/specs/v1/ecKeyPair.nitro.ts +40 -0
- package/src/specs/v1/ecdh.nitro.ts +12 -0
- package/src/specs/v1/edKeyPair.nitro.ts +43 -0
- package/src/specs/v1/hash.nitro.ts +10 -0
- package/src/specs/v1/hkdf.nitro.ts +19 -0
- package/src/specs/v1/hmac.nitro.ts +7 -0
- package/src/specs/v1/keyObjectHandle.nitro.ts +39 -0
- package/src/specs/v1/kmac.nitro.ts +12 -0
- package/src/specs/v1/mlDsaKeyPair.nitro.ts +29 -0
- package/src/specs/v1/mlKemKeyPair.nitro.ts +32 -0
- package/src/specs/v1/pbkdf2.nitro.ts +18 -0
- package/src/specs/v1/prime.nitro.ts +18 -0
- package/src/specs/v1/random.nitro.ts +14 -0
- package/src/specs/v1/rsaCipher.nitro.ts +82 -0
- package/src/specs/v1/rsaKeyPair.nitro.ts +33 -0
- package/src/specs/v1/scrypt.nitro.ts +23 -0
- package/src/specs/v1/sign.nitro.ts +31 -0
- package/src/specs/v1/utils.nitro.ts +7 -0
- package/src/specs/v1/x509certificate.nitro.ts +38 -0
- package/src/specs/v2/.gitkeep +1 -0
- package/src/subtle.ts +2922 -0
- package/src/utils/cipher.ts +60 -0
- package/src/utils/conversion.ts +194 -0
- package/src/utils/errors.ts +15 -0
- package/src/utils/hashnames.ts +129 -0
- package/src/utils/index.ts +7 -0
- package/src/utils/noble.ts +85 -0
- package/src/utils/timingSafeEqual.ts +23 -0
- package/src/utils/types.ts +547 -0
- package/src/utils/validation.ts +130 -0
- package/src/x509certificate.ts +277 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_safeBuffer","require","_utils","_keys","_conversion","_argon","_errors","_hashnames","_validation","_hash","_reactNativeNitroModules","_pbkdf","_ec","_rsa","_random","_hmac","_timingSafeEqual","_signVerify","_ed","_mldsa","_mlkem","_hkdf","KWebCryptoKeyFormat","CipherOrWrapMode","hasAnyNotIn","usages","allowed","some","usage","includes","normalizeAlgorithm","algorithm","_operation","name","getAlgorithmName","length","ecExportKey","key","format","keyObject","kWebCryptoKeyFormatRaw","bufferLikeToArrayBuffer","handle","exportKey","kWebCryptoKeyFormatSPKI","exported","export","type","kWebCryptoKeyFormatPKCS8","Error","rsaExportKey","rsaCipher","mode","data","rsaParams","expectedType","kWebCryptoCipherEncrypt","lazyDOMException","hashAlgorithm","normalizeHashName","hash","label","undefined","rsaCipherModule","NitroModules","createHybridObject","RSA_PKCS1_OAEP_PADDING","encrypt","decrypt","aesCipher","aesCtrCipher","aesCbcCipher","aesGcmCipher","aesOcbCipher","counter","byteLength","keyLength","cipherType","factory","cipher","createCipher","isCipher","cipherKey","iv","updated","update","final","result","Uint8Array","set","buffer","aesAeadCipher","config","additionalData","tagLength","validTagLengths","algorithmName","tagByteLength","cipherSuffix","authTagLen","processData","kWebCryptoCipherDecrypt","dataView","ciphertextLength","slice","authTag","setAuthTag","setAAD","tag","getAuthTag","ivBuffer","aesKwCipher","isWrap","exportedKey","defaultWrapIV","chaCha20Poly1305Cipher","aesGenerateKey","extractable","keyUsages","validUsages","keyBytes","getRandomValues","createSecretKey","keyAlgorithm","CryptoKey","hmacGenerateKey","hashName","Math","ceil","webCryptoHashName","HashContext","WebCrypto","kmacGenerateKey","defaultLength","kmacSignVerify","signature","outputLengthBits","outputLengthBytes","keyData","kmac","customizationBuffer","customization","createKmac","computed","digest","sigBuffer","timingSafeEqual","kmacImportKey","jwk","kty","expectedAlg","alg","keyType","initJwk","SecretKeyObject","rsaImportKey","checkSet","PublicKeyObject","PrivateKeyObject","KeyObject","createKeyObject","KFormatType","DER","KeyEncoding","SPKI","PKCS8","keyDetails","asymmetricKeyDetails","publicExponentBytes","publicExponent","exp","bytes","value","unshift","floor","normalizedHash","algorithmWithDetails","modulusLength","hmacImportKey","k","decoded","SBuffer","from","keyBitLength","normalizedAlgorithm","aesImportKey","actualLength","edImportKey","isX","allowedUsages","init","jwkData","KeyType","PRIVATE","pqcImportKeyObject","initPqcRaw","mldsaImportKey","isPublicFormat","mlkemImportKey","exportKeySpki","exportKeyPkcs8","exportKeyRaw","byteOffset","exportKeyJWK","exportJwk","key_ops","ext","JwkRsa","JwkRsaPss","JwkRsaOaep","JwkHmac","crv","namedCurve","importGenericSecretKey","checkLength","isBuffer","hkdfImportKey","checkCryptoKeyPairUsages","pair","privateKey","argon2DeriveBits","baseKey","nonce","parallelism","memory","passes","secretValue","associatedData","message","algName","toLowerCase","argon2Sync","secret","version","isCryptoKeyPair","hmacSignVerify","hmac","createHmac","computedBuffer","rsaSignVerify","padding","saltLength","RSA_PKCS1_PADDING","RSA_PKCS1_PSS_PADDING","paddingValue","signer","createSign","sig","sign","verifier","createVerify","verify","edSignVerify","isSign","expectedKeyType","curveType","ed","Ed","rawKey","dataBuffer","signSync","signatureBuffer","verifySync","mldsaSignVerify","signVerify","ecdsaSignVerify","cipherOrWrap","op","validateMaxBufferLength","SUPPORTED_ALGORITHMS","Set","generateKey","importKey","deriveBits","wrapKey","unwrapKey","encapsulateBits","decapsulateBits","encapsulateKey","decapsulateKey","ASYMMETRIC_ALGORITHMS","Subtle","supports","operation","_lengthOrAdditionalAlgorithm","has","_SUPPORTED_ALGORITHMS","_SUPPORTED_ALGORITHMS2","additionalAlg","supported","asyncDigest","pbkdf2DeriveBits","xDeriveBits","ecDeriveBits","hkdfDeriveBits","deriveKey","derivedKeyAlgorithm","getKeyLength","derivedBits","pqcAlgos","wrappingKey","wrapAlgorithm","jwkString","JSON","stringify","paddedLength","paddedBuffer","alloc","copy","writeUInt8","wrappedKey","unwrappingKey","unwrapAlgorithm","unwrappedKeyAlgorithm","decrypted","nullIndex","indexOf","toString","trim","parse","rsa_generateKeyPair","ec_generateKeyPair","ed_generateKeyPairWebCrypto","mldsa_generateKeyPairWebCrypto","x_generateKeyPairWebCrypto","mlkem_generateKeyPairWebCrypto","getPublicKey","publicKeyObject","createPublicKey","toCryptoKey","ecImportKey","_encapsulateCore","variant","mlkem","MlKem","setPublicKey","encapsulateSync","_decapsulateCore","ciphertext","setPrivateKey","decapsulateSync","sharedKeyAlgorithm","sharedKey","importedKey","exports","subtle","hmacAlg"],"sources":["subtle.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport { Buffer as SBuffer } from 'safe-buffer';\r\nimport type {\r\n SubtleAlgorithm,\r\n KeyUsage,\r\n BinaryLike,\r\n BufferLike,\r\n JWK,\r\n AnyAlgorithm,\r\n ImportFormat,\r\n AesKeyGenParams,\r\n EncryptDecryptParams,\r\n Operation,\r\n AesCtrParams,\r\n AesCbcParams,\r\n AesGcmParams,\r\n AesOcbParams,\r\n RsaOaepParams,\r\n ChaCha20Poly1305Params,\r\n} from './utils';\r\nimport { KFormatType, KeyEncoding, KeyType } from './utils';\r\nimport {\r\n CryptoKey,\r\n KeyObject,\r\n PublicKeyObject,\r\n PrivateKeyObject,\r\n SecretKeyObject,\r\n} from './keys';\r\nimport type { CryptoKeyPair } from './utils/types';\r\nimport { bufferLikeToArrayBuffer } from './utils/conversion';\r\nimport { argon2Sync } from './argon2';\r\nimport { lazyDOMException } from './utils/errors';\r\nimport { normalizeHashName, HashContext } from './utils/hashnames';\r\nimport { validateMaxBufferLength } from './utils/validation';\r\nimport { asyncDigest } from './hash';\r\nimport { createSecretKey, createPublicKey } from './keys';\r\nimport { NitroModules } from 'react-native-nitro-modules';\r\nimport type { KeyObjectHandle } from './specs/v1/keyObjectHandle.nitro';\r\nimport type { RsaCipher } from './specs/v1/rsaCipher.nitro';\r\nimport type { CipherFactory } from './specs/v1/cipher.nitro';\r\nimport { pbkdf2DeriveBits } from './pbkdf2';\r\nimport {\r\n ecImportKey,\r\n ecdsaSignVerify,\r\n ec_generateKeyPair,\r\n ecDeriveBits,\r\n} from './ec';\r\nimport { rsa_generateKeyPair } from './rsa';\r\nimport { getRandomValues } from './random';\r\nimport { createHmac } from './hmac';\r\nimport type { Kmac } from './specs/v1/kmac.nitro';\r\nimport { timingSafeEqual } from './utils/timingSafeEqual';\r\nimport { createSign, createVerify } from './keys/signVerify';\r\nimport {\r\n ed_generateKeyPairWebCrypto,\r\n x_generateKeyPairWebCrypto,\r\n xDeriveBits,\r\n Ed,\r\n} from './ed';\r\nimport { mldsa_generateKeyPairWebCrypto, type MlDsaVariant } from './mldsa';\r\nimport {\r\n mlkem_generateKeyPairWebCrypto,\r\n type MlKemVariant,\r\n MlKem,\r\n} from './mlkem';\r\nimport type { EncapsulateResult } from './utils';\r\nimport { hkdfDeriveBits, type HkdfAlgorithm } from './hkdf';\r\n// Temporary enums that need to be defined\r\n\r\nenum KWebCryptoKeyFormat {\r\n kWebCryptoKeyFormatRaw,\r\n kWebCryptoKeyFormatSPKI,\r\n kWebCryptoKeyFormatPKCS8,\r\n}\r\n\r\nenum CipherOrWrapMode {\r\n kWebCryptoCipherEncrypt,\r\n kWebCryptoCipherDecrypt,\r\n}\r\n\r\n// Placeholder functions that need to be implemented\r\nfunction hasAnyNotIn(usages: KeyUsage[], allowed: KeyUsage[]): boolean {\r\n return usages.some(usage => !allowed.includes(usage));\r\n}\r\n\r\nfunction normalizeAlgorithm(\r\n algorithm: SubtleAlgorithm | AnyAlgorithm,\r\n _operation: Operation,\r\n): SubtleAlgorithm {\r\n if (typeof algorithm === 'string') {\r\n return { name: algorithm };\r\n }\r\n return algorithm as SubtleAlgorithm;\r\n}\r\n\r\nfunction getAlgorithmName(name: string, length: number): string {\r\n switch (name) {\r\n case 'AES-CBC':\r\n return `A${length}CBC`;\r\n case 'AES-CTR':\r\n return `A${length}CTR`;\r\n case 'AES-GCM':\r\n return `A${length}GCM`;\r\n case 'AES-KW':\r\n return `A${length}KW`;\r\n case 'AES-OCB':\r\n return `A${length}OCB`;\r\n case 'ChaCha20-Poly1305':\r\n return 'C20P';\r\n default:\r\n return `${name}${length}`;\r\n }\r\n}\r\n\r\n// Placeholder implementations for missing functions\r\nfunction ecExportKey(key: CryptoKey, format: KWebCryptoKeyFormat): ArrayBuffer {\r\n const keyObject = key.keyObject;\r\n\r\n if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatRaw) {\r\n return bufferLikeToArrayBuffer(keyObject.handle.exportKey());\r\n } else if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI) {\r\n const exported = keyObject.export({ format: 'der', type: 'spki' });\r\n return bufferLikeToArrayBuffer(exported);\r\n } else if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatPKCS8) {\r\n const exported = keyObject.export({ format: 'der', type: 'pkcs8' });\r\n return bufferLikeToArrayBuffer(exported);\r\n } else {\r\n throw new Error(`Unsupported EC export format: ${format}`);\r\n }\r\n}\r\n\r\nfunction rsaExportKey(\r\n key: CryptoKey,\r\n format: KWebCryptoKeyFormat,\r\n): ArrayBuffer {\r\n const keyObject = key.keyObject;\r\n\r\n if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI) {\r\n // Export public key in SPKI format\r\n const exported = keyObject.export({ format: 'der', type: 'spki' });\r\n return bufferLikeToArrayBuffer(exported);\r\n } else if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatPKCS8) {\r\n // Export private key in PKCS8 format\r\n const exported = keyObject.export({ format: 'der', type: 'pkcs8' });\r\n return bufferLikeToArrayBuffer(exported);\r\n } else {\r\n throw new Error(`Unsupported RSA export format: ${format}`);\r\n }\r\n}\r\n\r\nasync function rsaCipher(\r\n mode: CipherOrWrapMode,\r\n key: CryptoKey,\r\n data: ArrayBuffer,\r\n algorithm: EncryptDecryptParams,\r\n): Promise<ArrayBuffer> {\r\n const rsaParams = algorithm as RsaOaepParams;\r\n\r\n // Validate key type matches operation\r\n const expectedType =\r\n mode === CipherOrWrapMode.kWebCryptoCipherEncrypt ? 'public' : 'private';\r\n if (key.type !== expectedType) {\r\n throw lazyDOMException(\r\n 'The requested operation is not valid for the provided key',\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n // Get hash algorithm from key\r\n const hashAlgorithm = normalizeHashName(key.algorithm.hash);\r\n\r\n // Prepare label (optional)\r\n const label = rsaParams.label\r\n ? bufferLikeToArrayBuffer(rsaParams.label)\r\n : undefined;\r\n\r\n // Create RSA cipher instance\r\n const rsaCipherModule =\r\n NitroModules.createHybridObject<RsaCipher>('RsaCipher');\r\n\r\n // RSA-OAEP padding constant = 4\r\n const RSA_PKCS1_OAEP_PADDING = 4;\r\n\r\n if (mode === CipherOrWrapMode.kWebCryptoCipherEncrypt) {\r\n // Encrypt with public key\r\n return rsaCipherModule.encrypt(\r\n key.keyObject.handle,\r\n data,\r\n RSA_PKCS1_OAEP_PADDING,\r\n hashAlgorithm,\r\n label,\r\n );\r\n } else {\r\n // Decrypt with private key\r\n return rsaCipherModule.decrypt(\r\n key.keyObject.handle,\r\n data,\r\n RSA_PKCS1_OAEP_PADDING,\r\n hashAlgorithm,\r\n label,\r\n );\r\n }\r\n}\r\n\r\nasync function aesCipher(\r\n mode: CipherOrWrapMode,\r\n key: CryptoKey,\r\n data: ArrayBuffer,\r\n algorithm: EncryptDecryptParams,\r\n): Promise<ArrayBuffer> {\r\n const { name } = algorithm;\r\n\r\n switch (name) {\r\n case 'AES-CTR':\r\n return aesCtrCipher(mode, key, data, algorithm as AesCtrParams);\r\n case 'AES-CBC':\r\n return aesCbcCipher(mode, key, data, algorithm as AesCbcParams);\r\n case 'AES-GCM':\r\n return aesGcmCipher(mode, key, data, algorithm as AesGcmParams);\r\n case 'AES-OCB':\r\n return aesOcbCipher(mode, key, data, algorithm as AesOcbParams);\r\n default:\r\n throw lazyDOMException(\r\n `Unsupported AES algorithm: ${name}`,\r\n 'NotSupportedError',\r\n );\r\n }\r\n}\r\n\r\nasync function aesCtrCipher(\r\n mode: CipherOrWrapMode,\r\n key: CryptoKey,\r\n data: ArrayBuffer,\r\n algorithm: AesCtrParams,\r\n): Promise<ArrayBuffer> {\r\n // Validate counter and length\r\n if (!algorithm.counter || algorithm.counter.byteLength !== 16) {\r\n throw lazyDOMException(\r\n 'AES-CTR algorithm.counter must be 16 bytes',\r\n 'OperationError',\r\n );\r\n }\r\n\r\n if (algorithm.length < 1 || algorithm.length > 128) {\r\n throw lazyDOMException(\r\n 'AES-CTR algorithm.length must be between 1 and 128',\r\n 'OperationError',\r\n );\r\n }\r\n\r\n // Get cipher type based on key length\r\n const keyLength = (key.algorithm as { length: number }).length;\r\n const cipherType = `aes-${keyLength}-ctr`;\r\n\r\n // Create cipher\r\n const factory =\r\n NitroModules.createHybridObject<CipherFactory>('CipherFactory');\r\n const cipher = factory.createCipher({\r\n isCipher: mode === CipherOrWrapMode.kWebCryptoCipherEncrypt,\r\n cipherType,\r\n cipherKey: bufferLikeToArrayBuffer(key.keyObject.export()),\r\n iv: bufferLikeToArrayBuffer(algorithm.counter),\r\n });\r\n\r\n // Process data\r\n const updated = cipher.update(data);\r\n const final = cipher.final();\r\n\r\n // Concatenate results\r\n const result = new Uint8Array(updated.byteLength + final.byteLength);\r\n result.set(new Uint8Array(updated), 0);\r\n result.set(new Uint8Array(final), updated.byteLength);\r\n\r\n return result.buffer;\r\n}\r\n\r\nasync function aesCbcCipher(\r\n mode: CipherOrWrapMode,\r\n key: CryptoKey,\r\n data: ArrayBuffer,\r\n algorithm: AesCbcParams,\r\n): Promise<ArrayBuffer> {\r\n // Validate IV\r\n const iv = bufferLikeToArrayBuffer(algorithm.iv);\r\n if (iv.byteLength !== 16) {\r\n throw lazyDOMException(\r\n 'algorithm.iv must contain exactly 16 bytes',\r\n 'OperationError',\r\n );\r\n }\r\n\r\n // Get cipher type based on key length\r\n const keyLength = (key.algorithm as { length: number }).length;\r\n const cipherType = `aes-${keyLength}-cbc`;\r\n\r\n // Create cipher\r\n const factory =\r\n NitroModules.createHybridObject<CipherFactory>('CipherFactory');\r\n const cipher = factory.createCipher({\r\n isCipher: mode === CipherOrWrapMode.kWebCryptoCipherEncrypt,\r\n cipherType,\r\n cipherKey: bufferLikeToArrayBuffer(key.keyObject.export()),\r\n iv,\r\n });\r\n\r\n // Process data\r\n const updated = cipher.update(data);\r\n const final = cipher.final();\r\n\r\n // Concatenate results\r\n const result = new Uint8Array(updated.byteLength + final.byteLength);\r\n result.set(new Uint8Array(updated), 0);\r\n result.set(new Uint8Array(final), updated.byteLength);\r\n\r\n return result.buffer;\r\n}\r\n\r\ninterface AeadCipherConfig {\r\n algorithmName: string;\r\n validTagLengths: number[];\r\n cipherSuffix: string;\r\n iv: ArrayBuffer;\r\n}\r\n\r\nasync function aesAeadCipher(\r\n mode: CipherOrWrapMode,\r\n key: CryptoKey,\r\n data: ArrayBuffer,\r\n config: AeadCipherConfig,\r\n additionalData?: BufferLike,\r\n tagLength: number = 128,\r\n): Promise<ArrayBuffer> {\r\n if (!config.validTagLengths.includes(tagLength)) {\r\n throw lazyDOMException(\r\n `${tagLength} is not a valid ${config.algorithmName} tag length`,\r\n 'OperationError',\r\n );\r\n }\r\n\r\n const tagByteLength = tagLength / 8;\r\n const keyLength = (key.algorithm as { length: number }).length;\r\n const cipherType = `aes-${keyLength}-${config.cipherSuffix}`;\r\n\r\n const factory =\r\n NitroModules.createHybridObject<CipherFactory>('CipherFactory');\r\n const cipher = factory.createCipher({\r\n isCipher: mode === CipherOrWrapMode.kWebCryptoCipherEncrypt,\r\n cipherType,\r\n cipherKey: bufferLikeToArrayBuffer(key.keyObject.export()),\r\n iv: config.iv,\r\n authTagLen: tagByteLength,\r\n });\r\n\r\n let processData: ArrayBuffer;\r\n\r\n if (mode === CipherOrWrapMode.kWebCryptoCipherDecrypt) {\r\n const dataView = new Uint8Array(data);\r\n\r\n if (dataView.byteLength < tagByteLength) {\r\n throw lazyDOMException(\r\n 'The provided data is too small.',\r\n 'OperationError',\r\n );\r\n }\r\n\r\n const ciphertextLength = dataView.byteLength - tagByteLength;\r\n processData = dataView.slice(0, ciphertextLength).buffer;\r\n const authTag = dataView.slice(ciphertextLength).buffer;\r\n cipher.setAuthTag(authTag);\r\n } else {\r\n processData = data;\r\n }\r\n\r\n if (additionalData) {\r\n cipher.setAAD(bufferLikeToArrayBuffer(additionalData));\r\n }\r\n\r\n const updated = cipher.update(processData);\r\n const final = cipher.final();\r\n\r\n if (mode === CipherOrWrapMode.kWebCryptoCipherEncrypt) {\r\n const tag = cipher.getAuthTag();\r\n const result = new Uint8Array(\r\n updated.byteLength + final.byteLength + tag.byteLength,\r\n );\r\n result.set(new Uint8Array(updated), 0);\r\n result.set(new Uint8Array(final), updated.byteLength);\r\n result.set(new Uint8Array(tag), updated.byteLength + final.byteLength);\r\n return result.buffer;\r\n } else {\r\n const result = new Uint8Array(updated.byteLength + final.byteLength);\r\n result.set(new Uint8Array(updated), 0);\r\n result.set(new Uint8Array(final), updated.byteLength);\r\n return result.buffer;\r\n }\r\n}\r\n\r\nasync function aesGcmCipher(\r\n mode: CipherOrWrapMode,\r\n key: CryptoKey,\r\n data: ArrayBuffer,\r\n algorithm: AesGcmParams,\r\n): Promise<ArrayBuffer> {\r\n return aesAeadCipher(\r\n mode,\r\n key,\r\n data,\r\n {\r\n algorithmName: 'AES-GCM',\r\n validTagLengths: [32, 64, 96, 104, 112, 120, 128],\r\n cipherSuffix: 'gcm',\r\n iv: bufferLikeToArrayBuffer(algorithm.iv),\r\n },\r\n algorithm.additionalData,\r\n algorithm.tagLength,\r\n );\r\n}\r\n\r\nasync function aesOcbCipher(\r\n mode: CipherOrWrapMode,\r\n key: CryptoKey,\r\n data: ArrayBuffer,\r\n algorithm: AesOcbParams,\r\n): Promise<ArrayBuffer> {\r\n const ivBuffer = bufferLikeToArrayBuffer(algorithm.iv);\r\n if (ivBuffer.byteLength < 1 || ivBuffer.byteLength > 15) {\r\n throw lazyDOMException(\r\n 'AES-OCB algorithm.iv must be between 1 and 15 bytes',\r\n 'OperationError',\r\n );\r\n }\r\n\r\n return aesAeadCipher(\r\n mode,\r\n key,\r\n data,\r\n {\r\n algorithmName: 'AES-OCB',\r\n validTagLengths: [64, 96, 128],\r\n cipherSuffix: 'ocb',\r\n iv: ivBuffer,\r\n },\r\n algorithm.additionalData,\r\n algorithm.tagLength,\r\n );\r\n}\r\n\r\nasync function aesKwCipher(\r\n mode: CipherOrWrapMode,\r\n key: CryptoKey,\r\n data: ArrayBuffer,\r\n): Promise<ArrayBuffer> {\r\n const isWrap = mode === CipherOrWrapMode.kWebCryptoCipherEncrypt;\r\n\r\n // AES-KW requires input to be a multiple of 8 bytes (64 bits)\r\n if (data.byteLength % 8 !== 0) {\r\n throw lazyDOMException(\r\n `AES-KW input length must be a multiple of 8 bytes, got ${data.byteLength}`,\r\n 'OperationError',\r\n );\r\n }\r\n\r\n // AES-KW requires at least 16 bytes of input (128 bits)\r\n if (isWrap && data.byteLength < 16) {\r\n throw lazyDOMException(\r\n `AES-KW input must be at least 16 bytes, got ${data.byteLength}`,\r\n 'OperationError',\r\n );\r\n }\r\n\r\n // Get cipher type based on key length\r\n const keyLength = (key.algorithm as { length: number }).length;\r\n // Use aes*-wrap for both operations (matching Node.js)\r\n const cipherType = `aes${keyLength}-wrap`;\r\n\r\n // Export key material\r\n const exportedKey = key.keyObject.export();\r\n const cipherKey = bufferLikeToArrayBuffer(exportedKey);\r\n\r\n // AES-KW uses a default IV as specified in RFC 3394\r\n const defaultWrapIV = new Uint8Array([\r\n 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,\r\n ]);\r\n\r\n const factory =\r\n NitroModules.createHybridObject<CipherFactory>('CipherFactory');\r\n\r\n const cipher = factory.createCipher({\r\n isCipher: isWrap,\r\n cipherType,\r\n cipherKey,\r\n iv: defaultWrapIV.buffer, // RFC 3394 default IV for AES-KW\r\n });\r\n\r\n // Process data\r\n const updated = cipher.update(data);\r\n const final = cipher.final();\r\n\r\n // Concatenate results\r\n const result = new Uint8Array(updated.byteLength + final.byteLength);\r\n result.set(new Uint8Array(updated), 0);\r\n result.set(new Uint8Array(final), updated.byteLength);\r\n\r\n return result.buffer;\r\n}\r\n\r\nasync function chaCha20Poly1305Cipher(\r\n mode: CipherOrWrapMode,\r\n key: CryptoKey,\r\n data: ArrayBuffer,\r\n algorithm: ChaCha20Poly1305Params,\r\n): Promise<ArrayBuffer> {\r\n const { iv, additionalData, tagLength = 128 } = algorithm;\r\n\r\n // Validate IV (must be 12 bytes for ChaCha20-Poly1305)\r\n const ivBuffer = bufferLikeToArrayBuffer(iv);\r\n if (!ivBuffer || ivBuffer.byteLength !== 12) {\r\n throw lazyDOMException(\r\n 'ChaCha20-Poly1305 IV must be exactly 12 bytes',\r\n 'OperationError',\r\n );\r\n }\r\n\r\n // Validate tag length (only 128-bit supported)\r\n if (tagLength !== 128) {\r\n throw lazyDOMException(\r\n 'ChaCha20-Poly1305 only supports 128-bit auth tags',\r\n 'NotSupportedError',\r\n );\r\n }\r\n\r\n const tagByteLength = 16; // 128 bits = 16 bytes\r\n\r\n // Create cipher using existing ChaCha20-Poly1305 implementation\r\n const factory =\r\n NitroModules.createHybridObject<CipherFactory>('CipherFactory');\r\n const cipher = factory.createCipher({\r\n isCipher: mode === CipherOrWrapMode.kWebCryptoCipherEncrypt,\r\n cipherType: 'chacha20-poly1305',\r\n cipherKey: bufferLikeToArrayBuffer(key.keyObject.export()),\r\n iv: ivBuffer,\r\n authTagLen: tagByteLength,\r\n });\r\n\r\n let processData: ArrayBuffer;\r\n let authTag: ArrayBuffer | undefined;\r\n\r\n if (mode === CipherOrWrapMode.kWebCryptoCipherDecrypt) {\r\n // For decryption, extract auth tag from end of data\r\n const dataView = new Uint8Array(data);\r\n\r\n if (dataView.byteLength < tagByteLength) {\r\n throw lazyDOMException(\r\n 'The provided data is too small.',\r\n 'OperationError',\r\n );\r\n }\r\n\r\n // Split data and tag\r\n const ciphertextLength = dataView.byteLength - tagByteLength;\r\n processData = dataView.slice(0, ciphertextLength).buffer;\r\n authTag = dataView.slice(ciphertextLength).buffer;\r\n\r\n // Set auth tag for verification\r\n cipher.setAuthTag(authTag);\r\n } else {\r\n processData = data;\r\n }\r\n\r\n // Set additional authenticated data if provided\r\n if (additionalData) {\r\n cipher.setAAD(bufferLikeToArrayBuffer(additionalData));\r\n }\r\n\r\n // Process data\r\n const updated = cipher.update(processData);\r\n const final = cipher.final();\r\n\r\n if (mode === CipherOrWrapMode.kWebCryptoCipherEncrypt) {\r\n // For encryption, append auth tag to result\r\n const tag = cipher.getAuthTag();\r\n const result = new Uint8Array(\r\n updated.byteLength + final.byteLength + tag.byteLength,\r\n );\r\n result.set(new Uint8Array(updated), 0);\r\n result.set(new Uint8Array(final), updated.byteLength);\r\n result.set(new Uint8Array(tag), updated.byteLength + final.byteLength);\r\n return result.buffer;\r\n } else {\r\n // For decryption, just concatenate plaintext\r\n const result = new Uint8Array(updated.byteLength + final.byteLength);\r\n result.set(new Uint8Array(updated), 0);\r\n result.set(new Uint8Array(final), updated.byteLength);\r\n return result.buffer;\r\n }\r\n}\r\n\r\nasync function aesGenerateKey(\r\n algorithm: AesKeyGenParams,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKey> {\r\n const { length } = algorithm;\r\n const name = algorithm.name;\r\n\r\n if (!name) {\r\n throw lazyDOMException('Algorithm name is required', 'OperationError');\r\n }\r\n\r\n // Validate key length\r\n if (![128, 192, 256].includes(length)) {\r\n throw lazyDOMException(\r\n `Invalid AES key length: ${length}. Must be 128, 192, or 256.`,\r\n 'OperationError',\r\n );\r\n }\r\n\r\n // Validate usages\r\n const validUsages: KeyUsage[] = [\r\n 'encrypt',\r\n 'decrypt',\r\n 'wrapKey',\r\n 'unwrapKey',\r\n ];\r\n if (hasAnyNotIn(keyUsages, validUsages)) {\r\n throw lazyDOMException(`Unsupported key usage for ${name}`, 'SyntaxError');\r\n }\r\n\r\n // Generate random key bytes\r\n const keyBytes = new Uint8Array(length / 8);\r\n getRandomValues(keyBytes);\r\n\r\n // Create secret key\r\n const keyObject = createSecretKey(keyBytes);\r\n\r\n // Construct algorithm object with guaranteed name\r\n const keyAlgorithm: SubtleAlgorithm = { name, length };\r\n\r\n return new CryptoKey(keyObject, keyAlgorithm, keyUsages, extractable);\r\n}\r\n\r\nasync function hmacGenerateKey(\r\n algorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKey> {\r\n // Validate usages\r\n if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {\r\n throw lazyDOMException('Unsupported key usage for HMAC key', 'SyntaxError');\r\n }\r\n\r\n // Get hash algorithm\r\n const hash = algorithm.hash;\r\n if (!hash) {\r\n throw lazyDOMException(\r\n 'HMAC algorithm requires a hash parameter',\r\n 'TypeError',\r\n );\r\n }\r\n\r\n const hashName = normalizeHashName(hash);\r\n\r\n // Determine key length\r\n let length = algorithm.length;\r\n if (length === undefined) {\r\n // Use hash output length as default key length\r\n switch (hashName) {\r\n case 'SHA-1':\r\n length = 160;\r\n break;\r\n case 'SHA-256':\r\n length = 256;\r\n break;\r\n case 'SHA-384':\r\n length = 384;\r\n break;\r\n case 'SHA-512':\r\n length = 512;\r\n break;\r\n default:\r\n length = 256; // Default to 256 bits\r\n }\r\n }\r\n\r\n if (length === 0) {\r\n throw lazyDOMException(\r\n 'Zero-length key is not supported',\r\n 'OperationError',\r\n );\r\n }\r\n\r\n // Generate random key bytes\r\n const keyBytes = new Uint8Array(Math.ceil(length / 8));\r\n getRandomValues(keyBytes);\r\n\r\n // Create secret key\r\n const keyObject = createSecretKey(keyBytes);\r\n\r\n // Construct algorithm object with hash normalized to { name: string } format per WebCrypto spec\r\n const webCryptoHashName = normalizeHashName(hash, HashContext.WebCrypto);\r\n const keyAlgorithm: SubtleAlgorithm = {\r\n name: 'HMAC',\r\n hash: { name: webCryptoHashName },\r\n length,\r\n };\r\n\r\n return new CryptoKey(keyObject, keyAlgorithm, keyUsages, extractable);\r\n}\r\n\r\nasync function kmacGenerateKey(\r\n algorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKey> {\r\n const { name } = algorithm;\r\n\r\n if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for ${name} key`,\r\n 'SyntaxError',\r\n );\r\n }\r\n\r\n const defaultLength = name === 'KMAC128' ? 128 : 256;\r\n const length = algorithm.length ?? defaultLength;\r\n\r\n if (length === 0) {\r\n throw lazyDOMException(\r\n 'Zero-length key is not supported',\r\n 'OperationError',\r\n );\r\n }\r\n\r\n const keyBytes = new Uint8Array(Math.ceil(length / 8));\r\n getRandomValues(keyBytes);\r\n\r\n const keyObject = createSecretKey(keyBytes);\r\n\r\n const keyAlgorithm: SubtleAlgorithm = { name: name as AnyAlgorithm, length };\r\n\r\n return new CryptoKey(keyObject, keyAlgorithm, keyUsages, extractable);\r\n}\r\n\r\nfunction kmacSignVerify(\r\n key: CryptoKey,\r\n data: BufferLike,\r\n algorithm: SubtleAlgorithm,\r\n signature?: BufferLike,\r\n): ArrayBuffer | boolean {\r\n const { name } = algorithm;\r\n\r\n const defaultLength = name === 'KMAC128' ? 256 : 512;\r\n const outputLengthBits = algorithm.length ?? defaultLength;\r\n\r\n if (outputLengthBits % 8 !== 0) {\r\n throw lazyDOMException(\r\n 'KMAC output length must be a multiple of 8',\r\n 'OperationError',\r\n );\r\n }\r\n\r\n const outputLengthBytes = outputLengthBits / 8;\r\n\r\n const keyData = key.keyObject.export();\r\n\r\n const kmac = NitroModules.createHybridObject<Kmac>('Kmac');\r\n\r\n let customizationBuffer: ArrayBuffer | undefined;\r\n if (algorithm.customization !== undefined) {\r\n customizationBuffer = bufferLikeToArrayBuffer(algorithm.customization);\r\n }\r\n\r\n kmac.createKmac(\r\n name,\r\n bufferLikeToArrayBuffer(keyData),\r\n outputLengthBytes,\r\n customizationBuffer,\r\n );\r\n kmac.update(bufferLikeToArrayBuffer(data));\r\n const computed = kmac.digest();\r\n\r\n if (signature === undefined) {\r\n return computed;\r\n }\r\n\r\n const sigBuffer = bufferLikeToArrayBuffer(signature);\r\n if (computed.byteLength !== sigBuffer.byteLength) {\r\n return false;\r\n }\r\n\r\n return timingSafeEqual(new Uint8Array(computed), new Uint8Array(sigBuffer));\r\n}\r\n\r\nasync function kmacImportKey(\r\n algorithm: SubtleAlgorithm,\r\n format: ImportFormat,\r\n data: BufferLike | JWK,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKey> {\r\n const { name } = algorithm;\r\n\r\n if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for ${name} key`,\r\n 'SyntaxError',\r\n );\r\n }\r\n\r\n let keyObject: KeyObject;\r\n\r\n if (format === 'jwk') {\r\n const jwk = data as JWK;\r\n\r\n if (!jwk || typeof jwk !== 'object') {\r\n throw lazyDOMException('Invalid keyData', 'DataError');\r\n }\r\n\r\n if (jwk.kty !== 'oct') {\r\n throw lazyDOMException('Invalid JWK format for KMAC key', 'DataError');\r\n }\r\n\r\n const expectedAlg = name === 'KMAC128' ? 'K128' : 'K256';\r\n if (jwk.alg !== undefined && jwk.alg !== expectedAlg) {\r\n throw lazyDOMException(\r\n 'JWK \"alg\" does not match the requested algorithm',\r\n 'DataError',\r\n );\r\n }\r\n\r\n const handle =\r\n NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');\r\n const keyType = handle.initJwk(jwk, undefined);\r\n\r\n if (keyType === undefined || keyType !== 0) {\r\n throw lazyDOMException('Failed to import KMAC JWK', 'DataError');\r\n }\r\n\r\n keyObject = new SecretKeyObject(handle);\r\n } else if (format === 'raw' || format === 'raw-secret') {\r\n keyObject = createSecretKey(data as BinaryLike);\r\n } else {\r\n throw lazyDOMException(\r\n `Unable to import ${name} key with format ${format}`,\r\n 'NotSupportedError',\r\n );\r\n }\r\n\r\n const exported = keyObject.export();\r\n const keyLength = exported.byteLength * 8;\r\n\r\n if (keyLength === 0) {\r\n throw lazyDOMException('Zero-length key is not supported', 'DataError');\r\n }\r\n\r\n if (algorithm.length !== undefined && algorithm.length !== keyLength) {\r\n throw lazyDOMException('Invalid key length', 'DataError');\r\n }\r\n\r\n const keyAlgorithm: SubtleAlgorithm = {\r\n name: name as AnyAlgorithm,\r\n length: keyLength,\r\n };\r\n\r\n return new CryptoKey(keyObject, keyAlgorithm, keyUsages, extractable);\r\n}\r\n\r\nfunction rsaImportKey(\r\n format: ImportFormat,\r\n data: BufferLike | JWK,\r\n algorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): CryptoKey {\r\n const { name } = algorithm;\r\n\r\n // Validate usages\r\n let checkSet: KeyUsage[];\r\n switch (name) {\r\n case 'RSASSA-PKCS1-v1_5':\r\n case 'RSA-PSS':\r\n checkSet = ['sign', 'verify'];\r\n break;\r\n case 'RSA-OAEP':\r\n checkSet = ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey'];\r\n break;\r\n default:\r\n throw new Error(`Unsupported RSA algorithm: ${name}`);\r\n }\r\n\r\n if (hasAnyNotIn(keyUsages, checkSet)) {\r\n throw new Error(`Unsupported key usage for ${name}`);\r\n }\r\n\r\n let keyObject: KeyObject;\r\n\r\n if (format === 'jwk') {\r\n const jwk = data as JWK;\r\n\r\n // Validate JWK\r\n if (jwk.kty !== 'RSA') {\r\n throw new Error('Invalid JWK format for RSA key');\r\n }\r\n\r\n const handle =\r\n NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');\r\n const keyType = handle.initJwk(jwk, undefined);\r\n\r\n if (keyType === undefined) {\r\n throw new Error('Failed to import RSA JWK');\r\n }\r\n\r\n // Create the appropriate KeyObject based on type\r\n if (keyType === 1) {\r\n keyObject = new PublicKeyObject(handle);\r\n } else if (keyType === 2) {\r\n keyObject = new PrivateKeyObject(handle);\r\n } else {\r\n throw new Error('Unexpected key type from RSA JWK import');\r\n }\r\n } else if (format === 'spki') {\r\n const keyData = bufferLikeToArrayBuffer(data as BufferLike);\r\n keyObject = KeyObject.createKeyObject(\r\n 'public',\r\n keyData,\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n );\r\n } else if (format === 'pkcs8') {\r\n const keyData = bufferLikeToArrayBuffer(data as BufferLike);\r\n keyObject = KeyObject.createKeyObject(\r\n 'private',\r\n keyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n } else {\r\n throw new Error(`Unsupported format for RSA import: ${format}`);\r\n }\r\n\r\n // Get the modulus length from the key and add it to the algorithm\r\n const keyDetails = (keyObject as PublicKeyObject | PrivateKeyObject)\r\n .asymmetricKeyDetails;\r\n\r\n // Convert publicExponent number to big-endian byte array\r\n let publicExponentBytes: Uint8Array | undefined;\r\n if (keyDetails?.publicExponent) {\r\n const exp = keyDetails.publicExponent;\r\n // Convert number to big-endian bytes\r\n const bytes: number[] = [];\r\n let value = exp;\r\n while (value > 0) {\r\n bytes.unshift(value & 0xff);\r\n value = Math.floor(value / 256);\r\n }\r\n publicExponentBytes = new Uint8Array(bytes.length > 0 ? bytes : [0]);\r\n }\r\n\r\n // Normalize hash to { name: string } format per WebCrypto spec\r\n const hashName = normalizeHashName(algorithm.hash, HashContext.WebCrypto);\r\n const normalizedHash = { name: hashName };\r\n\r\n const algorithmWithDetails = {\r\n ...algorithm,\r\n modulusLength: keyDetails?.modulusLength,\r\n publicExponent: publicExponentBytes,\r\n hash: normalizedHash,\r\n };\r\n\r\n return new CryptoKey(keyObject, algorithmWithDetails, keyUsages, extractable);\r\n}\r\n\r\nasync function hmacImportKey(\r\n algorithm: SubtleAlgorithm,\r\n format: ImportFormat,\r\n data: BufferLike | JWK,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKey> {\r\n // Validate usages\r\n if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {\r\n throw new Error('Unsupported key usage for an HMAC key');\r\n }\r\n\r\n let keyObject: KeyObject;\r\n\r\n if (format === 'jwk') {\r\n const jwk = data as JWK;\r\n\r\n // Validate JWK\r\n if (!jwk || typeof jwk !== 'object') {\r\n throw new Error('Invalid keyData');\r\n }\r\n\r\n if (jwk.kty !== 'oct') {\r\n throw new Error('Invalid JWK format for HMAC key');\r\n }\r\n\r\n // Validate key length if specified\r\n if (algorithm.length !== undefined) {\r\n if (!jwk.k) {\r\n throw new Error('JWK missing key data');\r\n }\r\n // Decode to check length\r\n const decoded = SBuffer.from(jwk.k, 'base64');\r\n const keyBitLength = decoded.length * 8;\r\n if (algorithm.length === 0) {\r\n throw new Error('Zero-length key is not supported');\r\n }\r\n if (algorithm.length !== keyBitLength) {\r\n throw new Error('Invalid key length');\r\n }\r\n }\r\n\r\n const handle =\r\n NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');\r\n const keyType = handle.initJwk(jwk, undefined);\r\n\r\n if (keyType === undefined || keyType !== 0) {\r\n throw new Error('Failed to import HMAC JWK');\r\n }\r\n\r\n keyObject = new SecretKeyObject(handle);\r\n } else if (format === 'raw') {\r\n keyObject = createSecretKey(data as BinaryLike);\r\n } else {\r\n throw new Error(`Unable to import HMAC key with format ${format}`);\r\n }\r\n\r\n // Normalize hash to { name: string } format per WebCrypto spec\r\n const hashName = normalizeHashName(algorithm.hash, HashContext.WebCrypto);\r\n const normalizedAlgorithm: SubtleAlgorithm = {\r\n ...algorithm,\r\n name: 'HMAC',\r\n hash: { name: hashName },\r\n };\r\n\r\n return new CryptoKey(keyObject, normalizedAlgorithm, keyUsages, extractable);\r\n}\r\n\r\nasync function aesImportKey(\r\n algorithm: SubtleAlgorithm,\r\n format: ImportFormat,\r\n data: BufferLike | JWK,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKey> {\r\n const { name, length } = algorithm;\r\n\r\n // Validate usages\r\n const validUsages: KeyUsage[] = [\r\n 'encrypt',\r\n 'decrypt',\r\n 'wrapKey',\r\n 'unwrapKey',\r\n ];\r\n if (hasAnyNotIn(keyUsages, validUsages)) {\r\n throw new Error(`Unsupported key usage for ${name}`);\r\n }\r\n\r\n let keyObject: KeyObject;\r\n let actualLength: number;\r\n\r\n if (format === 'jwk') {\r\n const jwk = data as JWK;\r\n\r\n // Validate JWK\r\n if (jwk.kty !== 'oct') {\r\n throw new Error('Invalid JWK format for AES key');\r\n }\r\n\r\n const handle =\r\n NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');\r\n const keyType = handle.initJwk(jwk, undefined);\r\n\r\n if (keyType === undefined || keyType !== 0) {\r\n throw new Error('Failed to import AES JWK');\r\n }\r\n\r\n keyObject = new SecretKeyObject(handle);\r\n\r\n // Get actual key length from imported key\r\n const exported = keyObject.export();\r\n actualLength = exported.byteLength * 8;\r\n } else if (format === 'raw') {\r\n const keyData = bufferLikeToArrayBuffer(data as BufferLike);\r\n actualLength = keyData.byteLength * 8;\r\n\r\n // Validate key length\r\n if (![128, 192, 256].includes(actualLength)) {\r\n throw new Error('Invalid AES key length');\r\n }\r\n\r\n keyObject = createSecretKey(keyData);\r\n } else {\r\n throw new Error(`Unsupported format for AES import: ${format}`);\r\n }\r\n\r\n // Validate length if specified\r\n if (length !== undefined && length !== actualLength) {\r\n throw new Error(\r\n `Key length mismatch: expected ${length}, got ${actualLength}`,\r\n );\r\n }\r\n\r\n return new CryptoKey(\r\n keyObject,\r\n { name, length: actualLength },\r\n keyUsages,\r\n extractable,\r\n );\r\n}\r\n\r\nfunction edImportKey(\r\n format: ImportFormat,\r\n data: BufferLike | JWK,\r\n algorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): CryptoKey {\r\n const { name } = algorithm;\r\n\r\n // Validate usages\r\n const isX = name === 'X25519' || name === 'X448';\r\n const allowedUsages: KeyUsage[] = isX\r\n ? ['deriveKey', 'deriveBits']\r\n : ['sign', 'verify'];\r\n\r\n if (hasAnyNotIn(keyUsages, allowedUsages)) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for ${name} key`,\r\n 'SyntaxError',\r\n );\r\n }\r\n\r\n let keyObject: KeyObject;\r\n\r\n if (format === 'spki') {\r\n // Import public key\r\n const keyData = bufferLikeToArrayBuffer(data as BufferLike);\r\n keyObject = KeyObject.createKeyObject(\r\n 'public',\r\n keyData,\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n );\r\n } else if (format === 'pkcs8') {\r\n // Import private key\r\n const keyData = bufferLikeToArrayBuffer(data as BufferLike);\r\n keyObject = KeyObject.createKeyObject(\r\n 'private',\r\n keyData,\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n } else if (format === 'raw') {\r\n // Raw format - public key only for Ed keys\r\n const keyData = bufferLikeToArrayBuffer(data as BufferLike);\r\n const handle =\r\n NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');\r\n // For raw Ed keys, we need to create them differently\r\n // Raw public keys are just the key bytes\r\n handle.init(1, keyData); // 1 = public key type\r\n keyObject = new PublicKeyObject(handle);\r\n } else if (format === 'jwk') {\r\n const jwkData = data as JWK;\r\n const handle =\r\n NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');\r\n const keyType = handle.initJwk(jwkData);\r\n if (keyType === undefined) {\r\n throw lazyDOMException('Invalid JWK data', 'DataError');\r\n }\r\n if (keyType === KeyType.PRIVATE) {\r\n keyObject = new PrivateKeyObject(handle);\r\n } else {\r\n keyObject = new PublicKeyObject(handle);\r\n }\r\n } else {\r\n throw lazyDOMException(\r\n `Unsupported format for ${name} import: ${format}`,\r\n 'NotSupportedError',\r\n );\r\n }\r\n\r\n return new CryptoKey(keyObject, { name }, keyUsages, extractable);\r\n}\r\n\r\nfunction pqcImportKeyObject(\r\n format: ImportFormat,\r\n data: BufferLike,\r\n name: string,\r\n): KeyObject {\r\n if (format === 'spki') {\r\n return KeyObject.createKeyObject(\r\n 'public',\r\n bufferLikeToArrayBuffer(data),\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n );\r\n } else if (format === 'pkcs8') {\r\n return KeyObject.createKeyObject(\r\n 'private',\r\n bufferLikeToArrayBuffer(data),\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n } else if (format === 'raw') {\r\n const handle =\r\n NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');\r\n if (!handle.initPqcRaw(name, bufferLikeToArrayBuffer(data), true)) {\r\n throw lazyDOMException(\r\n `Failed to import ${name} raw public key`,\r\n 'DataError',\r\n );\r\n }\r\n return new PublicKeyObject(handle);\r\n } else if (format === 'raw-seed') {\r\n const handle =\r\n NitroModules.createHybridObject<KeyObjectHandle>('KeyObjectHandle');\r\n if (!handle.initPqcRaw(name, bufferLikeToArrayBuffer(data), false)) {\r\n throw lazyDOMException(`Failed to import ${name} raw seed`, 'DataError');\r\n }\r\n return new PrivateKeyObject(handle);\r\n }\r\n throw lazyDOMException(\r\n `Unsupported format for ${name} import: ${format}`,\r\n 'NotSupportedError',\r\n );\r\n}\r\n\r\nfunction mldsaImportKey(\r\n format: ImportFormat,\r\n data: BufferLike,\r\n algorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): CryptoKey {\r\n const { name } = algorithm;\r\n const isPublicFormat = format === 'spki' || format === 'raw';\r\n if (hasAnyNotIn(keyUsages, isPublicFormat ? ['verify'] : ['sign'])) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for ${name} key`,\r\n 'SyntaxError',\r\n );\r\n }\r\n return new CryptoKey(\r\n pqcImportKeyObject(format, data, name),\r\n { name },\r\n keyUsages,\r\n extractable,\r\n );\r\n}\r\n\r\nfunction mlkemImportKey(\r\n format: ImportFormat,\r\n data: BufferLike,\r\n algorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): CryptoKey {\r\n const { name } = algorithm;\r\n const isPublicFormat = format === 'spki' || format === 'raw';\r\n const allowedUsages: KeyUsage[] = isPublicFormat\r\n ? ['encapsulateBits', 'encapsulateKey']\r\n : ['decapsulateBits', 'decapsulateKey'];\r\n if (hasAnyNotIn(keyUsages, allowedUsages)) {\r\n throw lazyDOMException(\r\n `Unsupported key usage for ${name} key`,\r\n 'SyntaxError',\r\n );\r\n }\r\n return new CryptoKey(\r\n pqcImportKeyObject(format, data, name),\r\n { name },\r\n keyUsages,\r\n extractable,\r\n );\r\n}\r\n\r\nconst exportKeySpki = async (\r\n key: CryptoKey,\r\n): Promise<ArrayBuffer | unknown> => {\r\n switch (key.algorithm.name) {\r\n case 'RSASSA-PKCS1-v1_5':\r\n // Fall through\r\n case 'RSA-PSS':\r\n // Fall through\r\n case 'RSA-OAEP':\r\n if (key.type === 'public') {\r\n return rsaExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI);\r\n }\r\n break;\r\n case 'ECDSA':\r\n // Fall through\r\n case 'ECDH':\r\n if (key.type === 'public') {\r\n return ecExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI);\r\n }\r\n break;\r\n case 'Ed25519':\r\n // Fall through\r\n case 'Ed448':\r\n // Fall through\r\n case 'X25519':\r\n // Fall through\r\n case 'X448':\r\n if (key.type === 'public') {\r\n // Export Ed/X key in SPKI DER format\r\n return bufferLikeToArrayBuffer(\r\n key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.SPKI),\r\n );\r\n }\r\n break;\r\n case 'ML-DSA-44':\r\n // Fall through\r\n case 'ML-DSA-65':\r\n // Fall through\r\n case 'ML-DSA-87':\r\n if (key.type === 'public') {\r\n // Export ML-DSA key in SPKI DER format\r\n return bufferLikeToArrayBuffer(\r\n key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.SPKI),\r\n );\r\n }\r\n break;\r\n case 'ML-KEM-512':\r\n // Fall through\r\n case 'ML-KEM-768':\r\n // Fall through\r\n case 'ML-KEM-1024':\r\n if (key.type === 'public') {\r\n return bufferLikeToArrayBuffer(\r\n key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.SPKI),\r\n );\r\n }\r\n break;\r\n }\r\n\r\n throw new Error(\r\n `Unable to export a spki ${key.algorithm.name} ${key.type} key`,\r\n );\r\n};\r\n\r\nconst exportKeyPkcs8 = async (\r\n key: CryptoKey,\r\n): Promise<ArrayBuffer | unknown> => {\r\n switch (key.algorithm.name) {\r\n case 'RSASSA-PKCS1-v1_5':\r\n // Fall through\r\n case 'RSA-PSS':\r\n // Fall through\r\n case 'RSA-OAEP':\r\n if (key.type === 'private') {\r\n return rsaExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatPKCS8);\r\n }\r\n break;\r\n case 'ECDSA':\r\n // Fall through\r\n case 'ECDH':\r\n if (key.type === 'private') {\r\n return ecExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatPKCS8);\r\n }\r\n break;\r\n case 'Ed25519':\r\n // Fall through\r\n case 'Ed448':\r\n // Fall through\r\n case 'X25519':\r\n // Fall through\r\n case 'X448':\r\n if (key.type === 'private') {\r\n // Export Ed/X key in PKCS8 DER format\r\n return bufferLikeToArrayBuffer(\r\n key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.PKCS8),\r\n );\r\n }\r\n break;\r\n case 'ML-DSA-44':\r\n // Fall through\r\n case 'ML-DSA-65':\r\n // Fall through\r\n case 'ML-DSA-87':\r\n if (key.type === 'private') {\r\n // Export ML-DSA key in PKCS8 DER format\r\n return bufferLikeToArrayBuffer(\r\n key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.PKCS8),\r\n );\r\n }\r\n break;\r\n case 'ML-KEM-512':\r\n // Fall through\r\n case 'ML-KEM-768':\r\n // Fall through\r\n case 'ML-KEM-1024':\r\n if (key.type === 'private') {\r\n return bufferLikeToArrayBuffer(\r\n key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.PKCS8),\r\n );\r\n }\r\n break;\r\n }\r\n\r\n throw new Error(\r\n `Unable to export a pkcs8 ${key.algorithm.name} ${key.type} key`,\r\n );\r\n};\r\n\r\nconst exportKeyRaw = (key: CryptoKey): ArrayBuffer | unknown => {\r\n switch (key.algorithm.name) {\r\n case 'ECDSA':\r\n // Fall through\r\n case 'ECDH':\r\n if (key.type === 'public') {\r\n return ecExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatRaw);\r\n }\r\n break;\r\n case 'Ed25519':\r\n // Fall through\r\n case 'Ed448':\r\n // Fall through\r\n case 'X25519':\r\n // Fall through\r\n case 'X448':\r\n if (key.type === 'public') {\r\n const exported = key.keyObject.handle.exportKey();\r\n return bufferLikeToArrayBuffer(exported);\r\n }\r\n break;\r\n case 'ML-KEM-512':\r\n // Fall through\r\n case 'ML-KEM-768':\r\n // Fall through\r\n case 'ML-KEM-1024':\r\n // Fall through\r\n case 'ML-DSA-44':\r\n // Fall through\r\n case 'ML-DSA-65':\r\n // Fall through\r\n case 'ML-DSA-87':\r\n if (key.type === 'public') {\r\n const exported = key.keyObject.handle.exportKey();\r\n return bufferLikeToArrayBuffer(exported);\r\n }\r\n break;\r\n case 'AES-CTR':\r\n // Fall through\r\n case 'AES-CBC':\r\n // Fall through\r\n case 'AES-GCM':\r\n // Fall through\r\n case 'AES-KW':\r\n // Fall through\r\n case 'AES-OCB':\r\n // Fall through\r\n case 'ChaCha20-Poly1305':\r\n // Fall through\r\n case 'HMAC':\r\n // Fall through\r\n case 'KMAC128':\r\n // Fall through\r\n case 'KMAC256': {\r\n const exported = key.keyObject.export();\r\n // Convert Buffer to ArrayBuffer\r\n return exported.buffer.slice(\r\n exported.byteOffset,\r\n exported.byteOffset + exported.byteLength,\r\n );\r\n }\r\n }\r\n\r\n throw lazyDOMException(\r\n `Unable to export a raw ${key.algorithm.name} ${key.type} key`,\r\n 'InvalidAccessError',\r\n );\r\n};\r\n\r\nconst exportKeyJWK = (key: CryptoKey): ArrayBuffer | unknown => {\r\n const jwk = key.keyObject.handle.exportJwk(\r\n {\r\n key_ops: key.usages,\r\n ext: key.extractable,\r\n },\r\n true,\r\n );\r\n switch (key.algorithm.name) {\r\n case 'RSASSA-PKCS1-v1_5':\r\n jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkRsa);\r\n return jwk;\r\n case 'RSA-PSS':\r\n jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkRsaPss);\r\n return jwk;\r\n case 'RSA-OAEP':\r\n jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkRsaOaep);\r\n return jwk;\r\n case 'HMAC':\r\n jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkHmac);\r\n return jwk;\r\n case 'KMAC128':\r\n jwk.alg = 'K128';\r\n return jwk;\r\n case 'KMAC256':\r\n jwk.alg = 'K256';\r\n return jwk;\r\n case 'ECDSA':\r\n // Fall through\r\n case 'ECDH':\r\n jwk.crv ||= key.algorithm.namedCurve;\r\n return jwk;\r\n case 'Ed25519':\r\n // Fall through\r\n case 'Ed448':\r\n // Fall through\r\n case 'X25519':\r\n // Fall through\r\n case 'X448':\r\n return jwk;\r\n case 'AES-CTR':\r\n // Fall through\r\n case 'AES-CBC':\r\n // Fall through\r\n case 'AES-GCM':\r\n // Fall through\r\n case 'AES-KW':\r\n // Fall through\r\n case 'AES-OCB':\r\n // Fall through\r\n case 'ChaCha20-Poly1305':\r\n if (key.algorithm.length === undefined) {\r\n throw lazyDOMException(\r\n `Algorithm ${key.algorithm.name} missing required length property`,\r\n 'InvalidAccessError',\r\n );\r\n }\r\n jwk.alg = getAlgorithmName(key.algorithm.name, key.algorithm.length);\r\n return jwk;\r\n default:\r\n // Fall through\r\n }\r\n\r\n throw lazyDOMException(\r\n `JWK export not yet supported: ${key.algorithm.name}`,\r\n 'NotSupportedError',\r\n );\r\n};\r\n\r\nconst importGenericSecretKey = async (\r\n { name, length }: SubtleAlgorithm,\r\n format: ImportFormat,\r\n keyData: BufferLike | BinaryLike,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKey> => {\r\n if (extractable) {\r\n throw new Error(`${name} keys are not extractable`);\r\n }\r\n if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {\r\n throw new Error(`Unsupported key usage for a ${name} key`);\r\n }\r\n\r\n switch (format) {\r\n case 'raw': {\r\n if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {\r\n throw new Error(`Unsupported key usage for a ${name} key`);\r\n }\r\n\r\n const checkLength =\r\n typeof keyData === 'string' || SBuffer.isBuffer(keyData)\r\n ? keyData.length * 8\r\n : keyData.byteLength * 8;\r\n\r\n if (length !== undefined && length !== checkLength) {\r\n throw new Error('Invalid key length');\r\n }\r\n\r\n const keyObject = createSecretKey(keyData as BinaryLike);\r\n return new CryptoKey(keyObject, { name }, keyUsages, false);\r\n }\r\n }\r\n\r\n throw new Error(`Unable to import ${name} key with format ${format}`);\r\n};\r\n\r\nconst hkdfImportKey = async (\r\n format: ImportFormat,\r\n keyData: BufferLike | BinaryLike,\r\n algorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n): Promise<CryptoKey> => {\r\n const { name } = algorithm;\r\n if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {\r\n throw new Error(`Unsupported key usage for a ${name} key`);\r\n }\r\n\r\n switch (format) {\r\n case 'raw': {\r\n const keyObject = createSecretKey(keyData as BinaryLike);\r\n return new CryptoKey(keyObject, { name }, keyUsages, extractable);\r\n }\r\n default:\r\n throw new Error(`Unable to import ${name} key with format ${format}`);\r\n }\r\n};\r\n\r\nconst checkCryptoKeyPairUsages = (pair: CryptoKeyPair) => {\r\n if (\r\n pair.privateKey &&\r\n pair.privateKey instanceof CryptoKey &&\r\n pair.privateKey.keyUsages &&\r\n pair.privateKey.keyUsages.length > 0\r\n ) {\r\n return;\r\n }\r\n throw lazyDOMException(\r\n 'Usages cannot be empty when creating a key.',\r\n 'SyntaxError',\r\n );\r\n};\r\n\r\nfunction argon2DeriveBits(\r\n algorithm: SubtleAlgorithm,\r\n baseKey: CryptoKey,\r\n length: number,\r\n): ArrayBuffer {\r\n if (length === 0 || length % 8 !== 0) {\r\n throw lazyDOMException(\r\n 'Invalid Argon2 derived key length',\r\n 'OperationError',\r\n );\r\n }\r\n if (length < 32) {\r\n throw lazyDOMException(\r\n 'Argon2 derived key length must be at least 32 bits',\r\n 'OperationError',\r\n );\r\n }\r\n\r\n const { nonce, parallelism, memory, passes, secretValue, associatedData } =\r\n algorithm;\r\n const tagLength = length / 8;\r\n const message = baseKey.keyObject.export();\r\n const algName = algorithm.name.toLowerCase();\r\n\r\n const result = argon2Sync(algName, {\r\n message,\r\n nonce: nonce ?? new Uint8Array(0),\r\n parallelism: parallelism ?? 1,\r\n tagLength,\r\n memory: memory ?? 65536,\r\n passes: passes ?? 3,\r\n secret: secretValue,\r\n associatedData,\r\n version: algorithm.version,\r\n });\r\n\r\n return bufferLikeToArrayBuffer(result);\r\n}\r\n\r\n// Type guard to check if result is CryptoKeyPair\r\nexport function isCryptoKeyPair(\r\n result: CryptoKey | CryptoKeyPair,\r\n): result is CryptoKeyPair {\r\n return 'publicKey' in result && 'privateKey' in result;\r\n}\r\n\r\nfunction hmacSignVerify(\r\n key: CryptoKey,\r\n data: BufferLike,\r\n signature?: BufferLike,\r\n): ArrayBuffer | boolean {\r\n // Get hash algorithm from key\r\n const hashName = normalizeHashName(key.algorithm.hash);\r\n\r\n // Export the secret key material\r\n const keyData = key.keyObject.export();\r\n\r\n // Create HMAC and compute digest\r\n const hmac = createHmac(hashName, keyData);\r\n hmac.update(bufferLikeToArrayBuffer(data));\r\n const computed = hmac.digest();\r\n\r\n if (signature === undefined) {\r\n // Sign operation - return the HMAC as ArrayBuffer\r\n return computed.buffer.slice(\r\n computed.byteOffset,\r\n computed.byteOffset + computed.byteLength,\r\n );\r\n }\r\n\r\n const sigBuffer = bufferLikeToArrayBuffer(signature);\r\n const computedBuffer = computed.buffer.slice(\r\n computed.byteOffset,\r\n computed.byteOffset + computed.byteLength,\r\n );\r\n\r\n if (computedBuffer.byteLength !== sigBuffer.byteLength) {\r\n return false;\r\n }\r\n\r\n return timingSafeEqual(\r\n new Uint8Array(computedBuffer),\r\n new Uint8Array(sigBuffer),\r\n );\r\n}\r\n\r\nfunction rsaSignVerify(\r\n key: CryptoKey,\r\n data: BufferLike,\r\n padding: 'pkcs1' | 'pss',\r\n signature?: BufferLike,\r\n saltLength?: number,\r\n): ArrayBuffer | boolean {\r\n // Get hash algorithm from key\r\n const hashName = normalizeHashName(key.algorithm.hash);\r\n\r\n // Determine RSA padding constant\r\n const RSA_PKCS1_PADDING = 1;\r\n const RSA_PKCS1_PSS_PADDING = 6;\r\n const paddingValue =\r\n padding === 'pss' ? RSA_PKCS1_PSS_PADDING : RSA_PKCS1_PADDING;\r\n\r\n if (signature === undefined) {\r\n // Sign operation\r\n const signer = createSign(hashName);\r\n signer.update(data);\r\n const sig = signer.sign({\r\n key: key,\r\n padding: paddingValue,\r\n saltLength,\r\n });\r\n return sig.buffer.slice(sig.byteOffset, sig.byteOffset + sig.byteLength);\r\n }\r\n\r\n // Verify operation\r\n const verifier = createVerify(hashName);\r\n verifier.update(data);\r\n return verifier.verify(\r\n {\r\n key: key,\r\n padding: paddingValue,\r\n saltLength,\r\n },\r\n signature,\r\n );\r\n}\r\n\r\nfunction edSignVerify(\r\n key: CryptoKey,\r\n data: BufferLike,\r\n signature?: BufferLike,\r\n): ArrayBuffer | boolean {\r\n const isSign = signature === undefined;\r\n const expectedKeyType = isSign ? 'private' : 'public';\r\n\r\n if (key.type !== expectedKeyType) {\r\n throw lazyDOMException(\r\n `Key must be a ${expectedKeyType} key`,\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n // Get curve type from algorithm name (Ed25519 or Ed448)\r\n const algorithmName = key.algorithm.name;\r\n const curveType = algorithmName.toLowerCase() as 'ed25519' | 'ed448';\r\n\r\n // Create Ed instance with the curve\r\n const ed = new Ed(curveType, {});\r\n\r\n // Export raw key bytes (exportKey with no format returns raw for Ed keys)\r\n const rawKey = key.keyObject.handle.exportKey();\r\n const dataBuffer = bufferLikeToArrayBuffer(data);\r\n\r\n if (isSign) {\r\n // Sign operation - use raw private key\r\n const sig = ed.signSync(dataBuffer, rawKey);\r\n return sig;\r\n } else {\r\n // Verify operation - use raw public key\r\n const signatureBuffer = bufferLikeToArrayBuffer(signature!);\r\n return ed.verifySync(signatureBuffer, dataBuffer, rawKey);\r\n }\r\n}\r\n\r\nfunction mldsaSignVerify(\r\n key: CryptoKey,\r\n data: BufferLike,\r\n signature?: BufferLike,\r\n): ArrayBuffer | boolean {\r\n const isSign = signature === undefined;\r\n const expectedKeyType = isSign ? 'private' : 'public';\r\n\r\n if (key.type !== expectedKeyType) {\r\n throw lazyDOMException(\r\n `Key must be a ${expectedKeyType} key`,\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n const dataBuffer = bufferLikeToArrayBuffer(data);\r\n\r\n if (isSign) {\r\n const signer = createSign('');\r\n signer.update(dataBuffer);\r\n const sig = signer.sign({ key: key });\r\n return sig.buffer.slice(sig.byteOffset, sig.byteOffset + sig.byteLength);\r\n } else {\r\n const signatureBuffer = bufferLikeToArrayBuffer(signature!);\r\n const verifier = createVerify('');\r\n verifier.update(dataBuffer);\r\n return verifier.verify({ key: key }, signatureBuffer);\r\n }\r\n}\r\n\r\nconst signVerify = (\r\n algorithm: SubtleAlgorithm,\r\n key: CryptoKey,\r\n data: BufferLike,\r\n signature?: BufferLike,\r\n): ArrayBuffer | boolean => {\r\n const usage: Operation = signature === undefined ? 'sign' : 'verify';\r\n algorithm = normalizeAlgorithm(algorithm, usage);\r\n\r\n if (!key.usages.includes(usage) || algorithm.name !== key.algorithm.name) {\r\n throw lazyDOMException(\r\n `Unable to use this key to ${usage}`,\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n switch (algorithm.name) {\r\n case 'ECDSA':\r\n return ecdsaSignVerify(key, data, algorithm, signature);\r\n case 'HMAC':\r\n return hmacSignVerify(key, data, signature);\r\n case 'RSASSA-PKCS1-v1_5':\r\n return rsaSignVerify(key, data, 'pkcs1', signature);\r\n case 'RSA-PSS':\r\n return rsaSignVerify(key, data, 'pss', signature, algorithm.saltLength);\r\n case 'Ed25519':\r\n case 'Ed448':\r\n return edSignVerify(key, data, signature);\r\n case 'ML-DSA-44':\r\n case 'ML-DSA-65':\r\n case 'ML-DSA-87':\r\n return mldsaSignVerify(key, data, signature);\r\n case 'KMAC128':\r\n case 'KMAC256':\r\n return kmacSignVerify(key, data, algorithm, signature);\r\n }\r\n throw lazyDOMException(\r\n `Unrecognized algorithm name '${algorithm.name}' for '${usage}'`,\r\n 'NotSupportedError',\r\n );\r\n};\r\n\r\nconst cipherOrWrap = async (\r\n mode: CipherOrWrapMode,\r\n algorithm: EncryptDecryptParams,\r\n key: CryptoKey,\r\n data: ArrayBuffer,\r\n op: Operation,\r\n): Promise<ArrayBuffer> => {\r\n if (\r\n key.algorithm.name !== algorithm.name ||\r\n !key.usages.includes(op as KeyUsage)\r\n ) {\r\n throw lazyDOMException(\r\n 'The requested operation is not valid for the provided key',\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n validateMaxBufferLength(data, 'data');\r\n\r\n switch (algorithm.name) {\r\n case 'RSA-OAEP':\r\n return rsaCipher(mode, key, data, algorithm);\r\n case 'AES-CTR':\r\n // Fall through\r\n case 'AES-CBC':\r\n // Fall through\r\n case 'AES-GCM':\r\n // Fall through\r\n case 'AES-OCB':\r\n return aesCipher(mode, key, data, algorithm);\r\n case 'AES-KW':\r\n return aesKwCipher(mode, key, data);\r\n case 'ChaCha20-Poly1305':\r\n return chaCha20Poly1305Cipher(\r\n mode,\r\n key,\r\n data,\r\n algorithm as ChaCha20Poly1305Params,\r\n );\r\n }\r\n};\r\n\r\nconst SUPPORTED_ALGORITHMS: Record<string, Set<string>> = {\r\n encrypt: new Set([\r\n 'RSA-OAEP',\r\n 'AES-CTR',\r\n 'AES-CBC',\r\n 'AES-GCM',\r\n 'AES-OCB',\r\n 'ChaCha20-Poly1305',\r\n ]),\r\n decrypt: new Set([\r\n 'RSA-OAEP',\r\n 'AES-CTR',\r\n 'AES-CBC',\r\n 'AES-GCM',\r\n 'AES-OCB',\r\n 'ChaCha20-Poly1305',\r\n ]),\r\n sign: new Set([\r\n 'RSASSA-PKCS1-v1_5',\r\n 'RSA-PSS',\r\n 'ECDSA',\r\n 'HMAC',\r\n 'KMAC128',\r\n 'KMAC256',\r\n 'Ed25519',\r\n 'Ed448',\r\n 'ML-DSA-44',\r\n 'ML-DSA-65',\r\n 'ML-DSA-87',\r\n ]),\r\n verify: new Set([\r\n 'RSASSA-PKCS1-v1_5',\r\n 'RSA-PSS',\r\n 'ECDSA',\r\n 'HMAC',\r\n 'KMAC128',\r\n 'KMAC256',\r\n 'Ed25519',\r\n 'Ed448',\r\n 'ML-DSA-44',\r\n 'ML-DSA-65',\r\n 'ML-DSA-87',\r\n ]),\r\n digest: new Set([\r\n 'SHA-1',\r\n 'SHA-256',\r\n 'SHA-384',\r\n 'SHA-512',\r\n 'SHA3-256',\r\n 'SHA3-384',\r\n 'SHA3-512',\r\n 'cSHAKE128',\r\n 'cSHAKE256',\r\n ]),\r\n generateKey: new Set([\r\n 'RSASSA-PKCS1-v1_5',\r\n 'RSA-PSS',\r\n 'RSA-OAEP',\r\n 'ECDSA',\r\n 'ECDH',\r\n 'Ed25519',\r\n 'Ed448',\r\n 'X25519',\r\n 'X448',\r\n 'AES-CTR',\r\n 'AES-CBC',\r\n 'AES-GCM',\r\n 'AES-KW',\r\n 'AES-OCB',\r\n 'ChaCha20-Poly1305',\r\n 'HMAC',\r\n 'KMAC128',\r\n 'KMAC256',\r\n 'ML-DSA-44',\r\n 'ML-DSA-65',\r\n 'ML-DSA-87',\r\n 'ML-KEM-512',\r\n 'ML-KEM-768',\r\n 'ML-KEM-1024',\r\n ]),\r\n importKey: new Set([\r\n 'RSASSA-PKCS1-v1_5',\r\n 'RSA-PSS',\r\n 'RSA-OAEP',\r\n 'ECDSA',\r\n 'ECDH',\r\n 'Ed25519',\r\n 'Ed448',\r\n 'X25519',\r\n 'X448',\r\n 'AES-CTR',\r\n 'AES-CBC',\r\n 'AES-GCM',\r\n 'AES-KW',\r\n 'AES-OCB',\r\n 'ChaCha20-Poly1305',\r\n 'HMAC',\r\n 'KMAC128',\r\n 'KMAC256',\r\n 'HKDF',\r\n 'PBKDF2',\r\n 'Argon2d',\r\n 'Argon2i',\r\n 'Argon2id',\r\n 'ML-DSA-44',\r\n 'ML-DSA-65',\r\n 'ML-DSA-87',\r\n 'ML-KEM-512',\r\n 'ML-KEM-768',\r\n 'ML-KEM-1024',\r\n ]),\r\n exportKey: new Set([\r\n 'RSASSA-PKCS1-v1_5',\r\n 'RSA-PSS',\r\n 'RSA-OAEP',\r\n 'ECDSA',\r\n 'ECDH',\r\n 'Ed25519',\r\n 'Ed448',\r\n 'X25519',\r\n 'X448',\r\n 'AES-CTR',\r\n 'AES-CBC',\r\n 'AES-GCM',\r\n 'AES-KW',\r\n 'AES-OCB',\r\n 'ChaCha20-Poly1305',\r\n 'HMAC',\r\n 'KMAC128',\r\n 'KMAC256',\r\n 'ML-DSA-44',\r\n 'ML-DSA-65',\r\n 'ML-DSA-87',\r\n 'ML-KEM-512',\r\n 'ML-KEM-768',\r\n 'ML-KEM-1024',\r\n ]),\r\n deriveBits: new Set([\r\n 'PBKDF2',\r\n 'HKDF',\r\n 'ECDH',\r\n 'X25519',\r\n 'X448',\r\n 'Argon2d',\r\n 'Argon2i',\r\n 'Argon2id',\r\n ]),\r\n wrapKey: new Set([\r\n 'AES-CTR',\r\n 'AES-CBC',\r\n 'AES-GCM',\r\n 'AES-KW',\r\n 'AES-OCB',\r\n 'ChaCha20-Poly1305',\r\n 'RSA-OAEP',\r\n ]),\r\n unwrapKey: new Set([\r\n 'AES-CTR',\r\n 'AES-CBC',\r\n 'AES-GCM',\r\n 'AES-KW',\r\n 'AES-OCB',\r\n 'ChaCha20-Poly1305',\r\n 'RSA-OAEP',\r\n ]),\r\n encapsulateBits: new Set(['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),\r\n decapsulateBits: new Set(['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),\r\n encapsulateKey: new Set(['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),\r\n decapsulateKey: new Set(['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),\r\n};\r\n\r\nconst ASYMMETRIC_ALGORITHMS = new Set([\r\n 'RSASSA-PKCS1-v1_5',\r\n 'RSA-PSS',\r\n 'RSA-OAEP',\r\n 'ECDSA',\r\n 'ECDH',\r\n 'Ed25519',\r\n 'Ed448',\r\n 'X25519',\r\n 'X448',\r\n 'ML-DSA-44',\r\n 'ML-DSA-65',\r\n 'ML-DSA-87',\r\n 'ML-KEM-512',\r\n 'ML-KEM-768',\r\n 'ML-KEM-1024',\r\n]);\r\n\r\nexport class Subtle {\r\n static supports(\r\n operation: string,\r\n algorithm: SubtleAlgorithm | AnyAlgorithm,\r\n _lengthOrAdditionalAlgorithm?: unknown,\r\n ): boolean {\r\n let normalizedAlgorithm: SubtleAlgorithm;\r\n try {\r\n normalizedAlgorithm = normalizeAlgorithm(\r\n algorithm,\r\n (operation === 'getPublicKey' ? 'exportKey' : operation) as Operation,\r\n );\r\n } catch {\r\n return false;\r\n }\r\n\r\n const name = normalizedAlgorithm.name;\r\n\r\n if (operation === 'getPublicKey') {\r\n return ASYMMETRIC_ALGORITHMS.has(name);\r\n }\r\n\r\n if (operation === 'deriveKey') {\r\n // deriveKey decomposes to deriveBits + importKey of additional algorithm\r\n if (!SUPPORTED_ALGORITHMS.deriveBits?.has(name)) return false;\r\n if (_lengthOrAdditionalAlgorithm != null) {\r\n try {\r\n const additionalAlg = normalizeAlgorithm(\r\n _lengthOrAdditionalAlgorithm as SubtleAlgorithm | AnyAlgorithm,\r\n 'importKey',\r\n );\r\n return (\r\n SUPPORTED_ALGORITHMS.importKey?.has(additionalAlg.name) ?? false\r\n );\r\n } catch {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n const supported = SUPPORTED_ALGORITHMS[operation];\r\n if (!supported) return false;\r\n return supported.has(name);\r\n }\r\n\r\n async decrypt(\r\n algorithm: EncryptDecryptParams,\r\n key: CryptoKey,\r\n data: BufferLike,\r\n ): Promise<ArrayBuffer> {\r\n const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'decrypt');\r\n return cipherOrWrap(\r\n CipherOrWrapMode.kWebCryptoCipherDecrypt,\r\n normalizedAlgorithm as EncryptDecryptParams,\r\n key,\r\n bufferLikeToArrayBuffer(data),\r\n 'decrypt',\r\n );\r\n }\r\n\r\n async digest(\r\n algorithm: SubtleAlgorithm | AnyAlgorithm,\r\n data: BufferLike,\r\n ): Promise<ArrayBuffer> {\r\n const normalizedAlgorithm = normalizeAlgorithm(\r\n algorithm,\r\n 'digest' as Operation,\r\n );\r\n return asyncDigest(normalizedAlgorithm, data);\r\n }\r\n\r\n async deriveBits(\r\n algorithm: SubtleAlgorithm,\r\n baseKey: CryptoKey,\r\n length: number,\r\n ): Promise<ArrayBuffer> {\r\n // Allow either deriveBits OR deriveKey usage (WebCrypto spec allows both)\r\n if (\r\n !baseKey.keyUsages.includes('deriveBits') &&\r\n !baseKey.keyUsages.includes('deriveKey')\r\n ) {\r\n throw new Error('baseKey does not have deriveBits or deriveKey usage');\r\n }\r\n if (baseKey.algorithm.name !== algorithm.name)\r\n throw new Error('Key algorithm mismatch');\r\n switch (algorithm.name) {\r\n case 'PBKDF2':\r\n return pbkdf2DeriveBits(algorithm, baseKey, length);\r\n case 'X25519':\r\n // Fall through\r\n case 'X448':\r\n return xDeriveBits(algorithm, baseKey, length);\r\n case 'ECDH':\r\n return ecDeriveBits(algorithm, baseKey, length);\r\n case 'HKDF':\r\n return hkdfDeriveBits(\r\n algorithm as unknown as HkdfAlgorithm,\r\n baseKey,\r\n length,\r\n );\r\n case 'Argon2d':\r\n case 'Argon2i':\r\n case 'Argon2id':\r\n return argon2DeriveBits(algorithm, baseKey, length);\r\n }\r\n throw new Error(\r\n `'subtle.deriveBits()' for ${algorithm.name} is not implemented.`,\r\n );\r\n }\r\n\r\n async deriveKey(\r\n algorithm: SubtleAlgorithm,\r\n baseKey: CryptoKey,\r\n derivedKeyAlgorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n ): Promise<CryptoKey> {\r\n // Validate baseKey usage\r\n if (\r\n !baseKey.usages.includes('deriveKey') &&\r\n !baseKey.usages.includes('deriveBits')\r\n ) {\r\n throw lazyDOMException(\r\n 'baseKey does not have deriveKey or deriveBits usage',\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n // Calculate required key length\r\n const length = getKeyLength(derivedKeyAlgorithm);\r\n\r\n // Step 1: Derive bits\r\n let derivedBits: ArrayBuffer;\r\n if (baseKey.algorithm.name !== algorithm.name)\r\n throw new Error('Key algorithm mismatch');\r\n\r\n switch (algorithm.name) {\r\n case 'PBKDF2':\r\n derivedBits = await pbkdf2DeriveBits(algorithm, baseKey, length);\r\n break;\r\n case 'X25519':\r\n // Fall through\r\n case 'X448':\r\n derivedBits = await xDeriveBits(algorithm, baseKey, length);\r\n break;\r\n case 'ECDH':\r\n derivedBits = await ecDeriveBits(algorithm, baseKey, length);\r\n break;\r\n case 'HKDF':\r\n derivedBits = hkdfDeriveBits(\r\n algorithm as unknown as HkdfAlgorithm,\r\n baseKey,\r\n length,\r\n );\r\n break;\r\n case 'Argon2d':\r\n case 'Argon2i':\r\n case 'Argon2id':\r\n derivedBits = argon2DeriveBits(algorithm, baseKey, length);\r\n break;\r\n default:\r\n throw new Error(\r\n `'subtle.deriveKey()' for ${algorithm.name} is not implemented.`,\r\n );\r\n }\r\n\r\n // Step 2: Import as key\r\n return this.importKey(\r\n 'raw',\r\n derivedBits,\r\n derivedKeyAlgorithm,\r\n extractable,\r\n keyUsages,\r\n );\r\n }\r\n\r\n async encrypt(\r\n algorithm: EncryptDecryptParams,\r\n key: CryptoKey,\r\n data: BufferLike,\r\n ): Promise<ArrayBuffer> {\r\n const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'encrypt');\r\n return cipherOrWrap(\r\n CipherOrWrapMode.kWebCryptoCipherEncrypt,\r\n normalizedAlgorithm as EncryptDecryptParams,\r\n key,\r\n bufferLikeToArrayBuffer(data),\r\n 'encrypt',\r\n );\r\n }\r\n\r\n async exportKey(\r\n format: ImportFormat,\r\n key: CryptoKey,\r\n ): Promise<ArrayBuffer | JWK> {\r\n if (!key.extractable) throw new Error('key is not extractable');\r\n\r\n if (format === 'raw-seed') {\r\n const pqcAlgos = [\r\n 'ML-KEM-512',\r\n 'ML-KEM-768',\r\n 'ML-KEM-1024',\r\n 'ML-DSA-44',\r\n 'ML-DSA-65',\r\n 'ML-DSA-87',\r\n ];\r\n if (!pqcAlgos.includes(key.algorithm.name)) {\r\n throw lazyDOMException(\r\n 'raw-seed export only supported for PQC keys',\r\n 'NotSupportedError',\r\n );\r\n }\r\n if (key.type !== 'private') {\r\n throw lazyDOMException(\r\n 'raw-seed export requires a private key',\r\n 'InvalidAccessError',\r\n );\r\n }\r\n return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey());\r\n }\r\n\r\n // Note: 'raw-seed' is handled above; do NOT normalize it here\r\n if (format === 'raw-secret' || format === 'raw-public') format = 'raw';\r\n\r\n switch (format) {\r\n case 'spki':\r\n return (await exportKeySpki(key)) as ArrayBuffer;\r\n case 'pkcs8':\r\n return (await exportKeyPkcs8(key)) as ArrayBuffer;\r\n case 'jwk':\r\n return exportKeyJWK(key) as JWK;\r\n case 'raw':\r\n return exportKeyRaw(key) as ArrayBuffer;\r\n }\r\n }\r\n\r\n async wrapKey(\r\n format: ImportFormat,\r\n key: CryptoKey,\r\n wrappingKey: CryptoKey,\r\n wrapAlgorithm: EncryptDecryptParams,\r\n ): Promise<ArrayBuffer> {\r\n // Validate wrappingKey usage\r\n if (!wrappingKey.usages.includes('wrapKey')) {\r\n throw lazyDOMException(\r\n 'wrappingKey does not have wrapKey usage',\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n // Step 1: Export the key\r\n const exported = await this.exportKey(format, key);\r\n\r\n // Step 2: Convert to ArrayBuffer if JWK\r\n let keyData: ArrayBuffer;\r\n if (format === 'jwk') {\r\n const jwkString = JSON.stringify(exported);\r\n const buffer = SBuffer.from(jwkString, 'utf8');\r\n\r\n // For AES-KW, pad to multiple of 8 bytes (accounting for null terminator)\r\n if (wrapAlgorithm.name === 'AES-KW') {\r\n const length = buffer.length;\r\n // Add 1 for null terminator, then pad to multiple of 8\r\n const paddedLength = Math.ceil((length + 1) / 8) * 8;\r\n const paddedBuffer = SBuffer.alloc(paddedLength);\r\n buffer.copy(paddedBuffer);\r\n // Null terminator for JSON string (remaining bytes are already zeros from alloc)\r\n paddedBuffer.writeUInt8(0, length);\r\n keyData = bufferLikeToArrayBuffer(paddedBuffer);\r\n } else {\r\n keyData = bufferLikeToArrayBuffer(buffer);\r\n }\r\n } else {\r\n keyData = exported as ArrayBuffer;\r\n }\r\n\r\n // Step 3: Encrypt the exported key\r\n return cipherOrWrap(\r\n CipherOrWrapMode.kWebCryptoCipherEncrypt,\r\n wrapAlgorithm,\r\n wrappingKey,\r\n keyData,\r\n 'wrapKey',\r\n );\r\n }\r\n\r\n async unwrapKey(\r\n format: ImportFormat,\r\n wrappedKey: BufferLike,\r\n unwrappingKey: CryptoKey,\r\n unwrapAlgorithm: EncryptDecryptParams,\r\n unwrappedKeyAlgorithm: SubtleAlgorithm | AnyAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n ): Promise<CryptoKey> {\r\n // Validate unwrappingKey usage\r\n if (!unwrappingKey.usages.includes('unwrapKey')) {\r\n throw lazyDOMException(\r\n 'unwrappingKey does not have unwrapKey usage',\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n // Step 1: Decrypt the wrapped key\r\n const decrypted = await cipherOrWrap(\r\n CipherOrWrapMode.kWebCryptoCipherDecrypt,\r\n unwrapAlgorithm,\r\n unwrappingKey,\r\n bufferLikeToArrayBuffer(wrappedKey),\r\n 'unwrapKey',\r\n );\r\n\r\n // Step 2: Convert to appropriate format\r\n let keyData: BufferLike | JWK;\r\n if (format === 'jwk') {\r\n const buffer = SBuffer.from(decrypted);\r\n // For AES-KW, the data may be padded - find the null terminator\r\n let jwkString: string;\r\n if (unwrapAlgorithm.name === 'AES-KW') {\r\n // Find the null terminator (if present) to get the original string\r\n const nullIndex = buffer.indexOf(0);\r\n if (nullIndex !== -1) {\r\n jwkString = buffer.toString('utf8', 0, nullIndex);\r\n } else {\r\n // No null terminator, try to parse the whole buffer\r\n jwkString = buffer.toString('utf8').trim();\r\n }\r\n } else {\r\n jwkString = buffer.toString('utf8');\r\n }\r\n keyData = JSON.parse(jwkString) as JWK;\r\n } else {\r\n keyData = decrypted;\r\n }\r\n\r\n // Step 3: Import the key\r\n return this.importKey(\r\n format,\r\n keyData,\r\n unwrappedKeyAlgorithm,\r\n extractable,\r\n keyUsages,\r\n );\r\n }\r\n\r\n async generateKey(\r\n algorithm: SubtleAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n ): Promise<CryptoKey | CryptoKeyPair> {\r\n algorithm = normalizeAlgorithm(algorithm, 'generateKey');\r\n let result: CryptoKey | CryptoKeyPair;\r\n switch (algorithm.name) {\r\n case 'RSASSA-PKCS1-v1_5':\r\n // Fall through\r\n case 'RSA-PSS':\r\n // Fall through\r\n case 'RSA-OAEP':\r\n result = await rsa_generateKeyPair(algorithm, extractable, keyUsages);\r\n break;\r\n case 'ECDSA':\r\n // Fall through\r\n case 'ECDH':\r\n result = await ec_generateKeyPair(\r\n algorithm.name,\r\n algorithm.namedCurve!,\r\n extractable,\r\n keyUsages,\r\n );\r\n checkCryptoKeyPairUsages(result as CryptoKeyPair);\r\n break;\r\n case 'AES-CTR':\r\n // Fall through\r\n case 'AES-CBC':\r\n // Fall through\r\n case 'AES-GCM':\r\n // Fall through\r\n case 'AES-KW':\r\n // Fall through\r\n case 'AES-OCB':\r\n result = await aesGenerateKey(\r\n algorithm as AesKeyGenParams,\r\n extractable,\r\n keyUsages,\r\n );\r\n break;\r\n case 'ChaCha20-Poly1305': {\r\n const length = (algorithm as AesKeyGenParams).length ?? 256;\r\n\r\n if (length !== 256) {\r\n throw lazyDOMException(\r\n 'ChaCha20-Poly1305 only supports 256-bit keys',\r\n 'NotSupportedError',\r\n );\r\n }\r\n\r\n result = await aesGenerateKey(\r\n {\r\n name: 'ChaCha20-Poly1305',\r\n length: 256,\r\n } as unknown as AesKeyGenParams,\r\n extractable,\r\n keyUsages,\r\n );\r\n break;\r\n }\r\n case 'HMAC':\r\n result = await hmacGenerateKey(algorithm, extractable, keyUsages);\r\n break;\r\n case 'KMAC128':\r\n // Fall through\r\n case 'KMAC256':\r\n result = await kmacGenerateKey(algorithm, extractable, keyUsages);\r\n break;\r\n case 'Ed25519':\r\n // Fall through\r\n case 'Ed448':\r\n result = await ed_generateKeyPairWebCrypto(\r\n algorithm.name.toLowerCase() as 'ed25519' | 'ed448',\r\n extractable,\r\n keyUsages,\r\n );\r\n checkCryptoKeyPairUsages(result as CryptoKeyPair);\r\n break;\r\n case 'ML-DSA-44':\r\n // Fall through\r\n case 'ML-DSA-65':\r\n // Fall through\r\n case 'ML-DSA-87':\r\n result = await mldsa_generateKeyPairWebCrypto(\r\n algorithm.name as MlDsaVariant,\r\n extractable,\r\n keyUsages,\r\n );\r\n checkCryptoKeyPairUsages(result as CryptoKeyPair);\r\n break;\r\n case 'X25519':\r\n // Fall through\r\n case 'X448':\r\n result = await x_generateKeyPairWebCrypto(\r\n algorithm.name.toLowerCase() as 'x25519' | 'x448',\r\n extractable,\r\n keyUsages,\r\n );\r\n checkCryptoKeyPairUsages(result as CryptoKeyPair);\r\n break;\r\n case 'ML-KEM-512':\r\n // Fall through\r\n case 'ML-KEM-768':\r\n // Fall through\r\n case 'ML-KEM-1024':\r\n result = await mlkem_generateKeyPairWebCrypto(\r\n algorithm.name as MlKemVariant,\r\n extractable,\r\n keyUsages,\r\n );\r\n checkCryptoKeyPairUsages(result as CryptoKeyPair);\r\n break;\r\n default:\r\n throw new Error(\r\n `'subtle.generateKey()' is not implemented for ${algorithm.name}.\r\n Unrecognized algorithm name`,\r\n );\r\n }\r\n\r\n return result;\r\n }\r\n\r\n async getPublicKey(\r\n key: CryptoKey,\r\n keyUsages: KeyUsage[],\r\n ): Promise<CryptoKey> {\r\n if (key.type === 'secret') {\r\n throw lazyDOMException('key must be a private key', 'NotSupportedError');\r\n }\r\n if (key.type !== 'private') {\r\n throw lazyDOMException('key must be a private key', 'InvalidAccessError');\r\n }\r\n\r\n const publicKeyObject = createPublicKey(key.keyObject);\r\n return publicKeyObject.toCryptoKey(key.algorithm, true, keyUsages);\r\n }\r\n\r\n async importKey(\r\n format: ImportFormat,\r\n data: BufferLike | BinaryLike | JWK,\r\n algorithm: SubtleAlgorithm | AnyAlgorithm,\r\n extractable: boolean,\r\n keyUsages: KeyUsage[],\r\n ): Promise<CryptoKey> {\r\n // Note: 'raw-seed' is NOT normalized — PQC import functions handle it directly\r\n if (format === 'raw-secret' || format === 'raw-public') format = 'raw';\r\n const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'importKey');\r\n let result: CryptoKey;\r\n switch (normalizedAlgorithm.name) {\r\n case 'RSASSA-PKCS1-v1_5':\r\n // Fall through\r\n case 'RSA-PSS':\r\n // Fall through\r\n case 'RSA-OAEP':\r\n result = rsaImportKey(\r\n format,\r\n data as BufferLike | JWK,\r\n normalizedAlgorithm,\r\n extractable,\r\n keyUsages,\r\n );\r\n break;\r\n case 'ECDSA':\r\n // Fall through\r\n case 'ECDH':\r\n result = ecImportKey(\r\n format,\r\n data,\r\n normalizedAlgorithm,\r\n extractable,\r\n keyUsages,\r\n );\r\n break;\r\n case 'HMAC':\r\n result = await hmacImportKey(\r\n normalizedAlgorithm,\r\n format,\r\n data as BufferLike | JWK,\r\n extractable,\r\n keyUsages,\r\n );\r\n break;\r\n case 'KMAC128':\r\n // Fall through\r\n case 'KMAC256':\r\n result = await kmacImportKey(\r\n normalizedAlgorithm,\r\n format,\r\n data as BufferLike | JWK,\r\n extractable,\r\n keyUsages,\r\n );\r\n break;\r\n case 'AES-CTR':\r\n // Fall through\r\n case 'AES-CBC':\r\n // Fall through\r\n case 'AES-GCM':\r\n // Fall through\r\n case 'AES-KW':\r\n // Fall through\r\n case 'AES-OCB':\r\n // Fall through\r\n case 'ChaCha20-Poly1305':\r\n result = await aesImportKey(\r\n normalizedAlgorithm,\r\n format,\r\n data as BufferLike | JWK,\r\n extractable,\r\n keyUsages,\r\n );\r\n break;\r\n case 'PBKDF2':\r\n case 'Argon2d':\r\n case 'Argon2i':\r\n case 'Argon2id':\r\n result = await importGenericSecretKey(\r\n normalizedAlgorithm,\r\n format,\r\n data as BufferLike | BinaryLike,\r\n extractable,\r\n keyUsages,\r\n );\r\n break;\r\n case 'HKDF':\r\n result = await hkdfImportKey(\r\n format,\r\n data as BufferLike | BinaryLike,\r\n normalizedAlgorithm,\r\n extractable,\r\n keyUsages,\r\n );\r\n break;\r\n case 'X25519':\r\n // Fall through\r\n case 'X448':\r\n // Fall through\r\n case 'Ed25519':\r\n // Fall through\r\n case 'Ed448':\r\n result = edImportKey(\r\n format,\r\n data as BufferLike | JWK,\r\n normalizedAlgorithm,\r\n extractable,\r\n keyUsages,\r\n );\r\n break;\r\n case 'ML-DSA-44':\r\n // Fall through\r\n case 'ML-DSA-65':\r\n // Fall through\r\n case 'ML-DSA-87':\r\n result = mldsaImportKey(\r\n format,\r\n data as BufferLike,\r\n normalizedAlgorithm,\r\n extractable,\r\n keyUsages,\r\n );\r\n break;\r\n case 'ML-KEM-512':\r\n // Fall through\r\n case 'ML-KEM-768':\r\n // Fall through\r\n case 'ML-KEM-1024':\r\n result = mlkemImportKey(\r\n format,\r\n data as BufferLike,\r\n normalizedAlgorithm,\r\n extractable,\r\n keyUsages,\r\n );\r\n break;\r\n default:\r\n throw new Error(\r\n `\"subtle.importKey()\" is not implemented for ${normalizedAlgorithm.name}`,\r\n );\r\n }\r\n\r\n if (\r\n (result.type === 'secret' || result.type === 'private') &&\r\n result.usages.length === 0\r\n ) {\r\n throw new Error(\r\n `Usages cannot be empty when importing a ${result.type} key.`,\r\n );\r\n }\r\n\r\n return result;\r\n }\r\n\r\n async sign(\r\n algorithm: SubtleAlgorithm,\r\n key: CryptoKey,\r\n data: BufferLike,\r\n ): Promise<ArrayBuffer> {\r\n return signVerify(\r\n normalizeAlgorithm(algorithm, 'sign'),\r\n key,\r\n data,\r\n ) as ArrayBuffer;\r\n }\r\n\r\n async verify(\r\n algorithm: SubtleAlgorithm,\r\n key: CryptoKey,\r\n signature: BufferLike,\r\n data: BufferLike,\r\n ): Promise<boolean> {\r\n return signVerify(\r\n normalizeAlgorithm(algorithm, 'verify'),\r\n key,\r\n data,\r\n signature,\r\n ) as boolean;\r\n }\r\n\r\n private _encapsulateCore(\r\n algorithm: SubtleAlgorithm,\r\n key: CryptoKey,\r\n ): EncapsulateResult {\r\n const normalizedAlgorithm = normalizeAlgorithm(\r\n algorithm,\r\n 'encapsulateBits' as Operation,\r\n );\r\n\r\n if (key.algorithm.name !== normalizedAlgorithm.name) {\r\n throw lazyDOMException('Key algorithm mismatch', 'InvalidAccessError');\r\n }\r\n\r\n const variant = normalizedAlgorithm.name as MlKemVariant;\r\n const mlkem = new MlKem(variant);\r\n\r\n const keyData = key.keyObject.handle.exportKey(\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n );\r\n mlkem.setPublicKey(\r\n bufferLikeToArrayBuffer(keyData),\r\n KFormatType.DER,\r\n KeyEncoding.SPKI,\r\n );\r\n\r\n return mlkem.encapsulateSync();\r\n }\r\n\r\n private _decapsulateCore(\r\n algorithm: SubtleAlgorithm,\r\n key: CryptoKey,\r\n ciphertext: BufferLike,\r\n ): ArrayBuffer {\r\n const normalizedAlgorithm = normalizeAlgorithm(\r\n algorithm,\r\n 'decapsulateBits' as Operation,\r\n );\r\n\r\n if (key.algorithm.name !== normalizedAlgorithm.name) {\r\n throw lazyDOMException('Key algorithm mismatch', 'InvalidAccessError');\r\n }\r\n\r\n const variant = normalizedAlgorithm.name as MlKemVariant;\r\n const mlkem = new MlKem(variant);\r\n\r\n const keyData = key.keyObject.handle.exportKey(\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n mlkem.setPrivateKey(\r\n bufferLikeToArrayBuffer(keyData),\r\n KFormatType.DER,\r\n KeyEncoding.PKCS8,\r\n );\r\n\r\n return mlkem.decapsulateSync(bufferLikeToArrayBuffer(ciphertext));\r\n }\r\n\r\n async encapsulateBits(\r\n algorithm: SubtleAlgorithm,\r\n key: CryptoKey,\r\n ): Promise<EncapsulateResult> {\r\n if (!key.usages.includes('encapsulateBits')) {\r\n throw lazyDOMException(\r\n 'Key does not have encapsulateBits usage',\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n return this._encapsulateCore(algorithm, key);\r\n }\r\n\r\n async encapsulateKey(\r\n algorithm: SubtleAlgorithm,\r\n key: CryptoKey,\r\n sharedKeyAlgorithm: SubtleAlgorithm | AnyAlgorithm,\r\n extractable: boolean,\r\n usages: KeyUsage[],\r\n ): Promise<{ key: CryptoKey; ciphertext: ArrayBuffer }> {\r\n if (!key.usages.includes('encapsulateKey')) {\r\n throw lazyDOMException(\r\n 'Key does not have encapsulateKey usage',\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n const { sharedKey, ciphertext } = this._encapsulateCore(algorithm, key);\r\n const importedKey = await this.importKey(\r\n 'raw',\r\n sharedKey,\r\n sharedKeyAlgorithm,\r\n extractable,\r\n usages,\r\n );\r\n\r\n return { key: importedKey, ciphertext };\r\n }\r\n\r\n async decapsulateBits(\r\n algorithm: SubtleAlgorithm,\r\n key: CryptoKey,\r\n ciphertext: BufferLike,\r\n ): Promise<ArrayBuffer> {\r\n if (!key.usages.includes('decapsulateBits')) {\r\n throw lazyDOMException(\r\n 'Key does not have decapsulateBits usage',\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n return this._decapsulateCore(algorithm, key, ciphertext);\r\n }\r\n\r\n async decapsulateKey(\r\n algorithm: SubtleAlgorithm,\r\n key: CryptoKey,\r\n ciphertext: BufferLike,\r\n sharedKeyAlgorithm: SubtleAlgorithm | AnyAlgorithm,\r\n extractable: boolean,\r\n usages: KeyUsage[],\r\n ): Promise<CryptoKey> {\r\n if (!key.usages.includes('decapsulateKey')) {\r\n throw lazyDOMException(\r\n 'Key does not have decapsulateKey usage',\r\n 'InvalidAccessError',\r\n );\r\n }\r\n\r\n const sharedKey = this._decapsulateCore(algorithm, key, ciphertext);\r\n return this.importKey(\r\n 'raw',\r\n sharedKey,\r\n sharedKeyAlgorithm,\r\n extractable,\r\n usages,\r\n );\r\n }\r\n}\r\n\r\nexport const subtle = new Subtle();\r\n\r\nfunction getKeyLength(algorithm: SubtleAlgorithm): number {\r\n const name = algorithm.name;\r\n\r\n switch (name) {\r\n case 'AES-CTR':\r\n case 'AES-CBC':\r\n case 'AES-GCM':\r\n case 'AES-KW':\r\n case 'AES-OCB':\r\n case 'ChaCha20-Poly1305':\r\n return (algorithm as AesKeyGenParams).length || 256;\r\n\r\n case 'HMAC': {\r\n const hmacAlg = algorithm as { length?: number };\r\n return hmacAlg.length || 256;\r\n }\r\n\r\n case 'KMAC128':\r\n return algorithm.length || 128;\r\n case 'KMAC256':\r\n return algorithm.length || 256;\r\n\r\n default:\r\n throw lazyDOMException(\r\n `Cannot determine key length for ${name}`,\r\n 'NotSupportedError',\r\n );\r\n }\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getDefaultEncoding = getDefaultEncoding;
|
|
7
|
+
exports.getUIntOption = getUIntOption;
|
|
8
|
+
exports.normalizeEncoding = normalizeEncoding;
|
|
9
|
+
exports.setDefaultEncoding = setDefaultEncoding;
|
|
10
|
+
exports.validateEncoding = validateEncoding;
|
|
11
|
+
// Mimics node behavior for default global encoding
|
|
12
|
+
let defaultEncoding = 'buffer';
|
|
13
|
+
function setDefaultEncoding(encoding) {
|
|
14
|
+
defaultEncoding = encoding;
|
|
15
|
+
}
|
|
16
|
+
function getDefaultEncoding() {
|
|
17
|
+
return defaultEncoding;
|
|
18
|
+
}
|
|
19
|
+
function normalizeEncoding(enc) {
|
|
20
|
+
if (!enc) return 'utf8';
|
|
21
|
+
let retried;
|
|
22
|
+
while (true) {
|
|
23
|
+
switch (enc) {
|
|
24
|
+
case 'utf8':
|
|
25
|
+
case 'utf-8':
|
|
26
|
+
return 'utf8';
|
|
27
|
+
case 'ucs2':
|
|
28
|
+
case 'ucs-2':
|
|
29
|
+
case 'utf16le':
|
|
30
|
+
case 'utf-16le':
|
|
31
|
+
return 'utf16le';
|
|
32
|
+
case 'latin1':
|
|
33
|
+
case 'binary':
|
|
34
|
+
return 'latin1';
|
|
35
|
+
case 'base64':
|
|
36
|
+
case 'ascii':
|
|
37
|
+
case 'hex':
|
|
38
|
+
return enc;
|
|
39
|
+
default:
|
|
40
|
+
if (retried) return; // undefined
|
|
41
|
+
enc = ('' + enc).toLowerCase();
|
|
42
|
+
retried = true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function validateEncoding(data, encoding) {
|
|
47
|
+
const normalizedEncoding = normalizeEncoding(encoding);
|
|
48
|
+
const length = data.length;
|
|
49
|
+
if (normalizedEncoding === 'hex' && length % 2 !== 0) {
|
|
50
|
+
throw new Error(`Encoding ${encoding} not valid for data length ${length}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
55
|
+
function getUIntOption(options, key) {
|
|
56
|
+
let value;
|
|
57
|
+
if (options && (value = options[key]) != null) {
|
|
58
|
+
// >>> Turns any type into a positive integer (also sets the sign bit to 0)
|
|
59
|
+
if (value >>> 0 !== value) throw new Error(`options.${key}: ${value}`);
|
|
60
|
+
return value;
|
|
61
|
+
}
|
|
62
|
+
return -1;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=cipher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["defaultEncoding","setDefaultEncoding","encoding","getDefaultEncoding","normalizeEncoding","enc","retried","toLowerCase","validateEncoding","data","normalizedEncoding","length","Error","getUIntOption","options","key","value"],"sources":["cipher.ts"],"sourcesContent":["import type { Encoding } from './types';\r\n\r\n// Mimics node behavior for default global encoding\r\nlet defaultEncoding: Encoding = 'buffer';\r\n\r\nexport function setDefaultEncoding(encoding: Encoding) {\r\n defaultEncoding = encoding;\r\n}\r\n\r\nexport function getDefaultEncoding(): Encoding {\r\n return defaultEncoding;\r\n}\r\n\r\nexport function normalizeEncoding(enc: string) {\r\n if (!enc) return 'utf8';\r\n let retried;\r\n while (true) {\r\n switch (enc) {\r\n case 'utf8':\r\n case 'utf-8':\r\n return 'utf8';\r\n case 'ucs2':\r\n case 'ucs-2':\r\n case 'utf16le':\r\n case 'utf-16le':\r\n return 'utf16le';\r\n case 'latin1':\r\n case 'binary':\r\n return 'latin1';\r\n case 'base64':\r\n case 'ascii':\r\n case 'hex':\r\n return enc;\r\n default:\r\n if (retried) return; // undefined\r\n enc = ('' + enc).toLowerCase();\r\n retried = true;\r\n }\r\n }\r\n}\r\n\r\nexport function validateEncoding(data: string, encoding: string) {\r\n const normalizedEncoding = normalizeEncoding(encoding);\r\n const length = data.length;\r\n\r\n if (normalizedEncoding === 'hex' && length % 2 !== 0) {\r\n throw new Error(`Encoding ${encoding} not valid for data length ${length}`);\r\n }\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport function getUIntOption(options: Record<string, any>, key: string) {\r\n let value;\r\n if (options && (value = options[key]) != null) {\r\n // >>> Turns any type into a positive integer (also sets the sign bit to 0)\r\n if (value >>> 0 !== value) throw new Error(`options.${key}: ${value}`);\r\n return value;\r\n }\r\n return -1;\r\n}\r\n"],"mappings":";;;;;;;;;;AAEA;AACA,IAAIA,eAAyB,GAAG,QAAQ;AAEjC,SAASC,kBAAkBA,CAACC,QAAkB,EAAE;EACrDF,eAAe,GAAGE,QAAQ;AAC5B;AAEO,SAASC,kBAAkBA,CAAA,EAAa;EAC7C,OAAOH,eAAe;AACxB;AAEO,SAASI,iBAAiBA,CAACC,GAAW,EAAE;EAC7C,IAAI,CAACA,GAAG,EAAE,OAAO,MAAM;EACvB,IAAIC,OAAO;EACX,OAAO,IAAI,EAAE;IACX,QAAQD,GAAG;MACT,KAAK,MAAM;MACX,KAAK,OAAO;QACV,OAAO,MAAM;MACf,KAAK,MAAM;MACX,KAAK,OAAO;MACZ,KAAK,SAAS;MACd,KAAK,UAAU;QACb,OAAO,SAAS;MAClB,KAAK,QAAQ;MACb,KAAK,QAAQ;QACX,OAAO,QAAQ;MACjB,KAAK,QAAQ;MACb,KAAK,OAAO;MACZ,KAAK,KAAK;QACR,OAAOA,GAAG;MACZ;QACE,IAAIC,OAAO,EAAE,OAAO,CAAC;QACrBD,GAAG,GAAG,CAAC,EAAE,GAAGA,GAAG,EAAEE,WAAW,CAAC,CAAC;QAC9BD,OAAO,GAAG,IAAI;IAClB;EACF;AACF;AAEO,SAASE,gBAAgBA,CAACC,IAAY,EAAEP,QAAgB,EAAE;EAC/D,MAAMQ,kBAAkB,GAAGN,iBAAiB,CAACF,QAAQ,CAAC;EACtD,MAAMS,MAAM,GAAGF,IAAI,CAACE,MAAM;EAE1B,IAAID,kBAAkB,KAAK,KAAK,IAAIC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;IACpD,MAAM,IAAIC,KAAK,CAAC,YAAYV,QAAQ,8BAA8BS,MAAM,EAAE,CAAC;EAC7E;AACF;;AAEA;AACO,SAASE,aAAaA,CAACC,OAA4B,EAAEC,GAAW,EAAE;EACvE,IAAIC,KAAK;EACT,IAAIF,OAAO,IAAI,CAACE,KAAK,GAAGF,OAAO,CAACC,GAAG,CAAC,KAAK,IAAI,EAAE;IAC7C;IACA,IAAIC,KAAK,KAAK,CAAC,KAAKA,KAAK,EAAE,MAAM,IAAIJ,KAAK,CAAC,WAAWG,GAAG,KAAKC,KAAK,EAAE,CAAC;IACtE,OAAOA,KAAK;EACd;EACA,OAAO,CAAC,CAAC;AACX","ignoreList":[]}
|