UNPKG

fortify2-js

Version:

MOST POWERFUL JavaScript Security Library! Military-grade cryptography + 19 enhanced object methods + quantum-resistant algorithms + perfect TypeScript support. More powerful than Lodash with built-in security.

101 lines (98 loc) 3.62 kB
'use strict'; // Safe library instances exports.sodium = null; exports.nobleHashes = null; exports.nobleCiphers = null; // Library status tracking const libraryStatus = { sodium: false, nobleHashes: false, nobleCiphers: false, }; // Safe library initialization with proper error handling async function initializeSecurityLibraries() { // Initialize libsodium with proper async handling try { const sodiumLib = await import('libsodium-wrappers'); if (sodiumLib.default) { // Wait for sodium to be ready if it has a ready promise if (sodiumLib.default.ready && typeof sodiumLib.default.ready.then === "function") { await sodiumLib.default.ready; } // Verify required methods exist if (typeof sodiumLib.default.randombytes_buf === "function") { exports.sodium = sodiumLib.default; libraryStatus.sodium = true; // console.log( // "✔ libsodium-wrappers loaded successfully for SecureBuffer" // ); } } } catch (e) { console.warn("⚠️ libsodium-wrappers not available for SecureBuffer:", e.message); } // Initialize @noble/hashes using require for compatibility try { const nobleHashesLib = require("@noble/hashes/sha256"); const nobleHashesLib512 = require("@noble/hashes/sha512"); if (nobleHashesLib && nobleHashesLib.sha256 && nobleHashesLib512 && nobleHashesLib512.sha512) { exports.nobleHashes = { sha256: nobleHashesLib.sha256, sha512: nobleHashesLib512.sha512, }; libraryStatus.nobleHashes = true; // console.log( // "✔ @noble/hashes loaded successfully for SecureBuffer" // ); } } catch (e) { console.warn("⚠️ @noble/hashes not available for SecureBuffer:", e.message); } // Initialize @noble/ciphers using require for compatibility try { // Try importing specific submodules instead of root module const chachaLib = require("@noble/ciphers/chacha"); const aesLib = require("@noble/ciphers/aes"); if (chachaLib && aesLib) { exports.nobleCiphers = { chacha20poly1305: chachaLib.chacha20poly1305, aes: aesLib, }; libraryStatus.nobleCiphers = true; // console.log( // "✔ @noble/ciphers loaded successfully for SecureBuffer" // ); } } catch (e) { // Silently fail - this is optional // console.warn( // "⚠️ @noble/ciphers not available for SecureBuffer:", // (e as Error).message // ); } } // Initialize libraries asynchronously and non-blocking let initializationPromise = null; function ensureLibrariesInitialized() { if (!initializationPromise) { initializationPromise = initializeSecurityLibraries().catch((_error) => { // Silently handle initialization errors - libraries are optional // console.error( // "Failed to initialize security libraries for SecureBuffer:", // error // ); }); } return initializationPromise; } exports.ensureLibrariesInitialized = ensureLibrariesInitialized; exports.initializeSecurityLibraries = initializeSecurityLibraries; exports.libraryStatus = libraryStatus; //# sourceMappingURL=secure-mem.type.js.map