def list_languages(cls): lang = [] for lang_dir in (cls._get_directory(), Mnemonic._get_directory()): lang += [ f.split('.')[0] for f in os.listdir(lang_dir) if f.endswith('.txt') ] return lang
def __init__(self, language='english'): self.radix = 2048 if language == 'chinese': with open('%s/%s.txt' % (self._get_directory(), language), 'r') as f: self.wordlist = [w.strip() for w in f.readlines()] else: with open('%s/%s.txt' % (Mnemonic._get_directory(), language), 'r') as f: self.wordlist = [w.strip() for w in f.readlines()] if len(self.wordlist) != self.radix: raise ConfigurationError('Wordlist should contain %d words, but it contains %d words.' % (self.radix, len(self.wordlist)))
def __init__(self, language='english'): self.radix = 2048 self.stellar_account_path_format = KIN_BIP_PATH self.first_hardened_index = 0x80000000 self.seed_modifier = b"ed25519 seed" lang_dir = Mnemonic._get_directory() \ if language in Mnemonic.list_languages() \ else self._get_directory() lang_filename = os.path.join(lang_dir, language + ".txt") with io.open(lang_filename, 'r', encoding="utf8") as f: self.wordlist = [w.strip() for w in f.readlines()] if len(self.wordlist) != self.radix: raise ConfigurationError( 'Wordlist should contain {} words, but it contains {} ' 'words.'.format(self.radix, len(self.wordlist)))
def __init__(self, language='english'): self.radix = 2048 self.stellar_account_path_format = "m/44'/148'/%d'" self.first_hardened_index = 0x80000000 self.seed_modifier = b"ed25519 seed" if language == 'chinese': with io.open('%s/%s.txt' % (self._get_directory(), language), 'r', encoding="utf8") as f: self.wordlist = [w.strip() for w in f.readlines()] else: with io.open('%s/%s.txt' % (Mnemonic._get_directory(), language), 'r', encoding="utf8") as f: self.wordlist = [w.strip() for w in f.readlines()] if len(self.wordlist) != self.radix: raise ConfigurationError( 'Wordlist should contain %d words, but it contains %d words.' % (self.radix, len(self.wordlist)))
def main() -> None: parser = argparse.ArgumentParser(description='Encode/Decode mnemonics') parser.add_argument( '-i --input', dest='typein', choices=['generate', 'hex', 'entropy', 'mnemonic', 'stamp'], default='generate', help="generate mnemonic or input type at stdin") parser.add_argument( '-o --output', dest='typeout', choices=['entropy', 'hex', 'mnemonic', 'stamp', 'seed', 'key'], default='mnemonic', help="type of output to print to stdout") parser.add_argument('-l --language', dest='lang', choices=[ f.split('.')[0] for f in os.listdir(Mnemonic._get_directory()) ], default='english') parser.add_argument('-s --strength', dest='strength', choices=[128, 160, 192, 224, 256], default=128) parser.add_argument('-p --passphrase', dest='passphrase', type=str, default='') parser.add_argument('-t --testnet', dest='testnet', type=bool, default=False) args = parser.parse_args() m = Mnemonic(args.lang) # input types if args.typein == 'generate': mnemonic = m.generate(args.strength) elif args.typein == 'hex': num = int(sys.stdin.readline().strip(), 16) mnemonic = m.from_int(num) elif args.typein == 'entropy': entropy = sys.stdin.buffer.read() mnemonic = m.to_mnemonic(entropy) elif args.typein == 'mnemonic': mnemonic = sys.stdin.readline().strip() if not m.check(mnemonic): raise ValueError(mnemonic) elif args.typein == 'stamp': stamp = sys.stdin.readline().strip() mnemonic = m.from_stamp(stamp) # output types if args.typeout == 'entropy': sys.stdout.buffer.write(m.to_entropy(mnemonic)) if args.typeout == 'hex': print(hex(m.to_int(mnemonic))) elif args.typeout == 'mnemonic': print(mnemonic) elif args.typeout == 'stamp': print(m.to_stamp(mnemonic)) elif args.typeout == 'seed': print(m.to_seed(mnemonic, args.passphrase)) elif args.typeout == 'key': print( m.to_hd_master_key(m.to_seed(mnemonic, args.passphrase), args.testnet))
def list_languages(cls): lang = [f.split('.')[0] for f in os.listdir(cls._get_directory()) if f.endswith('.txt')] lang += [f.split('.')[0] for f in os.listdir(Mnemonic._get_directory()) if f.endswith('.txt')] return lang