xypriss 1.0.1 → 1.1.0
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/README.md +187 -84
- package/dist/cjs/ServerFactory.js +1 -1
- package/dist/cjs/cache/SecureCacheAdapter.js +2 -2
- package/dist/cjs/cluster/cluster-manager.js +1 -1
- package/dist/cjs/cluster/index.js +30 -30
- package/dist/cjs/cluster/modules/AutoScaler.js +2 -2
- package/dist/cjs/cluster/modules/ClusterPersistenceManager.js +3 -3
- package/dist/cjs/cluster/modules/HealthMonitor.js +2 -2
- package/dist/cjs/cluster/modules/IPCManager.js +2 -2
- package/dist/cjs/cluster/modules/MetricsCollector.js +1 -1
- package/dist/cjs/cluster/modules/WorkerManager.js +2 -2
- package/dist/cjs/encryption/EncryptionService.js +12 -12
- package/dist/cjs/encryption/EncryptionService.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/middleware/safe-json-middleware.js +1 -1
- package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js +727 -0
- package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js.map +1 -0
- package/dist/cjs/mods/security/src/algorithms/registry.js +83 -0
- package/dist/cjs/mods/security/src/algorithms/registry.js.map +1 -0
- package/dist/cjs/mods/security/src/components/attestation.js +1065 -0
- package/dist/cjs/mods/security/src/components/attestation.js.map +1 -0
- package/dist/cjs/mods/security/src/components/cache/FastLRU.js +323 -0
- package/dist/cjs/mods/security/src/components/cache/FastLRU.js.map +1 -0
- package/dist/cjs/mods/security/src/components/cache/UFSIMC.js +1131 -0
- package/dist/cjs/mods/security/src/components/cache/UFSIMC.js.map +1 -0
- package/dist/cjs/mods/security/src/components/cache/cacheSys.js +624 -0
- package/dist/cjs/mods/security/src/components/cache/cacheSys.js.map +1 -0
- package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js +136 -0
- package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js.map +1 -0
- package/dist/cjs/mods/security/src/components/cache/config/cache.config.js +39 -0
- package/dist/cjs/mods/security/src/components/cache/config/cache.config.js.map +1 -0
- package/dist/cjs/mods/security/src/components/cache/index.js +459 -0
- package/dist/cjs/mods/security/src/components/cache/index.js.map +1 -0
- package/dist/cjs/mods/security/src/components/cache/useCache.js +243 -0
- package/dist/cjs/mods/security/src/components/cache/useCache.js.map +1 -0
- package/dist/cjs/mods/security/src/components/canary-tokens.js +351 -0
- package/dist/cjs/mods/security/src/components/canary-tokens.js.map +1 -0
- package/dist/cjs/mods/security/src/components/entropy-augmentation.js +478 -0
- package/dist/cjs/mods/security/src/components/entropy-augmentation.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/UFA/ultra-fast-allocator.js +338 -0
- package/dist/cjs/mods/security/src/components/fortified-function/UFA/ultra-fast-allocator.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/UFA/ultra-fast-cache.js +536 -0
- package/dist/cjs/mods/security/src/components/fortified-function/UFA/ultra-fast-cache.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/UFA/ultra-fast-engine.js +631 -0
- package/dist/cjs/mods/security/src/components/fortified-function/UFA/ultra-fast-engine.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/const/exec.const.js +18 -0
- package/dist/cjs/mods/security/src/components/fortified-function/const/exec.const.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/fortified-config.js +356 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/fortified-config.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/fortified-function-core.js +520 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/fortified-function-core.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/fortified-logger.js +246 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/fortified-logger.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/api-manager.js +189 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/api-manager.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/cache-manager.js +107 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/cache-manager.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/execution-context.js +105 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/execution-context.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/execution-engine.js +127 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/execution-engine.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/execution-router.js +93 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/execution-router.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/memory-manager.js +147 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/memory-manager.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/security-manager.js +102 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/security-manager.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/stats-manager.js +159 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/stats-manager.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/timing-manager.js +125 -0
- package/dist/cjs/mods/security/src/components/fortified-function/core/mods/timing-manager.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/engines/analytics-engine.js +370 -0
- package/dist/cjs/mods/security/src/components/fortified-function/engines/analytics-engine.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/engines/execution-engine.js +402 -0
- package/dist/cjs/mods/security/src/components/fortified-function/engines/execution-engine.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/index.js +172 -0
- package/dist/cjs/mods/security/src/components/fortified-function/index.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/performance/performance-monitor.js +240 -0
- package/dist/cjs/mods/security/src/components/fortified-function/performance/performance-monitor.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/performance/performance-timer.js +188 -0
- package/dist/cjs/mods/security/src/components/fortified-function/performance/performance-timer.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js +253 -0
- package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/serializer/safe-serializer.js +350 -0
- package/dist/cjs/mods/security/src/components/fortified-function/serializer/safe-serializer.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/smart-cache.js +693 -0
- package/dist/cjs/mods/security/src/components/fortified-function/smart-cache.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/types/types.js +16 -0
- package/dist/cjs/mods/security/src/components/fortified-function/types/types.js.map +1 -0
- package/dist/cjs/mods/security/src/components/fortified-function/utils/utils.js +68 -0
- package/dist/cjs/mods/security/src/components/fortified-function/utils/utils.js.map +1 -0
- package/dist/cjs/mods/security/src/components/memory-hard.js +922 -0
- package/dist/cjs/mods/security/src/components/memory-hard.js.map +1 -0
- package/dist/cjs/mods/security/src/components/post-quantum.js +323 -0
- package/dist/cjs/mods/security/src/components/post-quantum.js.map +1 -0
- package/dist/cjs/mods/security/src/components/runtime-verification.js +645 -0
- package/dist/cjs/mods/security/src/components/runtime-verification.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-array/core/secure-array-core.js +1572 -0
- package/dist/cjs/mods/security/src/components/secure-array/core/secure-array-core.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-array/crypto/ArrayCryptoHandler.js +330 -0
- package/dist/cjs/mods/security/src/components/secure-array/crypto/ArrayCryptoHandler.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-array/events/event-manager.js +270 -0
- package/dist/cjs/mods/security/src/components/secure-array/events/event-manager.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-array/index.js +66 -0
- package/dist/cjs/mods/security/src/components/secure-array/index.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-array/metadata/metadata-manager.js +331 -0
- package/dist/cjs/mods/security/src/components/secure-array/metadata/metadata-manager.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-array/serialization/ArraySerializationHandler.js +390 -0
- package/dist/cjs/mods/security/src/components/secure-array/serialization/ArraySerializationHandler.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-array/types/index.js +87 -0
- package/dist/cjs/mods/security/src/components/secure-array/types/index.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-array/utils/id-generator.js +80 -0
- package/dist/cjs/mods/security/src/components/secure-array/utils/id-generator.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-array/utils/validation.js +275 -0
- package/dist/cjs/mods/security/src/components/secure-array/utils/validation.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-memory.js +906 -0
- package/dist/cjs/mods/security/src/components/secure-memory.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-object/core/secure-object-core.js +1605 -0
- package/dist/cjs/mods/security/src/components/secure-object/core/secure-object-core.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-object/encryption/crypto-handler.js +362 -0
- package/dist/cjs/mods/security/src/components/secure-object/encryption/crypto-handler.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-object/encryption/sensitive-keys.js +206 -0
- package/dist/cjs/mods/security/src/components/secure-object/encryption/sensitive-keys.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-object/events/event-manager.js +197 -0
- package/dist/cjs/mods/security/src/components/secure-object/events/event-manager.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-object/index.js +67 -0
- package/dist/cjs/mods/security/src/components/secure-object/index.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-object/metadata/metadata-manager.js +183 -0
- package/dist/cjs/mods/security/src/components/secure-object/metadata/metadata-manager.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-object/serialization/serialization-handler.js +197 -0
- package/dist/cjs/mods/security/src/components/secure-object/serialization/serialization-handler.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-object/utils/id-generator.js +64 -0
- package/dist/cjs/mods/security/src/components/secure-object/utils/id-generator.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-object/utils/validation.js +239 -0
- package/dist/cjs/mods/security/src/components/secure-object/utils/validation.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-serialization.js +772 -0
- package/dist/cjs/mods/security/src/components/secure-serialization.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-string/advanced/entropy-analyzer.js +308 -0
- package/dist/cjs/mods/security/src/components/secure-string/advanced/entropy-analyzer.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-string/advanced/performance-monitor.js +335 -0
- package/dist/cjs/mods/security/src/components/secure-string/advanced/performance-monitor.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-string/advanced/quantum-safe.js +245 -0
- package/dist/cjs/mods/security/src/components/secure-string/advanced/quantum-safe.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-string/buffer/buffer-manager.js +205 -0
- package/dist/cjs/mods/security/src/components/secure-string/buffer/buffer-manager.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-string/core/secure-string-core.js +788 -0
- package/dist/cjs/mods/security/src/components/secure-string/core/secure-string-core.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-string/crypto/crypto-operations.js +319 -0
- package/dist/cjs/mods/security/src/components/secure-string/crypto/crypto-operations.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-string/operations/comparison-operations.js +221 -0
- package/dist/cjs/mods/security/src/components/secure-string/operations/comparison-operations.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-string/operations/string-operations.js +234 -0
- package/dist/cjs/mods/security/src/components/secure-string/operations/string-operations.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-string/types/index.js +41 -0
- package/dist/cjs/mods/security/src/components/secure-string/types/index.js.map +1 -0
- package/dist/cjs/mods/security/src/components/secure-string/validation/string-validator.js +334 -0
- package/dist/cjs/mods/security/src/components/secure-string/validation/string-validator.js.map +1 -0
- package/dist/cjs/mods/security/src/components/side-channel.js +146 -0
- package/dist/cjs/mods/security/src/components/side-channel.js.map +1 -0
- package/dist/cjs/mods/security/src/components/tamper-evident-logging.js +391 -0
- package/dist/cjs/mods/security/src/components/tamper-evident-logging.js.map +1 -0
- package/dist/cjs/mods/security/src/const/buffer.const.js +15 -0
- package/dist/cjs/mods/security/src/const/buffer.const.js.map +1 -0
- package/dist/cjs/mods/security/src/core/crypto.js +722 -0
- package/dist/cjs/mods/security/src/core/crypto.js.map +1 -0
- package/dist/cjs/mods/security/src/core/hash/hash-advanced.js +388 -0
- package/dist/cjs/mods/security/src/core/hash/hash-advanced.js.map +1 -0
- package/dist/cjs/mods/security/src/core/hash/hash-core.js +376 -0
- package/dist/cjs/mods/security/src/core/hash/hash-core.js.map +1 -0
- package/dist/cjs/mods/security/src/core/hash/hash-entropy.js +307 -0
- package/dist/cjs/mods/security/src/core/hash/hash-entropy.js.map +1 -0
- package/dist/cjs/mods/security/src/core/hash/hash-security.js +372 -0
- package/dist/cjs/mods/security/src/core/hash/hash-security.js.map +1 -0
- package/dist/cjs/mods/security/src/core/hash/hash-types.js +16 -0
- package/dist/cjs/mods/security/src/core/hash/hash-types.js.map +1 -0
- package/dist/cjs/mods/security/src/core/hash/hash-utils.js +328 -0
- package/dist/cjs/mods/security/src/core/hash/hash-utils.js.map +1 -0
- package/dist/cjs/mods/security/src/core/hash/hash-validator.js +312 -0
- package/dist/cjs/mods/security/src/core/hash/hash-validator.js.map +1 -0
- package/dist/cjs/mods/security/src/core/hash.js +25 -0
- package/dist/cjs/mods/security/src/core/hash.js.map +1 -0
- package/dist/cjs/mods/security/src/core/keys/algorithms/mods/Argon2Algo.js +135 -0
- package/dist/cjs/mods/security/src/core/keys/algorithms/mods/Argon2Algo.js.map +1 -0
- package/dist/cjs/mods/security/src/core/keys/algorithms/mods/PBKDF2Algo.js +293 -0
- package/dist/cjs/mods/security/src/core/keys/algorithms/mods/PBKDF2Algo.js.map +1 -0
- package/dist/cjs/mods/security/src/core/keys/algorithms/mods/ScryptAlgo.js +317 -0
- package/dist/cjs/mods/security/src/core/keys/algorithms/mods/ScryptAlgo.js.map +1 -0
- package/dist/cjs/mods/security/src/core/keys/keys-core.js +201 -0
- package/dist/cjs/mods/security/src/core/keys/keys-core.js.map +1 -0
- package/dist/cjs/mods/security/src/core/keys/keys-logger.js +234 -0
- package/dist/cjs/mods/security/src/core/keys/keys-logger.js.map +1 -0
- package/dist/cjs/mods/security/src/core/keys/keys-types.js +65 -0
- package/dist/cjs/mods/security/src/core/keys/keys-types.js.map +1 -0
- package/dist/cjs/mods/security/src/core/keys/keys-utils.js +322 -0
- package/dist/cjs/mods/security/src/core/keys/keys-utils.js.map +1 -0
- package/dist/cjs/mods/security/src/core/keys.js +136 -0
- package/dist/cjs/mods/security/src/core/keys.js.map +1 -0
- package/dist/cjs/mods/security/src/core/password/index.js +122 -0
- package/dist/cjs/mods/security/src/core/password/index.js.map +1 -0
- package/dist/cjs/mods/security/src/core/password/password-algorithms.js +397 -0
- package/dist/cjs/mods/security/src/core/password/password-algorithms.js.map +1 -0
- package/dist/cjs/mods/security/src/core/password/password-core.js +294 -0
- package/dist/cjs/mods/security/src/core/password/password-core.js.map +1 -0
- package/dist/cjs/mods/security/src/core/password/password-generator.js +365 -0
- package/dist/cjs/mods/security/src/core/password/password-generator.js.map +1 -0
- package/dist/cjs/mods/security/src/core/password/password-migration.js +237 -0
- package/dist/cjs/mods/security/src/core/password/password-migration.js.map +1 -0
- package/dist/cjs/mods/security/src/core/password/password-security.js +534 -0
- package/dist/cjs/mods/security/src/core/password/password-security.js.map +1 -0
- package/dist/cjs/mods/security/src/core/password/password-types.js +39 -0
- package/dist/cjs/mods/security/src/core/password/password-types.js.map +1 -0
- package/dist/cjs/mods/security/src/core/password/password-utils.js +651 -0
- package/dist/cjs/mods/security/src/core/password/password-utils.js.map +1 -0
- package/dist/cjs/mods/security/src/core/password/swlist.js +1122 -0
- package/dist/cjs/mods/security/src/core/password/swlist.js.map +1 -0
- package/dist/cjs/mods/security/src/core/random/random-core.js +328 -0
- package/dist/cjs/mods/security/src/core/random/random-core.js.map +1 -0
- package/dist/cjs/mods/security/src/core/random/random-crypto.js +339 -0
- package/dist/cjs/mods/security/src/core/random/random-crypto.js.map +1 -0
- package/dist/cjs/mods/security/src/core/random/random-entropy.js +388 -0
- package/dist/cjs/mods/security/src/core/random/random-entropy.js.map +1 -0
- package/dist/cjs/mods/security/src/core/random/random-generators.js +344 -0
- package/dist/cjs/mods/security/src/core/random/random-generators.js.map +1 -0
- package/dist/cjs/mods/security/src/core/random/random-sources.js +426 -0
- package/dist/cjs/mods/security/src/core/random/random-sources.js.map +1 -0
- package/dist/cjs/mods/security/src/core/random/random-tokens.js +309 -0
- package/dist/cjs/mods/security/src/core/random/random-tokens.js.map +1 -0
- package/dist/cjs/mods/security/src/core/random/random-types.js +36 -0
- package/dist/cjs/mods/security/src/core/random/random-types.js.map +1 -0
- package/dist/cjs/mods/security/src/core/validators.js +200 -0
- package/dist/cjs/mods/security/src/core/validators.js.map +1 -0
- package/dist/cjs/mods/security/src/helpers/Uint8Array.js +335 -0
- package/dist/cjs/mods/security/src/helpers/Uint8Array.js.map +1 -0
- package/dist/cjs/mods/security/src/helpers/createEnu.js +27 -0
- package/dist/cjs/mods/security/src/helpers/createEnu.js.map +1 -0
- package/dist/cjs/mods/security/src/index.js +417 -0
- package/dist/cjs/mods/security/src/index.js.map +1 -0
- package/dist/cjs/mods/security/src/types/global.js +51 -0
- package/dist/cjs/mods/security/src/types/global.js.map +1 -0
- package/dist/cjs/mods/security/src/types/secure-mem.type.js +100 -0
- package/dist/cjs/mods/security/src/types/secure-mem.type.js.map +1 -0
- package/dist/cjs/mods/security/src/types/secure-memory.js +20 -0
- package/dist/cjs/mods/security/src/types/secure-memory.js.map +1 -0
- package/dist/cjs/mods/security/src/types.js +63 -0
- package/dist/cjs/mods/security/src/types.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/CryptoAlgorithmUtils.js +71 -0
- package/dist/cjs/mods/security/src/utils/CryptoAlgorithmUtils.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/constants.js +111 -0
- package/dist/cjs/mods/security/src/utils/constants.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/dataConverter.js +74 -0
- package/dist/cjs/mods/security/src/utils/dataConverter.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/encoding.js +290 -0
- package/dist/cjs/mods/security/src/utils/encoding.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/errorHandler.js +140 -0
- package/dist/cjs/mods/security/src/utils/errorHandler.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/memory/config-manager.js +282 -0
- package/dist/cjs/mods/security/src/utils/memory/config-manager.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/memory/event-manager.js +277 -0
- package/dist/cjs/mods/security/src/utils/memory/event-manager.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/memory/index.js +162 -0
- package/dist/cjs/mods/security/src/utils/memory/index.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/memory/memory-manager.js +888 -0
- package/dist/cjs/mods/security/src/utils/memory/memory-manager.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/memory/memory-pool.js +356 -0
- package/dist/cjs/mods/security/src/utils/memory/memory-pool.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/memory/reference-tracker.js +376 -0
- package/dist/cjs/mods/security/src/utils/memory/reference-tracker.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/memory/types.js +56 -0
- package/dist/cjs/mods/security/src/utils/memory/types.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/patterns.js +127 -0
- package/dist/cjs/mods/security/src/utils/patterns.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/performanceMonitor.js +249 -0
- package/dist/cjs/mods/security/src/utils/performanceMonitor.js.map +1 -0
- package/dist/cjs/mods/security/src/utils/stats.js +182 -0
- package/dist/cjs/mods/security/src/utils/stats.js.map +1 -0
- package/dist/cjs/security-middleware.js +15 -15
- package/dist/cjs/server/components/fastapi/UltraFastRequestProcessor.js +1 -1
- package/dist/cjs/server/components/fastapi/console/ConsoleInterceptor.js +23 -23
- package/dist/cjs/server/components/fastapi/middlewares/MiddlewareAPI.js +1 -1
- package/dist/cjs/server/optimization/RequestPreCompiler.js +1 -1
- package/dist/cjs/server/plugins/PluginRegistry.js +1 -1
- package/dist/cjs/server/plugins/core/CachePlugin.js +7 -7
- package/dist/cjs/server/plugins/core/PerformancePlugin.js +2 -2
- package/dist/cjs/server/plugins/core/SecurityPlugin.js +10 -10
- package/dist/cjs/smart-routes.js +1 -1
- package/dist/esm/ServerFactory.js +1 -1
- package/dist/esm/cache/SecureCacheAdapter.js +2 -2
- package/dist/esm/cluster/cluster-manager.js +1 -1
- package/dist/esm/cluster/index.js +30 -30
- package/dist/esm/cluster/modules/AutoScaler.js +2 -2
- package/dist/esm/cluster/modules/ClusterPersistenceManager.js +3 -3
- package/dist/esm/cluster/modules/HealthMonitor.js +2 -2
- package/dist/esm/cluster/modules/IPCManager.js +2 -2
- package/dist/esm/cluster/modules/MetricsCollector.js +1 -1
- package/dist/esm/cluster/modules/WorkerManager.js +2 -2
- package/dist/esm/encryption/EncryptionService.js +12 -12
- package/dist/esm/encryption/EncryptionService.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/middleware/safe-json-middleware.js +1 -1
- package/dist/esm/mods/security/src/algorithms/hash-algorithms.js +705 -0
- package/dist/esm/mods/security/src/algorithms/hash-algorithms.js.map +1 -0
- package/dist/esm/mods/security/src/algorithms/registry.js +81 -0
- package/dist/esm/mods/security/src/algorithms/registry.js.map +1 -0
- package/dist/esm/mods/security/src/components/attestation.js +1059 -0
- package/dist/esm/mods/security/src/components/attestation.js.map +1 -0
- package/dist/esm/mods/security/src/components/cache/FastLRU.js +320 -0
- package/dist/esm/mods/security/src/components/cache/FastLRU.js.map +1 -0
- package/dist/esm/mods/security/src/components/cache/UFSIMC.js +1109 -0
- package/dist/esm/mods/security/src/components/cache/UFSIMC.js.map +1 -0
- package/dist/esm/mods/security/src/components/cache/cacheSys.js +622 -0
- package/dist/esm/mods/security/src/components/cache/cacheSys.js.map +1 -0
- package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js +111 -0
- package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js.map +1 -0
- package/dist/esm/mods/security/src/components/cache/config/cache.config.js +36 -0
- package/dist/esm/mods/security/src/components/cache/config/cache.config.js.map +1 -0
- package/dist/esm/mods/security/src/components/cache/index.js +449 -0
- package/dist/esm/mods/security/src/components/cache/index.js.map +1 -0
- package/dist/esm/mods/security/src/components/cache/useCache.js +240 -0
- package/dist/esm/mods/security/src/components/cache/useCache.js.map +1 -0
- package/dist/esm/mods/security/src/components/canary-tokens.js +346 -0
- package/dist/esm/mods/security/src/components/canary-tokens.js.map +1 -0
- package/dist/esm/mods/security/src/components/entropy-augmentation.js +476 -0
- package/dist/esm/mods/security/src/components/entropy-augmentation.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/UFA/ultra-fast-allocator.js +336 -0
- package/dist/esm/mods/security/src/components/fortified-function/UFA/ultra-fast-allocator.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/UFA/ultra-fast-cache.js +534 -0
- package/dist/esm/mods/security/src/components/fortified-function/UFA/ultra-fast-cache.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/UFA/ultra-fast-engine.js +629 -0
- package/dist/esm/mods/security/src/components/fortified-function/UFA/ultra-fast-engine.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/const/exec.const.js +11 -0
- package/dist/esm/mods/security/src/components/fortified-function/const/exec.const.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/fortified-config.js +351 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/fortified-config.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/fortified-function-core.js +518 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/fortified-function-core.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/fortified-logger.js +243 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/fortified-logger.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/api-manager.js +187 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/api-manager.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/cache-manager.js +105 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/cache-manager.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/execution-context.js +103 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/execution-context.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/execution-engine.js +125 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/execution-engine.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/execution-router.js +91 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/execution-router.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/memory-manager.js +145 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/memory-manager.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/security-manager.js +100 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/security-manager.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/stats-manager.js +157 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/stats-manager.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/timing-manager.js +123 -0
- package/dist/esm/mods/security/src/components/fortified-function/core/mods/timing-manager.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/engines/analytics-engine.js +368 -0
- package/dist/esm/mods/security/src/components/fortified-function/engines/analytics-engine.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/engines/execution-engine.js +400 -0
- package/dist/esm/mods/security/src/components/fortified-function/engines/execution-engine.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/index.js +165 -0
- package/dist/esm/mods/security/src/components/fortified-function/index.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/performance/performance-monitor.js +238 -0
- package/dist/esm/mods/security/src/components/fortified-function/performance/performance-monitor.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/performance/performance-timer.js +186 -0
- package/dist/esm/mods/security/src/components/fortified-function/performance/performance-timer.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js +251 -0
- package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/serializer/safe-serializer.js +344 -0
- package/dist/esm/mods/security/src/components/fortified-function/serializer/safe-serializer.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/smart-cache.js +691 -0
- package/dist/esm/mods/security/src/components/fortified-function/smart-cache.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/types/types.js +14 -0
- package/dist/esm/mods/security/src/components/fortified-function/types/types.js.map +1 -0
- package/dist/esm/mods/security/src/components/fortified-function/utils/utils.js +66 -0
- package/dist/esm/mods/security/src/components/fortified-function/utils/utils.js.map +1 -0
- package/dist/esm/mods/security/src/components/memory-hard.js +919 -0
- package/dist/esm/mods/security/src/components/memory-hard.js.map +1 -0
- package/dist/esm/mods/security/src/components/post-quantum.js +316 -0
- package/dist/esm/mods/security/src/components/post-quantum.js.map +1 -0
- package/dist/esm/mods/security/src/components/runtime-verification.js +643 -0
- package/dist/esm/mods/security/src/components/runtime-verification.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-array/core/secure-array-core.js +1570 -0
- package/dist/esm/mods/security/src/components/secure-array/core/secure-array-core.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-array/crypto/ArrayCryptoHandler.js +328 -0
- package/dist/esm/mods/security/src/components/secure-array/crypto/ArrayCryptoHandler.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-array/events/event-manager.js +268 -0
- package/dist/esm/mods/security/src/components/secure-array/events/event-manager.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-array/index.js +61 -0
- package/dist/esm/mods/security/src/components/secure-array/index.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-array/metadata/metadata-manager.js +329 -0
- package/dist/esm/mods/security/src/components/secure-array/metadata/metadata-manager.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-array/serialization/ArraySerializationHandler.js +388 -0
- package/dist/esm/mods/security/src/components/secure-array/serialization/ArraySerializationHandler.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-array/types/index.js +84 -0
- package/dist/esm/mods/security/src/components/secure-array/types/index.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-array/utils/id-generator.js +78 -0
- package/dist/esm/mods/security/src/components/secure-array/utils/id-generator.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-array/utils/validation.js +273 -0
- package/dist/esm/mods/security/src/components/secure-array/utils/validation.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-memory.js +884 -0
- package/dist/esm/mods/security/src/components/secure-memory.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-object/core/secure-object-core.js +1603 -0
- package/dist/esm/mods/security/src/components/secure-object/core/secure-object-core.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-object/encryption/crypto-handler.js +360 -0
- package/dist/esm/mods/security/src/components/secure-object/encryption/crypto-handler.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-object/encryption/sensitive-keys.js +203 -0
- package/dist/esm/mods/security/src/components/secure-object/encryption/sensitive-keys.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-object/events/event-manager.js +195 -0
- package/dist/esm/mods/security/src/components/secure-object/events/event-manager.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-object/index.js +63 -0
- package/dist/esm/mods/security/src/components/secure-object/index.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-object/metadata/metadata-manager.js +181 -0
- package/dist/esm/mods/security/src/components/secure-object/metadata/metadata-manager.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-object/serialization/serialization-handler.js +195 -0
- package/dist/esm/mods/security/src/components/secure-object/serialization/serialization-handler.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-object/utils/id-generator.js +62 -0
- package/dist/esm/mods/security/src/components/secure-object/utils/id-generator.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-object/utils/validation.js +237 -0
- package/dist/esm/mods/security/src/components/secure-object/utils/validation.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-serialization.js +769 -0
- package/dist/esm/mods/security/src/components/secure-serialization.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-string/advanced/entropy-analyzer.js +306 -0
- package/dist/esm/mods/security/src/components/secure-string/advanced/entropy-analyzer.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-string/advanced/performance-monitor.js +333 -0
- package/dist/esm/mods/security/src/components/secure-string/advanced/performance-monitor.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-string/advanced/quantum-safe.js +243 -0
- package/dist/esm/mods/security/src/components/secure-string/advanced/quantum-safe.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-string/buffer/buffer-manager.js +203 -0
- package/dist/esm/mods/security/src/components/secure-string/buffer/buffer-manager.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-string/core/secure-string-core.js +786 -0
- package/dist/esm/mods/security/src/components/secure-string/core/secure-string-core.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-string/crypto/crypto-operations.js +298 -0
- package/dist/esm/mods/security/src/components/secure-string/crypto/crypto-operations.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-string/operations/comparison-operations.js +219 -0
- package/dist/esm/mods/security/src/components/secure-string/operations/comparison-operations.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-string/operations/string-operations.js +232 -0
- package/dist/esm/mods/security/src/components/secure-string/operations/string-operations.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-string/types/index.js +37 -0
- package/dist/esm/mods/security/src/components/secure-string/types/index.js.map +1 -0
- package/dist/esm/mods/security/src/components/secure-string/validation/string-validator.js +332 -0
- package/dist/esm/mods/security/src/components/secure-string/validation/string-validator.js.map +1 -0
- package/dist/esm/mods/security/src/components/side-channel.js +142 -0
- package/dist/esm/mods/security/src/components/side-channel.js.map +1 -0
- package/dist/esm/mods/security/src/components/tamper-evident-logging.js +389 -0
- package/dist/esm/mods/security/src/components/tamper-evident-logging.js.map +1 -0
- package/dist/esm/mods/security/src/const/buffer.const.js +13 -0
- package/dist/esm/mods/security/src/const/buffer.const.js.map +1 -0
- package/dist/esm/mods/security/src/core/crypto.js +720 -0
- package/dist/esm/mods/security/src/core/crypto.js.map +1 -0
- package/dist/esm/mods/security/src/core/hash/hash-advanced.js +367 -0
- package/dist/esm/mods/security/src/core/hash/hash-advanced.js.map +1 -0
- package/dist/esm/mods/security/src/core/hash/hash-core.js +355 -0
- package/dist/esm/mods/security/src/core/hash/hash-core.js.map +1 -0
- package/dist/esm/mods/security/src/core/hash/hash-entropy.js +286 -0
- package/dist/esm/mods/security/src/core/hash/hash-entropy.js.map +1 -0
- package/dist/esm/mods/security/src/core/hash/hash-security.js +351 -0
- package/dist/esm/mods/security/src/core/hash/hash-security.js.map +1 -0
- package/dist/esm/mods/security/src/core/hash/hash-types.js +16 -0
- package/dist/esm/mods/security/src/core/hash/hash-types.js.map +1 -0
- package/dist/esm/mods/security/src/core/hash/hash-utils.js +307 -0
- package/dist/esm/mods/security/src/core/hash/hash-utils.js.map +1 -0
- package/dist/esm/mods/security/src/core/hash/hash-validator.js +310 -0
- package/dist/esm/mods/security/src/core/hash/hash-validator.js.map +1 -0
- package/dist/esm/mods/security/src/core/hash.js +9 -0
- package/dist/esm/mods/security/src/core/hash.js.map +1 -0
- package/dist/esm/mods/security/src/core/keys/algorithms/mods/Argon2Algo.js +133 -0
- package/dist/esm/mods/security/src/core/keys/algorithms/mods/Argon2Algo.js.map +1 -0
- package/dist/esm/mods/security/src/core/keys/algorithms/mods/PBKDF2Algo.js +272 -0
- package/dist/esm/mods/security/src/core/keys/algorithms/mods/PBKDF2Algo.js.map +1 -0
- package/dist/esm/mods/security/src/core/keys/algorithms/mods/ScryptAlgo.js +296 -0
- package/dist/esm/mods/security/src/core/keys/algorithms/mods/ScryptAlgo.js.map +1 -0
- package/dist/esm/mods/security/src/core/keys/keys-core.js +199 -0
- package/dist/esm/mods/security/src/core/keys/keys-core.js.map +1 -0
- package/dist/esm/mods/security/src/core/keys/keys-logger.js +231 -0
- package/dist/esm/mods/security/src/core/keys/keys-logger.js.map +1 -0
- package/dist/esm/mods/security/src/core/keys/keys-types.js +63 -0
- package/dist/esm/mods/security/src/core/keys/keys-types.js.map +1 -0
- package/dist/esm/mods/security/src/core/keys/keys-utils.js +316 -0
- package/dist/esm/mods/security/src/core/keys/keys-utils.js.map +1 -0
- package/dist/esm/mods/security/src/core/keys.js +134 -0
- package/dist/esm/mods/security/src/core/keys.js.map +1 -0
- package/dist/esm/mods/security/src/core/password/index.js +110 -0
- package/dist/esm/mods/security/src/core/password/index.js.map +1 -0
- package/dist/esm/mods/security/src/core/password/password-algorithms.js +395 -0
- package/dist/esm/mods/security/src/core/password/password-algorithms.js.map +1 -0
- package/dist/esm/mods/security/src/core/password/password-core.js +292 -0
- package/dist/esm/mods/security/src/core/password/password-core.js.map +1 -0
- package/dist/esm/mods/security/src/core/password/password-generator.js +363 -0
- package/dist/esm/mods/security/src/core/password/password-generator.js.map +1 -0
- package/dist/esm/mods/security/src/core/password/password-migration.js +235 -0
- package/dist/esm/mods/security/src/core/password/password-migration.js.map +1 -0
- package/dist/esm/mods/security/src/core/password/password-security.js +532 -0
- package/dist/esm/mods/security/src/core/password/password-security.js.map +1 -0
- package/dist/esm/mods/security/src/core/password/password-types.js +34 -0
- package/dist/esm/mods/security/src/core/password/password-types.js.map +1 -0
- package/dist/esm/mods/security/src/core/password/password-utils.js +630 -0
- package/dist/esm/mods/security/src/core/password/password-utils.js.map +1 -0
- package/dist/esm/mods/security/src/core/password/swlist.js +1120 -0
- package/dist/esm/mods/security/src/core/password/swlist.js.map +1 -0
- package/dist/esm/mods/security/src/core/random/random-core.js +326 -0
- package/dist/esm/mods/security/src/core/random/random-core.js.map +1 -0
- package/dist/esm/mods/security/src/core/random/random-crypto.js +337 -0
- package/dist/esm/mods/security/src/core/random/random-crypto.js.map +1 -0
- package/dist/esm/mods/security/src/core/random/random-entropy.js +367 -0
- package/dist/esm/mods/security/src/core/random/random-entropy.js.map +1 -0
- package/dist/esm/mods/security/src/core/random/random-generators.js +323 -0
- package/dist/esm/mods/security/src/core/random/random-generators.js.map +1 -0
- package/dist/esm/mods/security/src/core/random/random-sources.js +405 -0
- package/dist/esm/mods/security/src/core/random/random-sources.js.map +1 -0
- package/dist/esm/mods/security/src/core/random/random-tokens.js +307 -0
- package/dist/esm/mods/security/src/core/random/random-tokens.js.map +1 -0
- package/dist/esm/mods/security/src/core/random/random-types.js +27 -0
- package/dist/esm/mods/security/src/core/random/random-types.js.map +1 -0
- package/dist/esm/mods/security/src/core/validators.js +198 -0
- package/dist/esm/mods/security/src/core/validators.js.map +1 -0
- package/dist/esm/mods/security/src/helpers/Uint8Array.js +333 -0
- package/dist/esm/mods/security/src/helpers/Uint8Array.js.map +1 -0
- package/dist/esm/mods/security/src/helpers/createEnu.js +25 -0
- package/dist/esm/mods/security/src/helpers/createEnu.js.map +1 -0
- package/dist/esm/mods/security/src/index.js +373 -0
- package/dist/esm/mods/security/src/index.js.map +1 -0
- package/dist/esm/mods/security/src/types/global.js +49 -0
- package/dist/esm/mods/security/src/types/global.js.map +1 -0
- package/dist/esm/mods/security/src/types/secure-mem.type.js +96 -0
- package/dist/esm/mods/security/src/types/secure-mem.type.js.map +1 -0
- package/dist/esm/mods/security/src/types/secure-memory.js +20 -0
- package/dist/esm/mods/security/src/types/secure-memory.js.map +1 -0
- package/dist/esm/mods/security/src/types.js +63 -0
- package/dist/esm/mods/security/src/types.js.map +1 -0
- package/dist/esm/mods/security/src/utils/CryptoAlgorithmUtils.js +69 -0
- package/dist/esm/mods/security/src/utils/CryptoAlgorithmUtils.js.map +1 -0
- package/dist/esm/mods/security/src/utils/constants.js +105 -0
- package/dist/esm/mods/security/src/utils/constants.js.map +1 -0
- package/dist/esm/mods/security/src/utils/dataConverter.js +72 -0
- package/dist/esm/mods/security/src/utils/dataConverter.js.map +1 -0
- package/dist/esm/mods/security/src/utils/encoding.js +279 -0
- package/dist/esm/mods/security/src/utils/encoding.js.map +1 -0
- package/dist/esm/mods/security/src/utils/errorHandler.js +137 -0
- package/dist/esm/mods/security/src/utils/errorHandler.js.map +1 -0
- package/dist/esm/mods/security/src/utils/memory/config-manager.js +280 -0
- package/dist/esm/mods/security/src/utils/memory/config-manager.js.map +1 -0
- package/dist/esm/mods/security/src/utils/memory/event-manager.js +275 -0
- package/dist/esm/mods/security/src/utils/memory/event-manager.js.map +1 -0
- package/dist/esm/mods/security/src/utils/memory/index.js +141 -0
- package/dist/esm/mods/security/src/utils/memory/index.js.map +1 -0
- package/dist/esm/mods/security/src/utils/memory/memory-manager.js +886 -0
- package/dist/esm/mods/security/src/utils/memory/memory-manager.js.map +1 -0
- package/dist/esm/mods/security/src/utils/memory/memory-pool.js +354 -0
- package/dist/esm/mods/security/src/utils/memory/memory-pool.js.map +1 -0
- package/dist/esm/mods/security/src/utils/memory/reference-tracker.js +374 -0
- package/dist/esm/mods/security/src/utils/memory/reference-tracker.js.map +1 -0
- package/dist/esm/mods/security/src/utils/memory/types.js +56 -0
- package/dist/esm/mods/security/src/utils/memory/types.js.map +1 -0
- package/dist/esm/mods/security/src/utils/patterns.js +124 -0
- package/dist/esm/mods/security/src/utils/patterns.js.map +1 -0
- package/dist/esm/mods/security/src/utils/performanceMonitor.js +246 -0
- package/dist/esm/mods/security/src/utils/performanceMonitor.js.map +1 -0
- package/dist/esm/mods/security/src/utils/stats.js +180 -0
- package/dist/esm/mods/security/src/utils/stats.js.map +1 -0
- package/dist/esm/security-middleware.js +15 -15
- package/dist/esm/server/components/fastapi/UltraFastRequestProcessor.js +1 -1
- package/dist/esm/server/components/fastapi/console/ConsoleInterceptor.js +23 -23
- package/dist/esm/server/components/fastapi/middlewares/MiddlewareAPI.js +1 -1
- package/dist/esm/server/optimization/RequestPreCompiler.js +1 -1
- package/dist/esm/server/plugins/PluginRegistry.js +1 -1
- package/dist/esm/server/plugins/core/CachePlugin.js +7 -7
- package/dist/esm/server/plugins/core/PerformancePlugin.js +2 -2
- package/dist/esm/server/plugins/core/SecurityPlugin.js +10 -10
- package/dist/esm/smart-routes.js +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,772 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var hashCore = require('../core/hash/hash-core.js');
|
|
4
|
+
require('../core/hash/hash-types.js');
|
|
5
|
+
require('crypto');
|
|
6
|
+
var encoding = require('../utils/encoding.js');
|
|
7
|
+
require('../core/hash/hash-security.js');
|
|
8
|
+
require('../core/hash/hash-advanced.js');
|
|
9
|
+
require('../algorithms/hash-algorithms.js');
|
|
10
|
+
var randomCore = require('../core/random/random-core.js');
|
|
11
|
+
require('../core/random/random-types.js');
|
|
12
|
+
require('../core/random/random-sources.js');
|
|
13
|
+
require('nehonix-uri-processor');
|
|
14
|
+
require('../utils/memory/index.js');
|
|
15
|
+
require('../types.js');
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Secure Serialization Module
|
|
19
|
+
*
|
|
20
|
+
* This module provides secure methods for serializing and deserializing data,
|
|
21
|
+
* protecting against prototype pollution, object injection, and other
|
|
22
|
+
* serialization-related vulnerabilities.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Securely serializes data
|
|
26
|
+
*
|
|
27
|
+
* @param data - Data to serialize
|
|
28
|
+
* @param options - Serialization options
|
|
29
|
+
* @returns Serialization result
|
|
30
|
+
*/
|
|
31
|
+
function secureSerialize(data, options = {}) {
|
|
32
|
+
// Set default options
|
|
33
|
+
const opts = {
|
|
34
|
+
sign: options.sign !== false,
|
|
35
|
+
encrypt: options.encrypt || false,
|
|
36
|
+
includeTimestamp: options.includeTimestamp !== false,
|
|
37
|
+
includeNonce: options.includeNonce !== false,
|
|
38
|
+
validateTypes: options.validateTypes !== false,
|
|
39
|
+
allowedClasses: options.allowedClasses || [],
|
|
40
|
+
};
|
|
41
|
+
// Generate keys if needed
|
|
42
|
+
const signKey = options.signKey || encoding.bufferToHex(randomCore.SecureRandom.getRandomBytes(32));
|
|
43
|
+
const encryptKey = options.encryptKey || encoding.bufferToHex(randomCore.SecureRandom.getRandomBytes(32));
|
|
44
|
+
// Create metadata
|
|
45
|
+
const metadata = {};
|
|
46
|
+
if (opts.includeTimestamp) {
|
|
47
|
+
metadata.timestamp = Date.now();
|
|
48
|
+
}
|
|
49
|
+
if (opts.includeNonce) {
|
|
50
|
+
metadata.nonce = encoding.bufferToHex(randomCore.SecureRandom.getRandomBytes(16));
|
|
51
|
+
}
|
|
52
|
+
// Prepare the data for serialization
|
|
53
|
+
const preparedData = prepareForSerialization(data, opts.validateTypes, opts.allowedClasses);
|
|
54
|
+
// Create the payload
|
|
55
|
+
const payload = {
|
|
56
|
+
data: preparedData,
|
|
57
|
+
metadata,
|
|
58
|
+
};
|
|
59
|
+
// Serialize the payload
|
|
60
|
+
let serialized = JSON.stringify(payload);
|
|
61
|
+
// Encrypt if requested
|
|
62
|
+
if (opts.encrypt) {
|
|
63
|
+
if (!options.encryptKey) {
|
|
64
|
+
throw new Error("Encryption key is required when encrypt is true");
|
|
65
|
+
}
|
|
66
|
+
serialized = encryptData(serialized, encryptKey);
|
|
67
|
+
}
|
|
68
|
+
// Create the result
|
|
69
|
+
const result = {
|
|
70
|
+
data: serialized,
|
|
71
|
+
};
|
|
72
|
+
// Add metadata to the result
|
|
73
|
+
if (opts.includeTimestamp) {
|
|
74
|
+
result.timestamp = metadata.timestamp;
|
|
75
|
+
}
|
|
76
|
+
if (opts.includeNonce) {
|
|
77
|
+
result.nonce = metadata.nonce;
|
|
78
|
+
}
|
|
79
|
+
// Sign if requested
|
|
80
|
+
if (opts.sign) {
|
|
81
|
+
result.signature = signData(serialized, signKey);
|
|
82
|
+
}
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Securely deserializes data
|
|
87
|
+
*
|
|
88
|
+
* @param serialized - Serialized data
|
|
89
|
+
* @param options - Deserialization options
|
|
90
|
+
* @returns Deserialization result
|
|
91
|
+
*/
|
|
92
|
+
function secureDeserialize(serialized, options = {}) {
|
|
93
|
+
// Set default options
|
|
94
|
+
const opts = {
|
|
95
|
+
verifySignature: options.verifySignature !== false,
|
|
96
|
+
decrypt: options.decrypt || false,
|
|
97
|
+
validateTimestamp: options.validateTimestamp !== false,
|
|
98
|
+
maxAge: options.maxAge || 3600000, // 1 hour
|
|
99
|
+
validateTypes: options.validateTypes !== false,
|
|
100
|
+
allowedClasses: options.allowedClasses || [],
|
|
101
|
+
};
|
|
102
|
+
// Verify signature if requested
|
|
103
|
+
let validSignature = undefined;
|
|
104
|
+
if (opts.verifySignature) {
|
|
105
|
+
if (!options.signKey) {
|
|
106
|
+
throw new Error("Signature key is required when verifySignature is true");
|
|
107
|
+
}
|
|
108
|
+
if (!serialized.signature) {
|
|
109
|
+
throw new Error("Signature is missing from serialized data");
|
|
110
|
+
}
|
|
111
|
+
validSignature = verifySignature(serialized.data, serialized.signature, options.signKey);
|
|
112
|
+
if (!validSignature) {
|
|
113
|
+
throw new Error("Invalid signature");
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Decrypt if requested
|
|
117
|
+
let dataString = serialized.data;
|
|
118
|
+
if (opts.decrypt) {
|
|
119
|
+
if (!options.decryptKey) {
|
|
120
|
+
throw new Error("Decryption key is required when decrypt is true");
|
|
121
|
+
}
|
|
122
|
+
dataString = decryptData(dataString, options.decryptKey);
|
|
123
|
+
}
|
|
124
|
+
// Parse the data
|
|
125
|
+
let payload;
|
|
126
|
+
try {
|
|
127
|
+
payload = JSON.parse(dataString);
|
|
128
|
+
}
|
|
129
|
+
catch (e) {
|
|
130
|
+
throw new Error(`Failed to parse serialized data: ${e.message}`);
|
|
131
|
+
}
|
|
132
|
+
// Validate the payload structure
|
|
133
|
+
if (!payload || typeof payload !== "object") {
|
|
134
|
+
throw new Error("Invalid payload structure");
|
|
135
|
+
}
|
|
136
|
+
if (!("data" in payload)) {
|
|
137
|
+
throw new Error("Missing data in payload");
|
|
138
|
+
}
|
|
139
|
+
// Validate timestamp if requested
|
|
140
|
+
let validTimestamp = undefined;
|
|
141
|
+
let timestamp = undefined;
|
|
142
|
+
let age = undefined;
|
|
143
|
+
if (opts.validateTimestamp) {
|
|
144
|
+
if (!payload.metadata || !payload.metadata.timestamp) {
|
|
145
|
+
throw new Error("Timestamp is missing from payload");
|
|
146
|
+
}
|
|
147
|
+
timestamp = payload.metadata.timestamp;
|
|
148
|
+
const now = Date.now();
|
|
149
|
+
age = now - timestamp;
|
|
150
|
+
validTimestamp = age <= opts.maxAge;
|
|
151
|
+
if (!validTimestamp) {
|
|
152
|
+
throw new Error(`Data is too old (${age}ms, max ${opts.maxAge}ms)`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Deserialize the data
|
|
156
|
+
const deserializedData = deserializeData(payload.data, opts.validateTypes, opts.allowedClasses);
|
|
157
|
+
// Create the result
|
|
158
|
+
const result = {
|
|
159
|
+
data: deserializedData,
|
|
160
|
+
};
|
|
161
|
+
// Add metadata to the result
|
|
162
|
+
if (validSignature !== undefined) {
|
|
163
|
+
result.validSignature = validSignature;
|
|
164
|
+
}
|
|
165
|
+
if (validTimestamp !== undefined) {
|
|
166
|
+
result.validTimestamp = validTimestamp;
|
|
167
|
+
}
|
|
168
|
+
if (timestamp !== undefined) {
|
|
169
|
+
result.timestamp = timestamp;
|
|
170
|
+
}
|
|
171
|
+
if (age !== undefined) {
|
|
172
|
+
result.age = age;
|
|
173
|
+
}
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Prepares data for serialization
|
|
178
|
+
*
|
|
179
|
+
* @param data - Data to prepare
|
|
180
|
+
* @param validateTypes - Whether to validate object types
|
|
181
|
+
* @param allowedClasses - Allowed classes for serialization
|
|
182
|
+
* @returns Prepared data
|
|
183
|
+
*/
|
|
184
|
+
function prepareForSerialization(data, validateTypes, allowedClasses) {
|
|
185
|
+
// Handle null and undefined
|
|
186
|
+
if (data === null || data === undefined) {
|
|
187
|
+
return { type: "null", value: null };
|
|
188
|
+
}
|
|
189
|
+
// Handle primitive types
|
|
190
|
+
if (typeof data === "string" ||
|
|
191
|
+
typeof data === "number" ||
|
|
192
|
+
typeof data === "boolean") {
|
|
193
|
+
return { type: typeof data, value: data };
|
|
194
|
+
}
|
|
195
|
+
// Handle Date
|
|
196
|
+
if (data instanceof Date) {
|
|
197
|
+
return { type: "date", value: data.toISOString() };
|
|
198
|
+
}
|
|
199
|
+
// Handle RegExp
|
|
200
|
+
if (data instanceof RegExp) {
|
|
201
|
+
return {
|
|
202
|
+
type: "regexp",
|
|
203
|
+
value: {
|
|
204
|
+
pattern: data.source,
|
|
205
|
+
flags: data.flags,
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
// Handle Uint8Array
|
|
210
|
+
if (data instanceof Uint8Array) {
|
|
211
|
+
return { type: "uint8array", value: encoding.bufferToHex(data) };
|
|
212
|
+
}
|
|
213
|
+
// Handle Array
|
|
214
|
+
if (Array.isArray(data)) {
|
|
215
|
+
return {
|
|
216
|
+
type: "array",
|
|
217
|
+
value: data.map((item) => prepareForSerialization(item, validateTypes, allowedClasses)),
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
// Handle Object
|
|
221
|
+
if (typeof data === "object") {
|
|
222
|
+
const constructor = data.constructor?.name || "Object";
|
|
223
|
+
// Validate class if requested
|
|
224
|
+
if (validateTypes &&
|
|
225
|
+
constructor !== "Object" &&
|
|
226
|
+
!allowedClasses.includes(constructor)) {
|
|
227
|
+
throw new Error(`Class ${constructor} is not allowed for serialization`);
|
|
228
|
+
}
|
|
229
|
+
const result = {};
|
|
230
|
+
for (const key in data) {
|
|
231
|
+
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
|
232
|
+
result[key] = prepareForSerialization(data[key], validateTypes, allowedClasses);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return {
|
|
236
|
+
type: "object",
|
|
237
|
+
class: constructor,
|
|
238
|
+
value: result,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
// Handle unsupported types
|
|
242
|
+
return { type: "unsupported", value: String(data) };
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Deserializes data
|
|
246
|
+
*
|
|
247
|
+
* @param data - Data to deserialize
|
|
248
|
+
* @param validateTypes - Whether to validate object types
|
|
249
|
+
* @param allowedClasses - Allowed classes for deserialization
|
|
250
|
+
* @returns Deserialized data
|
|
251
|
+
*/
|
|
252
|
+
function deserializeData(data, validateTypes, allowedClasses) {
|
|
253
|
+
// Validate data structure
|
|
254
|
+
if (!data || typeof data !== "object" || !("type" in data)) {
|
|
255
|
+
throw new Error("Invalid data structure for deserialization");
|
|
256
|
+
}
|
|
257
|
+
const { type, value } = data;
|
|
258
|
+
// Handle null
|
|
259
|
+
if (type === "null") {
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
// Handle primitive types
|
|
263
|
+
if (type === "string" || type === "number" || type === "boolean") {
|
|
264
|
+
return value;
|
|
265
|
+
}
|
|
266
|
+
// Handle Date
|
|
267
|
+
if (type === "date") {
|
|
268
|
+
return new Date(value);
|
|
269
|
+
}
|
|
270
|
+
// Handle RegExp
|
|
271
|
+
if (type === "regexp") {
|
|
272
|
+
return new RegExp(value.pattern, value.flags);
|
|
273
|
+
}
|
|
274
|
+
// Handle Uint8Array
|
|
275
|
+
if (type === "uint8array") {
|
|
276
|
+
return encoding.hexToBuffer(value);
|
|
277
|
+
}
|
|
278
|
+
// Handle Array
|
|
279
|
+
if (type === "array") {
|
|
280
|
+
return value.map((item) => deserializeData(item, validateTypes, allowedClasses));
|
|
281
|
+
}
|
|
282
|
+
// Handle Object
|
|
283
|
+
if (type === "object") {
|
|
284
|
+
const className = data.class || "Object";
|
|
285
|
+
// Validate class if requested
|
|
286
|
+
if (validateTypes &&
|
|
287
|
+
className !== "Object" &&
|
|
288
|
+
!allowedClasses.includes(className)) {
|
|
289
|
+
throw new Error(`Class ${className} is not allowed for deserialization`);
|
|
290
|
+
}
|
|
291
|
+
const result = {};
|
|
292
|
+
for (const key in value) {
|
|
293
|
+
if (Object.prototype.hasOwnProperty.call(value, key)) {
|
|
294
|
+
result[key] = deserializeData(value[key], validateTypes, allowedClasses);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
return result;
|
|
298
|
+
}
|
|
299
|
+
// Handle unsupported types
|
|
300
|
+
if (type === "unsupported") {
|
|
301
|
+
return value;
|
|
302
|
+
}
|
|
303
|
+
throw new Error(`Unsupported type: ${type}`);
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Signs data
|
|
307
|
+
*
|
|
308
|
+
* @param data - Data to sign
|
|
309
|
+
* @param key - Key to use for signing
|
|
310
|
+
* @returns Signature
|
|
311
|
+
*/
|
|
312
|
+
function signData(data, key) {
|
|
313
|
+
return hashCore.Hash.create(data, {
|
|
314
|
+
salt: key,
|
|
315
|
+
algorithm: "sha256",
|
|
316
|
+
iterations: 1000,
|
|
317
|
+
outputFormat: "hex",
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Verifies a signature
|
|
322
|
+
*
|
|
323
|
+
* @param data - Data to verify
|
|
324
|
+
* @param signature - Signature to verify
|
|
325
|
+
* @param key - Key to use for verification
|
|
326
|
+
* @returns True if the signature is valid
|
|
327
|
+
*/
|
|
328
|
+
function verifySignature(data, signature, key) {
|
|
329
|
+
const expectedSignature = signData(data, key);
|
|
330
|
+
return expectedSignature === signature;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Encrypts data using AES-GCM
|
|
334
|
+
*
|
|
335
|
+
* @param data - Data to encrypt
|
|
336
|
+
* @param key - Key to use for encryption (hex encoded)
|
|
337
|
+
* @returns Encrypted data (hex encoded)
|
|
338
|
+
*/
|
|
339
|
+
function encryptData(data, key) {
|
|
340
|
+
try {
|
|
341
|
+
// Convert data to bytes
|
|
342
|
+
const dataBytes = new TextEncoder().encode(data);
|
|
343
|
+
// Generate a random IV (Initialization Vector)
|
|
344
|
+
const iv = randomCore.SecureRandom.getRandomBytes(12); // 96 bits for AES-GCM
|
|
345
|
+
// Derive encryption key from the provided key
|
|
346
|
+
const keyBytes = encoding.hexToBuffer(key);
|
|
347
|
+
const derivedKey = hashCore.Hash.create(keyBytes, {
|
|
348
|
+
algorithm: "sha256",
|
|
349
|
+
outputFormat: "buffer",
|
|
350
|
+
});
|
|
351
|
+
// Use our own implementation since Web Crypto API is async
|
|
352
|
+
// and our interface is synchronous
|
|
353
|
+
return encryptWithAesGcm(dataBytes, derivedKey, iv);
|
|
354
|
+
}
|
|
355
|
+
catch (error) {
|
|
356
|
+
console.error("Encryption error:", error);
|
|
357
|
+
throw new Error(`Failed to encrypt data: ${error.message}`);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
// Web Crypto API implementation removed since we're using a synchronous interface
|
|
361
|
+
/**
|
|
362
|
+
* Encrypts data using a proper AES-GCM implementation
|
|
363
|
+
*
|
|
364
|
+
* @param data - Data to encrypt
|
|
365
|
+
* @param key - Encryption key
|
|
366
|
+
* @param iv - Initialization vector
|
|
367
|
+
* @returns Encrypted data (hex encoded)
|
|
368
|
+
*/
|
|
369
|
+
function encryptWithAesGcm(data, key, iv) {
|
|
370
|
+
try {
|
|
371
|
+
// Try to use Node.js crypto if available
|
|
372
|
+
if (typeof require === "function") {
|
|
373
|
+
const nodeCrypto = require("crypto");
|
|
374
|
+
if (typeof nodeCrypto.createCipheriv === "function") {
|
|
375
|
+
// Use Node.js crypto for AES-GCM
|
|
376
|
+
const cipher = nodeCrypto.createCipheriv("aes-256-gcm", key.slice(0, 32), // Use first 32 bytes for AES-256
|
|
377
|
+
iv);
|
|
378
|
+
// Encrypt the data
|
|
379
|
+
const encrypted = Buffer.concat([
|
|
380
|
+
cipher.update(Buffer.from(data)),
|
|
381
|
+
cipher.final(),
|
|
382
|
+
]);
|
|
383
|
+
// Get the authentication tag
|
|
384
|
+
const authTag = cipher.getAuthTag();
|
|
385
|
+
// Combine IV, encrypted data, and authentication tag
|
|
386
|
+
const result = new Uint8Array(iv.length + encrypted.length + authTag.length);
|
|
387
|
+
result.set(iv, 0);
|
|
388
|
+
result.set(new Uint8Array(encrypted), iv.length);
|
|
389
|
+
result.set(new Uint8Array(authTag), iv.length + encrypted.length);
|
|
390
|
+
return encoding.bufferToHex(result);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
catch (e) {
|
|
395
|
+
console.warn("Node.js crypto AES-GCM failed:", e);
|
|
396
|
+
// Fall back to aes-js implementation
|
|
397
|
+
}
|
|
398
|
+
try {
|
|
399
|
+
// Use aes-js library
|
|
400
|
+
const aesJs = require("aes-js");
|
|
401
|
+
// Prepare the key (must be 16, 24, or 32 bytes)
|
|
402
|
+
const aesKey = key.slice(0, 32); // Use first 32 bytes for AES-256
|
|
403
|
+
// Create AES counter mode for encryption (we'll implement GCM on top of CTR)
|
|
404
|
+
const aesCtr = new aesJs.ModeOfOperation.ctr(aesKey, new aesJs.Counter(iv));
|
|
405
|
+
// Encrypt the data
|
|
406
|
+
const encrypted = aesCtr.encrypt(data);
|
|
407
|
+
// For GCM, we need to compute a GHASH of the ciphertext and AAD
|
|
408
|
+
// This is a simplified GHASH implementation
|
|
409
|
+
const ghash = computeGHash(encrypted, aesKey, iv);
|
|
410
|
+
// Combine IV, encrypted data, and authentication tag
|
|
411
|
+
const result = new Uint8Array(iv.length + encrypted.length + ghash.length);
|
|
412
|
+
result.set(iv, 0);
|
|
413
|
+
result.set(encrypted, iv.length);
|
|
414
|
+
result.set(ghash, iv.length + encrypted.length);
|
|
415
|
+
return encoding.bufferToHex(result);
|
|
416
|
+
}
|
|
417
|
+
catch (e) {
|
|
418
|
+
console.warn("aes-js implementation failed:", e);
|
|
419
|
+
// Fall back to our own implementation
|
|
420
|
+
}
|
|
421
|
+
// If all else fails, use our own implementation
|
|
422
|
+
console.warn("Using fallback AES-GCM implementation");
|
|
423
|
+
// Implement AES-GCM from scratch
|
|
424
|
+
// 1. Use AES in CTR mode for encryption
|
|
425
|
+
const aesKey = key.slice(0, 32); // Use first 32 bytes for AES-256
|
|
426
|
+
const counter = new Uint8Array(16);
|
|
427
|
+
counter.set(iv, 0);
|
|
428
|
+
counter[15] = 1; // Start counter at 1 for GCM
|
|
429
|
+
// Encrypt using AES-CTR
|
|
430
|
+
const encrypted = new Uint8Array(data.length);
|
|
431
|
+
let counterBlock = aesEncryptBlock(counter, aesKey);
|
|
432
|
+
for (let i = 0; i < data.length; i++) {
|
|
433
|
+
// Update counter and generate new keystream block when needed
|
|
434
|
+
if (i > 0 && i % 16 === 0) {
|
|
435
|
+
incrementCounter(counter);
|
|
436
|
+
counterBlock = aesEncryptBlock(counter, aesKey);
|
|
437
|
+
}
|
|
438
|
+
// XOR data with keystream
|
|
439
|
+
encrypted[i] = data[i] ^ counterBlock[i % 16];
|
|
440
|
+
}
|
|
441
|
+
// 2. Compute GHASH for authentication
|
|
442
|
+
const authTag = computeGCMTag(encrypted, aesKey, iv);
|
|
443
|
+
// 3. Combine IV, encrypted data, and authentication tag
|
|
444
|
+
const result = new Uint8Array(iv.length + encrypted.length + authTag.length);
|
|
445
|
+
result.set(iv, 0);
|
|
446
|
+
result.set(encrypted, iv.length);
|
|
447
|
+
result.set(authTag, iv.length + encrypted.length);
|
|
448
|
+
return encoding.bufferToHex(result);
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Encrypts a single AES block
|
|
452
|
+
*
|
|
453
|
+
* @param block - 16-byte block to encrypt
|
|
454
|
+
* @param key - AES key
|
|
455
|
+
* @returns Encrypted block
|
|
456
|
+
*/
|
|
457
|
+
function aesEncryptBlock(block, key) {
|
|
458
|
+
try {
|
|
459
|
+
// Try to use Node.js crypto if available
|
|
460
|
+
if (typeof require === "function") {
|
|
461
|
+
const crypto = require("crypto");
|
|
462
|
+
if (typeof crypto.createCipheriv === "function") {
|
|
463
|
+
const cipher = crypto.createCipheriv("aes-256-ecb", key.slice(0, 32), Buffer.alloc(0));
|
|
464
|
+
cipher.setAutoPadding(false);
|
|
465
|
+
return new Uint8Array(Buffer.concat([
|
|
466
|
+
cipher.update(Buffer.from(block)),
|
|
467
|
+
cipher.final(),
|
|
468
|
+
]));
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
catch (e) {
|
|
473
|
+
// Fall back to our implementation
|
|
474
|
+
}
|
|
475
|
+
try {
|
|
476
|
+
// Try to use aes-js if available
|
|
477
|
+
const aesJs = require("aes-js");
|
|
478
|
+
const aesEcb = new aesJs.ModeOfOperation.ecb(key.slice(0, 32));
|
|
479
|
+
return new Uint8Array(aesEcb.encrypt(block));
|
|
480
|
+
}
|
|
481
|
+
catch (e) {
|
|
482
|
+
// Fall back to our implementation
|
|
483
|
+
}
|
|
484
|
+
// If all else fails, use a secure hash as a substitute
|
|
485
|
+
// This is not ideal but better than nothing
|
|
486
|
+
const combinedData = new Uint8Array(block.length + key.length);
|
|
487
|
+
combinedData.set(block, 0);
|
|
488
|
+
combinedData.set(key, block.length);
|
|
489
|
+
const hash = hashCore.Hash.create(combinedData, {
|
|
490
|
+
algorithm: "sha256",
|
|
491
|
+
outputFormat: "buffer",
|
|
492
|
+
});
|
|
493
|
+
return hash.slice(0, 16);
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Increments a counter for AES-CTR mode
|
|
497
|
+
*
|
|
498
|
+
* @param counter - Counter to increment (modified in place)
|
|
499
|
+
*/
|
|
500
|
+
function incrementCounter(counter) {
|
|
501
|
+
for (let i = counter.length - 1; i >= 0; i--) {
|
|
502
|
+
if (++counter[i] !== 0) {
|
|
503
|
+
break;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Computes the authentication tag for AES-GCM
|
|
509
|
+
*
|
|
510
|
+
* @param ciphertext - Encrypted data
|
|
511
|
+
* @param key - Encryption key
|
|
512
|
+
* @param iv - Initialization vector
|
|
513
|
+
* @returns Authentication tag
|
|
514
|
+
*/
|
|
515
|
+
function computeGCMTag(ciphertext, key, iv, aad = new Uint8Array(0)) {
|
|
516
|
+
// Full GCM implementation with proper GHASH computation and authentication
|
|
517
|
+
// Step 1: Generate the hash subkey H by encrypting a zero block with AES
|
|
518
|
+
const zeroBlock = new Uint8Array(16);
|
|
519
|
+
const hashSubkey = aesEncryptBlock(zeroBlock, key);
|
|
520
|
+
// Step 2: Compute GHASH of AAD and ciphertext
|
|
521
|
+
const ghashResult = computeGHash(ciphertext, hashSubkey, aad);
|
|
522
|
+
// Step 3: Generate the initial counter block for GCTR
|
|
523
|
+
let j0;
|
|
524
|
+
if (iv.length === 12) {
|
|
525
|
+
// Standard 96-bit IV
|
|
526
|
+
j0 = new Uint8Array(16);
|
|
527
|
+
j0.set(iv, 0);
|
|
528
|
+
j0[15] = 1; // Set the counter to 1
|
|
529
|
+
}
|
|
530
|
+
else {
|
|
531
|
+
// Non-standard IV length, hash it
|
|
532
|
+
j0 = computeGHash(iv, hashSubkey);
|
|
533
|
+
}
|
|
534
|
+
// Step 4: Encrypt the GHASH result with GCTR using J0
|
|
535
|
+
const tag = new Uint8Array(16);
|
|
536
|
+
const j0Encrypted = aesEncryptBlock(j0, key);
|
|
537
|
+
// XOR the GHASH result with the encrypted J0 to get the authentication tag
|
|
538
|
+
for (let i = 0; i < 16; i++) {
|
|
539
|
+
tag[i] = ghashResult[i] ^ j0Encrypted[i];
|
|
540
|
+
}
|
|
541
|
+
return tag;
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* Compute GHASH function for GCM authentication
|
|
545
|
+
*/
|
|
546
|
+
function computeGHash(data, hashSubkey, aad = new Uint8Array(0)) {
|
|
547
|
+
// Initialize the hash to zero
|
|
548
|
+
let hash = new Uint8Array(16);
|
|
549
|
+
// Process AAD first
|
|
550
|
+
if (aad.length > 0) {
|
|
551
|
+
hash = processGHashBlocks(aad, hash, hashSubkey);
|
|
552
|
+
}
|
|
553
|
+
// Process ciphertext
|
|
554
|
+
if (data.length > 0) {
|
|
555
|
+
hash = processGHashBlocks(data, hash, hashSubkey);
|
|
556
|
+
}
|
|
557
|
+
// Process the length block (AAD length || ciphertext length)
|
|
558
|
+
const lengthBlock = new Uint8Array(16);
|
|
559
|
+
const view = new DataView(lengthBlock.buffer);
|
|
560
|
+
view.setBigUint64(0, BigInt(aad.length * 8), false); // AAD length in bits
|
|
561
|
+
view.setBigUint64(8, BigInt(data.length * 8), false); // Ciphertext length in bits
|
|
562
|
+
// Final GHASH operation with length block
|
|
563
|
+
hash = gfMultiply(xorBlocks(hash, lengthBlock), hashSubkey);
|
|
564
|
+
return hash;
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Process blocks for GHASH computation
|
|
568
|
+
*/
|
|
569
|
+
function processGHashBlocks(data, initialHash, hashSubkey) {
|
|
570
|
+
let hash = new Uint8Array(initialHash);
|
|
571
|
+
// Process complete 16-byte blocks
|
|
572
|
+
for (let i = 0; i < data.length; i += 16) {
|
|
573
|
+
const block = new Uint8Array(16);
|
|
574
|
+
const remainingBytes = Math.min(16, data.length - i);
|
|
575
|
+
block.set(data.slice(i, i + remainingBytes), 0);
|
|
576
|
+
// GHASH operation: hash = (hash XOR block) * H
|
|
577
|
+
hash = gfMultiply(xorBlocks(hash, block), hashSubkey);
|
|
578
|
+
}
|
|
579
|
+
return hash;
|
|
580
|
+
}
|
|
581
|
+
/**
|
|
582
|
+
* Galois Field multiplication for GHASH
|
|
583
|
+
*/
|
|
584
|
+
function gfMultiply(a, b) {
|
|
585
|
+
const result = new Uint8Array(16);
|
|
586
|
+
const v = new Uint8Array(b);
|
|
587
|
+
for (let i = 0; i < 16; i++) {
|
|
588
|
+
for (let j = 0; j < 8; j++) {
|
|
589
|
+
if ((a[i] & (1 << (7 - j))) !== 0) {
|
|
590
|
+
xorInPlace(result, v);
|
|
591
|
+
}
|
|
592
|
+
// Shift v right by 1 bit
|
|
593
|
+
const carry = v[15] & 1;
|
|
594
|
+
for (let k = 15; k > 0; k--) {
|
|
595
|
+
v[k] = (v[k] >>> 1) | ((v[k - 1] & 1) << 7);
|
|
596
|
+
}
|
|
597
|
+
v[0] = v[0] >>> 1;
|
|
598
|
+
// If there was a carry, XOR with the reduction polynomial
|
|
599
|
+
if (carry) {
|
|
600
|
+
v[0] ^= 0xe1; // Reduction polynomial for GF(2^128)
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
return result;
|
|
605
|
+
}
|
|
606
|
+
/**
|
|
607
|
+
* XOR two blocks in place
|
|
608
|
+
*/
|
|
609
|
+
function xorInPlace(a, b) {
|
|
610
|
+
for (let i = 0; i < Math.min(a.length, b.length); i++) {
|
|
611
|
+
a[i] ^= b[i];
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
/**
|
|
615
|
+
* XOR two blocks and return result
|
|
616
|
+
*/
|
|
617
|
+
function xorBlocks(a, b) {
|
|
618
|
+
const result = new Uint8Array(Math.max(a.length, b.length));
|
|
619
|
+
for (let i = 0; i < result.length; i++) {
|
|
620
|
+
result[i] = (a[i] || 0) ^ (b[i] || 0);
|
|
621
|
+
}
|
|
622
|
+
return result;
|
|
623
|
+
}
|
|
624
|
+
// Note: The generateKeyStream and generateAuthTag functions have been replaced
|
|
625
|
+
// with more secure implementations: computeGHash, aesEncryptBlock, incrementCounter, and computeGCMTag
|
|
626
|
+
/**
|
|
627
|
+
* Decrypts data
|
|
628
|
+
*
|
|
629
|
+
* @param data - Data to decrypt (hex encoded)
|
|
630
|
+
* @param key - Key to use for decryption (hex encoded)
|
|
631
|
+
* @returns Decrypted data
|
|
632
|
+
*/
|
|
633
|
+
function decryptData(data, key) {
|
|
634
|
+
try {
|
|
635
|
+
// Convert data to bytes
|
|
636
|
+
const dataBytes = encoding.hexToBuffer(data);
|
|
637
|
+
// Extract IV, ciphertext, and authentication tag
|
|
638
|
+
if (dataBytes.length < 28) {
|
|
639
|
+
// 12 (IV) + 16 (minimum auth tag)
|
|
640
|
+
throw new Error("Invalid encrypted data format");
|
|
641
|
+
}
|
|
642
|
+
const iv = dataBytes.slice(0, 12);
|
|
643
|
+
const authTagLength = 16;
|
|
644
|
+
const ciphertext = dataBytes.slice(12, dataBytes.length - authTagLength);
|
|
645
|
+
const authTag = dataBytes.slice(dataBytes.length - authTagLength);
|
|
646
|
+
// Derive decryption key from the provided key
|
|
647
|
+
const keyBytes = encoding.hexToBuffer(key);
|
|
648
|
+
const derivedKey = hashCore.Hash.create(keyBytes, {
|
|
649
|
+
algorithm: "sha256",
|
|
650
|
+
outputFormat: "buffer",
|
|
651
|
+
});
|
|
652
|
+
// Decrypt the data
|
|
653
|
+
const decrypted = decryptWithAesGcm(ciphertext, derivedKey, iv, authTag);
|
|
654
|
+
return new TextDecoder().decode(decrypted);
|
|
655
|
+
}
|
|
656
|
+
catch (error) {
|
|
657
|
+
console.error("Decryption error:", error);
|
|
658
|
+
throw new Error(`Failed to decrypt data: ${error.message}`);
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
/**
|
|
662
|
+
* Decrypts data using a proper AES-GCM implementation
|
|
663
|
+
*
|
|
664
|
+
* @param data - Encrypted data
|
|
665
|
+
* @param key - Decryption key
|
|
666
|
+
* @param iv - Initialization vector
|
|
667
|
+
* @param authTag - Authentication tag
|
|
668
|
+
* @returns Decrypted data
|
|
669
|
+
*/
|
|
670
|
+
function decryptWithAesGcm(data, key, iv, authTag) {
|
|
671
|
+
try {
|
|
672
|
+
// Try to use Node.js crypto if available
|
|
673
|
+
if (typeof require === "function") {
|
|
674
|
+
const nodeCrypto = require("crypto");
|
|
675
|
+
if (typeof nodeCrypto.createDecipheriv === "function") {
|
|
676
|
+
// Use Node.js crypto for AES-GCM
|
|
677
|
+
const decipher = nodeCrypto.createDecipheriv("aes-256-gcm", key.slice(0, 32), // Use first 32 bytes for AES-256
|
|
678
|
+
iv);
|
|
679
|
+
// Set the authentication tag
|
|
680
|
+
decipher.setAuthTag(Buffer.from(authTag));
|
|
681
|
+
// Decrypt the data
|
|
682
|
+
try {
|
|
683
|
+
const decrypted = Buffer.concat([
|
|
684
|
+
decipher.update(Buffer.from(data)),
|
|
685
|
+
decipher.final(),
|
|
686
|
+
]);
|
|
687
|
+
return new Uint8Array(decrypted);
|
|
688
|
+
}
|
|
689
|
+
catch (e) {
|
|
690
|
+
throw new Error("Authentication tag mismatch - data may be corrupted or tampered with");
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
catch (e) {
|
|
696
|
+
console.warn("Node.js crypto AES-GCM decryption failed:", e);
|
|
697
|
+
// Fall back to aes-js implementation
|
|
698
|
+
}
|
|
699
|
+
try {
|
|
700
|
+
// Use aes-js library
|
|
701
|
+
const aesJs = require("aes-js");
|
|
702
|
+
// Prepare the key (must be 16, 24, or 32 bytes)
|
|
703
|
+
const aesKey = key.slice(0, 32); // Use first 32 bytes for AES-256
|
|
704
|
+
// Create AES counter mode for decryption (we'll implement GCM on top of CTR)
|
|
705
|
+
const aesCtr = new aesJs.ModeOfOperation.ctr(aesKey, new aesJs.Counter(iv));
|
|
706
|
+
// Decrypt the data
|
|
707
|
+
const decrypted = aesCtr.decrypt(data);
|
|
708
|
+
// Verify the authentication tag
|
|
709
|
+
const expectedTag = computeGHash(decrypted, aesKey, iv);
|
|
710
|
+
// Constant-time comparison of the authentication tags
|
|
711
|
+
let tagMatch = true;
|
|
712
|
+
if (authTag.length !== expectedTag.length) {
|
|
713
|
+
tagMatch = false;
|
|
714
|
+
}
|
|
715
|
+
else {
|
|
716
|
+
let diff = 0;
|
|
717
|
+
for (let i = 0; i < authTag.length; i++) {
|
|
718
|
+
diff |= authTag[i] ^ expectedTag[i];
|
|
719
|
+
}
|
|
720
|
+
tagMatch = diff === 0;
|
|
721
|
+
}
|
|
722
|
+
if (!tagMatch) {
|
|
723
|
+
throw new Error("Authentication tag mismatch - data may be corrupted or tampered with");
|
|
724
|
+
}
|
|
725
|
+
return decrypted;
|
|
726
|
+
}
|
|
727
|
+
catch (e) {
|
|
728
|
+
console.warn("aes-js decryption failed:", e);
|
|
729
|
+
// Fall back to our own implementation
|
|
730
|
+
}
|
|
731
|
+
// If all else fails, use our own implementation
|
|
732
|
+
console.warn("Using fallback AES-GCM decryption implementation");
|
|
733
|
+
// 1. Use AES in CTR mode for decryption
|
|
734
|
+
const aesKey = key.slice(0, 32); // Use first 32 bytes for AES-256
|
|
735
|
+
const counter = new Uint8Array(16);
|
|
736
|
+
counter.set(iv, 0);
|
|
737
|
+
counter[15] = 1; // Start counter at 1 for GCM
|
|
738
|
+
// Decrypt using AES-CTR
|
|
739
|
+
const decrypted = new Uint8Array(data.length);
|
|
740
|
+
let counterBlock = aesEncryptBlock(counter, aesKey);
|
|
741
|
+
for (let i = 0; i < data.length; i++) {
|
|
742
|
+
// Update counter and generate new keystream block when needed
|
|
743
|
+
if (i > 0 && i % 16 === 0) {
|
|
744
|
+
incrementCounter(counter);
|
|
745
|
+
counterBlock = aesEncryptBlock(counter, aesKey);
|
|
746
|
+
}
|
|
747
|
+
// XOR data with keystream
|
|
748
|
+
decrypted[i] = data[i] ^ counterBlock[i % 16];
|
|
749
|
+
}
|
|
750
|
+
// 2. Verify the authentication tag
|
|
751
|
+
const expectedTag = computeGCMTag(decrypted, aesKey, iv);
|
|
752
|
+
// Constant-time comparison of the authentication tags
|
|
753
|
+
let tagMatch = true;
|
|
754
|
+
if (authTag.length !== expectedTag.length) {
|
|
755
|
+
tagMatch = false;
|
|
756
|
+
}
|
|
757
|
+
else {
|
|
758
|
+
let diff = 0;
|
|
759
|
+
for (let i = 0; i < authTag.length; i++) {
|
|
760
|
+
diff |= authTag[i] ^ expectedTag[i];
|
|
761
|
+
}
|
|
762
|
+
tagMatch = diff === 0;
|
|
763
|
+
}
|
|
764
|
+
if (!tagMatch) {
|
|
765
|
+
throw new Error("Authentication tag mismatch - data may be corrupted or tampered with");
|
|
766
|
+
}
|
|
767
|
+
return decrypted;
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
exports.secureDeserialize = secureDeserialize;
|
|
771
|
+
exports.secureSerialize = secureSerialize;
|
|
772
|
+
//# sourceMappingURL=secure-serialization.js.map
|