About
Ed25519 cryptography library

Tags
No tags available

Languages
TypeScript 100%

tana-crypto

Ed25519 cryptography library for the Tana blockchain ecosystem.

overview

tana-crypto provides consistent cryptographic operations across all Tana services. it handles signature verification, key formatting, and message canonicalization to ensure signatures generated by any Tana component can be verified by any other.

how it works

the library wraps @noble/ed25519 with Tana-specific conventions. it handles the ed25519_ prefix for public keys and ed25519_sig_ prefix for signatures, ensuring consistent formatting regardless of how keys and signatures are stored or transmitted.

signature verification

const result = await verifySignature(
  message,
  signature,  // with or without ed25519_sig_ prefix
  publicKey   // with or without ed25519_ prefix
)

if (result.valid) {
  // signature matches
}

message canonicalization

for transactions and authentication, the library provides functions that create deterministic message formats:

const result = await verifyTransactionSignature(
  transaction,
  signature,
  publicKey
)

transaction fields are ordered consistently before hashing, ensuring the same transaction always produces the same signature regardless of JSON key ordering.

architecture

written in TypeScript with full type definitions. the library exports functions for:

  • raw signature verification
  • transaction signature verification
  • authentication signature verification
  • prefix manipulation utilities

error handling

verification results include detailed error information:

{
  valid: false,
  error: "invalid signature length",
  details: {
    expected: 64,
    received: 32
  }
}

debug mode

enable debug logging for troubleshooting signature issues:

await verifySignature(message, sig, key, {
  debug: true,
  label: "user-registration"
})

integration

tana-crypto is used by tana-ledger for transaction verification, tana-identity for authentication signatures, and tana-mobile for message signing. all services share this single source of truth for cryptographic operations.