#!/usr/bin/env python3 # # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution # Copyright (C)2013-2020 The MMGen Project """ test.objattrtest_py_d.oat_btc_mainnet: BTC mainnet test vectors for MMGen data objects """ from .oat_common import * sample_objs.update({ 'PrivKey': PrivKey(seed_bin,compressed=True,pubkey_type='std'), 'WifKey': WifKey('5HwzecKMWD82ppJK3qMKpC7ohXXAwcyAN5VgdJ9PLFaAzpBG4sX'), 'CoinAddr': CoinAddr('1111111111111111111114oLvT2'), 'BTCAmt': BTCAmt('0.01'), 'MMGenID': MMGenID('F00F00BB:B:1'), 'TwMMGenID': TwMMGenID('F00F00BB:S:23'), }) tests = { # addr.py 'AddrListEntry': atd({ 'addr': (0b001, CoinAddr), 'idx': (0b001, AddrIdx), 'label': (0b101, TwComment), 'sec': (0b001, PrivKey), # 'viewkey': (0b001, ViewKey), # TODO # 'wallet_passwd': (0b001, WalletPassword), # TODO }, [], {} ), 'PasswordListEntry': atd({ 'passwd': (0b001, str), 'idx': (0b001, AddrIdx), 'label': (0b101, TwComment), 'sec': (0b001, PrivKey), }, [], {'passwd':'ΑlphaΩmega', 'idx':1 }, ), # obj.py 'PrivKey': atd({ 'compressed': (0b001, bool), 'wif': (0b001, WifKey), }, [seed_bin], {'compressed':True, 'pubkey_type':'std'}, ), 'MMGenAddrType': atd({ 'name': (0b001, str), 'pubkey_type': (0b001, str), 'compressed': (0b001, bool), 'gen_method': (0b001, str), 'addr_fmt': (0b001, str), 'wif_label': (0b001, str), 'extra_attrs': (0b001, tuple), 'desc': (0b001, str), }, ['S'], {}, ), # seed.py 'SeedBase': atd({ 'data': (0b001, bytes), 'sid': (0b001, SeedID), }, [seed_bin], {}, ), 'SubSeed': atd({ 'idx': (0b001, int), 'nonce': (0b001, int), 'ss_idx': (0b001, SubSeedIdx), }, [sample_objs['SubSeedList'],1,1,'short'], {}, ), 'SeedShareList': atd({ 'count': (0b001, SeedShareCount), 'id_str': (0b001, SeedSplitIDString), }, [sample_objs['Seed'],sample_objs['SeedShareCount']], {}, ), 'SeedShareLast': atd({ 'idx': (0b001, SeedShareIdx), }, [sample_objs['SeedShareList']], {}, ), 'SeedShareMaster': atd({ 'idx': (0b001, MasterShareIdx), 'nonce': (0b001, int), }, [sample_objs['SeedShareList'],7,0], {}, ), 'SeedShareMasterJoining': atd({ 'id_str': (0b001, SeedSplitIDString), 'count': (0b001, SeedShareCount), }, [sample_objs['MasterShareIdx'], sample_objs['Seed'], 'foo', 2], {}, ), # tw.py 'TwUnspentOutputs.MMGenTwUnspentOutput': atd({ 'txid': (0b001, CoinTxID), 'vout': (0b001, int), 'amt': (0b001, BTCAmt), 'amt2': (0b001, BTCAmt), 'label': (0b101, TwComment), 'twmmid': (0b001, TwMMGenID), 'addr': (0b001, CoinAddr), 'confs': (0b001, int), 'scriptPubKey': (0b001, HexStr), 'days': (0b001, int), 'skip': (0b101, str), }, [], { 'amt':BTCAmt('0.01'), 'twmmid':'F00F00BB:B:17', 'addr':'1111111111111111111114oLvT2', 'confs': 100000, 'scriptPubKey':'ff', }, ), # tx.py 'MMGenTxInput': atd({ 'vout': (0b001, int), 'amt': (0b001, BTCAmt), 'label': (0b101, TwComment), 'mmid': (0b001, MMGenID), 'addr': (0b001, CoinAddr), 'confs': (0b001, int), 'txid': (0b001, CoinTxID), 'have_wif': (0b011, bool), 'scriptPubKey': (0b001, HexStr), 'sequence': (0b001, int), }, [], { 'amt':BTCAmt('0.01'), 'addr':sample_objs['CoinAddr'] }, ), 'MMGenTxOutput': atd({ 'vout': (0b001, int), 'amt': (0b001, BTCAmt), 'label': (0b101, TwComment), 'mmid': (0b001, MMGenID), 'addr': (0b001, CoinAddr), 'confs': (0b001, int), 'txid': (0b001, CoinTxID), 'have_wif': (0b011, bool), 'is_chg': (0b001, bool), }, [], { 'amt':BTCAmt('0.01'), 'addr':sample_objs['CoinAddr'] }, ), } tests['MMGenPasswordType'] = atd(tests['MMGenAddrType'].attrs, ['P'], {})