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,884 @@
|
|
|
1
|
+
import * as crypto from 'crypto';
|
|
2
|
+
import { BufferState, MemoryProtectionLevel } from '../types/secure-memory.js';
|
|
3
|
+
import { BUFFER_SECURITY_CONSTANTS } from '../const/buffer.const.js';
|
|
4
|
+
import { ensureLibrariesInitialized, nobleHashes, sodium, libraryStatus } from '../types/secure-mem.type.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* This module provides military-grade utilities for securely handling sensitive data in memory:
|
|
8
|
+
* - Secure buffers with advanced protection against memory dumps and swapping
|
|
9
|
+
* - Multiple encryption layers for data at rest in memory
|
|
10
|
+
* - Hardware-level security features when available
|
|
11
|
+
* - Protection against cold boot attacks and memory forensics
|
|
12
|
+
* - Canary tokens for tamper detection
|
|
13
|
+
* - Memory fragmentation and obfuscation techniques
|
|
14
|
+
* - Quantum-resistant security measures
|
|
15
|
+
* - Side-channel attack resistance
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* @author Seth Eleazar
|
|
19
|
+
*
|
|
20
|
+
* @license MIT
|
|
21
|
+
* @description Enhanced Secure Memory Management Module
|
|
22
|
+
* Enhanced secure buffer with military-grade protection
|
|
23
|
+
* Features multiple layers of security including encryption, obfuscation, and tamper detection
|
|
24
|
+
*/
|
|
25
|
+
class SecureBuffer {
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new enhanced secure buffer with military-grade protection
|
|
28
|
+
*
|
|
29
|
+
* @param size - Size of the buffer in bytes
|
|
30
|
+
* @param fill - Optional value to fill the buffer with
|
|
31
|
+
* @param options - Security options
|
|
32
|
+
*/
|
|
33
|
+
constructor(size, fill, options = {}) {
|
|
34
|
+
this.fragments = [];
|
|
35
|
+
this.encryptionKey = null;
|
|
36
|
+
this.nonce = null;
|
|
37
|
+
this.canaryTokens = [];
|
|
38
|
+
this.canaryPositions = []; // Track where canaries are embedded
|
|
39
|
+
this.obfuscationMask = null;
|
|
40
|
+
this.state = BufferState.UNINITIALIZED;
|
|
41
|
+
this.accessCount = 0;
|
|
42
|
+
this.lastAccess = Date.now();
|
|
43
|
+
this.lockTimer = null;
|
|
44
|
+
this.checksum = null;
|
|
45
|
+
this.originalSize = size;
|
|
46
|
+
this.options = {
|
|
47
|
+
protectionLevel: options.protectionLevel || MemoryProtectionLevel.ENHANCED,
|
|
48
|
+
enableEncryption: options.enableEncryption ?? true,
|
|
49
|
+
enableFragmentation: options.enableFragmentation ?? true,
|
|
50
|
+
enableCanaries: options.enableCanaries ?? true,
|
|
51
|
+
enableObfuscation: options.enableObfuscation ?? true,
|
|
52
|
+
autoLock: options.autoLock ?? true,
|
|
53
|
+
lockTimeout: options.lockTimeout || 300000, // 5 minutes
|
|
54
|
+
quantumSafe: options.quantumSafe || false,
|
|
55
|
+
};
|
|
56
|
+
this.protectionLevel = this.options.protectionLevel;
|
|
57
|
+
// Initialize synchronously without waiting for optional libraries
|
|
58
|
+
this.initializeSecureBuffer(size, fill);
|
|
59
|
+
this.registerFinalizer();
|
|
60
|
+
this.setupAutoLock();
|
|
61
|
+
// Initialize libraries asynchronously in background (non-blocking)
|
|
62
|
+
ensureLibrariesInitialized().catch(() => {
|
|
63
|
+
// Ignore errors - libraries are optional
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Initialize the secure buffer with enhanced protection
|
|
68
|
+
*/
|
|
69
|
+
initializeSecureBuffer(size, fill) {
|
|
70
|
+
// Generate encryption key if encryption is enabled
|
|
71
|
+
if (this.options.enableEncryption) {
|
|
72
|
+
this.encryptionKey = this.generateSecureKey(BUFFER_SECURITY_CONSTANTS.ENCRYPTION_KEY_SIZE);
|
|
73
|
+
this.nonce = this.generateSecureKey(BUFFER_SECURITY_CONSTANTS.NONCE_SIZE);
|
|
74
|
+
}
|
|
75
|
+
// Create fragments if fragmentation is enabled
|
|
76
|
+
if (this.options.enableFragmentation &&
|
|
77
|
+
size > BUFFER_SECURITY_CONSTANTS.FRAGMENT_SIZE) {
|
|
78
|
+
this.createFragments(size, fill);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// Single fragment for small buffers
|
|
82
|
+
this.fragments = [new Uint8Array(size)];
|
|
83
|
+
if (fill !== undefined) {
|
|
84
|
+
this.fragments[0].fill(fill);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Generate canary tokens if enabled
|
|
88
|
+
if (this.options.enableCanaries) {
|
|
89
|
+
this.generateCanaryTokens();
|
|
90
|
+
}
|
|
91
|
+
// Create obfuscation mask if enabled
|
|
92
|
+
if (this.options.enableObfuscation) {
|
|
93
|
+
this.obfuscationMask = this.generateSecureKey(size);
|
|
94
|
+
}
|
|
95
|
+
// Calculate initial checksum
|
|
96
|
+
this.updateChecksum();
|
|
97
|
+
this.state = BufferState.ACTIVE;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Setup automatic locking mechanism
|
|
101
|
+
*/
|
|
102
|
+
setupAutoLock() {
|
|
103
|
+
if (this.options.autoLock) {
|
|
104
|
+
this.resetLockTimer();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Reset the auto-lock timer
|
|
109
|
+
*/
|
|
110
|
+
resetLockTimer() {
|
|
111
|
+
if (this.lockTimer) {
|
|
112
|
+
clearTimeout(this.lockTimer);
|
|
113
|
+
}
|
|
114
|
+
this.lockTimer = setTimeout(() => {
|
|
115
|
+
this.lock();
|
|
116
|
+
}, this.options.lockTimeout);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Generate a cryptographically secure key
|
|
120
|
+
*/
|
|
121
|
+
generateSecureKey(size) {
|
|
122
|
+
// Try to use libsodium if available and properly initialized
|
|
123
|
+
if (sodium && libraryStatus.sodium) {
|
|
124
|
+
try {
|
|
125
|
+
return sodium.randombytes_buf(size);
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
console.warn("libsodium randombytes_buf failed:", error.message);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Fallback to Node.js crypto
|
|
132
|
+
try {
|
|
133
|
+
return new Uint8Array(crypto.randomBytes(size));
|
|
134
|
+
}
|
|
135
|
+
catch (e) {
|
|
136
|
+
console.warn("crypto.randomBytes failed:", e.message);
|
|
137
|
+
// Ultimate fallback
|
|
138
|
+
const key = new Uint8Array(size);
|
|
139
|
+
for (let i = 0; i < size; i++) {
|
|
140
|
+
key[i] = Math.floor(Math.random() * 256);
|
|
141
|
+
}
|
|
142
|
+
return key;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Create memory fragments for enhanced security
|
|
147
|
+
*/
|
|
148
|
+
createFragments(size, fill) {
|
|
149
|
+
const fragmentCount = Math.min(Math.ceil(size / BUFFER_SECURITY_CONSTANTS.FRAGMENT_SIZE), BUFFER_SECURITY_CONSTANTS.MAX_FRAGMENTS);
|
|
150
|
+
this.fragments = [];
|
|
151
|
+
let remaining = size;
|
|
152
|
+
for (let i = 0; i < fragmentCount; i++) {
|
|
153
|
+
const fragmentSize = Math.min(remaining, BUFFER_SECURITY_CONSTANTS.FRAGMENT_SIZE);
|
|
154
|
+
const fragment = new Uint8Array(fragmentSize);
|
|
155
|
+
if (fill !== undefined) {
|
|
156
|
+
fragment.fill(fill);
|
|
157
|
+
}
|
|
158
|
+
this.fragments.push(fragment);
|
|
159
|
+
remaining -= fragmentSize;
|
|
160
|
+
if (remaining <= 0)
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Generate canary tokens for tamper detection and embed them in memory
|
|
166
|
+
*/
|
|
167
|
+
generateCanaryTokens() {
|
|
168
|
+
const canaryCount = Math.max(2, Math.min(8, Math.ceil(this.fragments.length / 4)));
|
|
169
|
+
this.canaryTokens = [];
|
|
170
|
+
this.canaryPositions = [];
|
|
171
|
+
for (let i = 0; i < canaryCount; i++) {
|
|
172
|
+
const canary = this.generateSecureKey(BUFFER_SECURITY_CONSTANTS.CANARY_SIZE);
|
|
173
|
+
this.canaryTokens.push(canary);
|
|
174
|
+
// Embed canary in memory around fragments
|
|
175
|
+
this.embedCanaryInMemory(canary, i);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Embed canary tokens in memory around buffer fragments
|
|
180
|
+
*/
|
|
181
|
+
embedCanaryInMemory(canary, index) {
|
|
182
|
+
if (this.fragments.length === 0)
|
|
183
|
+
return;
|
|
184
|
+
// Calculate position to embed canary
|
|
185
|
+
// Distribute canaries evenly around fragments
|
|
186
|
+
const fragmentIndex = index % this.fragments.length;
|
|
187
|
+
const fragment = this.fragments[fragmentIndex];
|
|
188
|
+
// Create a new fragment with canary embedded
|
|
189
|
+
// Format: [canary_prefix][original_data][canary_suffix]
|
|
190
|
+
const canaryPrefix = canary.slice(0, Math.floor(canary.length / 2));
|
|
191
|
+
const canarySuffix = canary.slice(Math.floor(canary.length / 2));
|
|
192
|
+
const newFragment = new Uint8Array(canaryPrefix.length + fragment.length + canarySuffix.length);
|
|
193
|
+
// Embed canary around the data
|
|
194
|
+
newFragment.set(canaryPrefix, 0);
|
|
195
|
+
newFragment.set(fragment, canaryPrefix.length);
|
|
196
|
+
newFragment.set(canarySuffix, canaryPrefix.length + fragment.length);
|
|
197
|
+
// Replace the original fragment
|
|
198
|
+
this.fragments[fragmentIndex] = newFragment;
|
|
199
|
+
// Track the position for verification
|
|
200
|
+
this.canaryPositions.push(fragmentIndex);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Helper method to compare two Uint8Arrays for equality
|
|
204
|
+
*/
|
|
205
|
+
arraysEqual(a, b) {
|
|
206
|
+
if (a.length !== b.length)
|
|
207
|
+
return false;
|
|
208
|
+
for (let i = 0; i < a.length; i++) {
|
|
209
|
+
if (a[i] !== b[i])
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Get the unencrypted buffer by combining fragments (extracting data from canary-embedded fragments)
|
|
216
|
+
*/
|
|
217
|
+
getUnencryptedBuffer() {
|
|
218
|
+
if (this.fragments.length === 0) {
|
|
219
|
+
return new Uint8Array(0);
|
|
220
|
+
}
|
|
221
|
+
const extractedFragments = [];
|
|
222
|
+
// Extract actual data from fragments, removing embedded canaries
|
|
223
|
+
for (let i = 0; i < this.fragments.length; i++) {
|
|
224
|
+
const fragment = this.fragments[i];
|
|
225
|
+
// Check if this fragment has embedded canaries
|
|
226
|
+
const canaryIndex = this.canaryPositions.indexOf(i);
|
|
227
|
+
if (canaryIndex >= 0 && canaryIndex < this.canaryTokens.length) {
|
|
228
|
+
// This fragment has embedded canaries, extract the original data
|
|
229
|
+
const canary = this.canaryTokens[canaryIndex];
|
|
230
|
+
const canaryPrefix = canary.slice(0, Math.floor(canary.length / 2));
|
|
231
|
+
const canarySuffix = canary.slice(Math.floor(canary.length / 2));
|
|
232
|
+
// Extract the original data between the canaries
|
|
233
|
+
const originalDataStart = canaryPrefix.length;
|
|
234
|
+
const originalDataEnd = fragment.length - canarySuffix.length;
|
|
235
|
+
const originalData = fragment.slice(originalDataStart, originalDataEnd);
|
|
236
|
+
extractedFragments.push(originalData);
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
// No canaries in this fragment, use as-is
|
|
240
|
+
extractedFragments.push(fragment);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Calculate total size of extracted data
|
|
244
|
+
const totalSize = extractedFragments.reduce((sum, fragment) => sum + fragment.length, 0);
|
|
245
|
+
const result = new Uint8Array(totalSize);
|
|
246
|
+
// Combine extracted fragments
|
|
247
|
+
let offset = 0;
|
|
248
|
+
for (const fragment of extractedFragments) {
|
|
249
|
+
result.set(fragment, offset);
|
|
250
|
+
offset += fragment.length;
|
|
251
|
+
}
|
|
252
|
+
return result;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Lock the buffer to prevent access
|
|
256
|
+
*/
|
|
257
|
+
lock() {
|
|
258
|
+
if (this.state === BufferState.DESTROYED) {
|
|
259
|
+
throw new Error("Cannot lock destroyed buffer");
|
|
260
|
+
}
|
|
261
|
+
this.state = BufferState.LOCKED;
|
|
262
|
+
// Encrypt fragments if encryption is enabled
|
|
263
|
+
if (this.options.enableEncryption && this.encryptionKey && this.nonce) {
|
|
264
|
+
this.encryptFragments();
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Unlock the buffer to allow access
|
|
269
|
+
*/
|
|
270
|
+
unlock() {
|
|
271
|
+
if (this.state === BufferState.DESTROYED) {
|
|
272
|
+
throw new Error("Cannot unlock destroyed buffer");
|
|
273
|
+
}
|
|
274
|
+
// Decrypt fragments if they were encrypted
|
|
275
|
+
if (this.options.enableEncryption && this.encryptionKey && this.nonce) {
|
|
276
|
+
this.decryptFragments();
|
|
277
|
+
}
|
|
278
|
+
this.state = BufferState.ACTIVE;
|
|
279
|
+
this.resetLockTimer();
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Check if buffer is locked
|
|
283
|
+
*/
|
|
284
|
+
isLocked() {
|
|
285
|
+
return this.state === BufferState.LOCKED;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Check if buffer is destroyed
|
|
289
|
+
*/
|
|
290
|
+
isDestroyed() {
|
|
291
|
+
return this.state === BufferState.DESTROYED;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Verify buffer integrity using canary tokens and checksum
|
|
295
|
+
*/
|
|
296
|
+
verifyIntegrity() {
|
|
297
|
+
if (this.state === BufferState.DESTROYED) {
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
// Verify canary tokens
|
|
301
|
+
if (this.options.enableCanaries && this.canaryTokens.length > 0) {
|
|
302
|
+
// Verify embedded canaries in memory fragments
|
|
303
|
+
for (let i = 0; i < this.canaryTokens.length; i++) {
|
|
304
|
+
const canary = this.canaryTokens[i];
|
|
305
|
+
const fragmentIndex = this.canaryPositions[i];
|
|
306
|
+
if (fragmentIndex >= this.fragments.length) {
|
|
307
|
+
this.state = BufferState.CORRUPTED;
|
|
308
|
+
return false;
|
|
309
|
+
}
|
|
310
|
+
const fragment = this.fragments[fragmentIndex];
|
|
311
|
+
const canaryPrefix = canary.slice(0, Math.floor(canary.length / 2));
|
|
312
|
+
const canarySuffix = canary.slice(Math.floor(canary.length / 2));
|
|
313
|
+
// Verify prefix canary
|
|
314
|
+
const fragmentPrefix = fragment.slice(0, canaryPrefix.length);
|
|
315
|
+
if (!this.arraysEqual(fragmentPrefix, canaryPrefix)) {
|
|
316
|
+
this.state = BufferState.CORRUPTED;
|
|
317
|
+
return false;
|
|
318
|
+
}
|
|
319
|
+
// Verify suffix canary
|
|
320
|
+
const fragmentSuffix = fragment.slice(fragment.length - canarySuffix.length);
|
|
321
|
+
if (!this.arraysEqual(fragmentSuffix, canarySuffix)) {
|
|
322
|
+
this.state = BufferState.CORRUPTED;
|
|
323
|
+
return false;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
// Verify checksum
|
|
328
|
+
if (this.checksum) {
|
|
329
|
+
const currentData = this.getUnencryptedBuffer();
|
|
330
|
+
const currentChecksum = new Uint8Array(32);
|
|
331
|
+
try {
|
|
332
|
+
if (nobleHashes && nobleHashes.sha256) {
|
|
333
|
+
const hash = new Uint8Array(nobleHashes.sha256(currentData));
|
|
334
|
+
currentChecksum.set(hash);
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
const hash = crypto.createHash("sha256");
|
|
338
|
+
hash.update(currentData);
|
|
339
|
+
currentChecksum.set(new Uint8Array(hash.digest()));
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
catch (e) {
|
|
343
|
+
// Simple checksum fallback
|
|
344
|
+
for (let i = 0; i < currentData.length; i++) {
|
|
345
|
+
currentChecksum[i % 32] ^= currentData[i];
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
// Constant-time comparison
|
|
349
|
+
let diff = 0;
|
|
350
|
+
for (let i = 0; i < Math.min(this.checksum.length, currentChecksum.length); i++) {
|
|
351
|
+
diff |= this.checksum[i] ^ currentChecksum[i];
|
|
352
|
+
}
|
|
353
|
+
if (diff !== 0) {
|
|
354
|
+
this.state = BufferState.CORRUPTED;
|
|
355
|
+
return false;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return true;
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Encrypt fragments using ChaCha20-Poly1305 or AES-GCM
|
|
362
|
+
*/
|
|
363
|
+
encryptFragments() {
|
|
364
|
+
if (!this.encryptionKey || !this.nonce) {
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
try {
|
|
368
|
+
// Try to use libsodium for ChaCha20-Poly1305
|
|
369
|
+
if (sodium && libraryStatus.sodium && this.options.quantumSafe) {
|
|
370
|
+
try {
|
|
371
|
+
for (let i = 0; i < this.fragments.length; i++) {
|
|
372
|
+
const encrypted = sodium.crypto_aead_chacha20poly1305_ietf_encrypt(this.fragments[i], null, null, this.nonce, this.encryptionKey);
|
|
373
|
+
this.fragments[i] = new Uint8Array(encrypted);
|
|
374
|
+
}
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
catch (sodiumError) {
|
|
378
|
+
console.warn("libsodium encryption failed:", sodiumError.message);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
// Fallback to AES-GCM with proper IV
|
|
382
|
+
for (let i = 0; i < this.fragments.length; i++) {
|
|
383
|
+
try {
|
|
384
|
+
// Use createCipheriv instead of deprecated createCipher
|
|
385
|
+
const iv = crypto.randomBytes(12); // 96-bit IV for GCM
|
|
386
|
+
const cipher = crypto.createCipheriv("aes-256-gcm", this.encryptionKey, iv);
|
|
387
|
+
const encrypted = Buffer.concat([
|
|
388
|
+
iv, // Prepend IV
|
|
389
|
+
cipher.update(this.fragments[i]),
|
|
390
|
+
cipher.final(),
|
|
391
|
+
cipher.getAuthTag(), // Append auth tag
|
|
392
|
+
]);
|
|
393
|
+
this.fragments[i] = new Uint8Array(encrypted);
|
|
394
|
+
}
|
|
395
|
+
catch (cipherError) {
|
|
396
|
+
console.warn(`Fragment ${i} encryption failed:`, cipherError.message);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
catch (e) {
|
|
401
|
+
console.warn("Fragment encryption failed:", e.message);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Decrypt fragments
|
|
406
|
+
*/
|
|
407
|
+
decryptFragments() {
|
|
408
|
+
if (!this.encryptionKey || !this.nonce) {
|
|
409
|
+
return;
|
|
410
|
+
}
|
|
411
|
+
try {
|
|
412
|
+
// Try to use libsodium for ChaCha20-Poly1305
|
|
413
|
+
if (sodium && libraryStatus.sodium && this.options.quantumSafe) {
|
|
414
|
+
try {
|
|
415
|
+
for (let i = 0; i < this.fragments.length; i++) {
|
|
416
|
+
const decrypted = sodium.crypto_aead_chacha20poly1305_ietf_decrypt(null, this.fragments[i], null, this.nonce, this.encryptionKey);
|
|
417
|
+
this.fragments[i] = new Uint8Array(decrypted);
|
|
418
|
+
}
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
catch (sodiumError) {
|
|
422
|
+
console.warn("libsodium decryption failed:", sodiumError.message);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
// Fallback to AES-GCM with proper IV extraction
|
|
426
|
+
for (let i = 0; i < this.fragments.length; i++) {
|
|
427
|
+
try {
|
|
428
|
+
const fragment = this.fragments[i];
|
|
429
|
+
if (fragment.length < 12 + 16) {
|
|
430
|
+
// IV + auth tag minimum
|
|
431
|
+
console.warn(`Fragment ${i} too small for decryption`);
|
|
432
|
+
continue;
|
|
433
|
+
}
|
|
434
|
+
// Extract IV, ciphertext, and auth tag
|
|
435
|
+
const iv = fragment.slice(0, 12);
|
|
436
|
+
const authTagStart = fragment.length - 16;
|
|
437
|
+
const ciphertext = fragment.slice(12, authTagStart);
|
|
438
|
+
const authTag = fragment.slice(authTagStart);
|
|
439
|
+
// Use createDecipheriv instead of deprecated createDecipher
|
|
440
|
+
const decipher = crypto.createDecipheriv("aes-256-gcm", this.encryptionKey, iv);
|
|
441
|
+
decipher.setAuthTag(authTag);
|
|
442
|
+
const decrypted = Buffer.concat([
|
|
443
|
+
decipher.update(ciphertext),
|
|
444
|
+
decipher.final(),
|
|
445
|
+
]);
|
|
446
|
+
this.fragments[i] = new Uint8Array(decrypted);
|
|
447
|
+
}
|
|
448
|
+
catch (cipherError) {
|
|
449
|
+
console.warn(`Fragment ${i} decryption failed:`, cipherError.message);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
catch (e) {
|
|
454
|
+
console.warn("Fragment decryption failed:", e.message);
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Sets data directly in fragments (private method for initialization)
|
|
459
|
+
*
|
|
460
|
+
* @param data - Data to set in the fragments
|
|
461
|
+
*/
|
|
462
|
+
setDataInFragments(data) {
|
|
463
|
+
if (this.fragments.length === 1) {
|
|
464
|
+
// Single fragment - copy data directly
|
|
465
|
+
this.fragments[0].set(data);
|
|
466
|
+
}
|
|
467
|
+
else {
|
|
468
|
+
// Multiple fragments - distribute data across fragments
|
|
469
|
+
let offset = 0;
|
|
470
|
+
for (let i = 0; i < this.fragments.length && offset < data.length; i++) {
|
|
471
|
+
const fragment = this.fragments[i];
|
|
472
|
+
const copyLength = Math.min(fragment.length, data.length - offset);
|
|
473
|
+
fragment.set(data.subarray(offset, offset + copyLength));
|
|
474
|
+
offset += copyLength;
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Creates a secure buffer from existing data
|
|
480
|
+
*
|
|
481
|
+
* @param data - Data to store in the secure buffer
|
|
482
|
+
* @param options - Security options
|
|
483
|
+
* @returns A new secure buffer containing the data
|
|
484
|
+
*/
|
|
485
|
+
static from(data, options = {}) {
|
|
486
|
+
let buffer;
|
|
487
|
+
if (typeof data === "string") {
|
|
488
|
+
buffer = new TextEncoder().encode(data);
|
|
489
|
+
}
|
|
490
|
+
else if (Array.isArray(data)) {
|
|
491
|
+
buffer = new Uint8Array(data);
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
buffer = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
495
|
+
}
|
|
496
|
+
const secureBuffer = new SecureBuffer(buffer.length, undefined, options);
|
|
497
|
+
// Set data directly in fragments instead of using getBuffer()
|
|
498
|
+
secureBuffer.setDataInFragments(buffer);
|
|
499
|
+
secureBuffer.updateChecksum();
|
|
500
|
+
return secureBuffer;
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* Gets the underlying buffer (decrypted if necessary)
|
|
504
|
+
* Throws if the buffer has been destroyed or locked
|
|
505
|
+
*
|
|
506
|
+
* @returns The underlying buffer
|
|
507
|
+
*/
|
|
508
|
+
getBuffer() {
|
|
509
|
+
if (this.isDestroyed()) {
|
|
510
|
+
throw new Error("Buffer has been destroyed");
|
|
511
|
+
}
|
|
512
|
+
if (this.isLocked()) {
|
|
513
|
+
throw new Error("Buffer is locked - call unlock() first");
|
|
514
|
+
}
|
|
515
|
+
this.accessCount++;
|
|
516
|
+
this.lastAccess = Date.now();
|
|
517
|
+
this.resetLockTimer();
|
|
518
|
+
// Verify integrity before access
|
|
519
|
+
if (!this.verifyIntegrity()) {
|
|
520
|
+
throw new Error("Buffer integrity check failed - possible tampering detected");
|
|
521
|
+
}
|
|
522
|
+
return this.getUnencryptedBuffer();
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Gets the length of the buffer
|
|
526
|
+
*
|
|
527
|
+
* @returns The length of the buffer in bytes
|
|
528
|
+
*/
|
|
529
|
+
length() {
|
|
530
|
+
return this.originalSize;
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
533
|
+
* Copies data to another buffer
|
|
534
|
+
*
|
|
535
|
+
* @param target - Target buffer
|
|
536
|
+
* @param targetStart - Start position in the target buffer
|
|
537
|
+
* @param sourceStart - Start position in this buffer
|
|
538
|
+
* @param sourceEnd - End position in this buffer
|
|
539
|
+
* @returns Number of bytes copied
|
|
540
|
+
*/
|
|
541
|
+
copy(target, targetStart = 0, sourceStart = 0, sourceEnd = this.originalSize) {
|
|
542
|
+
if (this.isDestroyed()) {
|
|
543
|
+
throw new Error("Buffer has been destroyed");
|
|
544
|
+
}
|
|
545
|
+
if (this.isLocked()) {
|
|
546
|
+
throw new Error("Buffer is locked - call unlock() first");
|
|
547
|
+
}
|
|
548
|
+
const sourceBuffer = this.getBuffer();
|
|
549
|
+
const sourceLength = Math.min(sourceEnd - sourceStart, sourceBuffer.length - sourceStart);
|
|
550
|
+
const targetLength = Math.min(sourceLength, target.length - targetStart);
|
|
551
|
+
for (let i = 0; i < targetLength; i++) {
|
|
552
|
+
target[targetStart + i] = sourceBuffer[sourceStart + i];
|
|
553
|
+
}
|
|
554
|
+
return targetLength;
|
|
555
|
+
}
|
|
556
|
+
/**
|
|
557
|
+
* Fills the buffer with the specified value
|
|
558
|
+
*
|
|
559
|
+
* @param value - Value to fill the buffer with
|
|
560
|
+
* @param start - Start position
|
|
561
|
+
* @param end - End position
|
|
562
|
+
* @returns This buffer
|
|
563
|
+
*/
|
|
564
|
+
fill(value, start = 0, end = this.originalSize) {
|
|
565
|
+
if (this.isDestroyed()) {
|
|
566
|
+
throw new Error("Buffer has been destroyed");
|
|
567
|
+
}
|
|
568
|
+
if (this.isLocked()) {
|
|
569
|
+
throw new Error("Buffer is locked - call unlock() first");
|
|
570
|
+
}
|
|
571
|
+
// Fill fragments directly
|
|
572
|
+
let currentPos = 0;
|
|
573
|
+
for (const fragment of this.fragments) {
|
|
574
|
+
const fragmentStart = Math.max(0, start - currentPos);
|
|
575
|
+
const fragmentEnd = Math.min(fragment.length, end - currentPos);
|
|
576
|
+
if (fragmentStart < fragmentEnd) {
|
|
577
|
+
for (let i = fragmentStart; i < fragmentEnd; i++) {
|
|
578
|
+
fragment[i] = value;
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
currentPos += fragment.length;
|
|
582
|
+
if (currentPos >= end)
|
|
583
|
+
break;
|
|
584
|
+
}
|
|
585
|
+
this.updateChecksum();
|
|
586
|
+
return this;
|
|
587
|
+
}
|
|
588
|
+
/**
|
|
589
|
+
* Compares this buffer with another buffer using constant-time comparison
|
|
590
|
+
*
|
|
591
|
+
* @param otherBuffer - Buffer to compare with
|
|
592
|
+
* @returns True if the buffers are equal, false otherwise
|
|
593
|
+
*/
|
|
594
|
+
equals(otherBuffer) {
|
|
595
|
+
if (this.isDestroyed()) {
|
|
596
|
+
throw new Error("Buffer has been destroyed");
|
|
597
|
+
}
|
|
598
|
+
if (this.isLocked()) {
|
|
599
|
+
throw new Error("Buffer is locked - call unlock() first");
|
|
600
|
+
}
|
|
601
|
+
const thisBuffer = this.getBuffer();
|
|
602
|
+
const other = typeof otherBuffer === "object" &&
|
|
603
|
+
otherBuffer &&
|
|
604
|
+
otherBuffer.constructor &&
|
|
605
|
+
otherBuffer.constructor.name === "SecureBuffer"
|
|
606
|
+
? otherBuffer.getBuffer()
|
|
607
|
+
: otherBuffer;
|
|
608
|
+
if (thisBuffer.length !== other.length) {
|
|
609
|
+
return false;
|
|
610
|
+
}
|
|
611
|
+
// Constant-time comparison to prevent timing attacks
|
|
612
|
+
let diff = 0;
|
|
613
|
+
// Ensure other is a Uint8Array
|
|
614
|
+
const otherArray = other;
|
|
615
|
+
for (let i = 0; i < thisBuffer.length; i++) {
|
|
616
|
+
diff |= thisBuffer[i] ^ otherArray[i];
|
|
617
|
+
}
|
|
618
|
+
return diff === 0;
|
|
619
|
+
}
|
|
620
|
+
/**
|
|
621
|
+
* Destroys the buffer by securely wiping its contents
|
|
622
|
+
* After calling this method, the buffer can no longer be used
|
|
623
|
+
*/
|
|
624
|
+
destroy() {
|
|
625
|
+
if (this.state === BufferState.DESTROYED) {
|
|
626
|
+
return; // Already destroyed
|
|
627
|
+
}
|
|
628
|
+
// Clear auto-lock timer
|
|
629
|
+
if (this.lockTimer) {
|
|
630
|
+
clearTimeout(this.lockTimer);
|
|
631
|
+
this.lockTimer = null;
|
|
632
|
+
}
|
|
633
|
+
// Securely wipe all fragments
|
|
634
|
+
for (const fragment of this.fragments) {
|
|
635
|
+
secureWipe(fragment, 0, fragment.length, 3);
|
|
636
|
+
}
|
|
637
|
+
// Wipe encryption keys
|
|
638
|
+
if (this.encryptionKey) {
|
|
639
|
+
secureWipe(this.encryptionKey, 0, this.encryptionKey.length, 3);
|
|
640
|
+
this.encryptionKey = null;
|
|
641
|
+
}
|
|
642
|
+
if (this.nonce) {
|
|
643
|
+
secureWipe(this.nonce, 0, this.nonce.length, 3);
|
|
644
|
+
this.nonce = null;
|
|
645
|
+
}
|
|
646
|
+
// Wipe canary tokens
|
|
647
|
+
for (const canary of this.canaryTokens) {
|
|
648
|
+
secureWipe(canary, 0, canary.length, 3);
|
|
649
|
+
}
|
|
650
|
+
this.canaryTokens = [];
|
|
651
|
+
// Wipe obfuscation mask
|
|
652
|
+
if (this.obfuscationMask) {
|
|
653
|
+
secureWipe(this.obfuscationMask, 0, this.obfuscationMask.length, 3);
|
|
654
|
+
this.obfuscationMask = null;
|
|
655
|
+
}
|
|
656
|
+
// Wipe checksum
|
|
657
|
+
if (this.checksum) {
|
|
658
|
+
secureWipe(this.checksum, 0, this.checksum.length, 3);
|
|
659
|
+
this.checksum = null;
|
|
660
|
+
}
|
|
661
|
+
// Clear fragments array
|
|
662
|
+
this.fragments = [];
|
|
663
|
+
this.state = BufferState.DESTROYED;
|
|
664
|
+
}
|
|
665
|
+
/**
|
|
666
|
+
* Get security statistics and information
|
|
667
|
+
*/
|
|
668
|
+
getSecurityInfo() {
|
|
669
|
+
return {
|
|
670
|
+
protectionLevel: this.protectionLevel,
|
|
671
|
+
isEncrypted: this.options.enableEncryption && !!this.encryptionKey,
|
|
672
|
+
isFragmented: this.options.enableFragmentation && this.fragments.length > 1,
|
|
673
|
+
hasCanaries: this.options.enableCanaries && this.canaryTokens.length > 0,
|
|
674
|
+
isObfuscated: this.options.enableObfuscation && !!this.obfuscationMask,
|
|
675
|
+
accessCount: this.accessCount,
|
|
676
|
+
lastAccess: this.lastAccess,
|
|
677
|
+
fragmentCount: this.fragments.length,
|
|
678
|
+
state: this.state,
|
|
679
|
+
};
|
|
680
|
+
}
|
|
681
|
+
/**
|
|
682
|
+
* Clone the secure buffer with the same protection settings
|
|
683
|
+
*/
|
|
684
|
+
clone() {
|
|
685
|
+
if (this.isDestroyed()) {
|
|
686
|
+
throw new Error("Cannot clone destroyed buffer");
|
|
687
|
+
}
|
|
688
|
+
const data = this.getBuffer();
|
|
689
|
+
return SecureBuffer.from(data, this.options);
|
|
690
|
+
}
|
|
691
|
+
/**
|
|
692
|
+
* Resize the buffer (creates a new buffer with copied data)
|
|
693
|
+
*/
|
|
694
|
+
resize(newSize) {
|
|
695
|
+
if (this.isDestroyed()) {
|
|
696
|
+
throw new Error("Cannot resize destroyed buffer");
|
|
697
|
+
}
|
|
698
|
+
if (newSize < 0) {
|
|
699
|
+
throw new Error("Buffer size cannot be negative");
|
|
700
|
+
}
|
|
701
|
+
const currentData = this.getBuffer();
|
|
702
|
+
const newBuffer = new SecureBuffer(newSize, 0, this.options);
|
|
703
|
+
if (newSize > 0) {
|
|
704
|
+
const copyLength = Math.min(currentData.length, newSize);
|
|
705
|
+
const targetBuffer = newBuffer.getBuffer();
|
|
706
|
+
for (let i = 0; i < copyLength; i++) {
|
|
707
|
+
targetBuffer[i] = currentData[i];
|
|
708
|
+
}
|
|
709
|
+
newBuffer.updateChecksum();
|
|
710
|
+
}
|
|
711
|
+
return newBuffer;
|
|
712
|
+
}
|
|
713
|
+
/**
|
|
714
|
+
* Update the checksum after buffer modification
|
|
715
|
+
*/
|
|
716
|
+
updateChecksum() {
|
|
717
|
+
if (this.state === BufferState.DESTROYED) {
|
|
718
|
+
return;
|
|
719
|
+
}
|
|
720
|
+
const data = this.getUnencryptedBuffer();
|
|
721
|
+
// Use SHA-256 for checksum
|
|
722
|
+
try {
|
|
723
|
+
if (nobleHashes && nobleHashes.sha256) {
|
|
724
|
+
this.checksum = new Uint8Array(nobleHashes.sha256(data));
|
|
725
|
+
}
|
|
726
|
+
else {
|
|
727
|
+
const hash = crypto.createHash("sha256");
|
|
728
|
+
hash.update(data);
|
|
729
|
+
this.checksum = new Uint8Array(hash.digest());
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
catch (e) {
|
|
733
|
+
// Simple checksum fallback
|
|
734
|
+
this.checksum = new Uint8Array(32);
|
|
735
|
+
for (let i = 0; i < data.length; i++) {
|
|
736
|
+
this.checksum[i % 32] ^= data[i];
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
/**
|
|
741
|
+
* Registers a finalizer to clean up the buffer when it's garbage collected
|
|
742
|
+
* This is a best-effort approach as JavaScript doesn't guarantee finalization
|
|
743
|
+
*/
|
|
744
|
+
registerFinalizer() {
|
|
745
|
+
// Use FinalizationRegistry if available (modern environments)
|
|
746
|
+
if (typeof globalThis.FinalizationRegistry !== "undefined") {
|
|
747
|
+
try {
|
|
748
|
+
const FinalizationRegistry = globalThis
|
|
749
|
+
.FinalizationRegistry;
|
|
750
|
+
const registry = new FinalizationRegistry((heldValue) => {
|
|
751
|
+
// Clean up fragments if they still exist
|
|
752
|
+
if (heldValue.fragments) {
|
|
753
|
+
for (const fragment of heldValue.fragments) {
|
|
754
|
+
if (fragment && fragment.length > 0) {
|
|
755
|
+
for (let i = 0; i < fragment.length; i++) {
|
|
756
|
+
fragment[i] = 0;
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
});
|
|
762
|
+
registry.register(this, { fragments: this.fragments });
|
|
763
|
+
return;
|
|
764
|
+
}
|
|
765
|
+
catch (e) {
|
|
766
|
+
// Fall back to timeout approach
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
// Fallback timeout-based approach for older environments
|
|
770
|
+
const fragmentRefs = this.fragments.slice(); // Create a copy of references
|
|
771
|
+
setTimeout(() => {
|
|
772
|
+
// This will only run if the original object is garbage collected
|
|
773
|
+
// but the timeout reference is still alive
|
|
774
|
+
for (const fragment of fragmentRefs) {
|
|
775
|
+
if (fragment && fragment.length > 0) {
|
|
776
|
+
for (let i = 0; i < fragment.length; i++) {
|
|
777
|
+
fragment[i] = 0;
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
}, 30000); // Check after 30 seconds
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
/**
|
|
785
|
+
* Securely wipes a section of memory
|
|
786
|
+
*
|
|
787
|
+
* This implementation follows recommendations from security standards
|
|
788
|
+
* for secure data deletion, using multiple overwrite patterns to ensure
|
|
789
|
+
* data cannot be recovered even with advanced forensic techniques.
|
|
790
|
+
*
|
|
791
|
+
* @param buffer - Buffer to wipe
|
|
792
|
+
* @param start - Start position
|
|
793
|
+
* @param end - End position
|
|
794
|
+
* @param passes - Number of overwrite passes (default: 3)
|
|
795
|
+
*/
|
|
796
|
+
function secureWipe(buffer, start = 0, end = buffer.length, passes = 3) {
|
|
797
|
+
if (!buffer || buffer.length === 0) {
|
|
798
|
+
return;
|
|
799
|
+
}
|
|
800
|
+
// Ensure bounds are valid
|
|
801
|
+
start = Math.max(0, Math.min(start, buffer.length));
|
|
802
|
+
end = Math.max(start, Math.min(end, buffer.length));
|
|
803
|
+
// Ensure passes is at least 1
|
|
804
|
+
passes = Math.max(1, passes);
|
|
805
|
+
// Get a cryptographically secure random source if available
|
|
806
|
+
let getRandomByte;
|
|
807
|
+
try {
|
|
808
|
+
// Try to use crypto.getRandomValues in browser
|
|
809
|
+
if (typeof window !== "undefined" &&
|
|
810
|
+
window.crypto &&
|
|
811
|
+
window.crypto.getRandomValues) {
|
|
812
|
+
const randomBuffer = new Uint8Array(1);
|
|
813
|
+
getRandomByte = () => {
|
|
814
|
+
window.crypto.getRandomValues(randomBuffer);
|
|
815
|
+
return randomBuffer[0];
|
|
816
|
+
};
|
|
817
|
+
}
|
|
818
|
+
// Try to use Node.js crypto module
|
|
819
|
+
else if (typeof require === "function") {
|
|
820
|
+
try {
|
|
821
|
+
// const crypto = require("crypto");
|
|
822
|
+
getRandomByte = () => crypto.randomBytes(1)[0];
|
|
823
|
+
}
|
|
824
|
+
catch (e) {
|
|
825
|
+
// Fallback to Math.random if crypto is not available
|
|
826
|
+
getRandomByte = () => Math.floor(Math.random() * 256);
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
// Fallback to Math.random
|
|
830
|
+
else {
|
|
831
|
+
getRandomByte = () => Math.floor(Math.random() * 256);
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
catch (e) {
|
|
835
|
+
// Final fallback
|
|
836
|
+
getRandomByte = () => Math.floor(Math.random() * 256);
|
|
837
|
+
}
|
|
838
|
+
// DoD 5220.22-M inspired wiping patterns
|
|
839
|
+
const patterns = [
|
|
840
|
+
0x00, // All zeros
|
|
841
|
+
0xff, // All ones
|
|
842
|
+
0x55, // Alternating 01010101
|
|
843
|
+
0xaa, // Alternating 10101010
|
|
844
|
+
0x92, // Pseudo-random
|
|
845
|
+
0x49, // Pseudo-random
|
|
846
|
+
0x24, // Pseudo-random
|
|
847
|
+
0x6d, // Pseudo-random
|
|
848
|
+
0xb6, // Pseudo-random
|
|
849
|
+
0xdb, // Pseudo-random
|
|
850
|
+
];
|
|
851
|
+
// Perform the wipes
|
|
852
|
+
for (let pass = 0; pass < passes; pass++) {
|
|
853
|
+
// Use a different pattern for each pass, cycling through the available patterns
|
|
854
|
+
const patternIndex = pass % patterns.length;
|
|
855
|
+
const pattern = patterns[patternIndex];
|
|
856
|
+
// Fill the buffer with the pattern
|
|
857
|
+
for (let i = start; i < end; i++) {
|
|
858
|
+
// Use volatile to prevent compiler optimizations from removing this code
|
|
859
|
+
// This is a JavaScript approximation of the volatile keyword in C/C++
|
|
860
|
+
buffer[i] = pattern;
|
|
861
|
+
// Add a small delay every 1024 bytes to prevent optimization
|
|
862
|
+
if (i % 1024 === 0) {
|
|
863
|
+
// Force the JavaScript engine to actually perform the write
|
|
864
|
+
// by reading the value back and using it
|
|
865
|
+
const dummy = buffer[i];
|
|
866
|
+
if (dummy === undefined) {
|
|
867
|
+
// This condition will never be true, but the compiler doesn't know that
|
|
868
|
+
buffer[i] = getRandomByte();
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
}
|
|
873
|
+
// Final pass with cryptographically secure random data
|
|
874
|
+
for (let i = start; i < end; i++) {
|
|
875
|
+
buffer[i] = getRandomByte();
|
|
876
|
+
}
|
|
877
|
+
// Final zero pass
|
|
878
|
+
for (let i = start; i < end; i++) {
|
|
879
|
+
buffer[i] = 0x00;
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
export { SecureBuffer, secureWipe };
|
|
884
|
+
//# sourceMappingURL=secure-memory.js.map
|