f678f1f87e
Removed 'healing' logic and authoritative update propagation from handle registry and gossip code, simplifying handle upserts to only update on strictly newer timestamps. Enhanced sodium-chat key handling with robust base64 decoding and key repair logic. Added scripts for key inspection and crypto testing. Deleted unused healing module.
35 lines
1.2 KiB
JavaScript
35 lines
1.2 KiB
JavaScript
|
|
const sodium = require('libsodium-wrappers-sumo');
|
|
|
|
const BAD_KEY_B64 = "z+X63kLk1GoV0gJvPtqNisWuZ3XmlTbfMh9gW0xqcmg=";
|
|
|
|
async function main() {
|
|
console.log('--- Initializing Sodium ---');
|
|
await sodium.ready;
|
|
console.log('Sodium Ready. Variants:', sodium.base64_variants);
|
|
|
|
const variants = [
|
|
{ name: 'Default (undefined)', val: undefined },
|
|
{ name: 'ORIGINAL', val: sodium.base64_variants.ORIGINAL },
|
|
{ name: 'ORIGINAL_NO_PADDING', val: sodium.base64_variants.ORIGINAL_NO_PADDING },
|
|
{ name: 'URLSAFE', val: sodium.base64_variants.URLSAFE },
|
|
{ name: 'URLSAFE_NO_PADDING', val: sodium.base64_variants.URLSAFE_NO_PADDING },
|
|
];
|
|
|
|
for (const v of variants) {
|
|
process.stdout.write(`Testing: ${v.name}... `);
|
|
try {
|
|
// If checking NO_PADDING, manually strip padding for fairness
|
|
let keyStr = BAD_KEY_B64;
|
|
if (v.name.includes('NO_PADDING')) keyStr = keyStr.replace(/=/g, '');
|
|
|
|
const buf = sodium.from_base64(keyStr, v.val);
|
|
console.log(`SUCCESS! Length: ${buf.length}`);
|
|
} catch (e) {
|
|
console.log(`FAILED.`);
|
|
}
|
|
}
|
|
}
|
|
|
|
main();
|