Class DeterministicSeed

  • All Implemented Interfaces:
    EncryptableItem

    public class DeterministicSeed
    extends java.lang.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.
    • Constructor Detail

      • DeterministicSeed

        public DeterministicSeed​(byte[] seed,
                                 java.util.List<java.lang.String> mnemonic,
                                 long creationTimeSeconds)
      • DeterministicSeed

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

        public DeterministicSeed​(java.util.List<java.lang.String> mnemonicCode,
                                 @Nullable
                                 byte[] seed,
                                 java.lang.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​(java.security.SecureRandom random,
                                 int bits,
                                 java.lang.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,
                                 java.lang.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 Detail

      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • toString

        public java.lang.String toString​(boolean includePrivate)
      • toHexString

        @Nullable
        public java.lang.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()
      • 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)
      • decrypt

        public DeterministicSeed decrypt​(KeyCrypter crypter,
                                         java.lang.String passphrase,
                                         org.bouncycastle.crypto.params.KeyParameter aesKey)
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.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 java.util.List<java.lang.String> getMnemonicCode()
        Get the mnemonic code, or null if unknown.
      • getMnemonicString

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