Nodes/ComfyUI ARG Toolkit/EDDSA Message Verification
ComfyUI Node

EDDSA Message Verification

Check an EdDSA signature with one boolean — the message was signed or it wasn't

By AzelusLightvale·Created 12 months ago·Updated 4 days ago· 1
EDDSA Message Verification
  • message
  • signature
  • public_bytes
  • public_key
  • verify_status
key_typeEd25519
key_source

EdDSAVerify is the receiving end of the pack's Ed25519 signing chain: you give it the message bytes, the signature, and a public key, and it returns a single BOOLEAN - True if the signature was made by the matching private key, False otherwise. It's the automated "is this real?" check for anything signed with EdDSASignature, and it's refreshingly hard to misuse because Ed25519 doesn't let you pick a hash or a curve.

What it needs

  • key_type - Ed25519 or Ed448. Must match the key that was used to sign. This is the only algorithm choice you get, because the scheme bakes in SHA-512 - no hash dropdown to drift on, which is exactly the thing that makes ECDSA verification fiddly.
  • key_source - a BOOLEAN toggle, and it's the bit that trips people up. On (From Private Bytes), the node reconstructs the public key from public_bytes (BYTESLIKE) - the raw 32-byte public key you saved from EdDSAPublicKeyFormat. Off (From Loaded Key), it uses the public_key (KEYOBJ) you wired in.
  • message (BYTESLIKE) - the signed bytes. Note it's bytes here even though EdDSASignature takes a string; the verifier gets raw bytes, so route text through the pack's converters if that's what you have.
  • signature (BYTESLIKE) - the signature blob from EdDSASignature.

The output

  • verify_status (BOOLEAN) - True or False, nothing else. Wire it into a BooleanOutputter or any boolean consumer; ComfyUI also shows it on the node itself. A False means either the wrong key, tampered bytes, or a mismatched key type - the node swallows InvalidSignature/ValueError and just reports "no."

The byte-for-byte trap

Ed25519 verification is exact: the message you feed in must be the exact byte sequence that was signed. This is where beginners lose an afternoon. If the message went through a decode/re-encode round trip, picked up a trailing newline, or was case-normalized anywhere, the signature will not verify - even though it "should." The signature is over the precise bytes, and nothing else. When in doubt, sign and verify the identical byte stream and change nothing in between.

Installing it

Same pack, same routine:

cd ComfyUI/custom_nodes
git clone https://github.com/AzelusLightvale/ComfyUI-ARG-Toolkit

Restart ComfyUI, or install via ComfyUI Manager ("ComfyUI ARG Toolkit") which pulls cryptography and the rest of the dependencies.

Where people get burned

  • Public key from the wrong source. Derive the public key from a different private key than the one that signed, and you get a permanent False with no error message. Check which key your EdDSAPublicKeyFormat is actually sourcing.
  • Bytes vs string. message wants BYTESLIKE. EdDSASignature's message box is a string. Don't expect them to match up without going through the converters consistently.
  • Key type drift. Ed448 signature checked against an Ed25519 public key, or vice versa - False. Keep key_type locked across the whole chain.

A True here proves the holder of the private key signed those exact bytes. It doesn't mean the message is wise, true, or from someone you'd trust with your wallet - same caveat as every signature scheme. But for an ARG trail where a "signed message" appears at the end of a rabbit hole, this node turns a leap of faith into a mechanical yes/no.

CategoryARG Toolkit/Cryptography/Modern/Asymmetric

Inputs (6)

NameTypeDefaultDescription
key_typeCOMBOEd255192 options: Ed25519, Ed448
key_sourceBOOLEANThe source of the private key to be used to verify the signature of the message
messageBYTESLIKE
signatureBYTESLIKE
public_bytesoptBYTESLIKE
public_keyoptKEYOBJ

Outputs (1)

NameTypeDescription
verify_statusBOOLEAN