ot_ltc_mainnet.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #!/usr/bin/env python3
  2. #
  3. # mmgen = Multi-Mode GENerator, command-line Bitcoin cold storage solution
  4. # Copyright (C)2013-2023 The MMGen Project <mmgen@tuta.io>
  5. """
  6. test.objtest_py_d.ot_ltc_mainnet: LTC mainnet test vectors for MMGen data objects
  7. """
  8. from decimal import Decimal
  9. from mmgen.obj import *
  10. from .ot_common import *
  11. from mmgen.protocol import init_proto
  12. proto = init_proto('ltc',need_amt=True)
  13. tests = {
  14. 'LTCAmt': {
  15. 'bad': ('-3.2','0.123456789',123,'123L','88000000',80999999.12345678),
  16. 'good': (('80999999.12345678',Decimal('80999999.12345678')),)
  17. },
  18. 'CoinAddr': {
  19. 'bad': (
  20. {'addr':1, 'proto':proto},
  21. {'addr':'x', 'proto':proto},
  22. {'addr':'я', 'proto':proto},
  23. ),
  24. 'good': (
  25. {'addr':'LXYx4j8PDGE8GEwDFnEQhcLyHFGsRxSJwt', 'proto':proto},
  26. {'addr':'MEnuCzUGHaQx9fK5WYvLwR1NK4SAo8HmSr', 'proto':proto},
  27. ),
  28. },
  29. 'WifKey': {
  30. 'bad': (
  31. {'proto':proto, 'wif':1},
  32. {'proto':proto, 'wif':[]},
  33. {'proto':proto, 'wif':'\0'},
  34. {'proto':proto, 'wif':'\1'},
  35. {'proto':proto, 'wif':'я'},
  36. {'proto':proto, 'wif':'g'},
  37. {'proto':proto, 'wif':'gg'},
  38. {'proto':proto, 'wif':'FF'},
  39. {'proto':proto, 'wif':'f00'},
  40. {'proto':proto, 'wif':r16.hex()},
  41. {'proto':proto, 'wif':'2MspvWFjBbkv2wzQGqhxJUYPCk3Y2jMaxLN'},
  42. ),
  43. 'good': (
  44. {'proto':proto, 'wif':'6udBAGS6B9RfGyvEQDkVDsWy3Kqv9eTULqtEfVkJtTJyHdLvojw', 'ret_idx':1},
  45. {'proto':proto, 'wif':'T7kCSp5E71jzV2zEJW4q5qU1SMB5CSz8D9VByxMBkamv1uM3Jjca', 'ret_idx':1},
  46. )
  47. },
  48. 'PrivKey': {
  49. 'bad': (
  50. {'proto':proto, 'wif':1},
  51. {'proto':proto, 'wif':'1'},
  52. {'proto':proto, 'wif':'cMsqcmDYZP1LdKgqRh9L4ZRU9br28yvdmTPwW2YQwVSN9aQiMAoR'},
  53. {'proto':proto, 's':r32,'wif':'6ufJhtQQiRYA3w2QvDuXNXuLgPFp15i3HR1Wp8An2mx1JnhhJAh'},
  54. {'proto':proto, 'pubkey_type':'std'},
  55. {'proto':proto, 's':r32},
  56. {'proto':proto, 's':r32,'compressed':'yes'},
  57. {'proto':proto, 's':r32,'compressed':'yes','pubkey_type':'std'},
  58. {'proto':proto, 's':r32,'compressed':True,'pubkey_type':'nonstd'},
  59. {'proto':proto, 's':r32+b'x','compressed':True,'pubkey_type':'std'}
  60. ),
  61. 'good': (
  62. {'proto':proto, 'wif':'6ufJhtQQiRYA3w2QvDuXNXuLgPFp15i3HR1Wp8An2mx1JnhhJAh',
  63. 'ret':bytes.fromhex('470a974ffca9fca1299b706b09142077bea3acbab6d6480b87dbba79d5fd279b')},
  64. {'proto':proto, 'wif':'T41Fm7J3mtZLKYPMCLVSFARz4QF8nvSDhLAfW97Ds56Zm9hRJgn8',
  65. 'ret':bytes.fromhex('1c6feab55a4c3b4ad1823d4ecacd1565c64228c01828cf44fb4db1e2d82c3d56')},
  66. {'proto':proto, 's':r32,'compressed':False,'pubkey_type':'std','ret':r32},
  67. {'proto':proto, 's':r32,'compressed':True,'pubkey_type':'std','ret':r32}
  68. )
  69. },
  70. }