Skip to main content

Signature Programs

Supported Keys and Signatures

Key TypeSignature SchemeSigning ProgramUse Cases
ECDSA Private KeyThreshold ECDSAtecdsa_sign• Ethereum transaction signing
• Digital signatures for Web3 dapps, SIWE
• General-purpose message signing

Threshold ECDSA

Signer Program: tecdsa_sign

Nillion's threshold ECDSA (tECDSA) signer uses a "builtin" Nada program that streamlines the signing process.

node/builtin-programs/tecdsa_sign.py
from nada_dsl import Party, Input, Output, EcdsaPrivateKey, EcdsaDigestMessage


def nada_main():
tecdsa_key_party = Party(name="tecdsa_key_party")
tecdsa_digest_message_party = Party(name="tecdsa_digest_message_party")
tecdsa_output_party = Party(name="tecdsa_output_party")

key = EcdsaPrivateKey(Input(name="tecdsa_private_key", party=tecdsa_key_party))
digest = EcdsaDigestMessage(
Input(name="tecdsa_digest_message", party=tecdsa_digest_message_party)
)

signature = key.ecdsa_sign(digest)

return [Output(signature, "tecdsa_signature", tecdsa_output_party)]

Required Identifiers

The tecdsa_sign program has a pre-configured set of identifiers that you'll need to use when storing a tECDSA private key or signing a message:

# program id
tecdsa_program_id = "builtin/tecdsa_sign"`

# input names
tecdsa_key_name = "tecdsa_private_key"
tecdsa_digest_name = "tecdsa_digest_message"
tecdsa_signature_name = "tecdsa_signature"

# party names
tecdsa_key_party = "tecdsa_key_party"
tecdsa_digest_party = "tecdsa_digest_message_party"
tecdsa_output_party = "tecdsa_output_party"

These predefined identifiers allow you to quickly integrate with Nillion's built-in tECDSA signing functionality, without needing to configure or manage the underlying program details. By using these values, you can get up and running with threshold ECDSA signing faster.

Feedback