@nostr-dev-kit/ndk
Version:
NDK - Nostr Development Kit. Includes AI Guardrails to catch common mistakes during development.
40 lines (35 loc) • 1.14 kB
text/typescript
import { NDKUser } from "../../../user/index.js";
import type { IEventHandlingStrategy, NDKNip46Backend } from "./index.js";
export default class Nip04DecryptHandlingStrategy implements IEventHandlingStrategy {
async handle(
backend: NDKNip46Backend,
id: string,
remotePubkey: string,
params: string[],
): Promise<string | undefined> {
const [senderPubkey, payload] = params;
const senderUser = new NDKUser({ pubkey: senderPubkey });
const decryptedPayload = await decrypt(backend, id, remotePubkey, senderUser, payload);
return decryptedPayload;
}
}
async function decrypt(
backend: NDKNip46Backend,
id: string,
remotePubkey: string,
senderUser: NDKUser,
payload: string,
) {
if (
!(await backend.pubkeyAllowed({
id,
pubkey: remotePubkey,
method: "nip04_decrypt",
params: payload,
}))
) {
backend.debug(`decrypt request from ${remotePubkey} rejected`);
return undefined;
}
return await backend.signer.decrypt(senderUser, payload, "nip04");
}