@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,1803 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import { Buffer as SBuffer } from 'safe-buffer';
|
|
3
|
+
import { KFormatType, KeyEncoding, KeyType } from './utils';
|
|
4
|
+
import { CryptoKey, KeyObject, PublicKeyObject, PrivateKeyObject, SecretKeyObject } from './keys';
|
|
5
|
+
import { bufferLikeToArrayBuffer } from './utils/conversion';
|
|
6
|
+
import { argon2Sync } from './argon2';
|
|
7
|
+
import { lazyDOMException } from './utils/errors';
|
|
8
|
+
import { normalizeHashName, HashContext } from './utils/hashnames';
|
|
9
|
+
import { validateMaxBufferLength } from './utils/validation';
|
|
10
|
+
import { asyncDigest } from './hash';
|
|
11
|
+
import { createSecretKey, createPublicKey } from './keys';
|
|
12
|
+
import { NitroModules } from 'react-native-nitro-modules';
|
|
13
|
+
import { pbkdf2DeriveBits } from './pbkdf2';
|
|
14
|
+
import { ecImportKey, ecdsaSignVerify, ec_generateKeyPair, ecDeriveBits } from './ec';
|
|
15
|
+
import { rsa_generateKeyPair } from './rsa';
|
|
16
|
+
import { getRandomValues } from './random';
|
|
17
|
+
import { createHmac } from './hmac';
|
|
18
|
+
import { timingSafeEqual } from './utils/timingSafeEqual';
|
|
19
|
+
import { createSign, createVerify } from './keys/signVerify';
|
|
20
|
+
import { ed_generateKeyPairWebCrypto, x_generateKeyPairWebCrypto, xDeriveBits, Ed } from './ed';
|
|
21
|
+
import { mldsa_generateKeyPairWebCrypto } from './mldsa';
|
|
22
|
+
import { mlkem_generateKeyPairWebCrypto, MlKem } from './mlkem';
|
|
23
|
+
import { hkdfDeriveBits } from './hkdf';
|
|
24
|
+
// Temporary enums that need to be defined
|
|
25
|
+
var KWebCryptoKeyFormat = /*#__PURE__*/function (KWebCryptoKeyFormat) {
|
|
26
|
+
KWebCryptoKeyFormat[KWebCryptoKeyFormat["kWebCryptoKeyFormatRaw"] = 0] = "kWebCryptoKeyFormatRaw";
|
|
27
|
+
KWebCryptoKeyFormat[KWebCryptoKeyFormat["kWebCryptoKeyFormatSPKI"] = 1] = "kWebCryptoKeyFormatSPKI";
|
|
28
|
+
KWebCryptoKeyFormat[KWebCryptoKeyFormat["kWebCryptoKeyFormatPKCS8"] = 2] = "kWebCryptoKeyFormatPKCS8";
|
|
29
|
+
return KWebCryptoKeyFormat;
|
|
30
|
+
}(KWebCryptoKeyFormat || {});
|
|
31
|
+
var CipherOrWrapMode = /*#__PURE__*/function (CipherOrWrapMode) {
|
|
32
|
+
CipherOrWrapMode[CipherOrWrapMode["kWebCryptoCipherEncrypt"] = 0] = "kWebCryptoCipherEncrypt";
|
|
33
|
+
CipherOrWrapMode[CipherOrWrapMode["kWebCryptoCipherDecrypt"] = 1] = "kWebCryptoCipherDecrypt";
|
|
34
|
+
return CipherOrWrapMode;
|
|
35
|
+
}(CipherOrWrapMode || {}); // Placeholder functions that need to be implemented
|
|
36
|
+
function hasAnyNotIn(usages, allowed) {
|
|
37
|
+
return usages.some(usage => !allowed.includes(usage));
|
|
38
|
+
}
|
|
39
|
+
function normalizeAlgorithm(algorithm, _operation) {
|
|
40
|
+
if (typeof algorithm === 'string') {
|
|
41
|
+
return {
|
|
42
|
+
name: algorithm
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return algorithm;
|
|
46
|
+
}
|
|
47
|
+
function getAlgorithmName(name, length) {
|
|
48
|
+
switch (name) {
|
|
49
|
+
case 'AES-CBC':
|
|
50
|
+
return `A${length}CBC`;
|
|
51
|
+
case 'AES-CTR':
|
|
52
|
+
return `A${length}CTR`;
|
|
53
|
+
case 'AES-GCM':
|
|
54
|
+
return `A${length}GCM`;
|
|
55
|
+
case 'AES-KW':
|
|
56
|
+
return `A${length}KW`;
|
|
57
|
+
case 'AES-OCB':
|
|
58
|
+
return `A${length}OCB`;
|
|
59
|
+
case 'ChaCha20-Poly1305':
|
|
60
|
+
return 'C20P';
|
|
61
|
+
default:
|
|
62
|
+
return `${name}${length}`;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Placeholder implementations for missing functions
|
|
67
|
+
function ecExportKey(key, format) {
|
|
68
|
+
const keyObject = key.keyObject;
|
|
69
|
+
if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatRaw) {
|
|
70
|
+
return bufferLikeToArrayBuffer(keyObject.handle.exportKey());
|
|
71
|
+
} else if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI) {
|
|
72
|
+
const exported = keyObject.export({
|
|
73
|
+
format: 'der',
|
|
74
|
+
type: 'spki'
|
|
75
|
+
});
|
|
76
|
+
return bufferLikeToArrayBuffer(exported);
|
|
77
|
+
} else if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatPKCS8) {
|
|
78
|
+
const exported = keyObject.export({
|
|
79
|
+
format: 'der',
|
|
80
|
+
type: 'pkcs8'
|
|
81
|
+
});
|
|
82
|
+
return bufferLikeToArrayBuffer(exported);
|
|
83
|
+
} else {
|
|
84
|
+
throw new Error(`Unsupported EC export format: ${format}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function rsaExportKey(key, format) {
|
|
88
|
+
const keyObject = key.keyObject;
|
|
89
|
+
if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI) {
|
|
90
|
+
// Export public key in SPKI format
|
|
91
|
+
const exported = keyObject.export({
|
|
92
|
+
format: 'der',
|
|
93
|
+
type: 'spki'
|
|
94
|
+
});
|
|
95
|
+
return bufferLikeToArrayBuffer(exported);
|
|
96
|
+
} else if (format === KWebCryptoKeyFormat.kWebCryptoKeyFormatPKCS8) {
|
|
97
|
+
// Export private key in PKCS8 format
|
|
98
|
+
const exported = keyObject.export({
|
|
99
|
+
format: 'der',
|
|
100
|
+
type: 'pkcs8'
|
|
101
|
+
});
|
|
102
|
+
return bufferLikeToArrayBuffer(exported);
|
|
103
|
+
} else {
|
|
104
|
+
throw new Error(`Unsupported RSA export format: ${format}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async function rsaCipher(mode, key, data, algorithm) {
|
|
108
|
+
const rsaParams = algorithm;
|
|
109
|
+
|
|
110
|
+
// Validate key type matches operation
|
|
111
|
+
const expectedType = mode === CipherOrWrapMode.kWebCryptoCipherEncrypt ? 'public' : 'private';
|
|
112
|
+
if (key.type !== expectedType) {
|
|
113
|
+
throw lazyDOMException('The requested operation is not valid for the provided key', 'InvalidAccessError');
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Get hash algorithm from key
|
|
117
|
+
const hashAlgorithm = normalizeHashName(key.algorithm.hash);
|
|
118
|
+
|
|
119
|
+
// Prepare label (optional)
|
|
120
|
+
const label = rsaParams.label ? bufferLikeToArrayBuffer(rsaParams.label) : undefined;
|
|
121
|
+
|
|
122
|
+
// Create RSA cipher instance
|
|
123
|
+
const rsaCipherModule = NitroModules.createHybridObject('RsaCipher');
|
|
124
|
+
|
|
125
|
+
// RSA-OAEP padding constant = 4
|
|
126
|
+
const RSA_PKCS1_OAEP_PADDING = 4;
|
|
127
|
+
if (mode === CipherOrWrapMode.kWebCryptoCipherEncrypt) {
|
|
128
|
+
// Encrypt with public key
|
|
129
|
+
return rsaCipherModule.encrypt(key.keyObject.handle, data, RSA_PKCS1_OAEP_PADDING, hashAlgorithm, label);
|
|
130
|
+
} else {
|
|
131
|
+
// Decrypt with private key
|
|
132
|
+
return rsaCipherModule.decrypt(key.keyObject.handle, data, RSA_PKCS1_OAEP_PADDING, hashAlgorithm, label);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async function aesCipher(mode, key, data, algorithm) {
|
|
136
|
+
const {
|
|
137
|
+
name
|
|
138
|
+
} = algorithm;
|
|
139
|
+
switch (name) {
|
|
140
|
+
case 'AES-CTR':
|
|
141
|
+
return aesCtrCipher(mode, key, data, algorithm);
|
|
142
|
+
case 'AES-CBC':
|
|
143
|
+
return aesCbcCipher(mode, key, data, algorithm);
|
|
144
|
+
case 'AES-GCM':
|
|
145
|
+
return aesGcmCipher(mode, key, data, algorithm);
|
|
146
|
+
case 'AES-OCB':
|
|
147
|
+
return aesOcbCipher(mode, key, data, algorithm);
|
|
148
|
+
default:
|
|
149
|
+
throw lazyDOMException(`Unsupported AES algorithm: ${name}`, 'NotSupportedError');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
async function aesCtrCipher(mode, key, data, algorithm) {
|
|
153
|
+
// Validate counter and length
|
|
154
|
+
if (!algorithm.counter || algorithm.counter.byteLength !== 16) {
|
|
155
|
+
throw lazyDOMException('AES-CTR algorithm.counter must be 16 bytes', 'OperationError');
|
|
156
|
+
}
|
|
157
|
+
if (algorithm.length < 1 || algorithm.length > 128) {
|
|
158
|
+
throw lazyDOMException('AES-CTR algorithm.length must be between 1 and 128', 'OperationError');
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Get cipher type based on key length
|
|
162
|
+
const keyLength = key.algorithm.length;
|
|
163
|
+
const cipherType = `aes-${keyLength}-ctr`;
|
|
164
|
+
|
|
165
|
+
// Create cipher
|
|
166
|
+
const factory = NitroModules.createHybridObject('CipherFactory');
|
|
167
|
+
const cipher = factory.createCipher({
|
|
168
|
+
isCipher: mode === CipherOrWrapMode.kWebCryptoCipherEncrypt,
|
|
169
|
+
cipherType,
|
|
170
|
+
cipherKey: bufferLikeToArrayBuffer(key.keyObject.export()),
|
|
171
|
+
iv: bufferLikeToArrayBuffer(algorithm.counter)
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// Process data
|
|
175
|
+
const updated = cipher.update(data);
|
|
176
|
+
const final = cipher.final();
|
|
177
|
+
|
|
178
|
+
// Concatenate results
|
|
179
|
+
const result = new Uint8Array(updated.byteLength + final.byteLength);
|
|
180
|
+
result.set(new Uint8Array(updated), 0);
|
|
181
|
+
result.set(new Uint8Array(final), updated.byteLength);
|
|
182
|
+
return result.buffer;
|
|
183
|
+
}
|
|
184
|
+
async function aesCbcCipher(mode, key, data, algorithm) {
|
|
185
|
+
// Validate IV
|
|
186
|
+
const iv = bufferLikeToArrayBuffer(algorithm.iv);
|
|
187
|
+
if (iv.byteLength !== 16) {
|
|
188
|
+
throw lazyDOMException('algorithm.iv must contain exactly 16 bytes', 'OperationError');
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// Get cipher type based on key length
|
|
192
|
+
const keyLength = key.algorithm.length;
|
|
193
|
+
const cipherType = `aes-${keyLength}-cbc`;
|
|
194
|
+
|
|
195
|
+
// Create cipher
|
|
196
|
+
const factory = NitroModules.createHybridObject('CipherFactory');
|
|
197
|
+
const cipher = factory.createCipher({
|
|
198
|
+
isCipher: mode === CipherOrWrapMode.kWebCryptoCipherEncrypt,
|
|
199
|
+
cipherType,
|
|
200
|
+
cipherKey: bufferLikeToArrayBuffer(key.keyObject.export()),
|
|
201
|
+
iv
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
// Process data
|
|
205
|
+
const updated = cipher.update(data);
|
|
206
|
+
const final = cipher.final();
|
|
207
|
+
|
|
208
|
+
// Concatenate results
|
|
209
|
+
const result = new Uint8Array(updated.byteLength + final.byteLength);
|
|
210
|
+
result.set(new Uint8Array(updated), 0);
|
|
211
|
+
result.set(new Uint8Array(final), updated.byteLength);
|
|
212
|
+
return result.buffer;
|
|
213
|
+
}
|
|
214
|
+
async function aesAeadCipher(mode, key, data, config, additionalData, tagLength = 128) {
|
|
215
|
+
if (!config.validTagLengths.includes(tagLength)) {
|
|
216
|
+
throw lazyDOMException(`${tagLength} is not a valid ${config.algorithmName} tag length`, 'OperationError');
|
|
217
|
+
}
|
|
218
|
+
const tagByteLength = tagLength / 8;
|
|
219
|
+
const keyLength = key.algorithm.length;
|
|
220
|
+
const cipherType = `aes-${keyLength}-${config.cipherSuffix}`;
|
|
221
|
+
const factory = NitroModules.createHybridObject('CipherFactory');
|
|
222
|
+
const cipher = factory.createCipher({
|
|
223
|
+
isCipher: mode === CipherOrWrapMode.kWebCryptoCipherEncrypt,
|
|
224
|
+
cipherType,
|
|
225
|
+
cipherKey: bufferLikeToArrayBuffer(key.keyObject.export()),
|
|
226
|
+
iv: config.iv,
|
|
227
|
+
authTagLen: tagByteLength
|
|
228
|
+
});
|
|
229
|
+
let processData;
|
|
230
|
+
if (mode === CipherOrWrapMode.kWebCryptoCipherDecrypt) {
|
|
231
|
+
const dataView = new Uint8Array(data);
|
|
232
|
+
if (dataView.byteLength < tagByteLength) {
|
|
233
|
+
throw lazyDOMException('The provided data is too small.', 'OperationError');
|
|
234
|
+
}
|
|
235
|
+
const ciphertextLength = dataView.byteLength - tagByteLength;
|
|
236
|
+
processData = dataView.slice(0, ciphertextLength).buffer;
|
|
237
|
+
const authTag = dataView.slice(ciphertextLength).buffer;
|
|
238
|
+
cipher.setAuthTag(authTag);
|
|
239
|
+
} else {
|
|
240
|
+
processData = data;
|
|
241
|
+
}
|
|
242
|
+
if (additionalData) {
|
|
243
|
+
cipher.setAAD(bufferLikeToArrayBuffer(additionalData));
|
|
244
|
+
}
|
|
245
|
+
const updated = cipher.update(processData);
|
|
246
|
+
const final = cipher.final();
|
|
247
|
+
if (mode === CipherOrWrapMode.kWebCryptoCipherEncrypt) {
|
|
248
|
+
const tag = cipher.getAuthTag();
|
|
249
|
+
const result = new Uint8Array(updated.byteLength + final.byteLength + tag.byteLength);
|
|
250
|
+
result.set(new Uint8Array(updated), 0);
|
|
251
|
+
result.set(new Uint8Array(final), updated.byteLength);
|
|
252
|
+
result.set(new Uint8Array(tag), updated.byteLength + final.byteLength);
|
|
253
|
+
return result.buffer;
|
|
254
|
+
} else {
|
|
255
|
+
const result = new Uint8Array(updated.byteLength + final.byteLength);
|
|
256
|
+
result.set(new Uint8Array(updated), 0);
|
|
257
|
+
result.set(new Uint8Array(final), updated.byteLength);
|
|
258
|
+
return result.buffer;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
async function aesGcmCipher(mode, key, data, algorithm) {
|
|
262
|
+
return aesAeadCipher(mode, key, data, {
|
|
263
|
+
algorithmName: 'AES-GCM',
|
|
264
|
+
validTagLengths: [32, 64, 96, 104, 112, 120, 128],
|
|
265
|
+
cipherSuffix: 'gcm',
|
|
266
|
+
iv: bufferLikeToArrayBuffer(algorithm.iv)
|
|
267
|
+
}, algorithm.additionalData, algorithm.tagLength);
|
|
268
|
+
}
|
|
269
|
+
async function aesOcbCipher(mode, key, data, algorithm) {
|
|
270
|
+
const ivBuffer = bufferLikeToArrayBuffer(algorithm.iv);
|
|
271
|
+
if (ivBuffer.byteLength < 1 || ivBuffer.byteLength > 15) {
|
|
272
|
+
throw lazyDOMException('AES-OCB algorithm.iv must be between 1 and 15 bytes', 'OperationError');
|
|
273
|
+
}
|
|
274
|
+
return aesAeadCipher(mode, key, data, {
|
|
275
|
+
algorithmName: 'AES-OCB',
|
|
276
|
+
validTagLengths: [64, 96, 128],
|
|
277
|
+
cipherSuffix: 'ocb',
|
|
278
|
+
iv: ivBuffer
|
|
279
|
+
}, algorithm.additionalData, algorithm.tagLength);
|
|
280
|
+
}
|
|
281
|
+
async function aesKwCipher(mode, key, data) {
|
|
282
|
+
const isWrap = mode === CipherOrWrapMode.kWebCryptoCipherEncrypt;
|
|
283
|
+
|
|
284
|
+
// AES-KW requires input to be a multiple of 8 bytes (64 bits)
|
|
285
|
+
if (data.byteLength % 8 !== 0) {
|
|
286
|
+
throw lazyDOMException(`AES-KW input length must be a multiple of 8 bytes, got ${data.byteLength}`, 'OperationError');
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
// AES-KW requires at least 16 bytes of input (128 bits)
|
|
290
|
+
if (isWrap && data.byteLength < 16) {
|
|
291
|
+
throw lazyDOMException(`AES-KW input must be at least 16 bytes, got ${data.byteLength}`, 'OperationError');
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// Get cipher type based on key length
|
|
295
|
+
const keyLength = key.algorithm.length;
|
|
296
|
+
// Use aes*-wrap for both operations (matching Node.js)
|
|
297
|
+
const cipherType = `aes${keyLength}-wrap`;
|
|
298
|
+
|
|
299
|
+
// Export key material
|
|
300
|
+
const exportedKey = key.keyObject.export();
|
|
301
|
+
const cipherKey = bufferLikeToArrayBuffer(exportedKey);
|
|
302
|
+
|
|
303
|
+
// AES-KW uses a default IV as specified in RFC 3394
|
|
304
|
+
const defaultWrapIV = new Uint8Array([0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6]);
|
|
305
|
+
const factory = NitroModules.createHybridObject('CipherFactory');
|
|
306
|
+
const cipher = factory.createCipher({
|
|
307
|
+
isCipher: isWrap,
|
|
308
|
+
cipherType,
|
|
309
|
+
cipherKey,
|
|
310
|
+
iv: defaultWrapIV.buffer // RFC 3394 default IV for AES-KW
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
// Process data
|
|
314
|
+
const updated = cipher.update(data);
|
|
315
|
+
const final = cipher.final();
|
|
316
|
+
|
|
317
|
+
// Concatenate results
|
|
318
|
+
const result = new Uint8Array(updated.byteLength + final.byteLength);
|
|
319
|
+
result.set(new Uint8Array(updated), 0);
|
|
320
|
+
result.set(new Uint8Array(final), updated.byteLength);
|
|
321
|
+
return result.buffer;
|
|
322
|
+
}
|
|
323
|
+
async function chaCha20Poly1305Cipher(mode, key, data, algorithm) {
|
|
324
|
+
const {
|
|
325
|
+
iv,
|
|
326
|
+
additionalData,
|
|
327
|
+
tagLength = 128
|
|
328
|
+
} = algorithm;
|
|
329
|
+
|
|
330
|
+
// Validate IV (must be 12 bytes for ChaCha20-Poly1305)
|
|
331
|
+
const ivBuffer = bufferLikeToArrayBuffer(iv);
|
|
332
|
+
if (!ivBuffer || ivBuffer.byteLength !== 12) {
|
|
333
|
+
throw lazyDOMException('ChaCha20-Poly1305 IV must be exactly 12 bytes', 'OperationError');
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
// Validate tag length (only 128-bit supported)
|
|
337
|
+
if (tagLength !== 128) {
|
|
338
|
+
throw lazyDOMException('ChaCha20-Poly1305 only supports 128-bit auth tags', 'NotSupportedError');
|
|
339
|
+
}
|
|
340
|
+
const tagByteLength = 16; // 128 bits = 16 bytes
|
|
341
|
+
|
|
342
|
+
// Create cipher using existing ChaCha20-Poly1305 implementation
|
|
343
|
+
const factory = NitroModules.createHybridObject('CipherFactory');
|
|
344
|
+
const cipher = factory.createCipher({
|
|
345
|
+
isCipher: mode === CipherOrWrapMode.kWebCryptoCipherEncrypt,
|
|
346
|
+
cipherType: 'chacha20-poly1305',
|
|
347
|
+
cipherKey: bufferLikeToArrayBuffer(key.keyObject.export()),
|
|
348
|
+
iv: ivBuffer,
|
|
349
|
+
authTagLen: tagByteLength
|
|
350
|
+
});
|
|
351
|
+
let processData;
|
|
352
|
+
let authTag;
|
|
353
|
+
if (mode === CipherOrWrapMode.kWebCryptoCipherDecrypt) {
|
|
354
|
+
// For decryption, extract auth tag from end of data
|
|
355
|
+
const dataView = new Uint8Array(data);
|
|
356
|
+
if (dataView.byteLength < tagByteLength) {
|
|
357
|
+
throw lazyDOMException('The provided data is too small.', 'OperationError');
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// Split data and tag
|
|
361
|
+
const ciphertextLength = dataView.byteLength - tagByteLength;
|
|
362
|
+
processData = dataView.slice(0, ciphertextLength).buffer;
|
|
363
|
+
authTag = dataView.slice(ciphertextLength).buffer;
|
|
364
|
+
|
|
365
|
+
// Set auth tag for verification
|
|
366
|
+
cipher.setAuthTag(authTag);
|
|
367
|
+
} else {
|
|
368
|
+
processData = data;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
// Set additional authenticated data if provided
|
|
372
|
+
if (additionalData) {
|
|
373
|
+
cipher.setAAD(bufferLikeToArrayBuffer(additionalData));
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// Process data
|
|
377
|
+
const updated = cipher.update(processData);
|
|
378
|
+
const final = cipher.final();
|
|
379
|
+
if (mode === CipherOrWrapMode.kWebCryptoCipherEncrypt) {
|
|
380
|
+
// For encryption, append auth tag to result
|
|
381
|
+
const tag = cipher.getAuthTag();
|
|
382
|
+
const result = new Uint8Array(updated.byteLength + final.byteLength + tag.byteLength);
|
|
383
|
+
result.set(new Uint8Array(updated), 0);
|
|
384
|
+
result.set(new Uint8Array(final), updated.byteLength);
|
|
385
|
+
result.set(new Uint8Array(tag), updated.byteLength + final.byteLength);
|
|
386
|
+
return result.buffer;
|
|
387
|
+
} else {
|
|
388
|
+
// For decryption, just concatenate plaintext
|
|
389
|
+
const result = new Uint8Array(updated.byteLength + final.byteLength);
|
|
390
|
+
result.set(new Uint8Array(updated), 0);
|
|
391
|
+
result.set(new Uint8Array(final), updated.byteLength);
|
|
392
|
+
return result.buffer;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
async function aesGenerateKey(algorithm, extractable, keyUsages) {
|
|
396
|
+
const {
|
|
397
|
+
length
|
|
398
|
+
} = algorithm;
|
|
399
|
+
const name = algorithm.name;
|
|
400
|
+
if (!name) {
|
|
401
|
+
throw lazyDOMException('Algorithm name is required', 'OperationError');
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
// Validate key length
|
|
405
|
+
if (![128, 192, 256].includes(length)) {
|
|
406
|
+
throw lazyDOMException(`Invalid AES key length: ${length}. Must be 128, 192, or 256.`, 'OperationError');
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
// Validate usages
|
|
410
|
+
const validUsages = ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey'];
|
|
411
|
+
if (hasAnyNotIn(keyUsages, validUsages)) {
|
|
412
|
+
throw lazyDOMException(`Unsupported key usage for ${name}`, 'SyntaxError');
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
// Generate random key bytes
|
|
416
|
+
const keyBytes = new Uint8Array(length / 8);
|
|
417
|
+
getRandomValues(keyBytes);
|
|
418
|
+
|
|
419
|
+
// Create secret key
|
|
420
|
+
const keyObject = createSecretKey(keyBytes);
|
|
421
|
+
|
|
422
|
+
// Construct algorithm object with guaranteed name
|
|
423
|
+
const keyAlgorithm = {
|
|
424
|
+
name,
|
|
425
|
+
length
|
|
426
|
+
};
|
|
427
|
+
return new CryptoKey(keyObject, keyAlgorithm, keyUsages, extractable);
|
|
428
|
+
}
|
|
429
|
+
async function hmacGenerateKey(algorithm, extractable, keyUsages) {
|
|
430
|
+
// Validate usages
|
|
431
|
+
if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {
|
|
432
|
+
throw lazyDOMException('Unsupported key usage for HMAC key', 'SyntaxError');
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
// Get hash algorithm
|
|
436
|
+
const hash = algorithm.hash;
|
|
437
|
+
if (!hash) {
|
|
438
|
+
throw lazyDOMException('HMAC algorithm requires a hash parameter', 'TypeError');
|
|
439
|
+
}
|
|
440
|
+
const hashName = normalizeHashName(hash);
|
|
441
|
+
|
|
442
|
+
// Determine key length
|
|
443
|
+
let length = algorithm.length;
|
|
444
|
+
if (length === undefined) {
|
|
445
|
+
// Use hash output length as default key length
|
|
446
|
+
switch (hashName) {
|
|
447
|
+
case 'SHA-1':
|
|
448
|
+
length = 160;
|
|
449
|
+
break;
|
|
450
|
+
case 'SHA-256':
|
|
451
|
+
length = 256;
|
|
452
|
+
break;
|
|
453
|
+
case 'SHA-384':
|
|
454
|
+
length = 384;
|
|
455
|
+
break;
|
|
456
|
+
case 'SHA-512':
|
|
457
|
+
length = 512;
|
|
458
|
+
break;
|
|
459
|
+
default:
|
|
460
|
+
length = 256;
|
|
461
|
+
// Default to 256 bits
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
if (length === 0) {
|
|
465
|
+
throw lazyDOMException('Zero-length key is not supported', 'OperationError');
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
// Generate random key bytes
|
|
469
|
+
const keyBytes = new Uint8Array(Math.ceil(length / 8));
|
|
470
|
+
getRandomValues(keyBytes);
|
|
471
|
+
|
|
472
|
+
// Create secret key
|
|
473
|
+
const keyObject = createSecretKey(keyBytes);
|
|
474
|
+
|
|
475
|
+
// Construct algorithm object with hash normalized to { name: string } format per WebCrypto spec
|
|
476
|
+
const webCryptoHashName = normalizeHashName(hash, HashContext.WebCrypto);
|
|
477
|
+
const keyAlgorithm = {
|
|
478
|
+
name: 'HMAC',
|
|
479
|
+
hash: {
|
|
480
|
+
name: webCryptoHashName
|
|
481
|
+
},
|
|
482
|
+
length
|
|
483
|
+
};
|
|
484
|
+
return new CryptoKey(keyObject, keyAlgorithm, keyUsages, extractable);
|
|
485
|
+
}
|
|
486
|
+
async function kmacGenerateKey(algorithm, extractable, keyUsages) {
|
|
487
|
+
const {
|
|
488
|
+
name
|
|
489
|
+
} = algorithm;
|
|
490
|
+
if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {
|
|
491
|
+
throw lazyDOMException(`Unsupported key usage for ${name} key`, 'SyntaxError');
|
|
492
|
+
}
|
|
493
|
+
const defaultLength = name === 'KMAC128' ? 128 : 256;
|
|
494
|
+
const length = algorithm.length ?? defaultLength;
|
|
495
|
+
if (length === 0) {
|
|
496
|
+
throw lazyDOMException('Zero-length key is not supported', 'OperationError');
|
|
497
|
+
}
|
|
498
|
+
const keyBytes = new Uint8Array(Math.ceil(length / 8));
|
|
499
|
+
getRandomValues(keyBytes);
|
|
500
|
+
const keyObject = createSecretKey(keyBytes);
|
|
501
|
+
const keyAlgorithm = {
|
|
502
|
+
name: name,
|
|
503
|
+
length
|
|
504
|
+
};
|
|
505
|
+
return new CryptoKey(keyObject, keyAlgorithm, keyUsages, extractable);
|
|
506
|
+
}
|
|
507
|
+
function kmacSignVerify(key, data, algorithm, signature) {
|
|
508
|
+
const {
|
|
509
|
+
name
|
|
510
|
+
} = algorithm;
|
|
511
|
+
const defaultLength = name === 'KMAC128' ? 256 : 512;
|
|
512
|
+
const outputLengthBits = algorithm.length ?? defaultLength;
|
|
513
|
+
if (outputLengthBits % 8 !== 0) {
|
|
514
|
+
throw lazyDOMException('KMAC output length must be a multiple of 8', 'OperationError');
|
|
515
|
+
}
|
|
516
|
+
const outputLengthBytes = outputLengthBits / 8;
|
|
517
|
+
const keyData = key.keyObject.export();
|
|
518
|
+
const kmac = NitroModules.createHybridObject('Kmac');
|
|
519
|
+
let customizationBuffer;
|
|
520
|
+
if (algorithm.customization !== undefined) {
|
|
521
|
+
customizationBuffer = bufferLikeToArrayBuffer(algorithm.customization);
|
|
522
|
+
}
|
|
523
|
+
kmac.createKmac(name, bufferLikeToArrayBuffer(keyData), outputLengthBytes, customizationBuffer);
|
|
524
|
+
kmac.update(bufferLikeToArrayBuffer(data));
|
|
525
|
+
const computed = kmac.digest();
|
|
526
|
+
if (signature === undefined) {
|
|
527
|
+
return computed;
|
|
528
|
+
}
|
|
529
|
+
const sigBuffer = bufferLikeToArrayBuffer(signature);
|
|
530
|
+
if (computed.byteLength !== sigBuffer.byteLength) {
|
|
531
|
+
return false;
|
|
532
|
+
}
|
|
533
|
+
return timingSafeEqual(new Uint8Array(computed), new Uint8Array(sigBuffer));
|
|
534
|
+
}
|
|
535
|
+
async function kmacImportKey(algorithm, format, data, extractable, keyUsages) {
|
|
536
|
+
const {
|
|
537
|
+
name
|
|
538
|
+
} = algorithm;
|
|
539
|
+
if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {
|
|
540
|
+
throw lazyDOMException(`Unsupported key usage for ${name} key`, 'SyntaxError');
|
|
541
|
+
}
|
|
542
|
+
let keyObject;
|
|
543
|
+
if (format === 'jwk') {
|
|
544
|
+
const jwk = data;
|
|
545
|
+
if (!jwk || typeof jwk !== 'object') {
|
|
546
|
+
throw lazyDOMException('Invalid keyData', 'DataError');
|
|
547
|
+
}
|
|
548
|
+
if (jwk.kty !== 'oct') {
|
|
549
|
+
throw lazyDOMException('Invalid JWK format for KMAC key', 'DataError');
|
|
550
|
+
}
|
|
551
|
+
const expectedAlg = name === 'KMAC128' ? 'K128' : 'K256';
|
|
552
|
+
if (jwk.alg !== undefined && jwk.alg !== expectedAlg) {
|
|
553
|
+
throw lazyDOMException('JWK "alg" does not match the requested algorithm', 'DataError');
|
|
554
|
+
}
|
|
555
|
+
const handle = NitroModules.createHybridObject('KeyObjectHandle');
|
|
556
|
+
const keyType = handle.initJwk(jwk, undefined);
|
|
557
|
+
if (keyType === undefined || keyType !== 0) {
|
|
558
|
+
throw lazyDOMException('Failed to import KMAC JWK', 'DataError');
|
|
559
|
+
}
|
|
560
|
+
keyObject = new SecretKeyObject(handle);
|
|
561
|
+
} else if (format === 'raw' || format === 'raw-secret') {
|
|
562
|
+
keyObject = createSecretKey(data);
|
|
563
|
+
} else {
|
|
564
|
+
throw lazyDOMException(`Unable to import ${name} key with format ${format}`, 'NotSupportedError');
|
|
565
|
+
}
|
|
566
|
+
const exported = keyObject.export();
|
|
567
|
+
const keyLength = exported.byteLength * 8;
|
|
568
|
+
if (keyLength === 0) {
|
|
569
|
+
throw lazyDOMException('Zero-length key is not supported', 'DataError');
|
|
570
|
+
}
|
|
571
|
+
if (algorithm.length !== undefined && algorithm.length !== keyLength) {
|
|
572
|
+
throw lazyDOMException('Invalid key length', 'DataError');
|
|
573
|
+
}
|
|
574
|
+
const keyAlgorithm = {
|
|
575
|
+
name: name,
|
|
576
|
+
length: keyLength
|
|
577
|
+
};
|
|
578
|
+
return new CryptoKey(keyObject, keyAlgorithm, keyUsages, extractable);
|
|
579
|
+
}
|
|
580
|
+
function rsaImportKey(format, data, algorithm, extractable, keyUsages) {
|
|
581
|
+
const {
|
|
582
|
+
name
|
|
583
|
+
} = algorithm;
|
|
584
|
+
|
|
585
|
+
// Validate usages
|
|
586
|
+
let checkSet;
|
|
587
|
+
switch (name) {
|
|
588
|
+
case 'RSASSA-PKCS1-v1_5':
|
|
589
|
+
case 'RSA-PSS':
|
|
590
|
+
checkSet = ['sign', 'verify'];
|
|
591
|
+
break;
|
|
592
|
+
case 'RSA-OAEP':
|
|
593
|
+
checkSet = ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey'];
|
|
594
|
+
break;
|
|
595
|
+
default:
|
|
596
|
+
throw new Error(`Unsupported RSA algorithm: ${name}`);
|
|
597
|
+
}
|
|
598
|
+
if (hasAnyNotIn(keyUsages, checkSet)) {
|
|
599
|
+
throw new Error(`Unsupported key usage for ${name}`);
|
|
600
|
+
}
|
|
601
|
+
let keyObject;
|
|
602
|
+
if (format === 'jwk') {
|
|
603
|
+
const jwk = data;
|
|
604
|
+
|
|
605
|
+
// Validate JWK
|
|
606
|
+
if (jwk.kty !== 'RSA') {
|
|
607
|
+
throw new Error('Invalid JWK format for RSA key');
|
|
608
|
+
}
|
|
609
|
+
const handle = NitroModules.createHybridObject('KeyObjectHandle');
|
|
610
|
+
const keyType = handle.initJwk(jwk, undefined);
|
|
611
|
+
if (keyType === undefined) {
|
|
612
|
+
throw new Error('Failed to import RSA JWK');
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
// Create the appropriate KeyObject based on type
|
|
616
|
+
if (keyType === 1) {
|
|
617
|
+
keyObject = new PublicKeyObject(handle);
|
|
618
|
+
} else if (keyType === 2) {
|
|
619
|
+
keyObject = new PrivateKeyObject(handle);
|
|
620
|
+
} else {
|
|
621
|
+
throw new Error('Unexpected key type from RSA JWK import');
|
|
622
|
+
}
|
|
623
|
+
} else if (format === 'spki') {
|
|
624
|
+
const keyData = bufferLikeToArrayBuffer(data);
|
|
625
|
+
keyObject = KeyObject.createKeyObject('public', keyData, KFormatType.DER, KeyEncoding.SPKI);
|
|
626
|
+
} else if (format === 'pkcs8') {
|
|
627
|
+
const keyData = bufferLikeToArrayBuffer(data);
|
|
628
|
+
keyObject = KeyObject.createKeyObject('private', keyData, KFormatType.DER, KeyEncoding.PKCS8);
|
|
629
|
+
} else {
|
|
630
|
+
throw new Error(`Unsupported format for RSA import: ${format}`);
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
// Get the modulus length from the key and add it to the algorithm
|
|
634
|
+
const keyDetails = keyObject.asymmetricKeyDetails;
|
|
635
|
+
|
|
636
|
+
// Convert publicExponent number to big-endian byte array
|
|
637
|
+
let publicExponentBytes;
|
|
638
|
+
if (keyDetails !== null && keyDetails !== void 0 && keyDetails.publicExponent) {
|
|
639
|
+
const exp = keyDetails.publicExponent;
|
|
640
|
+
// Convert number to big-endian bytes
|
|
641
|
+
const bytes = [];
|
|
642
|
+
let value = exp;
|
|
643
|
+
while (value > 0) {
|
|
644
|
+
bytes.unshift(value & 0xff);
|
|
645
|
+
value = Math.floor(value / 256);
|
|
646
|
+
}
|
|
647
|
+
publicExponentBytes = new Uint8Array(bytes.length > 0 ? bytes : [0]);
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
// Normalize hash to { name: string } format per WebCrypto spec
|
|
651
|
+
const hashName = normalizeHashName(algorithm.hash, HashContext.WebCrypto);
|
|
652
|
+
const normalizedHash = {
|
|
653
|
+
name: hashName
|
|
654
|
+
};
|
|
655
|
+
const algorithmWithDetails = {
|
|
656
|
+
...algorithm,
|
|
657
|
+
modulusLength: keyDetails === null || keyDetails === void 0 ? void 0 : keyDetails.modulusLength,
|
|
658
|
+
publicExponent: publicExponentBytes,
|
|
659
|
+
hash: normalizedHash
|
|
660
|
+
};
|
|
661
|
+
return new CryptoKey(keyObject, algorithmWithDetails, keyUsages, extractable);
|
|
662
|
+
}
|
|
663
|
+
async function hmacImportKey(algorithm, format, data, extractable, keyUsages) {
|
|
664
|
+
// Validate usages
|
|
665
|
+
if (hasAnyNotIn(keyUsages, ['sign', 'verify'])) {
|
|
666
|
+
throw new Error('Unsupported key usage for an HMAC key');
|
|
667
|
+
}
|
|
668
|
+
let keyObject;
|
|
669
|
+
if (format === 'jwk') {
|
|
670
|
+
const jwk = data;
|
|
671
|
+
|
|
672
|
+
// Validate JWK
|
|
673
|
+
if (!jwk || typeof jwk !== 'object') {
|
|
674
|
+
throw new Error('Invalid keyData');
|
|
675
|
+
}
|
|
676
|
+
if (jwk.kty !== 'oct') {
|
|
677
|
+
throw new Error('Invalid JWK format for HMAC key');
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
// Validate key length if specified
|
|
681
|
+
if (algorithm.length !== undefined) {
|
|
682
|
+
if (!jwk.k) {
|
|
683
|
+
throw new Error('JWK missing key data');
|
|
684
|
+
}
|
|
685
|
+
// Decode to check length
|
|
686
|
+
const decoded = SBuffer.from(jwk.k, 'base64');
|
|
687
|
+
const keyBitLength = decoded.length * 8;
|
|
688
|
+
if (algorithm.length === 0) {
|
|
689
|
+
throw new Error('Zero-length key is not supported');
|
|
690
|
+
}
|
|
691
|
+
if (algorithm.length !== keyBitLength) {
|
|
692
|
+
throw new Error('Invalid key length');
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
const handle = NitroModules.createHybridObject('KeyObjectHandle');
|
|
696
|
+
const keyType = handle.initJwk(jwk, undefined);
|
|
697
|
+
if (keyType === undefined || keyType !== 0) {
|
|
698
|
+
throw new Error('Failed to import HMAC JWK');
|
|
699
|
+
}
|
|
700
|
+
keyObject = new SecretKeyObject(handle);
|
|
701
|
+
} else if (format === 'raw') {
|
|
702
|
+
keyObject = createSecretKey(data);
|
|
703
|
+
} else {
|
|
704
|
+
throw new Error(`Unable to import HMAC key with format ${format}`);
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
// Normalize hash to { name: string } format per WebCrypto spec
|
|
708
|
+
const hashName = normalizeHashName(algorithm.hash, HashContext.WebCrypto);
|
|
709
|
+
const normalizedAlgorithm = {
|
|
710
|
+
...algorithm,
|
|
711
|
+
name: 'HMAC',
|
|
712
|
+
hash: {
|
|
713
|
+
name: hashName
|
|
714
|
+
}
|
|
715
|
+
};
|
|
716
|
+
return new CryptoKey(keyObject, normalizedAlgorithm, keyUsages, extractable);
|
|
717
|
+
}
|
|
718
|
+
async function aesImportKey(algorithm, format, data, extractable, keyUsages) {
|
|
719
|
+
const {
|
|
720
|
+
name,
|
|
721
|
+
length
|
|
722
|
+
} = algorithm;
|
|
723
|
+
|
|
724
|
+
// Validate usages
|
|
725
|
+
const validUsages = ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey'];
|
|
726
|
+
if (hasAnyNotIn(keyUsages, validUsages)) {
|
|
727
|
+
throw new Error(`Unsupported key usage for ${name}`);
|
|
728
|
+
}
|
|
729
|
+
let keyObject;
|
|
730
|
+
let actualLength;
|
|
731
|
+
if (format === 'jwk') {
|
|
732
|
+
const jwk = data;
|
|
733
|
+
|
|
734
|
+
// Validate JWK
|
|
735
|
+
if (jwk.kty !== 'oct') {
|
|
736
|
+
throw new Error('Invalid JWK format for AES key');
|
|
737
|
+
}
|
|
738
|
+
const handle = NitroModules.createHybridObject('KeyObjectHandle');
|
|
739
|
+
const keyType = handle.initJwk(jwk, undefined);
|
|
740
|
+
if (keyType === undefined || keyType !== 0) {
|
|
741
|
+
throw new Error('Failed to import AES JWK');
|
|
742
|
+
}
|
|
743
|
+
keyObject = new SecretKeyObject(handle);
|
|
744
|
+
|
|
745
|
+
// Get actual key length from imported key
|
|
746
|
+
const exported = keyObject.export();
|
|
747
|
+
actualLength = exported.byteLength * 8;
|
|
748
|
+
} else if (format === 'raw') {
|
|
749
|
+
const keyData = bufferLikeToArrayBuffer(data);
|
|
750
|
+
actualLength = keyData.byteLength * 8;
|
|
751
|
+
|
|
752
|
+
// Validate key length
|
|
753
|
+
if (![128, 192, 256].includes(actualLength)) {
|
|
754
|
+
throw new Error('Invalid AES key length');
|
|
755
|
+
}
|
|
756
|
+
keyObject = createSecretKey(keyData);
|
|
757
|
+
} else {
|
|
758
|
+
throw new Error(`Unsupported format for AES import: ${format}`);
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
// Validate length if specified
|
|
762
|
+
if (length !== undefined && length !== actualLength) {
|
|
763
|
+
throw new Error(`Key length mismatch: expected ${length}, got ${actualLength}`);
|
|
764
|
+
}
|
|
765
|
+
return new CryptoKey(keyObject, {
|
|
766
|
+
name,
|
|
767
|
+
length: actualLength
|
|
768
|
+
}, keyUsages, extractable);
|
|
769
|
+
}
|
|
770
|
+
function edImportKey(format, data, algorithm, extractable, keyUsages) {
|
|
771
|
+
const {
|
|
772
|
+
name
|
|
773
|
+
} = algorithm;
|
|
774
|
+
|
|
775
|
+
// Validate usages
|
|
776
|
+
const isX = name === 'X25519' || name === 'X448';
|
|
777
|
+
const allowedUsages = isX ? ['deriveKey', 'deriveBits'] : ['sign', 'verify'];
|
|
778
|
+
if (hasAnyNotIn(keyUsages, allowedUsages)) {
|
|
779
|
+
throw lazyDOMException(`Unsupported key usage for ${name} key`, 'SyntaxError');
|
|
780
|
+
}
|
|
781
|
+
let keyObject;
|
|
782
|
+
if (format === 'spki') {
|
|
783
|
+
// Import public key
|
|
784
|
+
const keyData = bufferLikeToArrayBuffer(data);
|
|
785
|
+
keyObject = KeyObject.createKeyObject('public', keyData, KFormatType.DER, KeyEncoding.SPKI);
|
|
786
|
+
} else if (format === 'pkcs8') {
|
|
787
|
+
// Import private key
|
|
788
|
+
const keyData = bufferLikeToArrayBuffer(data);
|
|
789
|
+
keyObject = KeyObject.createKeyObject('private', keyData, KFormatType.DER, KeyEncoding.PKCS8);
|
|
790
|
+
} else if (format === 'raw') {
|
|
791
|
+
// Raw format - public key only for Ed keys
|
|
792
|
+
const keyData = bufferLikeToArrayBuffer(data);
|
|
793
|
+
const handle = NitroModules.createHybridObject('KeyObjectHandle');
|
|
794
|
+
// For raw Ed keys, we need to create them differently
|
|
795
|
+
// Raw public keys are just the key bytes
|
|
796
|
+
handle.init(1, keyData); // 1 = public key type
|
|
797
|
+
keyObject = new PublicKeyObject(handle);
|
|
798
|
+
} else if (format === 'jwk') {
|
|
799
|
+
const jwkData = data;
|
|
800
|
+
const handle = NitroModules.createHybridObject('KeyObjectHandle');
|
|
801
|
+
const keyType = handle.initJwk(jwkData);
|
|
802
|
+
if (keyType === undefined) {
|
|
803
|
+
throw lazyDOMException('Invalid JWK data', 'DataError');
|
|
804
|
+
}
|
|
805
|
+
if (keyType === KeyType.PRIVATE) {
|
|
806
|
+
keyObject = new PrivateKeyObject(handle);
|
|
807
|
+
} else {
|
|
808
|
+
keyObject = new PublicKeyObject(handle);
|
|
809
|
+
}
|
|
810
|
+
} else {
|
|
811
|
+
throw lazyDOMException(`Unsupported format for ${name} import: ${format}`, 'NotSupportedError');
|
|
812
|
+
}
|
|
813
|
+
return new CryptoKey(keyObject, {
|
|
814
|
+
name
|
|
815
|
+
}, keyUsages, extractable);
|
|
816
|
+
}
|
|
817
|
+
function pqcImportKeyObject(format, data, name) {
|
|
818
|
+
if (format === 'spki') {
|
|
819
|
+
return KeyObject.createKeyObject('public', bufferLikeToArrayBuffer(data), KFormatType.DER, KeyEncoding.SPKI);
|
|
820
|
+
} else if (format === 'pkcs8') {
|
|
821
|
+
return KeyObject.createKeyObject('private', bufferLikeToArrayBuffer(data), KFormatType.DER, KeyEncoding.PKCS8);
|
|
822
|
+
} else if (format === 'raw') {
|
|
823
|
+
const handle = NitroModules.createHybridObject('KeyObjectHandle');
|
|
824
|
+
if (!handle.initPqcRaw(name, bufferLikeToArrayBuffer(data), true)) {
|
|
825
|
+
throw lazyDOMException(`Failed to import ${name} raw public key`, 'DataError');
|
|
826
|
+
}
|
|
827
|
+
return new PublicKeyObject(handle);
|
|
828
|
+
} else if (format === 'raw-seed') {
|
|
829
|
+
const handle = NitroModules.createHybridObject('KeyObjectHandle');
|
|
830
|
+
if (!handle.initPqcRaw(name, bufferLikeToArrayBuffer(data), false)) {
|
|
831
|
+
throw lazyDOMException(`Failed to import ${name} raw seed`, 'DataError');
|
|
832
|
+
}
|
|
833
|
+
return new PrivateKeyObject(handle);
|
|
834
|
+
}
|
|
835
|
+
throw lazyDOMException(`Unsupported format for ${name} import: ${format}`, 'NotSupportedError');
|
|
836
|
+
}
|
|
837
|
+
function mldsaImportKey(format, data, algorithm, extractable, keyUsages) {
|
|
838
|
+
const {
|
|
839
|
+
name
|
|
840
|
+
} = algorithm;
|
|
841
|
+
const isPublicFormat = format === 'spki' || format === 'raw';
|
|
842
|
+
if (hasAnyNotIn(keyUsages, isPublicFormat ? ['verify'] : ['sign'])) {
|
|
843
|
+
throw lazyDOMException(`Unsupported key usage for ${name} key`, 'SyntaxError');
|
|
844
|
+
}
|
|
845
|
+
return new CryptoKey(pqcImportKeyObject(format, data, name), {
|
|
846
|
+
name
|
|
847
|
+
}, keyUsages, extractable);
|
|
848
|
+
}
|
|
849
|
+
function mlkemImportKey(format, data, algorithm, extractable, keyUsages) {
|
|
850
|
+
const {
|
|
851
|
+
name
|
|
852
|
+
} = algorithm;
|
|
853
|
+
const isPublicFormat = format === 'spki' || format === 'raw';
|
|
854
|
+
const allowedUsages = isPublicFormat ? ['encapsulateBits', 'encapsulateKey'] : ['decapsulateBits', 'decapsulateKey'];
|
|
855
|
+
if (hasAnyNotIn(keyUsages, allowedUsages)) {
|
|
856
|
+
throw lazyDOMException(`Unsupported key usage for ${name} key`, 'SyntaxError');
|
|
857
|
+
}
|
|
858
|
+
return new CryptoKey(pqcImportKeyObject(format, data, name), {
|
|
859
|
+
name
|
|
860
|
+
}, keyUsages, extractable);
|
|
861
|
+
}
|
|
862
|
+
const exportKeySpki = async key => {
|
|
863
|
+
switch (key.algorithm.name) {
|
|
864
|
+
case 'RSASSA-PKCS1-v1_5':
|
|
865
|
+
// Fall through
|
|
866
|
+
case 'RSA-PSS':
|
|
867
|
+
// Fall through
|
|
868
|
+
case 'RSA-OAEP':
|
|
869
|
+
if (key.type === 'public') {
|
|
870
|
+
return rsaExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI);
|
|
871
|
+
}
|
|
872
|
+
break;
|
|
873
|
+
case 'ECDSA':
|
|
874
|
+
// Fall through
|
|
875
|
+
case 'ECDH':
|
|
876
|
+
if (key.type === 'public') {
|
|
877
|
+
return ecExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatSPKI);
|
|
878
|
+
}
|
|
879
|
+
break;
|
|
880
|
+
case 'Ed25519':
|
|
881
|
+
// Fall through
|
|
882
|
+
case 'Ed448':
|
|
883
|
+
// Fall through
|
|
884
|
+
case 'X25519':
|
|
885
|
+
// Fall through
|
|
886
|
+
case 'X448':
|
|
887
|
+
if (key.type === 'public') {
|
|
888
|
+
// Export Ed/X key in SPKI DER format
|
|
889
|
+
return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.SPKI));
|
|
890
|
+
}
|
|
891
|
+
break;
|
|
892
|
+
case 'ML-DSA-44':
|
|
893
|
+
// Fall through
|
|
894
|
+
case 'ML-DSA-65':
|
|
895
|
+
// Fall through
|
|
896
|
+
case 'ML-DSA-87':
|
|
897
|
+
if (key.type === 'public') {
|
|
898
|
+
// Export ML-DSA key in SPKI DER format
|
|
899
|
+
return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.SPKI));
|
|
900
|
+
}
|
|
901
|
+
break;
|
|
902
|
+
case 'ML-KEM-512':
|
|
903
|
+
// Fall through
|
|
904
|
+
case 'ML-KEM-768':
|
|
905
|
+
// Fall through
|
|
906
|
+
case 'ML-KEM-1024':
|
|
907
|
+
if (key.type === 'public') {
|
|
908
|
+
return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.SPKI));
|
|
909
|
+
}
|
|
910
|
+
break;
|
|
911
|
+
}
|
|
912
|
+
throw new Error(`Unable to export a spki ${key.algorithm.name} ${key.type} key`);
|
|
913
|
+
};
|
|
914
|
+
const exportKeyPkcs8 = async key => {
|
|
915
|
+
switch (key.algorithm.name) {
|
|
916
|
+
case 'RSASSA-PKCS1-v1_5':
|
|
917
|
+
// Fall through
|
|
918
|
+
case 'RSA-PSS':
|
|
919
|
+
// Fall through
|
|
920
|
+
case 'RSA-OAEP':
|
|
921
|
+
if (key.type === 'private') {
|
|
922
|
+
return rsaExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatPKCS8);
|
|
923
|
+
}
|
|
924
|
+
break;
|
|
925
|
+
case 'ECDSA':
|
|
926
|
+
// Fall through
|
|
927
|
+
case 'ECDH':
|
|
928
|
+
if (key.type === 'private') {
|
|
929
|
+
return ecExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatPKCS8);
|
|
930
|
+
}
|
|
931
|
+
break;
|
|
932
|
+
case 'Ed25519':
|
|
933
|
+
// Fall through
|
|
934
|
+
case 'Ed448':
|
|
935
|
+
// Fall through
|
|
936
|
+
case 'X25519':
|
|
937
|
+
// Fall through
|
|
938
|
+
case 'X448':
|
|
939
|
+
if (key.type === 'private') {
|
|
940
|
+
// Export Ed/X key in PKCS8 DER format
|
|
941
|
+
return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.PKCS8));
|
|
942
|
+
}
|
|
943
|
+
break;
|
|
944
|
+
case 'ML-DSA-44':
|
|
945
|
+
// Fall through
|
|
946
|
+
case 'ML-DSA-65':
|
|
947
|
+
// Fall through
|
|
948
|
+
case 'ML-DSA-87':
|
|
949
|
+
if (key.type === 'private') {
|
|
950
|
+
// Export ML-DSA key in PKCS8 DER format
|
|
951
|
+
return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.PKCS8));
|
|
952
|
+
}
|
|
953
|
+
break;
|
|
954
|
+
case 'ML-KEM-512':
|
|
955
|
+
// Fall through
|
|
956
|
+
case 'ML-KEM-768':
|
|
957
|
+
// Fall through
|
|
958
|
+
case 'ML-KEM-1024':
|
|
959
|
+
if (key.type === 'private') {
|
|
960
|
+
return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.PKCS8));
|
|
961
|
+
}
|
|
962
|
+
break;
|
|
963
|
+
}
|
|
964
|
+
throw new Error(`Unable to export a pkcs8 ${key.algorithm.name} ${key.type} key`);
|
|
965
|
+
};
|
|
966
|
+
const exportKeyRaw = key => {
|
|
967
|
+
switch (key.algorithm.name) {
|
|
968
|
+
case 'ECDSA':
|
|
969
|
+
// Fall through
|
|
970
|
+
case 'ECDH':
|
|
971
|
+
if (key.type === 'public') {
|
|
972
|
+
return ecExportKey(key, KWebCryptoKeyFormat.kWebCryptoKeyFormatRaw);
|
|
973
|
+
}
|
|
974
|
+
break;
|
|
975
|
+
case 'Ed25519':
|
|
976
|
+
// Fall through
|
|
977
|
+
case 'Ed448':
|
|
978
|
+
// Fall through
|
|
979
|
+
case 'X25519':
|
|
980
|
+
// Fall through
|
|
981
|
+
case 'X448':
|
|
982
|
+
if (key.type === 'public') {
|
|
983
|
+
const exported = key.keyObject.handle.exportKey();
|
|
984
|
+
return bufferLikeToArrayBuffer(exported);
|
|
985
|
+
}
|
|
986
|
+
break;
|
|
987
|
+
case 'ML-KEM-512':
|
|
988
|
+
// Fall through
|
|
989
|
+
case 'ML-KEM-768':
|
|
990
|
+
// Fall through
|
|
991
|
+
case 'ML-KEM-1024':
|
|
992
|
+
// Fall through
|
|
993
|
+
case 'ML-DSA-44':
|
|
994
|
+
// Fall through
|
|
995
|
+
case 'ML-DSA-65':
|
|
996
|
+
// Fall through
|
|
997
|
+
case 'ML-DSA-87':
|
|
998
|
+
if (key.type === 'public') {
|
|
999
|
+
const exported = key.keyObject.handle.exportKey();
|
|
1000
|
+
return bufferLikeToArrayBuffer(exported);
|
|
1001
|
+
}
|
|
1002
|
+
break;
|
|
1003
|
+
case 'AES-CTR':
|
|
1004
|
+
// Fall through
|
|
1005
|
+
case 'AES-CBC':
|
|
1006
|
+
// Fall through
|
|
1007
|
+
case 'AES-GCM':
|
|
1008
|
+
// Fall through
|
|
1009
|
+
case 'AES-KW':
|
|
1010
|
+
// Fall through
|
|
1011
|
+
case 'AES-OCB':
|
|
1012
|
+
// Fall through
|
|
1013
|
+
case 'ChaCha20-Poly1305':
|
|
1014
|
+
// Fall through
|
|
1015
|
+
case 'HMAC':
|
|
1016
|
+
// Fall through
|
|
1017
|
+
case 'KMAC128':
|
|
1018
|
+
// Fall through
|
|
1019
|
+
case 'KMAC256':
|
|
1020
|
+
{
|
|
1021
|
+
const exported = key.keyObject.export();
|
|
1022
|
+
// Convert Buffer to ArrayBuffer
|
|
1023
|
+
return exported.buffer.slice(exported.byteOffset, exported.byteOffset + exported.byteLength);
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
throw lazyDOMException(`Unable to export a raw ${key.algorithm.name} ${key.type} key`, 'InvalidAccessError');
|
|
1027
|
+
};
|
|
1028
|
+
const exportKeyJWK = key => {
|
|
1029
|
+
const jwk = key.keyObject.handle.exportJwk({
|
|
1030
|
+
key_ops: key.usages,
|
|
1031
|
+
ext: key.extractable
|
|
1032
|
+
}, true);
|
|
1033
|
+
switch (key.algorithm.name) {
|
|
1034
|
+
case 'RSASSA-PKCS1-v1_5':
|
|
1035
|
+
jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkRsa);
|
|
1036
|
+
return jwk;
|
|
1037
|
+
case 'RSA-PSS':
|
|
1038
|
+
jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkRsaPss);
|
|
1039
|
+
return jwk;
|
|
1040
|
+
case 'RSA-OAEP':
|
|
1041
|
+
jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkRsaOaep);
|
|
1042
|
+
return jwk;
|
|
1043
|
+
case 'HMAC':
|
|
1044
|
+
jwk.alg = normalizeHashName(key.algorithm.hash, HashContext.JwkHmac);
|
|
1045
|
+
return jwk;
|
|
1046
|
+
case 'KMAC128':
|
|
1047
|
+
jwk.alg = 'K128';
|
|
1048
|
+
return jwk;
|
|
1049
|
+
case 'KMAC256':
|
|
1050
|
+
jwk.alg = 'K256';
|
|
1051
|
+
return jwk;
|
|
1052
|
+
case 'ECDSA':
|
|
1053
|
+
// Fall through
|
|
1054
|
+
case 'ECDH':
|
|
1055
|
+
jwk.crv ||= key.algorithm.namedCurve;
|
|
1056
|
+
return jwk;
|
|
1057
|
+
case 'Ed25519':
|
|
1058
|
+
// Fall through
|
|
1059
|
+
case 'Ed448':
|
|
1060
|
+
// Fall through
|
|
1061
|
+
case 'X25519':
|
|
1062
|
+
// Fall through
|
|
1063
|
+
case 'X448':
|
|
1064
|
+
return jwk;
|
|
1065
|
+
case 'AES-CTR':
|
|
1066
|
+
// Fall through
|
|
1067
|
+
case 'AES-CBC':
|
|
1068
|
+
// Fall through
|
|
1069
|
+
case 'AES-GCM':
|
|
1070
|
+
// Fall through
|
|
1071
|
+
case 'AES-KW':
|
|
1072
|
+
// Fall through
|
|
1073
|
+
case 'AES-OCB':
|
|
1074
|
+
// Fall through
|
|
1075
|
+
case 'ChaCha20-Poly1305':
|
|
1076
|
+
if (key.algorithm.length === undefined) {
|
|
1077
|
+
throw lazyDOMException(`Algorithm ${key.algorithm.name} missing required length property`, 'InvalidAccessError');
|
|
1078
|
+
}
|
|
1079
|
+
jwk.alg = getAlgorithmName(key.algorithm.name, key.algorithm.length);
|
|
1080
|
+
return jwk;
|
|
1081
|
+
default:
|
|
1082
|
+
// Fall through
|
|
1083
|
+
}
|
|
1084
|
+
throw lazyDOMException(`JWK export not yet supported: ${key.algorithm.name}`, 'NotSupportedError');
|
|
1085
|
+
};
|
|
1086
|
+
const importGenericSecretKey = async ({
|
|
1087
|
+
name,
|
|
1088
|
+
length
|
|
1089
|
+
}, format, keyData, extractable, keyUsages) => {
|
|
1090
|
+
if (extractable) {
|
|
1091
|
+
throw new Error(`${name} keys are not extractable`);
|
|
1092
|
+
}
|
|
1093
|
+
if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {
|
|
1094
|
+
throw new Error(`Unsupported key usage for a ${name} key`);
|
|
1095
|
+
}
|
|
1096
|
+
switch (format) {
|
|
1097
|
+
case 'raw':
|
|
1098
|
+
{
|
|
1099
|
+
if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {
|
|
1100
|
+
throw new Error(`Unsupported key usage for a ${name} key`);
|
|
1101
|
+
}
|
|
1102
|
+
const checkLength = typeof keyData === 'string' || SBuffer.isBuffer(keyData) ? keyData.length * 8 : keyData.byteLength * 8;
|
|
1103
|
+
if (length !== undefined && length !== checkLength) {
|
|
1104
|
+
throw new Error('Invalid key length');
|
|
1105
|
+
}
|
|
1106
|
+
const keyObject = createSecretKey(keyData);
|
|
1107
|
+
return new CryptoKey(keyObject, {
|
|
1108
|
+
name
|
|
1109
|
+
}, keyUsages, false);
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
throw new Error(`Unable to import ${name} key with format ${format}`);
|
|
1113
|
+
};
|
|
1114
|
+
const hkdfImportKey = async (format, keyData, algorithm, extractable, keyUsages) => {
|
|
1115
|
+
const {
|
|
1116
|
+
name
|
|
1117
|
+
} = algorithm;
|
|
1118
|
+
if (hasAnyNotIn(keyUsages, ['deriveKey', 'deriveBits'])) {
|
|
1119
|
+
throw new Error(`Unsupported key usage for a ${name} key`);
|
|
1120
|
+
}
|
|
1121
|
+
switch (format) {
|
|
1122
|
+
case 'raw':
|
|
1123
|
+
{
|
|
1124
|
+
const keyObject = createSecretKey(keyData);
|
|
1125
|
+
return new CryptoKey(keyObject, {
|
|
1126
|
+
name
|
|
1127
|
+
}, keyUsages, extractable);
|
|
1128
|
+
}
|
|
1129
|
+
default:
|
|
1130
|
+
throw new Error(`Unable to import ${name} key with format ${format}`);
|
|
1131
|
+
}
|
|
1132
|
+
};
|
|
1133
|
+
const checkCryptoKeyPairUsages = pair => {
|
|
1134
|
+
if (pair.privateKey && pair.privateKey instanceof CryptoKey && pair.privateKey.keyUsages && pair.privateKey.keyUsages.length > 0) {
|
|
1135
|
+
return;
|
|
1136
|
+
}
|
|
1137
|
+
throw lazyDOMException('Usages cannot be empty when creating a key.', 'SyntaxError');
|
|
1138
|
+
};
|
|
1139
|
+
function argon2DeriveBits(algorithm, baseKey, length) {
|
|
1140
|
+
if (length === 0 || length % 8 !== 0) {
|
|
1141
|
+
throw lazyDOMException('Invalid Argon2 derived key length', 'OperationError');
|
|
1142
|
+
}
|
|
1143
|
+
if (length < 32) {
|
|
1144
|
+
throw lazyDOMException('Argon2 derived key length must be at least 32 bits', 'OperationError');
|
|
1145
|
+
}
|
|
1146
|
+
const {
|
|
1147
|
+
nonce,
|
|
1148
|
+
parallelism,
|
|
1149
|
+
memory,
|
|
1150
|
+
passes,
|
|
1151
|
+
secretValue,
|
|
1152
|
+
associatedData
|
|
1153
|
+
} = algorithm;
|
|
1154
|
+
const tagLength = length / 8;
|
|
1155
|
+
const message = baseKey.keyObject.export();
|
|
1156
|
+
const algName = algorithm.name.toLowerCase();
|
|
1157
|
+
const result = argon2Sync(algName, {
|
|
1158
|
+
message,
|
|
1159
|
+
nonce: nonce ?? new Uint8Array(0),
|
|
1160
|
+
parallelism: parallelism ?? 1,
|
|
1161
|
+
tagLength,
|
|
1162
|
+
memory: memory ?? 65536,
|
|
1163
|
+
passes: passes ?? 3,
|
|
1164
|
+
secret: secretValue,
|
|
1165
|
+
associatedData,
|
|
1166
|
+
version: algorithm.version
|
|
1167
|
+
});
|
|
1168
|
+
return bufferLikeToArrayBuffer(result);
|
|
1169
|
+
}
|
|
1170
|
+
|
|
1171
|
+
// Type guard to check if result is CryptoKeyPair
|
|
1172
|
+
export function isCryptoKeyPair(result) {
|
|
1173
|
+
return 'publicKey' in result && 'privateKey' in result;
|
|
1174
|
+
}
|
|
1175
|
+
function hmacSignVerify(key, data, signature) {
|
|
1176
|
+
// Get hash algorithm from key
|
|
1177
|
+
const hashName = normalizeHashName(key.algorithm.hash);
|
|
1178
|
+
|
|
1179
|
+
// Export the secret key material
|
|
1180
|
+
const keyData = key.keyObject.export();
|
|
1181
|
+
|
|
1182
|
+
// Create HMAC and compute digest
|
|
1183
|
+
const hmac = createHmac(hashName, keyData);
|
|
1184
|
+
hmac.update(bufferLikeToArrayBuffer(data));
|
|
1185
|
+
const computed = hmac.digest();
|
|
1186
|
+
if (signature === undefined) {
|
|
1187
|
+
// Sign operation - return the HMAC as ArrayBuffer
|
|
1188
|
+
return computed.buffer.slice(computed.byteOffset, computed.byteOffset + computed.byteLength);
|
|
1189
|
+
}
|
|
1190
|
+
const sigBuffer = bufferLikeToArrayBuffer(signature);
|
|
1191
|
+
const computedBuffer = computed.buffer.slice(computed.byteOffset, computed.byteOffset + computed.byteLength);
|
|
1192
|
+
if (computedBuffer.byteLength !== sigBuffer.byteLength) {
|
|
1193
|
+
return false;
|
|
1194
|
+
}
|
|
1195
|
+
return timingSafeEqual(new Uint8Array(computedBuffer), new Uint8Array(sigBuffer));
|
|
1196
|
+
}
|
|
1197
|
+
function rsaSignVerify(key, data, padding, signature, saltLength) {
|
|
1198
|
+
// Get hash algorithm from key
|
|
1199
|
+
const hashName = normalizeHashName(key.algorithm.hash);
|
|
1200
|
+
|
|
1201
|
+
// Determine RSA padding constant
|
|
1202
|
+
const RSA_PKCS1_PADDING = 1;
|
|
1203
|
+
const RSA_PKCS1_PSS_PADDING = 6;
|
|
1204
|
+
const paddingValue = padding === 'pss' ? RSA_PKCS1_PSS_PADDING : RSA_PKCS1_PADDING;
|
|
1205
|
+
if (signature === undefined) {
|
|
1206
|
+
// Sign operation
|
|
1207
|
+
const signer = createSign(hashName);
|
|
1208
|
+
signer.update(data);
|
|
1209
|
+
const sig = signer.sign({
|
|
1210
|
+
key: key,
|
|
1211
|
+
padding: paddingValue,
|
|
1212
|
+
saltLength
|
|
1213
|
+
});
|
|
1214
|
+
return sig.buffer.slice(sig.byteOffset, sig.byteOffset + sig.byteLength);
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
// Verify operation
|
|
1218
|
+
const verifier = createVerify(hashName);
|
|
1219
|
+
verifier.update(data);
|
|
1220
|
+
return verifier.verify({
|
|
1221
|
+
key: key,
|
|
1222
|
+
padding: paddingValue,
|
|
1223
|
+
saltLength
|
|
1224
|
+
}, signature);
|
|
1225
|
+
}
|
|
1226
|
+
function edSignVerify(key, data, signature) {
|
|
1227
|
+
const isSign = signature === undefined;
|
|
1228
|
+
const expectedKeyType = isSign ? 'private' : 'public';
|
|
1229
|
+
if (key.type !== expectedKeyType) {
|
|
1230
|
+
throw lazyDOMException(`Key must be a ${expectedKeyType} key`, 'InvalidAccessError');
|
|
1231
|
+
}
|
|
1232
|
+
|
|
1233
|
+
// Get curve type from algorithm name (Ed25519 or Ed448)
|
|
1234
|
+
const algorithmName = key.algorithm.name;
|
|
1235
|
+
const curveType = algorithmName.toLowerCase();
|
|
1236
|
+
|
|
1237
|
+
// Create Ed instance with the curve
|
|
1238
|
+
const ed = new Ed(curveType, {});
|
|
1239
|
+
|
|
1240
|
+
// Export raw key bytes (exportKey with no format returns raw for Ed keys)
|
|
1241
|
+
const rawKey = key.keyObject.handle.exportKey();
|
|
1242
|
+
const dataBuffer = bufferLikeToArrayBuffer(data);
|
|
1243
|
+
if (isSign) {
|
|
1244
|
+
// Sign operation - use raw private key
|
|
1245
|
+
const sig = ed.signSync(dataBuffer, rawKey);
|
|
1246
|
+
return sig;
|
|
1247
|
+
} else {
|
|
1248
|
+
// Verify operation - use raw public key
|
|
1249
|
+
const signatureBuffer = bufferLikeToArrayBuffer(signature);
|
|
1250
|
+
return ed.verifySync(signatureBuffer, dataBuffer, rawKey);
|
|
1251
|
+
}
|
|
1252
|
+
}
|
|
1253
|
+
function mldsaSignVerify(key, data, signature) {
|
|
1254
|
+
const isSign = signature === undefined;
|
|
1255
|
+
const expectedKeyType = isSign ? 'private' : 'public';
|
|
1256
|
+
if (key.type !== expectedKeyType) {
|
|
1257
|
+
throw lazyDOMException(`Key must be a ${expectedKeyType} key`, 'InvalidAccessError');
|
|
1258
|
+
}
|
|
1259
|
+
const dataBuffer = bufferLikeToArrayBuffer(data);
|
|
1260
|
+
if (isSign) {
|
|
1261
|
+
const signer = createSign('');
|
|
1262
|
+
signer.update(dataBuffer);
|
|
1263
|
+
const sig = signer.sign({
|
|
1264
|
+
key: key
|
|
1265
|
+
});
|
|
1266
|
+
return sig.buffer.slice(sig.byteOffset, sig.byteOffset + sig.byteLength);
|
|
1267
|
+
} else {
|
|
1268
|
+
const signatureBuffer = bufferLikeToArrayBuffer(signature);
|
|
1269
|
+
const verifier = createVerify('');
|
|
1270
|
+
verifier.update(dataBuffer);
|
|
1271
|
+
return verifier.verify({
|
|
1272
|
+
key: key
|
|
1273
|
+
}, signatureBuffer);
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
const signVerify = (algorithm, key, data, signature) => {
|
|
1277
|
+
const usage = signature === undefined ? 'sign' : 'verify';
|
|
1278
|
+
algorithm = normalizeAlgorithm(algorithm, usage);
|
|
1279
|
+
if (!key.usages.includes(usage) || algorithm.name !== key.algorithm.name) {
|
|
1280
|
+
throw lazyDOMException(`Unable to use this key to ${usage}`, 'InvalidAccessError');
|
|
1281
|
+
}
|
|
1282
|
+
switch (algorithm.name) {
|
|
1283
|
+
case 'ECDSA':
|
|
1284
|
+
return ecdsaSignVerify(key, data, algorithm, signature);
|
|
1285
|
+
case 'HMAC':
|
|
1286
|
+
return hmacSignVerify(key, data, signature);
|
|
1287
|
+
case 'RSASSA-PKCS1-v1_5':
|
|
1288
|
+
return rsaSignVerify(key, data, 'pkcs1', signature);
|
|
1289
|
+
case 'RSA-PSS':
|
|
1290
|
+
return rsaSignVerify(key, data, 'pss', signature, algorithm.saltLength);
|
|
1291
|
+
case 'Ed25519':
|
|
1292
|
+
case 'Ed448':
|
|
1293
|
+
return edSignVerify(key, data, signature);
|
|
1294
|
+
case 'ML-DSA-44':
|
|
1295
|
+
case 'ML-DSA-65':
|
|
1296
|
+
case 'ML-DSA-87':
|
|
1297
|
+
return mldsaSignVerify(key, data, signature);
|
|
1298
|
+
case 'KMAC128':
|
|
1299
|
+
case 'KMAC256':
|
|
1300
|
+
return kmacSignVerify(key, data, algorithm, signature);
|
|
1301
|
+
}
|
|
1302
|
+
throw lazyDOMException(`Unrecognized algorithm name '${algorithm.name}' for '${usage}'`, 'NotSupportedError');
|
|
1303
|
+
};
|
|
1304
|
+
const cipherOrWrap = async (mode, algorithm, key, data, op) => {
|
|
1305
|
+
if (key.algorithm.name !== algorithm.name || !key.usages.includes(op)) {
|
|
1306
|
+
throw lazyDOMException('The requested operation is not valid for the provided key', 'InvalidAccessError');
|
|
1307
|
+
}
|
|
1308
|
+
validateMaxBufferLength(data, 'data');
|
|
1309
|
+
switch (algorithm.name) {
|
|
1310
|
+
case 'RSA-OAEP':
|
|
1311
|
+
return rsaCipher(mode, key, data, algorithm);
|
|
1312
|
+
case 'AES-CTR':
|
|
1313
|
+
// Fall through
|
|
1314
|
+
case 'AES-CBC':
|
|
1315
|
+
// Fall through
|
|
1316
|
+
case 'AES-GCM':
|
|
1317
|
+
// Fall through
|
|
1318
|
+
case 'AES-OCB':
|
|
1319
|
+
return aesCipher(mode, key, data, algorithm);
|
|
1320
|
+
case 'AES-KW':
|
|
1321
|
+
return aesKwCipher(mode, key, data);
|
|
1322
|
+
case 'ChaCha20-Poly1305':
|
|
1323
|
+
return chaCha20Poly1305Cipher(mode, key, data, algorithm);
|
|
1324
|
+
}
|
|
1325
|
+
};
|
|
1326
|
+
const SUPPORTED_ALGORITHMS = {
|
|
1327
|
+
encrypt: new Set(['RSA-OAEP', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-OCB', 'ChaCha20-Poly1305']),
|
|
1328
|
+
decrypt: new Set(['RSA-OAEP', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-OCB', 'ChaCha20-Poly1305']),
|
|
1329
|
+
sign: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'ECDSA', 'HMAC', 'KMAC128', 'KMAC256', 'Ed25519', 'Ed448', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']),
|
|
1330
|
+
verify: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'ECDSA', 'HMAC', 'KMAC128', 'KMAC256', 'Ed25519', 'Ed448', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87']),
|
|
1331
|
+
digest: new Set(['SHA-1', 'SHA-256', 'SHA-384', 'SHA-512', 'SHA3-256', 'SHA3-384', 'SHA3-512', 'cSHAKE128', 'cSHAKE256']),
|
|
1332
|
+
generateKey: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'RSA-OAEP', 'ECDSA', 'ECDH', 'Ed25519', 'Ed448', 'X25519', 'X448', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'HMAC', 'KMAC128', 'KMAC256', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', 'ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),
|
|
1333
|
+
importKey: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'RSA-OAEP', 'ECDSA', 'ECDH', 'Ed25519', 'Ed448', 'X25519', 'X448', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'HMAC', 'KMAC128', 'KMAC256', 'HKDF', 'PBKDF2', 'Argon2d', 'Argon2i', 'Argon2id', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', 'ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),
|
|
1334
|
+
exportKey: new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'RSA-OAEP', 'ECDSA', 'ECDH', 'Ed25519', 'Ed448', 'X25519', 'X448', 'AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'HMAC', 'KMAC128', 'KMAC256', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', 'ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),
|
|
1335
|
+
deriveBits: new Set(['PBKDF2', 'HKDF', 'ECDH', 'X25519', 'X448', 'Argon2d', 'Argon2i', 'Argon2id']),
|
|
1336
|
+
wrapKey: new Set(['AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'RSA-OAEP']),
|
|
1337
|
+
unwrapKey: new Set(['AES-CTR', 'AES-CBC', 'AES-GCM', 'AES-KW', 'AES-OCB', 'ChaCha20-Poly1305', 'RSA-OAEP']),
|
|
1338
|
+
encapsulateBits: new Set(['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),
|
|
1339
|
+
decapsulateBits: new Set(['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),
|
|
1340
|
+
encapsulateKey: new Set(['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']),
|
|
1341
|
+
decapsulateKey: new Set(['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024'])
|
|
1342
|
+
};
|
|
1343
|
+
const ASYMMETRIC_ALGORITHMS = new Set(['RSASSA-PKCS1-v1_5', 'RSA-PSS', 'RSA-OAEP', 'ECDSA', 'ECDH', 'Ed25519', 'Ed448', 'X25519', 'X448', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', 'ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024']);
|
|
1344
|
+
export class Subtle {
|
|
1345
|
+
static supports(operation, algorithm, _lengthOrAdditionalAlgorithm) {
|
|
1346
|
+
let normalizedAlgorithm;
|
|
1347
|
+
try {
|
|
1348
|
+
normalizedAlgorithm = normalizeAlgorithm(algorithm, operation === 'getPublicKey' ? 'exportKey' : operation);
|
|
1349
|
+
} catch {
|
|
1350
|
+
return false;
|
|
1351
|
+
}
|
|
1352
|
+
const name = normalizedAlgorithm.name;
|
|
1353
|
+
if (operation === 'getPublicKey') {
|
|
1354
|
+
return ASYMMETRIC_ALGORITHMS.has(name);
|
|
1355
|
+
}
|
|
1356
|
+
if (operation === 'deriveKey') {
|
|
1357
|
+
var _SUPPORTED_ALGORITHMS;
|
|
1358
|
+
// deriveKey decomposes to deriveBits + importKey of additional algorithm
|
|
1359
|
+
if (!((_SUPPORTED_ALGORITHMS = SUPPORTED_ALGORITHMS.deriveBits) !== null && _SUPPORTED_ALGORITHMS !== void 0 && _SUPPORTED_ALGORITHMS.has(name))) return false;
|
|
1360
|
+
if (_lengthOrAdditionalAlgorithm != null) {
|
|
1361
|
+
try {
|
|
1362
|
+
var _SUPPORTED_ALGORITHMS2;
|
|
1363
|
+
const additionalAlg = normalizeAlgorithm(_lengthOrAdditionalAlgorithm, 'importKey');
|
|
1364
|
+
return ((_SUPPORTED_ALGORITHMS2 = SUPPORTED_ALGORITHMS.importKey) === null || _SUPPORTED_ALGORITHMS2 === void 0 ? void 0 : _SUPPORTED_ALGORITHMS2.has(additionalAlg.name)) ?? false;
|
|
1365
|
+
} catch {
|
|
1366
|
+
return false;
|
|
1367
|
+
}
|
|
1368
|
+
}
|
|
1369
|
+
return true;
|
|
1370
|
+
}
|
|
1371
|
+
const supported = SUPPORTED_ALGORITHMS[operation];
|
|
1372
|
+
if (!supported) return false;
|
|
1373
|
+
return supported.has(name);
|
|
1374
|
+
}
|
|
1375
|
+
async decrypt(algorithm, key, data) {
|
|
1376
|
+
const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'decrypt');
|
|
1377
|
+
return cipherOrWrap(CipherOrWrapMode.kWebCryptoCipherDecrypt, normalizedAlgorithm, key, bufferLikeToArrayBuffer(data), 'decrypt');
|
|
1378
|
+
}
|
|
1379
|
+
async digest(algorithm, data) {
|
|
1380
|
+
const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'digest');
|
|
1381
|
+
return asyncDigest(normalizedAlgorithm, data);
|
|
1382
|
+
}
|
|
1383
|
+
async deriveBits(algorithm, baseKey, length) {
|
|
1384
|
+
// Allow either deriveBits OR deriveKey usage (WebCrypto spec allows both)
|
|
1385
|
+
if (!baseKey.keyUsages.includes('deriveBits') && !baseKey.keyUsages.includes('deriveKey')) {
|
|
1386
|
+
throw new Error('baseKey does not have deriveBits or deriveKey usage');
|
|
1387
|
+
}
|
|
1388
|
+
if (baseKey.algorithm.name !== algorithm.name) throw new Error('Key algorithm mismatch');
|
|
1389
|
+
switch (algorithm.name) {
|
|
1390
|
+
case 'PBKDF2':
|
|
1391
|
+
return pbkdf2DeriveBits(algorithm, baseKey, length);
|
|
1392
|
+
case 'X25519':
|
|
1393
|
+
// Fall through
|
|
1394
|
+
case 'X448':
|
|
1395
|
+
return xDeriveBits(algorithm, baseKey, length);
|
|
1396
|
+
case 'ECDH':
|
|
1397
|
+
return ecDeriveBits(algorithm, baseKey, length);
|
|
1398
|
+
case 'HKDF':
|
|
1399
|
+
return hkdfDeriveBits(algorithm, baseKey, length);
|
|
1400
|
+
case 'Argon2d':
|
|
1401
|
+
case 'Argon2i':
|
|
1402
|
+
case 'Argon2id':
|
|
1403
|
+
return argon2DeriveBits(algorithm, baseKey, length);
|
|
1404
|
+
}
|
|
1405
|
+
throw new Error(`'subtle.deriveBits()' for ${algorithm.name} is not implemented.`);
|
|
1406
|
+
}
|
|
1407
|
+
async deriveKey(algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages) {
|
|
1408
|
+
// Validate baseKey usage
|
|
1409
|
+
if (!baseKey.usages.includes('deriveKey') && !baseKey.usages.includes('deriveBits')) {
|
|
1410
|
+
throw lazyDOMException('baseKey does not have deriveKey or deriveBits usage', 'InvalidAccessError');
|
|
1411
|
+
}
|
|
1412
|
+
|
|
1413
|
+
// Calculate required key length
|
|
1414
|
+
const length = getKeyLength(derivedKeyAlgorithm);
|
|
1415
|
+
|
|
1416
|
+
// Step 1: Derive bits
|
|
1417
|
+
let derivedBits;
|
|
1418
|
+
if (baseKey.algorithm.name !== algorithm.name) throw new Error('Key algorithm mismatch');
|
|
1419
|
+
switch (algorithm.name) {
|
|
1420
|
+
case 'PBKDF2':
|
|
1421
|
+
derivedBits = await pbkdf2DeriveBits(algorithm, baseKey, length);
|
|
1422
|
+
break;
|
|
1423
|
+
case 'X25519':
|
|
1424
|
+
// Fall through
|
|
1425
|
+
case 'X448':
|
|
1426
|
+
derivedBits = await xDeriveBits(algorithm, baseKey, length);
|
|
1427
|
+
break;
|
|
1428
|
+
case 'ECDH':
|
|
1429
|
+
derivedBits = await ecDeriveBits(algorithm, baseKey, length);
|
|
1430
|
+
break;
|
|
1431
|
+
case 'HKDF':
|
|
1432
|
+
derivedBits = hkdfDeriveBits(algorithm, baseKey, length);
|
|
1433
|
+
break;
|
|
1434
|
+
case 'Argon2d':
|
|
1435
|
+
case 'Argon2i':
|
|
1436
|
+
case 'Argon2id':
|
|
1437
|
+
derivedBits = argon2DeriveBits(algorithm, baseKey, length);
|
|
1438
|
+
break;
|
|
1439
|
+
default:
|
|
1440
|
+
throw new Error(`'subtle.deriveKey()' for ${algorithm.name} is not implemented.`);
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
// Step 2: Import as key
|
|
1444
|
+
return this.importKey('raw', derivedBits, derivedKeyAlgorithm, extractable, keyUsages);
|
|
1445
|
+
}
|
|
1446
|
+
async encrypt(algorithm, key, data) {
|
|
1447
|
+
const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'encrypt');
|
|
1448
|
+
return cipherOrWrap(CipherOrWrapMode.kWebCryptoCipherEncrypt, normalizedAlgorithm, key, bufferLikeToArrayBuffer(data), 'encrypt');
|
|
1449
|
+
}
|
|
1450
|
+
async exportKey(format, key) {
|
|
1451
|
+
if (!key.extractable) throw new Error('key is not extractable');
|
|
1452
|
+
if (format === 'raw-seed') {
|
|
1453
|
+
const pqcAlgos = ['ML-KEM-512', 'ML-KEM-768', 'ML-KEM-1024', 'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87'];
|
|
1454
|
+
if (!pqcAlgos.includes(key.algorithm.name)) {
|
|
1455
|
+
throw lazyDOMException('raw-seed export only supported for PQC keys', 'NotSupportedError');
|
|
1456
|
+
}
|
|
1457
|
+
if (key.type !== 'private') {
|
|
1458
|
+
throw lazyDOMException('raw-seed export requires a private key', 'InvalidAccessError');
|
|
1459
|
+
}
|
|
1460
|
+
return bufferLikeToArrayBuffer(key.keyObject.handle.exportKey());
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1463
|
+
// Note: 'raw-seed' is handled above; do NOT normalize it here
|
|
1464
|
+
if (format === 'raw-secret' || format === 'raw-public') format = 'raw';
|
|
1465
|
+
switch (format) {
|
|
1466
|
+
case 'spki':
|
|
1467
|
+
return await exportKeySpki(key);
|
|
1468
|
+
case 'pkcs8':
|
|
1469
|
+
return await exportKeyPkcs8(key);
|
|
1470
|
+
case 'jwk':
|
|
1471
|
+
return exportKeyJWK(key);
|
|
1472
|
+
case 'raw':
|
|
1473
|
+
return exportKeyRaw(key);
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
async wrapKey(format, key, wrappingKey, wrapAlgorithm) {
|
|
1477
|
+
// Validate wrappingKey usage
|
|
1478
|
+
if (!wrappingKey.usages.includes('wrapKey')) {
|
|
1479
|
+
throw lazyDOMException('wrappingKey does not have wrapKey usage', 'InvalidAccessError');
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1482
|
+
// Step 1: Export the key
|
|
1483
|
+
const exported = await this.exportKey(format, key);
|
|
1484
|
+
|
|
1485
|
+
// Step 2: Convert to ArrayBuffer if JWK
|
|
1486
|
+
let keyData;
|
|
1487
|
+
if (format === 'jwk') {
|
|
1488
|
+
const jwkString = JSON.stringify(exported);
|
|
1489
|
+
const buffer = SBuffer.from(jwkString, 'utf8');
|
|
1490
|
+
|
|
1491
|
+
// For AES-KW, pad to multiple of 8 bytes (accounting for null terminator)
|
|
1492
|
+
if (wrapAlgorithm.name === 'AES-KW') {
|
|
1493
|
+
const length = buffer.length;
|
|
1494
|
+
// Add 1 for null terminator, then pad to multiple of 8
|
|
1495
|
+
const paddedLength = Math.ceil((length + 1) / 8) * 8;
|
|
1496
|
+
const paddedBuffer = SBuffer.alloc(paddedLength);
|
|
1497
|
+
buffer.copy(paddedBuffer);
|
|
1498
|
+
// Null terminator for JSON string (remaining bytes are already zeros from alloc)
|
|
1499
|
+
paddedBuffer.writeUInt8(0, length);
|
|
1500
|
+
keyData = bufferLikeToArrayBuffer(paddedBuffer);
|
|
1501
|
+
} else {
|
|
1502
|
+
keyData = bufferLikeToArrayBuffer(buffer);
|
|
1503
|
+
}
|
|
1504
|
+
} else {
|
|
1505
|
+
keyData = exported;
|
|
1506
|
+
}
|
|
1507
|
+
|
|
1508
|
+
// Step 3: Encrypt the exported key
|
|
1509
|
+
return cipherOrWrap(CipherOrWrapMode.kWebCryptoCipherEncrypt, wrapAlgorithm, wrappingKey, keyData, 'wrapKey');
|
|
1510
|
+
}
|
|
1511
|
+
async unwrapKey(format, wrappedKey, unwrappingKey, unwrapAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages) {
|
|
1512
|
+
// Validate unwrappingKey usage
|
|
1513
|
+
if (!unwrappingKey.usages.includes('unwrapKey')) {
|
|
1514
|
+
throw lazyDOMException('unwrappingKey does not have unwrapKey usage', 'InvalidAccessError');
|
|
1515
|
+
}
|
|
1516
|
+
|
|
1517
|
+
// Step 1: Decrypt the wrapped key
|
|
1518
|
+
const decrypted = await cipherOrWrap(CipherOrWrapMode.kWebCryptoCipherDecrypt, unwrapAlgorithm, unwrappingKey, bufferLikeToArrayBuffer(wrappedKey), 'unwrapKey');
|
|
1519
|
+
|
|
1520
|
+
// Step 2: Convert to appropriate format
|
|
1521
|
+
let keyData;
|
|
1522
|
+
if (format === 'jwk') {
|
|
1523
|
+
const buffer = SBuffer.from(decrypted);
|
|
1524
|
+
// For AES-KW, the data may be padded - find the null terminator
|
|
1525
|
+
let jwkString;
|
|
1526
|
+
if (unwrapAlgorithm.name === 'AES-KW') {
|
|
1527
|
+
// Find the null terminator (if present) to get the original string
|
|
1528
|
+
const nullIndex = buffer.indexOf(0);
|
|
1529
|
+
if (nullIndex !== -1) {
|
|
1530
|
+
jwkString = buffer.toString('utf8', 0, nullIndex);
|
|
1531
|
+
} else {
|
|
1532
|
+
// No null terminator, try to parse the whole buffer
|
|
1533
|
+
jwkString = buffer.toString('utf8').trim();
|
|
1534
|
+
}
|
|
1535
|
+
} else {
|
|
1536
|
+
jwkString = buffer.toString('utf8');
|
|
1537
|
+
}
|
|
1538
|
+
keyData = JSON.parse(jwkString);
|
|
1539
|
+
} else {
|
|
1540
|
+
keyData = decrypted;
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
// Step 3: Import the key
|
|
1544
|
+
return this.importKey(format, keyData, unwrappedKeyAlgorithm, extractable, keyUsages);
|
|
1545
|
+
}
|
|
1546
|
+
async generateKey(algorithm, extractable, keyUsages) {
|
|
1547
|
+
algorithm = normalizeAlgorithm(algorithm, 'generateKey');
|
|
1548
|
+
let result;
|
|
1549
|
+
switch (algorithm.name) {
|
|
1550
|
+
case 'RSASSA-PKCS1-v1_5':
|
|
1551
|
+
// Fall through
|
|
1552
|
+
case 'RSA-PSS':
|
|
1553
|
+
// Fall through
|
|
1554
|
+
case 'RSA-OAEP':
|
|
1555
|
+
result = await rsa_generateKeyPair(algorithm, extractable, keyUsages);
|
|
1556
|
+
break;
|
|
1557
|
+
case 'ECDSA':
|
|
1558
|
+
// Fall through
|
|
1559
|
+
case 'ECDH':
|
|
1560
|
+
result = await ec_generateKeyPair(algorithm.name, algorithm.namedCurve, extractable, keyUsages);
|
|
1561
|
+
checkCryptoKeyPairUsages(result);
|
|
1562
|
+
break;
|
|
1563
|
+
case 'AES-CTR':
|
|
1564
|
+
// Fall through
|
|
1565
|
+
case 'AES-CBC':
|
|
1566
|
+
// Fall through
|
|
1567
|
+
case 'AES-GCM':
|
|
1568
|
+
// Fall through
|
|
1569
|
+
case 'AES-KW':
|
|
1570
|
+
// Fall through
|
|
1571
|
+
case 'AES-OCB':
|
|
1572
|
+
result = await aesGenerateKey(algorithm, extractable, keyUsages);
|
|
1573
|
+
break;
|
|
1574
|
+
case 'ChaCha20-Poly1305':
|
|
1575
|
+
{
|
|
1576
|
+
const length = algorithm.length ?? 256;
|
|
1577
|
+
if (length !== 256) {
|
|
1578
|
+
throw lazyDOMException('ChaCha20-Poly1305 only supports 256-bit keys', 'NotSupportedError');
|
|
1579
|
+
}
|
|
1580
|
+
result = await aesGenerateKey({
|
|
1581
|
+
name: 'ChaCha20-Poly1305',
|
|
1582
|
+
length: 256
|
|
1583
|
+
}, extractable, keyUsages);
|
|
1584
|
+
break;
|
|
1585
|
+
}
|
|
1586
|
+
case 'HMAC':
|
|
1587
|
+
result = await hmacGenerateKey(algorithm, extractable, keyUsages);
|
|
1588
|
+
break;
|
|
1589
|
+
case 'KMAC128':
|
|
1590
|
+
// Fall through
|
|
1591
|
+
case 'KMAC256':
|
|
1592
|
+
result = await kmacGenerateKey(algorithm, extractable, keyUsages);
|
|
1593
|
+
break;
|
|
1594
|
+
case 'Ed25519':
|
|
1595
|
+
// Fall through
|
|
1596
|
+
case 'Ed448':
|
|
1597
|
+
result = await ed_generateKeyPairWebCrypto(algorithm.name.toLowerCase(), extractable, keyUsages);
|
|
1598
|
+
checkCryptoKeyPairUsages(result);
|
|
1599
|
+
break;
|
|
1600
|
+
case 'ML-DSA-44':
|
|
1601
|
+
// Fall through
|
|
1602
|
+
case 'ML-DSA-65':
|
|
1603
|
+
// Fall through
|
|
1604
|
+
case 'ML-DSA-87':
|
|
1605
|
+
result = await mldsa_generateKeyPairWebCrypto(algorithm.name, extractable, keyUsages);
|
|
1606
|
+
checkCryptoKeyPairUsages(result);
|
|
1607
|
+
break;
|
|
1608
|
+
case 'X25519':
|
|
1609
|
+
// Fall through
|
|
1610
|
+
case 'X448':
|
|
1611
|
+
result = await x_generateKeyPairWebCrypto(algorithm.name.toLowerCase(), extractable, keyUsages);
|
|
1612
|
+
checkCryptoKeyPairUsages(result);
|
|
1613
|
+
break;
|
|
1614
|
+
case 'ML-KEM-512':
|
|
1615
|
+
// Fall through
|
|
1616
|
+
case 'ML-KEM-768':
|
|
1617
|
+
// Fall through
|
|
1618
|
+
case 'ML-KEM-1024':
|
|
1619
|
+
result = await mlkem_generateKeyPairWebCrypto(algorithm.name, extractable, keyUsages);
|
|
1620
|
+
checkCryptoKeyPairUsages(result);
|
|
1621
|
+
break;
|
|
1622
|
+
default:
|
|
1623
|
+
throw new Error(`'subtle.generateKey()' is not implemented for ${algorithm.name}.
|
|
1624
|
+
Unrecognized algorithm name`);
|
|
1625
|
+
}
|
|
1626
|
+
return result;
|
|
1627
|
+
}
|
|
1628
|
+
async getPublicKey(key, keyUsages) {
|
|
1629
|
+
if (key.type === 'secret') {
|
|
1630
|
+
throw lazyDOMException('key must be a private key', 'NotSupportedError');
|
|
1631
|
+
}
|
|
1632
|
+
if (key.type !== 'private') {
|
|
1633
|
+
throw lazyDOMException('key must be a private key', 'InvalidAccessError');
|
|
1634
|
+
}
|
|
1635
|
+
const publicKeyObject = createPublicKey(key.keyObject);
|
|
1636
|
+
return publicKeyObject.toCryptoKey(key.algorithm, true, keyUsages);
|
|
1637
|
+
}
|
|
1638
|
+
async importKey(format, data, algorithm, extractable, keyUsages) {
|
|
1639
|
+
// Note: 'raw-seed' is NOT normalized — PQC import functions handle it directly
|
|
1640
|
+
if (format === 'raw-secret' || format === 'raw-public') format = 'raw';
|
|
1641
|
+
const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'importKey');
|
|
1642
|
+
let result;
|
|
1643
|
+
switch (normalizedAlgorithm.name) {
|
|
1644
|
+
case 'RSASSA-PKCS1-v1_5':
|
|
1645
|
+
// Fall through
|
|
1646
|
+
case 'RSA-PSS':
|
|
1647
|
+
// Fall through
|
|
1648
|
+
case 'RSA-OAEP':
|
|
1649
|
+
result = rsaImportKey(format, data, normalizedAlgorithm, extractable, keyUsages);
|
|
1650
|
+
break;
|
|
1651
|
+
case 'ECDSA':
|
|
1652
|
+
// Fall through
|
|
1653
|
+
case 'ECDH':
|
|
1654
|
+
result = ecImportKey(format, data, normalizedAlgorithm, extractable, keyUsages);
|
|
1655
|
+
break;
|
|
1656
|
+
case 'HMAC':
|
|
1657
|
+
result = await hmacImportKey(normalizedAlgorithm, format, data, extractable, keyUsages);
|
|
1658
|
+
break;
|
|
1659
|
+
case 'KMAC128':
|
|
1660
|
+
// Fall through
|
|
1661
|
+
case 'KMAC256':
|
|
1662
|
+
result = await kmacImportKey(normalizedAlgorithm, format, data, extractable, keyUsages);
|
|
1663
|
+
break;
|
|
1664
|
+
case 'AES-CTR':
|
|
1665
|
+
// Fall through
|
|
1666
|
+
case 'AES-CBC':
|
|
1667
|
+
// Fall through
|
|
1668
|
+
case 'AES-GCM':
|
|
1669
|
+
// Fall through
|
|
1670
|
+
case 'AES-KW':
|
|
1671
|
+
// Fall through
|
|
1672
|
+
case 'AES-OCB':
|
|
1673
|
+
// Fall through
|
|
1674
|
+
case 'ChaCha20-Poly1305':
|
|
1675
|
+
result = await aesImportKey(normalizedAlgorithm, format, data, extractable, keyUsages);
|
|
1676
|
+
break;
|
|
1677
|
+
case 'PBKDF2':
|
|
1678
|
+
case 'Argon2d':
|
|
1679
|
+
case 'Argon2i':
|
|
1680
|
+
case 'Argon2id':
|
|
1681
|
+
result = await importGenericSecretKey(normalizedAlgorithm, format, data, extractable, keyUsages);
|
|
1682
|
+
break;
|
|
1683
|
+
case 'HKDF':
|
|
1684
|
+
result = await hkdfImportKey(format, data, normalizedAlgorithm, extractable, keyUsages);
|
|
1685
|
+
break;
|
|
1686
|
+
case 'X25519':
|
|
1687
|
+
// Fall through
|
|
1688
|
+
case 'X448':
|
|
1689
|
+
// Fall through
|
|
1690
|
+
case 'Ed25519':
|
|
1691
|
+
// Fall through
|
|
1692
|
+
case 'Ed448':
|
|
1693
|
+
result = edImportKey(format, data, normalizedAlgorithm, extractable, keyUsages);
|
|
1694
|
+
break;
|
|
1695
|
+
case 'ML-DSA-44':
|
|
1696
|
+
// Fall through
|
|
1697
|
+
case 'ML-DSA-65':
|
|
1698
|
+
// Fall through
|
|
1699
|
+
case 'ML-DSA-87':
|
|
1700
|
+
result = mldsaImportKey(format, data, normalizedAlgorithm, extractable, keyUsages);
|
|
1701
|
+
break;
|
|
1702
|
+
case 'ML-KEM-512':
|
|
1703
|
+
// Fall through
|
|
1704
|
+
case 'ML-KEM-768':
|
|
1705
|
+
// Fall through
|
|
1706
|
+
case 'ML-KEM-1024':
|
|
1707
|
+
result = mlkemImportKey(format, data, normalizedAlgorithm, extractable, keyUsages);
|
|
1708
|
+
break;
|
|
1709
|
+
default:
|
|
1710
|
+
throw new Error(`"subtle.importKey()" is not implemented for ${normalizedAlgorithm.name}`);
|
|
1711
|
+
}
|
|
1712
|
+
if ((result.type === 'secret' || result.type === 'private') && result.usages.length === 0) {
|
|
1713
|
+
throw new Error(`Usages cannot be empty when importing a ${result.type} key.`);
|
|
1714
|
+
}
|
|
1715
|
+
return result;
|
|
1716
|
+
}
|
|
1717
|
+
async sign(algorithm, key, data) {
|
|
1718
|
+
return signVerify(normalizeAlgorithm(algorithm, 'sign'), key, data);
|
|
1719
|
+
}
|
|
1720
|
+
async verify(algorithm, key, signature, data) {
|
|
1721
|
+
return signVerify(normalizeAlgorithm(algorithm, 'verify'), key, data, signature);
|
|
1722
|
+
}
|
|
1723
|
+
_encapsulateCore(algorithm, key) {
|
|
1724
|
+
const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'encapsulateBits');
|
|
1725
|
+
if (key.algorithm.name !== normalizedAlgorithm.name) {
|
|
1726
|
+
throw lazyDOMException('Key algorithm mismatch', 'InvalidAccessError');
|
|
1727
|
+
}
|
|
1728
|
+
const variant = normalizedAlgorithm.name;
|
|
1729
|
+
const mlkem = new MlKem(variant);
|
|
1730
|
+
const keyData = key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.SPKI);
|
|
1731
|
+
mlkem.setPublicKey(bufferLikeToArrayBuffer(keyData), KFormatType.DER, KeyEncoding.SPKI);
|
|
1732
|
+
return mlkem.encapsulateSync();
|
|
1733
|
+
}
|
|
1734
|
+
_decapsulateCore(algorithm, key, ciphertext) {
|
|
1735
|
+
const normalizedAlgorithm = normalizeAlgorithm(algorithm, 'decapsulateBits');
|
|
1736
|
+
if (key.algorithm.name !== normalizedAlgorithm.name) {
|
|
1737
|
+
throw lazyDOMException('Key algorithm mismatch', 'InvalidAccessError');
|
|
1738
|
+
}
|
|
1739
|
+
const variant = normalizedAlgorithm.name;
|
|
1740
|
+
const mlkem = new MlKem(variant);
|
|
1741
|
+
const keyData = key.keyObject.handle.exportKey(KFormatType.DER, KeyEncoding.PKCS8);
|
|
1742
|
+
mlkem.setPrivateKey(bufferLikeToArrayBuffer(keyData), KFormatType.DER, KeyEncoding.PKCS8);
|
|
1743
|
+
return mlkem.decapsulateSync(bufferLikeToArrayBuffer(ciphertext));
|
|
1744
|
+
}
|
|
1745
|
+
async encapsulateBits(algorithm, key) {
|
|
1746
|
+
if (!key.usages.includes('encapsulateBits')) {
|
|
1747
|
+
throw lazyDOMException('Key does not have encapsulateBits usage', 'InvalidAccessError');
|
|
1748
|
+
}
|
|
1749
|
+
return this._encapsulateCore(algorithm, key);
|
|
1750
|
+
}
|
|
1751
|
+
async encapsulateKey(algorithm, key, sharedKeyAlgorithm, extractable, usages) {
|
|
1752
|
+
if (!key.usages.includes('encapsulateKey')) {
|
|
1753
|
+
throw lazyDOMException('Key does not have encapsulateKey usage', 'InvalidAccessError');
|
|
1754
|
+
}
|
|
1755
|
+
const {
|
|
1756
|
+
sharedKey,
|
|
1757
|
+
ciphertext
|
|
1758
|
+
} = this._encapsulateCore(algorithm, key);
|
|
1759
|
+
const importedKey = await this.importKey('raw', sharedKey, sharedKeyAlgorithm, extractable, usages);
|
|
1760
|
+
return {
|
|
1761
|
+
key: importedKey,
|
|
1762
|
+
ciphertext
|
|
1763
|
+
};
|
|
1764
|
+
}
|
|
1765
|
+
async decapsulateBits(algorithm, key, ciphertext) {
|
|
1766
|
+
if (!key.usages.includes('decapsulateBits')) {
|
|
1767
|
+
throw lazyDOMException('Key does not have decapsulateBits usage', 'InvalidAccessError');
|
|
1768
|
+
}
|
|
1769
|
+
return this._decapsulateCore(algorithm, key, ciphertext);
|
|
1770
|
+
}
|
|
1771
|
+
async decapsulateKey(algorithm, key, ciphertext, sharedKeyAlgorithm, extractable, usages) {
|
|
1772
|
+
if (!key.usages.includes('decapsulateKey')) {
|
|
1773
|
+
throw lazyDOMException('Key does not have decapsulateKey usage', 'InvalidAccessError');
|
|
1774
|
+
}
|
|
1775
|
+
const sharedKey = this._decapsulateCore(algorithm, key, ciphertext);
|
|
1776
|
+
return this.importKey('raw', sharedKey, sharedKeyAlgorithm, extractable, usages);
|
|
1777
|
+
}
|
|
1778
|
+
}
|
|
1779
|
+
export const subtle = new Subtle();
|
|
1780
|
+
function getKeyLength(algorithm) {
|
|
1781
|
+
const name = algorithm.name;
|
|
1782
|
+
switch (name) {
|
|
1783
|
+
case 'AES-CTR':
|
|
1784
|
+
case 'AES-CBC':
|
|
1785
|
+
case 'AES-GCM':
|
|
1786
|
+
case 'AES-KW':
|
|
1787
|
+
case 'AES-OCB':
|
|
1788
|
+
case 'ChaCha20-Poly1305':
|
|
1789
|
+
return algorithm.length || 256;
|
|
1790
|
+
case 'HMAC':
|
|
1791
|
+
{
|
|
1792
|
+
const hmacAlg = algorithm;
|
|
1793
|
+
return hmacAlg.length || 256;
|
|
1794
|
+
}
|
|
1795
|
+
case 'KMAC128':
|
|
1796
|
+
return algorithm.length || 128;
|
|
1797
|
+
case 'KMAC256':
|
|
1798
|
+
return algorithm.length || 256;
|
|
1799
|
+
default:
|
|
1800
|
+
throw lazyDOMException(`Cannot determine key length for ${name}`, 'NotSupportedError');
|
|
1801
|
+
}
|
|
1802
|
+
}
|
|
1803
|
+
//# sourceMappingURL=subtle.js.map
|