Nodes/ComfyUI ARG Toolkit/EdDSA Signature Generator
ComfyUI Node

EdDSA Signature Generator

Sign a message with Ed25519 — the friendly way to prove authorship

By AzelusLightvale·Created 12 months ago·Updated 5 days ago· 1
EdDSA Signature Generator
  • private_bytes
  • serialized_key
  • signature
key_sourceFresh Key
key_typeEd25519
messageHello World!

If ECSign is the fiddly ECDSA signer, EdDSASignature is its younger, calmer sibling. It signs a message with an Ed25519 (or Ed448) private key and returns a signature that EdDSAVerify can check. The big practical difference: the message here is a plain STRING input with a Hello World! default - no bytes plumbing required. Type your message, pick your key, get your signature. That simplicity is the whole appeal.

How the key source works

Like EdDSAPublicKeyFormat, the key_source dropdown controls where the private key comes from:

  • Fresh Key - generates a new key just to sign this one message. The signature is valid, but no one else can verify it unless you also extracted and published the matching public key. For a one-off demo it's fine; for a real exchange it's the wrong tool.
  • From Private Bytes - reconstruct the key from private_bytes (BYTESLIKE), the raw key bytes you saved from EdDSAPrivateKeyFormat. This is the reproducible path: same bytes, same signature, every run.
  • From Loaded Key - use a KEYOBJ you wired into serialized_key (from EdDSAPrivateKeyFormat's private_key output). Cleanest when the key object is already flowing through the graph.

The inputs that matter

  • key_type - Ed25519 or Ed448, must match the key you're using. Ed25519 is the default and the one you want.
  • message - the string to sign. It's a plain text box; the node UTF-8 encodes it internally before signing. Unlike ECSign's BYTESLIKE data, there's no converter step.

The output

  • signature (BYTESLIKE) - the signature bytes. Not human-readable text; a blob to transport, embed, or feed into EdDSAVerify. You can decode it to hex/base64 with the pack's converters if you need to move it through a text channel.

Why EdDSA is worth it here

Ed25519 is deterministic and collision-resistant by design: there's no random nonce to get wrong (the thing that killed a famous Sony key leak years ago), no curve parameters to mispick, no hash to choose - SHA-512 is baked in. So this node has almost nothing to misconfigure, which makes it the right default for anyone who just wants signing to work. The cost of that simplicity is flexibility: you can't switch hashes or curves, because the algorithm doesn't let you.

Installing it

Part of the ComfyUI ARG Toolkit:

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

Restart ComfyUI, or install via ComfyUI Manager's "ComfyUI ARG Toolkit" entry, which also pulls cryptography (the signing engine) and the rest of the pack.

Where people get burned

  • Fresh Key with nothing published. You'll produce a signature no one can verify, because the public key was never shared. If verification matters, derive from a stable key source.
  • Verifying with the wrong key type. The verifier must use the same key_type and the same public key - that's the only thing that matters, but it does matter absolutely.
  • Expecting a readable signature. signature is bytes. If you paste it into a text field, use ByteslikeDecode/hex conversion first or you'll wonder where your text went.

For the "sign a message and prove it was you" use case, this is the node in this pack you'd actually reach for - and it's the one that won't punish you for a misclick.

CategoryARG Toolkit/Cryptography/Modern/Asymmetric

Inputs (5)

NameTypeDefaultDescription
key_sourceCOMBOFresh KeyThe source of the private key to be used to sign the message
key_typeCOMBOEd255192 options: Ed25519, Ed448
messageSTRINGHello World!
private_bytesoptBYTESLIKEOnly applicable if key_source is 'From Private Bytes'.
serialized_keyoptKEYOBJ

Outputs (1)

NameTypeDescription
signatureBYTESLIKE