public KeyManager(BitcoinEncryptedSecretNoEC encryptedSecret, byte[] chainCode, string password, int minGapLimit = AbsoluteMinGapLimit, string filePath = null, KeyPath accountKeyPath = null) { HdPubKeys = new List <HdPubKey>(); HdPubKeyScriptBytes = new List <byte[]>(); ScriptHdPubKeyMap = new Dictionary <Script, HdPubKey>(); HdPubKeysLock = new object(); HdPubKeyScriptBytesLock = new object(); ScriptHdPubKeyMapLock = new object(); BlockchainState = new BlockchainState(); BlockchainStateLock = new object(); if (password is null) { password = ""; } SetMinGapLimit(minGapLimit); EncryptedSecret = Guard.NotNull(nameof(encryptedSecret), encryptedSecret); ChainCode = Guard.NotNull(nameof(chainCode), chainCode); var extKey = new ExtKey(encryptedSecret.GetKey(password), chainCode); MasterFingerprint = extKey.Neuter().PubKey.GetHDFingerPrint(); AccountKeyPath = accountKeyPath ?? DefaultAccountKeyPath; ExtPubKey = extKey.Derive(AccountKeyPath).Neuter(); SetFilePath(filePath); ToFileLock = new object(); ToFile(); }
public KeyManager(BitcoinEncryptedSecretNoEC encryptedSecret, byte[] chainCode, HDFingerprint?masterFingerprint, ExtPubKey extPubKey, bool?passwordVerified, int?minGapLimit, BlockchainState blockchainState, string filePath = null, KeyPath accountKeyPath = null) { HdPubKeys = new List <HdPubKey>(); HdPubKeyScriptBytes = new List <byte[]>(); ScriptHdPubKeyMap = new Dictionary <Script, HdPubKey>(); HdPubKeysLock = new object(); HdPubKeyScriptBytesLock = new object(); ScriptHdPubKeyMapLock = new object(); BlockchainStateLock = new object(); EncryptedSecret = encryptedSecret; ChainCode = chainCode; MasterFingerprint = masterFingerprint; ExtPubKey = Guard.NotNull(nameof(extPubKey), extPubKey); PasswordVerified = passwordVerified; SetMinGapLimit(minGapLimit); BlockchainState = blockchainState ?? new BlockchainState(); AccountKeyPath = accountKeyPath ?? DefaultAccountKeyPath; SetFilePath(filePath); ToFileLock = new object(); ToFile(); }