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

    • DeterministicSeed

      public DeterministicSeed(String mnemonicString, byte[] seed, String passphrase, long creationTimeSeconds) throws UnreadableWalletException
      Throws:
      UnreadableWalletException
    • DeterministicSeed

      public DeterministicSeed(byte[] seed, List<String> mnemonic, long creationTimeSeconds)
    • DeterministicSeed

      public DeterministicSeed(EncryptedData encryptedMnemonic, @Nullable EncryptedData encryptedSeed, long creationTimeSeconds)
    • DeterministicSeed

      public DeterministicSeed(List<String> mnemonicCode, @Nullable byte[] seed, String passphrase, long creationTimeSeconds)
      Constructs a seed from a BIP 39 mnemonic code. See MnemonicCode for more details on this scheme.
      Parameters:
      mnemonicCode - A list of words.
      seed - The derived seed, or pass null to derive it from mnemonicCode (slow)
      passphrase - A user supplied passphrase, or an empty string if there is no passphrase
      creationTimeSeconds - When the seed was originally created, UNIX time.
    • DeterministicSeed

      public DeterministicSeed(SecureRandom random, int bits, String passphrase)
      Constructs a seed from a BIP 39 mnemonic code. See MnemonicCode for more details on this scheme.
      Parameters:
      random - Entropy source
      bits - number of bits, must be divisible by 32
      passphrase - A user supplied passphrase, or an empty string if there is no passphrase
    • DeterministicSeed

      public DeterministicSeed(byte[] entropy, String passphrase, long creationTimeSeconds)
      Constructs a seed from a BIP 39 mnemonic code. See MnemonicCode for more details on this scheme.
      Parameters:
      entropy - entropy bits, length must be divisible by 32
      passphrase - A user supplied passphrase, or an empty string if there is no passphrase
      creationTimeSeconds - When the seed was originally created, UNIX time.
  • Method Details

    • 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 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()
    • getCreationTimeSeconds

      public long getCreationTimeSeconds()
      Description copied from interface: EncryptableItem
      Returns the time in seconds since the UNIX epoch at which this encryptable item was first created/derived.
      Specified by:
      getCreationTimeSeconds in interface EncryptableItem
    • setCreationTimeSeconds

      public void setCreationTimeSeconds(long creationTimeSeconds)
    • encrypt

      public DeterministicSeed encrypt(KeyCrypter keyCrypter, org.bouncycastle.crypto.params.KeyParameter aesKey)
    • decrypt

      public DeterministicSeed decrypt(KeyCrypter crypter, String passphrase, org.bouncycastle.crypto.params.KeyParameter 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.