Fix NWC encryption fallback handling

This commit is contained in:
thePR0M3TH3AN committed 2025-10-05 20:49:56 -04:00
1 parent 9d57a43c98
commit aa4e86758a
2 files changed
+99 -19

No files matched your search

+70
View File
@@ -48,6 +48,21 @@ await (async () => {
getPublicKey() {
return "c".repeat(64);
},
nip44: {
v2: {
async encrypt(plaintext, key) {
return `nip44:${key}:${plaintext}`;
},
async decrypt(ciphertext, key) {
return `nip44:${key}:${ciphertext}`;
},
utils: {
getConversationKey(secretBytes, pubkey) {
return `key-${pubkey}-${secretBytes.length}`;
},
},
},
},
};
const walletPubkey = "b".repeat(64);
@@ -75,6 +90,61 @@ await (async () => {
assert.equal(reparsed.secretKey, secretKey);
assert.equal(reparsed.queryParams.lud16, lud16);
context.infoEvent = {
kind: 13194,
tags: [["encryption", "nip44_v2"]],
};
const encryption = await __TESTING__.ensureEncryptionForContext(context);
assert.equal(encryption.scheme, "nip44_v2");
const encrypted = await encryption.encrypt("payload");
assert.match(encrypted, /^nip44:key-b{64}-/);
resetWalletClient();
})();
await (async () => {
resetWalletClient();
window.NostrTools = {
getPublicKey() {
return "c".repeat(64);
},
nip04: {
async encrypt() {
return "nip04";
},
async decrypt() {
return "nip04";
},
},
};
const walletPubkey = "b".repeat(64);
const secretKey = "a".repeat(64);
const relays = ["wss://relay.one.example"];
const uri =
`nostr+walletconnect://${walletPubkey}` +
`?relay=${encodeURIComponent(relays[0])}` +
`&secret=${secretKey}`;
const context = ensureActiveState({ nwcUri: uri });
context.infoEvent = {
kind: 13194,
tags: [["encryption", "nip44_v2"]],
};
await assert.rejects(
() => __TESTING__.ensureEncryptionForContext(context),
(error) => {
assert.match(
error?.message || "",
/Wallet advertises unsupported encryption schemes: nip44_v2\./
);
return true;
}
);
resetWalletClient();
})();