Class SeedSigner

java.lang.Object
com.codename1.crypto.wallet.SeedSigner
All Implemented Interfaces:
Signer

public final class SeedSigner extends Object implements Signer

A Signer over a BIP-39 seed held in memory. Each key is derived when it is needed and wiped after the one signature it makes, so between signatures the process holds the seed and nothing more. destroy() wipes the seed.

Holding a seed in memory is right for a test network, a recovery tool or a wallet the user unlocks for a session; a custodial service keeps the seed in a key service instead.

  • Constructor Details

    • SeedSigner

      public SeedSigner(byte[] seed)
      A signer over a seed, which is copied.
  • Method Details

    • fromMnemonic

      public static SeedSigner fromMnemonic(String mnemonic, String passphrase)

      A signer over the seed of a mnemonic and an optional passphrase.

      Throws
      • IllegalArgumentException: for a mnemonic whose words or checksum are wrong
    • getMasterFingerprint

      public int getMasterFingerprint()
      Description copied from interface: Signer
      The fingerprint of the BIP-32 master key, which PSBTs record to say whose keys they want.
      Specified by:
      getMasterFingerprint in interface Signer
    • getSecp256k1PublicKey

      public byte[] getSecp256k1PublicKey(DerivationPath path)
      Description copied from interface: Signer
      The compressed 33-byte secp256k1 public key at a BIP-32 path.
      Specified by:
      getSecp256k1PublicKey in interface Signer
    • signSecp256k1

      public Secp256k1.EcdsaSignature signSecp256k1(DerivationPath path, byte[] hash32)
      Description copied from interface: Signer
      An ECDSA signature over a 32-byte hash with the secp256k1 key at a path: RFC 6979 deterministic, low-S, with its recovery id.
      Specified by:
      signSecp256k1 in interface Signer
    • signTaproot

      public byte[] signTaproot(DerivationPath path, byte[] sighash, byte[] merkleRoot)
      Description copied from interface: Signer
      A BIP-340 signature over a 32-byte Taproot sighash with the secp256k1 key at a path, tweaked by BIP-341 for merkleRoot (null for a key-path-only output).
      Specified by:
      signTaproot in interface Signer
    • getEd25519PublicKey

      public byte[] getEd25519PublicKey(DerivationPath path)
      Description copied from interface: Signer
      The 32-byte Ed25519 public key at a SLIP-10 path; every index is hardened.
      Specified by:
      getEd25519PublicKey in interface Signer
    • signEd25519

      public byte[] signEd25519(DerivationPath path, byte[] message)
      Description copied from interface: Signer
      An Ed25519 signature over a message with the SLIP-10 key at a path.
      Specified by:
      signEd25519 in interface Signer
    • destroy

      public void destroy()
      Wipes the seed; the signer cannot sign afterwards.