Class DeterministicSeed

java.lang.Object
org.bitcoinj.wallet.DeterministicSeed
All Implemented Interfaces:
EncryptableItem

public class DeterministicSeed extends Object implements EncryptableItem
Holds the seed bytes for the BIP32 deterministic wallet algorithm, inside a DeterministicKeyChain. The purpose of this wrapper is to simplify the encryption code.
  • Field Details

    • DEFAULT_SEED_ENTROPY_BITS

      public static final int DEFAULT_SEED_ENTROPY_BITS
      See Also:
    • MAX_SEED_ENTROPY_BITS

      public static final int MAX_SEED_ENTROPY_BITS
      See Also:
  • Constructor Details

  • Method Details

    • ofMnemonic

      public static DeterministicSeed ofMnemonic(String mnemonicCode, String passphrase, Instant creationTime)
      Constructs a seed from a BIP 39 mnemonic code. See MnemonicCode for more details on this scheme.
      Parameters:
      mnemonicCode - list of words, space separated
      passphrase - user supplied passphrase, or empty string if there is no passphrase
      creationTime - when the seed was originally created
    • ofMnemonic

      public static DeterministicSeed ofMnemonic(String mnemonicCode, String passphrase)
      Constructs a seed from a BIP 39 mnemonic code. See MnemonicCode for more details on this scheme. Use this if you don't know the seed's creation time.
      Parameters:
      mnemonicCode - list of words, space separated
      passphrase - user supplied passphrase, or empty string if there is no passphrase
    • ofMnemonic

      public static DeterministicSeed ofMnemonic(List<String> mnemonicCode, String passphrase, Instant creationTime)
      Constructs a seed from a BIP 39 mnemonic code. See MnemonicCode for more details on this scheme.
      Parameters:
      mnemonicCode - list of words
      passphrase - user supplied passphrase, or empty string if there is no passphrase
      creationTime - when the seed was originally created
    • ofMnemonic

      public static DeterministicSeed ofMnemonic(List<String> mnemonicCode, String passphrase)
      Constructs a seed from a BIP 39 mnemonic code. See MnemonicCode for more details on this scheme. Use this if you don't know the seed's creation time.
      Parameters:
      mnemonicCode - list of words
      passphrase - user supplied passphrase, or empty string if there is no passphrase
    • ofEntropy

      public static DeterministicSeed ofEntropy(byte[] entropy, String passphrase, Instant creationTime)
      Constructs a BIP 39 mnemonic code and a seed from a given entropy. See MnemonicCode for more details on this scheme.
      Parameters:
      entropy - entropy bits, length must be at least 128 bits and a multiple of 32 bits
      passphrase - user supplied passphrase, or empty string if there is no passphrase
      creationTime - when the seed was originally created
    • ofEntropy

      public static DeterministicSeed ofEntropy(byte[] entropy, String passphrase)
      Constructs a BIP 39 mnemonic code and a seed from a given entropy. See MnemonicCode for more details on this scheme. Use this if you don't know the seed's creation time.
      Parameters:
      entropy - entropy bits, length must be at least 128 bits and a multiple of 32 bits
      passphrase - user supplied passphrase, or empty string if there is no passphrase
    • ofRandom

      public static DeterministicSeed ofRandom(SecureRandom random, int bits, String passphrase)
      Constructs a BIP 39 mnemonic code and a seed randomly. See MnemonicCode for more details on this scheme.
      Parameters:
      random - random source for the entropy
      bits - number of bits of entropy, must be at least 128 bits and a multiple of 32 bits
      passphrase - user supplied passphrase, or empty string if there is no passphrase
    • isEncrypted

      public boolean isEncrypted()
      Description copied from interface: EncryptableItem
      Returns whether the item is encrypted or not. If it is, then EncryptableItem.getSecretBytes() will return null.
      Specified by:
      isEncrypted in interface EncryptableItem
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toString

      public String toString(boolean includePrivate)
    • toHexString

      @Nullable public String toHexString()
      Returns the seed as hex or null if encrypted.
    • getSecretBytes

      @Nullable public byte[] getSecretBytes()
      Description copied from interface: EncryptableItem
      Returns the raw bytes of the item, if not encrypted, or null if encrypted or the secret is missing.
      Specified by:
      getSecretBytes in interface EncryptableItem
    • getSeedBytes

      @Nullable public byte[] getSeedBytes()
    • getEncryptedData

      @Nullable public EncryptedData getEncryptedData()
      Description copied from interface: EncryptableItem
      Returns the initialization vector and encrypted secret bytes, or null if not encrypted.
      Specified by:
      getEncryptedData in interface EncryptableItem
    • getEncryptionType

      public org.bitcoinj.protobuf.wallet.Protos.Wallet.EncryptionType getEncryptionType()
      Description copied from interface: EncryptableItem
      Returns an enum constant describing what algorithm was used to encrypt the key or UNENCRYPTED.
      Specified by:
      getEncryptionType in interface EncryptableItem
    • getEncryptedSeedData

      @Nullable public EncryptedData getEncryptedSeedData()
    • getCreationTime

      public Optional<Instant> getCreationTime()
      Description copied from interface: EncryptableItem
      Returns the time at which this encryptable item was first created/derived, or empty of unknown.
      Specified by:
      getCreationTime in interface EncryptableItem
    • setCreationTime

      public void setCreationTime(Instant creationTime)
      Sets the creation time of this seed.
      Parameters:
      creationTime - creation time of this seed
    • clearCreationTime

      public void clearCreationTime()
      Clears the creation time of this seed. This is mainly used deserialization and cloning. Normally you should not need to use this, as keys should have proper creation times whenever possible.
    • setCreationTimeSeconds

      @Deprecated public void setCreationTimeSeconds(long creationTimeSecs)
      Deprecated.
    • encrypt

      public DeterministicSeed encrypt(KeyCrypter keyCrypter, AesKey aesKey)
    • decrypt

      public DeterministicSeed decrypt(KeyCrypter crypter, String passphrase, AesKey aesKey)
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • check

      public void check() throws MnemonicException
      Check if our mnemonic is a valid mnemonic phrase for our word list. Does nothing if we are encrypted.
      Throws:
      MnemonicException - if check fails
    • getMnemonicCode

      @Nullable public List<String> getMnemonicCode()
      Get the mnemonic code, or null if unknown.
    • getMnemonicString

      @Nullable public String getMnemonicString()
      Get the mnemonic code as string, or null if unknown.