@cashu/cashu-ts
Version:
cashu library for communicating with a cashu mint
36 lines (35 loc) • 1.07 kB
JavaScript
import { schnorr as u } from "@noble/curves/secp256k1";
import { sha256 as g } from "@noble/hashes/sha256";
import { parseP2PKSecret as f } from "../common/NUT11.es.js";
import { getP2PKExpectedKWitnessPubkeys as a, getP2PKNSigs as P, getP2PKWitnessSignatures as d, verifyP2PKSecretSignature as w } from "../client/NUT11.es.js";
const p = (e) => {
if (!e.witness)
throw new Error("could not verify signature, no witness provided");
const r = f(e.secret), s = a(r);
if (!s.length)
throw new Error("no signatures required, proof is unlocked");
let t = 0;
const i = P(r), n = d(e.witness);
for (const o of s)
n.some((c) => {
try {
return w(c, e.secret, o);
} catch {
return !1;
}
}) && t++;
return t >= i;
}, v = (e, r) => {
if (!e.witness)
throw new Error("could not verify signature, no witness provided");
return u.verify(
e.witness.signatures[0],
g(e.B_.toHex(!0)),
r.slice(2)
);
};
export {
p as verifyP2PKSig,
v as verifyP2PKSigOutput
};
//# sourceMappingURL=NUT11.es.js.map