EdDSA Signature Generator
Sign a message with Ed25519 — the friendly way to prove authorship
- private_bytes
- serialized_key
- signature
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 fromEdDSAPrivateKeyFormat. This is the reproducible path: same bytes, same signature, every run. - From Loaded Key - use a
KEYOBJyou wired intoserialized_key(fromEdDSAPrivateKeyFormat'sprivate_keyoutput). Cleanest when the key object is already flowing through the graph.
The inputs that matter
key_type-Ed25519orEd448, 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. UnlikeECSign'sBYTESLIKEdata, there's no converter step.
The output
signature(BYTESLIKE) - the signature bytes. Not human-readable text; a blob to transport, embed, or feed intoEdDSAVerify. 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_typeand the same public key - that's the only thing that matters, but it does matter absolutely. - Expecting a readable signature.
signatureis bytes. If you paste it into a text field, useByteslikeDecode/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.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| key_source | COMBO | Fresh Key | The source of the private key to be used to sign the message |
| key_type | COMBO | Ed25519 | 2 options: Ed25519, Ed448 |
| message | STRING | Hello World! | — |
| private_bytesopt | BYTESLIKE | Only applicable if key_source is 'From Private Bytes'. | |
| serialized_keyopt | KEYOBJ | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| signature | BYTESLIKE | — |