@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":["Buffer","SBuffer","KFormatType","KeyEncoding","KeyType","CryptoKey","KeyObject","PublicKeyObject","PrivateKeyObject","SecretKeyObject","bufferLikeToArrayBuffer","argon2Sync","lazyDOMException","normalizeHashName","HashContext","validateMaxBufferLength","asyncDigest","createSecretKey","createPublicKey","NitroModules","pbkdf2DeriveBits","ecImportKey","ecdsaSignVerify","ec_generateKeyPair","ecDeriveBits","rsa_generateKeyPair","getRandomValues","createHmac","timingSafeEqual","createSign","createVerify","ed_generateKeyPairWebCrypto","x_generateKeyPairWebCrypto","xDeriveBits","Ed","mldsa_generateKeyPairWebCrypto","mlkem_generateKeyPairWebCrypto","MlKem","hkdfDeriveBits","KWebCryptoKeyFormat","CipherOrWrapMode","hasAnyNotIn","usages","allowed","some","usage","includes","normalizeAlgorithm","algorithm","_operation","name","getAlgorithmName","length","ecExportKey","key","format","keyObject","kWebCryptoKeyFormatRaw","handle","exportKey","kWebCryptoKeyFormatSPKI","exported","export","type","kWebCryptoKeyFormatPKCS8","Error","rsaExportKey","rsaCipher","mode","data","rsaParams","expectedType","kWebCryptoCipherEncrypt","hashAlgorithm","hash","label","undefined","rsaCipherModule","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","keyAlgorithm","hmacGenerateKey","hashName","Math","ceil","webCryptoHashName","WebCrypto","kmacGenerateKey","defaultLength","kmacSignVerify","signature","outputLengthBits","outputLengthBytes","keyData","kmac","customizationBuffer","customization","createKmac","computed","digest","sigBuffer","kmacImportKey","jwk","kty","expectedAlg","alg","keyType","initJwk","rsaImportKey","checkSet","createKeyObject","DER","SPKI","PKCS8","keyDetails","asymmetricKeyDetails","publicExponentBytes","publicExponent","exp","bytes","value","unshift","floor","normalizedHash","algorithmWithDetails","modulusLength","hmacImportKey","k","decoded","from","keyBitLength","normalizedAlgorithm","aesImportKey","actualLength","edImportKey","isX","allowedUsages","init","jwkData","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","secret","version","isCryptoKeyPair","hmacSignVerify","hmac","computedBuffer","rsaSignVerify","padding","saltLength","RSA_PKCS1_PADDING","RSA_PKCS1_PSS_PADDING","paddingValue","signer","sig","sign","verifier","verify","edSignVerify","isSign","expectedKeyType","curveType","ed","rawKey","dataBuffer","signSync","signatureBuffer","verifySync","mldsaSignVerify","signVerify","cipherOrWrap","op","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","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","getPublicKey","publicKeyObject","toCryptoKey","_encapsulateCore","variant","mlkem","setPublicKey","encapsulateSync","_decapsulateCore","ciphertext","setPrivateKey","decapsulateSync","sharedKeyAlgorithm","sharedKey","importedKey","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,54 @@
|
|
|
1
|
+
// Mimics node behavior for default global encoding
|
|
2
|
+
let defaultEncoding = 'buffer';
|
|
3
|
+
export function setDefaultEncoding(encoding) {
|
|
4
|
+
defaultEncoding = encoding;
|
|
5
|
+
}
|
|
6
|
+
export function getDefaultEncoding() {
|
|
7
|
+
return defaultEncoding;
|
|
8
|
+
}
|
|
9
|
+
export function normalizeEncoding(enc) {
|
|
10
|
+
if (!enc) return 'utf8';
|
|
11
|
+
let retried;
|
|
12
|
+
while (true) {
|
|
13
|
+
switch (enc) {
|
|
14
|
+
case 'utf8':
|
|
15
|
+
case 'utf-8':
|
|
16
|
+
return 'utf8';
|
|
17
|
+
case 'ucs2':
|
|
18
|
+
case 'ucs-2':
|
|
19
|
+
case 'utf16le':
|
|
20
|
+
case 'utf-16le':
|
|
21
|
+
return 'utf16le';
|
|
22
|
+
case 'latin1':
|
|
23
|
+
case 'binary':
|
|
24
|
+
return 'latin1';
|
|
25
|
+
case 'base64':
|
|
26
|
+
case 'ascii':
|
|
27
|
+
case 'hex':
|
|
28
|
+
return enc;
|
|
29
|
+
default:
|
|
30
|
+
if (retried) return; // undefined
|
|
31
|
+
enc = ('' + enc).toLowerCase();
|
|
32
|
+
retried = true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function validateEncoding(data, encoding) {
|
|
37
|
+
const normalizedEncoding = normalizeEncoding(encoding);
|
|
38
|
+
const length = data.length;
|
|
39
|
+
if (normalizedEncoding === 'hex' && length % 2 !== 0) {
|
|
40
|
+
throw new Error(`Encoding ${encoding} not valid for data length ${length}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
|
+
export function getUIntOption(options, key) {
|
|
46
|
+
let value;
|
|
47
|
+
if (options && (value = options[key]) != null) {
|
|
48
|
+
// >>> Turns any type into a positive integer (also sets the sign bit to 0)
|
|
49
|
+
if (value >>> 0 !== value) throw new Error(`options.${key}: ${value}`);
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
return -1;
|
|
53
|
+
}
|
|
54
|
+
//# 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;AAExC,OAAO,SAASC,kBAAkBA,CAACC,QAAkB,EAAE;EACrDF,eAAe,GAAGE,QAAQ;AAC5B;AAEA,OAAO,SAASC,kBAAkBA,CAAA,EAAa;EAC7C,OAAOH,eAAe;AACxB;AAEA,OAAO,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;AAEA,OAAO,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;AACA,OAAO,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":[]}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { Buffer as CraftzdogBuffer } from '@craftzdog/react-native-buffer';
|
|
2
|
+
import { Buffer as SafeBuffer } from 'safe-buffer';
|
|
3
|
+
import { NitroModules } from 'react-native-nitro-modules';
|
|
4
|
+
const utils = NitroModules.createHybridObject('Utils');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Converts supplied argument to an ArrayBuffer. Note this does not copy the
|
|
8
|
+
* data so it is faster than toArrayBuffer. Not copying is important for
|
|
9
|
+
* functions like randomFill which need to be able to write to the underlying
|
|
10
|
+
* buffer.
|
|
11
|
+
* @param buf
|
|
12
|
+
* @returns ArrayBuffer
|
|
13
|
+
*/
|
|
14
|
+
export const abvToArrayBuffer = buf => {
|
|
15
|
+
if (CraftzdogBuffer.isBuffer(buf)) {
|
|
16
|
+
return buf.buffer;
|
|
17
|
+
}
|
|
18
|
+
if (ArrayBuffer.isView(buf)) {
|
|
19
|
+
return buf.buffer;
|
|
20
|
+
}
|
|
21
|
+
return buf;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Converts supplied argument to an ArrayBuffer. Note this copies data if the
|
|
26
|
+
* supplied buffer has the .slice() method, so can be a bit slow.
|
|
27
|
+
* @param buf
|
|
28
|
+
* @returns ArrayBuffer
|
|
29
|
+
*/
|
|
30
|
+
export function toArrayBuffer(buf) {
|
|
31
|
+
if (CraftzdogBuffer.isBuffer(buf) || ArrayBuffer.isView(buf)) {
|
|
32
|
+
var _buf$buffer;
|
|
33
|
+
if (buf !== null && buf !== void 0 && (_buf$buffer = buf.buffer) !== null && _buf$buffer !== void 0 && _buf$buffer.slice) {
|
|
34
|
+
return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
|
|
35
|
+
} else {
|
|
36
|
+
return buf.buffer;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const ab = new ArrayBuffer(buf.length);
|
|
40
|
+
const view = new Uint8Array(ab);
|
|
41
|
+
for (let i = 0; i < buf.length; ++i) {
|
|
42
|
+
view[i] = SafeBuffer.isBuffer(buf) ? buf.readUInt8(i) : buf[i];
|
|
43
|
+
}
|
|
44
|
+
return ab;
|
|
45
|
+
}
|
|
46
|
+
export function bufferLikeToArrayBuffer(buf) {
|
|
47
|
+
// Buffer
|
|
48
|
+
if (CraftzdogBuffer.isBuffer(buf) || SafeBuffer.isBuffer(buf)) {
|
|
49
|
+
return toArrayBuffer(buf);
|
|
50
|
+
}
|
|
51
|
+
// ArrayBufferView
|
|
52
|
+
if (ArrayBuffer.isView(buf)) {
|
|
53
|
+
return toArrayBuffer(buf);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// If buf is already an ArrayBuffer, return it.
|
|
57
|
+
if (buf instanceof ArrayBuffer) {
|
|
58
|
+
return buf;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// If buf is a SharedArrayBuffer, convert it to ArrayBuffer.
|
|
62
|
+
// This typically involves a copy of the data.
|
|
63
|
+
if (typeof SharedArrayBuffer !== 'undefined' && buf instanceof SharedArrayBuffer) {
|
|
64
|
+
const arrayBuffer = new ArrayBuffer(buf.byteLength);
|
|
65
|
+
new Uint8Array(arrayBuffer).set(new Uint8Array(buf));
|
|
66
|
+
return arrayBuffer;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// If we reach here, 'buf' is of a type within BufferLike that has not been handled by the above checks.
|
|
70
|
+
// This indicates either an incomplete BufferLike definition or an unexpected input type.
|
|
71
|
+
// Throw an error to signal this, ensuring the function's contract (return ArrayBuffer or throw) is met.
|
|
72
|
+
throw new TypeError('Input must be a Buffer, ArrayBufferView, ArrayBuffer, or SharedArrayBuffer.');
|
|
73
|
+
}
|
|
74
|
+
export function binaryLikeToArrayBuffer(input,
|
|
75
|
+
// CipherKey adds compat with node types
|
|
76
|
+
encoding = 'utf-8') {
|
|
77
|
+
// string
|
|
78
|
+
if (typeof input === 'string') {
|
|
79
|
+
if (encoding === 'buffer') {
|
|
80
|
+
throw new Error('Cannot create a buffer from a string with a buffer encoding');
|
|
81
|
+
}
|
|
82
|
+
if (nativeEncodings.has(encoding)) {
|
|
83
|
+
return utils.stringToBuffer(input, encoding);
|
|
84
|
+
}
|
|
85
|
+
const buffer = CraftzdogBuffer.from(input, encoding);
|
|
86
|
+
return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Buffer
|
|
90
|
+
if (CraftzdogBuffer.isBuffer(input) || SafeBuffer.isBuffer(input)) {
|
|
91
|
+
return toArrayBuffer(input);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// ArrayBufferView
|
|
95
|
+
// TODO add further binary types to BinaryLike, UInt8Array and so for have this array as property
|
|
96
|
+
if (ArrayBuffer.isView(input)) {
|
|
97
|
+
return toArrayBuffer(input);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// ArrayBuffer
|
|
101
|
+
if (input instanceof ArrayBuffer) {
|
|
102
|
+
return input;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// if (!(input instanceof ArrayBuffer)) {
|
|
106
|
+
// try {
|
|
107
|
+
// // this is a strange fallback case and input is unknown at this point
|
|
108
|
+
// const buffer = Buffer.from(input as unknown as string);
|
|
109
|
+
// return buffer.buffer.slice(
|
|
110
|
+
// buffer.byteOffset,
|
|
111
|
+
// buffer.byteOffset + buffer.byteLength
|
|
112
|
+
// );
|
|
113
|
+
// } catch(e: unknown) {
|
|
114
|
+
// console.log('throwing 1');
|
|
115
|
+
// const err = e as Error;
|
|
116
|
+
// throw new Error(err.message);
|
|
117
|
+
// }
|
|
118
|
+
// }
|
|
119
|
+
|
|
120
|
+
// KeyObject — duck-typed via Symbol.toStringTag to avoid circular dependency
|
|
121
|
+
// with keys/classes. The type assertion must match KeyObjectHandle.exportKey().
|
|
122
|
+
if (typeof input === 'object' && input != null && Object.prototype.toString.call(input) === '[object KeyObject]') {
|
|
123
|
+
return input.handle.exportKey();
|
|
124
|
+
}
|
|
125
|
+
throw new Error('Invalid argument type for "key". Need ArrayBuffer, TypedArray, KeyObject, CryptoKey, string');
|
|
126
|
+
}
|
|
127
|
+
const nativeEncodings = new Set(['hex', 'base64', 'base64url', 'utf8', 'utf-8', 'latin1', 'binary', 'ascii']);
|
|
128
|
+
export function ab2str(buf, encoding = 'hex') {
|
|
129
|
+
if (nativeEncodings.has(encoding)) {
|
|
130
|
+
return utils.bufferToString(buf, encoding);
|
|
131
|
+
}
|
|
132
|
+
return CraftzdogBuffer.from(buf).toString(encoding);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** Native C++ buffer-to-string — exposed for benchmarking */
|
|
136
|
+
export function bufferToString(buf, encoding = 'hex') {
|
|
137
|
+
return utils.bufferToString(buf, encoding);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** Native C++ string-to-buffer — exposed for benchmarking */
|
|
141
|
+
export function stringToBuffer(str, encoding = 'utf-8') {
|
|
142
|
+
return utils.stringToBuffer(str, encoding);
|
|
143
|
+
}
|
|
144
|
+
export const kEmptyObject = Object.freeze(Object.create(null));
|
|
145
|
+
export * from './noble';
|
|
146
|
+
//# sourceMappingURL=conversion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Buffer","CraftzdogBuffer","SafeBuffer","NitroModules","utils","createHybridObject","abvToArrayBuffer","buf","isBuffer","buffer","ArrayBuffer","isView","toArrayBuffer","_buf$buffer","slice","byteOffset","byteLength","ab","length","view","Uint8Array","i","readUInt8","bufferLikeToArrayBuffer","SharedArrayBuffer","arrayBuffer","set","TypeError","binaryLikeToArrayBuffer","input","encoding","Error","nativeEncodings","has","stringToBuffer","from","Object","prototype","toString","call","handle","exportKey","Set","ab2str","bufferToString","str","kEmptyObject","freeze","create"],"sources":["conversion.ts"],"sourcesContent":["import { Buffer as CraftzdogBuffer } from '@craftzdog/react-native-buffer';\r\nimport { Buffer as SafeBuffer } from 'safe-buffer';\r\nimport { NitroModules } from 'react-native-nitro-modules';\r\nimport type { Utils } from '../specs/v1/utils.nitro';\r\nimport type { ABV, BinaryLikeNode, BufferLike } from './types';\r\n\r\nconst utils = NitroModules.createHybridObject<Utils>('Utils');\r\n\r\n/**\r\n * Converts supplied argument to an ArrayBuffer. Note this does not copy the\r\n * data so it is faster than toArrayBuffer. Not copying is important for\r\n * functions like randomFill which need to be able to write to the underlying\r\n * buffer.\r\n * @param buf\r\n * @returns ArrayBuffer\r\n */\r\nexport const abvToArrayBuffer = (buf: ABV) => {\r\n if (CraftzdogBuffer.isBuffer(buf)) {\r\n return buf.buffer as ArrayBuffer;\r\n }\r\n if (ArrayBuffer.isView(buf)) {\r\n return buf.buffer as ArrayBuffer;\r\n }\r\n return buf as ArrayBuffer;\r\n};\r\n\r\n/**\r\n * Converts supplied argument to an ArrayBuffer. Note this copies data if the\r\n * supplied buffer has the .slice() method, so can be a bit slow.\r\n * @param buf\r\n * @returns ArrayBuffer\r\n */\r\nexport function toArrayBuffer(\r\n buf: CraftzdogBuffer | SafeBuffer | ArrayBufferView,\r\n): ArrayBuffer {\r\n if (CraftzdogBuffer.isBuffer(buf) || ArrayBuffer.isView(buf)) {\r\n if (buf?.buffer?.slice) {\r\n return buf.buffer.slice(\r\n buf.byteOffset,\r\n buf.byteOffset + buf.byteLength,\r\n ) as ArrayBuffer;\r\n } else {\r\n return buf.buffer as ArrayBuffer;\r\n }\r\n }\r\n const ab = new ArrayBuffer(buf.length);\r\n const view = new Uint8Array(ab);\r\n for (let i = 0; i < buf.length; ++i) {\r\n view[i] = SafeBuffer.isBuffer(buf) ? buf.readUInt8(i) : buf[i]!;\r\n }\r\n return ab;\r\n}\r\n\r\nexport function bufferLikeToArrayBuffer(buf: BufferLike): ArrayBuffer {\r\n // Buffer\r\n if (CraftzdogBuffer.isBuffer(buf) || SafeBuffer.isBuffer(buf)) {\r\n return toArrayBuffer(buf);\r\n }\r\n // ArrayBufferView\r\n if (ArrayBuffer.isView(buf)) {\r\n return toArrayBuffer(buf);\r\n }\r\n\r\n // If buf is already an ArrayBuffer, return it.\r\n if (buf instanceof ArrayBuffer) {\r\n return buf;\r\n }\r\n\r\n // If buf is a SharedArrayBuffer, convert it to ArrayBuffer.\r\n // This typically involves a copy of the data.\r\n if (\r\n typeof SharedArrayBuffer !== 'undefined' &&\r\n buf instanceof SharedArrayBuffer\r\n ) {\r\n const arrayBuffer = new ArrayBuffer(buf.byteLength);\r\n new Uint8Array(arrayBuffer).set(new Uint8Array(buf));\r\n return arrayBuffer;\r\n }\r\n\r\n // If we reach here, 'buf' is of a type within BufferLike that has not been handled by the above checks.\r\n // This indicates either an incomplete BufferLike definition or an unexpected input type.\r\n // Throw an error to signal this, ensuring the function's contract (return ArrayBuffer or throw) is met.\r\n throw new TypeError(\r\n 'Input must be a Buffer, ArrayBufferView, ArrayBuffer, or SharedArrayBuffer.',\r\n );\r\n}\r\n\r\nexport function binaryLikeToArrayBuffer(\r\n input: BinaryLikeNode, // CipherKey adds compat with node types\r\n encoding: string = 'utf-8',\r\n): ArrayBuffer {\r\n // string\r\n if (typeof input === 'string') {\r\n if (encoding === 'buffer') {\r\n throw new Error(\r\n 'Cannot create a buffer from a string with a buffer encoding',\r\n );\r\n }\r\n\r\n if (nativeEncodings.has(encoding)) {\r\n return utils.stringToBuffer(input, encoding);\r\n }\r\n const buffer = CraftzdogBuffer.from(input, encoding);\r\n return buffer.buffer.slice(\r\n buffer.byteOffset,\r\n buffer.byteOffset + buffer.byteLength,\r\n );\r\n }\r\n\r\n // Buffer\r\n if (CraftzdogBuffer.isBuffer(input) || SafeBuffer.isBuffer(input)) {\r\n return toArrayBuffer(input);\r\n }\r\n\r\n // ArrayBufferView\r\n // TODO add further binary types to BinaryLike, UInt8Array and so for have this array as property\r\n if (ArrayBuffer.isView(input)) {\r\n return toArrayBuffer(input);\r\n }\r\n\r\n // ArrayBuffer\r\n if (input instanceof ArrayBuffer) {\r\n return input;\r\n }\r\n\r\n // if (!(input instanceof ArrayBuffer)) {\r\n // try {\r\n // // this is a strange fallback case and input is unknown at this point\r\n // const buffer = Buffer.from(input as unknown as string);\r\n // return buffer.buffer.slice(\r\n // buffer.byteOffset,\r\n // buffer.byteOffset + buffer.byteLength\r\n // );\r\n // } catch(e: unknown) {\r\n // console.log('throwing 1');\r\n // const err = e as Error;\r\n // throw new Error(err.message);\r\n // }\r\n // }\r\n\r\n // KeyObject — duck-typed via Symbol.toStringTag to avoid circular dependency\r\n // with keys/classes. The type assertion must match KeyObjectHandle.exportKey().\r\n if (\r\n typeof input === 'object' &&\r\n input != null &&\r\n Object.prototype.toString.call(input) === '[object KeyObject]'\r\n ) {\r\n return (\r\n input as { handle: { exportKey(): ArrayBuffer } }\r\n ).handle.exportKey();\r\n }\r\n\r\n throw new Error(\r\n 'Invalid argument type for \"key\". Need ArrayBuffer, TypedArray, KeyObject, CryptoKey, string',\r\n );\r\n}\r\n\r\nconst nativeEncodings = new Set([\r\n 'hex',\r\n 'base64',\r\n 'base64url',\r\n 'utf8',\r\n 'utf-8',\r\n 'latin1',\r\n 'binary',\r\n 'ascii',\r\n]);\r\n\r\nexport function ab2str(buf: ArrayBuffer, encoding: string = 'hex'): string {\r\n if (nativeEncodings.has(encoding)) {\r\n return utils.bufferToString(buf, encoding);\r\n }\r\n return CraftzdogBuffer.from(buf).toString(encoding);\r\n}\r\n\r\n/** Native C++ buffer-to-string — exposed for benchmarking */\r\nexport function bufferToString(\r\n buf: ArrayBuffer,\r\n encoding: string = 'hex',\r\n): string {\r\n return utils.bufferToString(buf, encoding);\r\n}\r\n\r\n/** Native C++ string-to-buffer — exposed for benchmarking */\r\nexport function stringToBuffer(\r\n str: string,\r\n encoding: string = 'utf-8',\r\n): ArrayBuffer {\r\n return utils.stringToBuffer(str, encoding);\r\n}\r\n\r\nexport const kEmptyObject = Object.freeze(Object.create(null));\r\n\r\nexport * from './noble';\r\n"],"mappings":"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","ignoreList":[]}
|