money-tree 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,65 @@
1
+ require 'money-tree'
2
+
3
+ describe MoneyTree::PrivateKey do
4
+ before do
5
+ @key = MoneyTree::PrivateKey.new key: "5eae5375fb5f7a0ea650566363befa2830ef441bdcb19198adf318faee86d64b"
6
+ end
7
+
8
+ describe "to_hex" do
9
+ it "has 64 characters" do
10
+ @key.to_hex.length.should == 64
11
+ end
12
+
13
+ it "is a valid hex" do
14
+ @key.to_hex.should == '5eae5375fb5f7a0ea650566363befa2830ef441bdcb19198adf318faee86d64b'
15
+ end
16
+ end
17
+
18
+ describe "to_wif" do
19
+ it "is a 52 character base58 key" do
20
+ @key.to_wif.length.should == 52
21
+ end
22
+
23
+ it "starts with K or L" do
24
+ @key.to_wif[0].should == 'K'
25
+ end
26
+
27
+ it "is a valid compressed wif" do
28
+ @key.to_wif.should == 'KzPkwAXJ4wtXHnbamTaJqoMrzwCUUJaqhUxnqYhnZvZH6KhgmDPK'
29
+ end
30
+ end
31
+
32
+ describe "to_wif(compressed: false)" do
33
+ it "is a 51 character base58 key" do
34
+ @key.to_wif(compressed: false).length.should == 51
35
+ end
36
+
37
+ it "starts with 5" do
38
+ @key.to_wif(compressed: false)[0].should == '5'
39
+ end
40
+
41
+ it "is valid" do
42
+ @key.to_wif(compressed: false).should == '5JXz5ZyFk31oHVTQxqce7yitCmTAPxBqeGQ4b7H3Aj3L45wUhoa'
43
+ end
44
+ end
45
+
46
+ describe "from_wif(wif)" do
47
+ it "returns the key from a wif" do
48
+ @key.from_wif("5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ").should == '0c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d'
49
+ end
50
+
51
+ it "raises an error on bad checksum" do
52
+ lambda { @key.from_wif("5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTBADTJ") }.should raise_error(MoneyTree::Key::InvalidWIFFormat)
53
+ end
54
+ end
55
+
56
+ describe "to_base64" do
57
+ it "has 44 characters" do
58
+ @key.to_base64.length.should == 44
59
+ end
60
+
61
+ it "is a valid base64" do
62
+ @key.to_base64.should == 'Xq5Tdftfeg6mUFZjY776KDDvRBvcsZGYrfMY+u6G1ks='
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,48 @@
1
+ require 'money-tree'
2
+
3
+ describe MoneyTree::PublicKey do
4
+ before do
5
+ @private_key = MoneyTree::PrivateKey.new key: "5eae5375fb5f7a0ea650566363befa2830ef441bdcb19198adf318faee86d64b"
6
+ @key = MoneyTree::PublicKey.new @private_key
7
+ end
8
+
9
+ describe "to_hex(compressed: false)" do
10
+ it "has 65 bytes" do
11
+ @key.to_hex(compressed: false).length.should == 130
12
+ end
13
+
14
+ it "is a valid hex" do
15
+ @key.to_hex(compressed: false).should == '042dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b11203096f1a1c5276a73f91b9465357004c2103cc42c63d6d330df589080d2e4'
16
+ end
17
+ end
18
+
19
+ describe "to_hex" do
20
+ it "has 33 bytes" do
21
+ @key.to_hex.length.should == 66
22
+ end
23
+
24
+ it "is a valid compressed hex" do
25
+ @key.to_hex.should == '022dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b'
26
+ end
27
+ end
28
+
29
+ describe "to_address(compressed: false)" do
30
+ it "has 34 characters" do
31
+ @key.to_address(compressed: false).length.should == 34
32
+ end
33
+
34
+ it "is a valid bitcoin address" do
35
+ @key.to_address(compressed: false).should == '133bJA2xoVqBUsiR3uSkciMo5r15fLAaZg'
36
+ end
37
+ end
38
+
39
+ describe "to_compressed_address" do
40
+ it "has 34 characters" do
41
+ @key.to_address.length.should == 34
42
+ end
43
+
44
+ it "is a valid compressed bitcoin address" do
45
+ @key.to_address.should == '13uVqa35BMo4mYq9LiZrXVzoz9EFZ6aoXe'
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,26 @@
1
+ require 'money-tree'
2
+ include MoneyTree::Support
3
+
4
+ describe MoneyTree::Support do
5
+
6
+ describe "sha256(str)" do
7
+ it "properly calculates sha256 hash" do
8
+ sha256("abc", ascii: true).should == "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"
9
+ sha256("800c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d").should == "8147786c4d15106333bf278d71dadaf1079ef2d2440a4dde37d747ded5403592"
10
+ sha256("8147786c4d15106333bf278d71dadaf1079ef2d2440a4dde37d747ded5403592").should == "507a5b8dfed0fc6fe8801743720cedec06aa5c6fca72b07c49964492fb98a714"
11
+ end
12
+ end
13
+
14
+ describe "ripemd160(str)" do
15
+ it "properly calculates ripemd160 hash" do
16
+ ripemd160("abc", ascii: true).should == "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc"
17
+ ripemd160("e8026715af68676e0287ec9aa774f8103e4bddd5505b209263a8ff97c6ea29cc").should == "166db6510884918f31a9d246404760db8154bf84"
18
+ end
19
+ end
20
+
21
+ describe "hmac_sha512_hex(key, message)" do
22
+ it "properly calculates hmac sha512" do
23
+ hmac_sha512_hex("Jefe", "what do ya want for nothing?").should == "164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737"
24
+ end
25
+ end
26
+ end
metadata ADDED
@@ -0,0 +1,123 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: money-tree
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Micah Winkelspecht
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-09-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: A Ruby Gem implementation of Bitcoin HD Wallets
70
+ email:
71
+ - winkelspecht@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - Gemfile
78
+ - LICENSE.txt
79
+ - README.md
80
+ - Rakefile
81
+ - lib/money-tree.rb
82
+ - lib/money-tree/address.rb
83
+ - lib/money-tree/key.rb
84
+ - lib/money-tree/networks.rb
85
+ - lib/money-tree/node.rb
86
+ - lib/money-tree/support.rb
87
+ - lib/money-tree/version.rb
88
+ - money-tree.gemspec
89
+ - spec/lib/money-tree/address_spec.rb
90
+ - spec/lib/money-tree/node_spec.rb
91
+ - spec/lib/money-tree/private_key_spec.rb
92
+ - spec/lib/money-tree/public_key_spec.rb
93
+ - spec/lib/money-tree/support_spec.rb
94
+ homepage: ''
95
+ licenses:
96
+ - MIT
97
+ metadata: {}
98
+ post_install_message:
99
+ rdoc_options: []
100
+ require_paths:
101
+ - lib
102
+ required_ruby_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ requirements: []
113
+ rubyforge_project:
114
+ rubygems_version: 2.0.6
115
+ signing_key:
116
+ specification_version: 4
117
+ summary: Bitcoin Hierarchical Deterministic Wallets in Ruby! (Bitcoin standard BIP0032)
118
+ test_files:
119
+ - spec/lib/money-tree/address_spec.rb
120
+ - spec/lib/money-tree/node_spec.rb
121
+ - spec/lib/money-tree/private_key_spec.rb
122
+ - spec/lib/money-tree/public_key_spec.rb
123
+ - spec/lib/money-tree/support_spec.rb