@discord-interactions/verify
Version:
A verification module using the Web SubtleCrypto API.
19 lines • 964 B
JavaScript
import { createPublicKey, verify } from "node:crypto";
/**
* Verify an incoming interaction's signature.
* @param publicKey Your Application's Public Key
* @param timestamp Interaction Request's "X-Signature-Timestamp" Header
* @param signature Interaction Request's "X-Signature-Ed25519" Header
* @param body Raw Interaction Request Body - If you parse this as JSON beforehand, verification will fail for certain interactions.
* @returns Whether or not the signature is valid.
*/
export default async function verifyInteractionSignature(publicKey, signature, timestamp, body) {
const message = Buffer.from(timestamp + body, "utf-8");
const signatureBuffer = Buffer.from(signature, "hex");
return verify(null, message, createPublicKey({
key: Buffer.concat([Buffer.from("MCowBQYDK2VwAyEA", "base64"), Buffer.from(publicKey, "hex")]),
format: "der",
type: "spki"
}), signatureBuffer);
}
//# sourceMappingURL=node.js.map