e2ee-chat
Version:
A simple realtime chat SDK for web and mobile apps using socket.io with support for end-to-end encryption and multi-tenant backend integration.
66 lines (58 loc) • 2.56 kB
JavaScript
const { encryptMessage, decryptMessage } = require("./src/encryption");
const SECRET_KEY = "shared-secret-123";
console.log("🔧 Flutter Integration Debug Tool");
console.log("================================");
console.log("");
// Test 1: Create a message that Flutter should be able to decrypt
console.log("📤 Test 1: JavaScript -> Flutter");
console.log("----------------------------------");
const jsMessage = "Hello from JavaScript!";
const jsEncrypted = encryptMessage(jsMessage, SECRET_KEY);
console.log("Original message:", jsMessage);
console.log("JS encrypted:", jsEncrypted);
console.log("Copy this encrypted text to Flutter and try to decrypt it");
console.log("");
// Test 2: Try to decrypt sample Flutter messages
console.log("📥 Test 2: Flutter -> JavaScript");
console.log("----------------------------------");
// Add sample encrypted messages from Flutter here for testing
const flutterSamples = [
// Add any encrypted messages from your Flutter app here
// For example: 'sample_encrypted_message_from_flutter'
];
if (flutterSamples.length === 0) {
console.log("⚠️ No Flutter sample messages provided");
console.log("To test:");
console.log("1. Run this in Flutter with the same secret key:");
console.log(' String encrypted = _encryptMessage("Test from Flutter");');
console.log(' print("Encrypted: $encrypted");');
console.log("2. Copy the encrypted output here");
console.log("3. Add it to the flutterSamples array above");
} else {
flutterSamples.forEach((encrypted, index) => {
try {
const decrypted = decryptMessage(encrypted, SECRET_KEY);
console.log(`Sample ${index + 1}:`);
console.log(` Encrypted: ${encrypted}`);
console.log(` Decrypted: ${decrypted}`);
console.log(` ✅ SUCCESS`);
} catch (error) {
console.log(`Sample ${index + 1}:`);
console.log(` Encrypted: ${encrypted}`);
console.log(` ❌ FAILED: ${error.message}`);
}
console.log("");
});
}
console.log("");
console.log("🔍 Debugging Tips:");
console.log("==================");
console.log("1. Ensure both Flutter and JS use the same secret key");
console.log("2. Check that IV handling is consistent");
console.log("3. Verify base64 encoding/decoding");
console.log("4. Test with simple messages first");
console.log("5. Check console logs for decryption errors");
console.log("");
console.log("Current secret key:", SECRET_KEY);
console.log("Encryption method: AES-256-CBC with SHA-256 key derivation");
console.log("IV: Zero IV (16 bytes of zeros)");