lightning-onion 0.2.6 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +5 -5
  2. data/.ruby-version +1 -1
  3. data/lib/lightning/onion/failure_messages/amount_below_minimum.rb +3 -3
  4. data/lib/lightning/onion/failure_messages/channel_disabled.rb +3 -3
  5. data/lib/lightning/onion/failure_messages/expiry_too_far.rb +2 -2
  6. data/lib/lightning/onion/failure_messages/expiry_too_soon.rb +3 -3
  7. data/lib/lightning/onion/failure_messages/fee_insufficient.rb +3 -3
  8. data/lib/lightning/onion/failure_messages/final_expiry_too_soon.rb +3 -3
  9. data/lib/lightning/onion/failure_messages/final_incorrect_cltv_expiry.rb +2 -2
  10. data/lib/lightning/onion/failure_messages/final_incorrect_htlc_amount.rb +2 -2
  11. data/lib/lightning/onion/failure_messages/incorrect_cltv_expiry.rb +3 -3
  12. data/lib/lightning/onion/failure_messages/incorrect_payment_amount.rb +3 -3
  13. data/lib/lightning/onion/failure_messages/invalid_onion_hmac.rb +3 -3
  14. data/lib/lightning/onion/failure_messages/invalid_onion_key.rb +3 -3
  15. data/lib/lightning/onion/failure_messages/invalid_onion_version.rb +3 -3
  16. data/lib/lightning/onion/failure_messages/invalid_realm.rb +3 -3
  17. data/lib/lightning/onion/failure_messages/permanent_channel_failure.rb +3 -3
  18. data/lib/lightning/onion/failure_messages/permanent_node_failure.rb +2 -2
  19. data/lib/lightning/onion/failure_messages/required_channel_feature_missing.rb +2 -2
  20. data/lib/lightning/onion/failure_messages/required_node_feature_missing.rb +2 -2
  21. data/lib/lightning/onion/failure_messages/temporary_channel_failure.rb +3 -3
  22. data/lib/lightning/onion/failure_messages/temporary_node_failure.rb +2 -2
  23. data/lib/lightning/onion/failure_messages/unknown_next_peer.rb +2 -2
  24. data/lib/lightning/onion/failure_messages/unknown_payment_hash.rb +3 -3
  25. data/lib/lightning/onion/failure_messages.rb +24 -57
  26. data/lib/lightning/onion/sphinx.rb +1 -0
  27. data/lib/lightning/onion/version.rb +1 -1
  28. data/lib/lightning/onion.rb +1 -1
  29. data/lightning-onion.gemspec +1 -1
  30. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 2c6806de17849e69c6989e9ee721d72f5b65970c
4
- data.tar.gz: cda740daf5f7ed956b53c0c9dce39469ac717b71
2
+ SHA256:
3
+ metadata.gz: 9cc1140de863ddf69d940e23377106aef0c9403b7186a6c659cae59703b15713
4
+ data.tar.gz: 75b3378abe3ee65e02df8866cea2d21752e06eb187e8352e40b86fda52729210
5
5
  SHA512:
6
- metadata.gz: fe55f5943e8f57bb3a14119978ea98ff1dcc377e4fc94ea2d8bcd4faa5660fae1b26b0a7044e8a2c2e61bdc45000e469a1c27593d772f1b00838b417cc7ae169
7
- data.tar.gz: 3e0e1834d0f26fef6b0e8403e2d3627c2aef2e57b98aaad74db73b3de8acc00b98f12c2d7f5c50324818acb1c83978717a2379d36a10c8c88295ac1a393d14b7
6
+ metadata.gz: b8f8043b6420760cb4a211a5c4342c30bb07647d090109b5d432eefd7e2fc9b324872019c0d045d029bbf5baeabe98dd8ab950f5849a35f265a053e69b11da99
7
+ data.tar.gz: d244305278a85f1f7e0a920345c8b7924f1446b326cd303fbb8c6544f227b0203fe9618a21150fbc393e413b6bf395c43d93ad459e9889aa6f5e804720401a0b
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.4.1
1
+ 2.5.1
@@ -5,12 +5,12 @@ module Lightning
5
5
  module FailureMessages
6
6
  module AmountBelowMinimum
7
7
  def to_payload
8
- [type_code, htlc_msat, channel_update.htb.bytesize].pack('nq>n') + channel_update.htb
8
+ [TYPES[:amount_below_minimum], htlc_msat, channel_update.htb.bytesize].pack('nq>n') + channel_update.htb
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- type_code, htlc_msat, len, rest = payload.unpack('nq>nH*')
13
- new(type_code, htlc_msat, rest[0..len * 2])
12
+ htlc_msat, len, rest = payload.unpack('q>nH*')
13
+ new(htlc_msat, rest[0..len * 2])
14
14
  end
15
15
  end
16
16
  end
@@ -5,12 +5,12 @@ module Lightning
5
5
  module FailureMessages
6
6
  module ChannelDisabled
7
7
  def to_payload
8
- [type_code].pack('n') + flags + [channel_update.htb.bytesize].pack('n') + channel_update.htb
8
+ [TYPES[:channel_disabled], flags, channel_update.htb.bytesize].pack('nH4n') + channel_update.htb
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- type_code, flags, len, rest = payload.unpack('na4nH*')
13
- new(type_code, flags, rest[0..len * 2])
12
+ flags, len, rest = payload.unpack('H4nH*')
13
+ new(flags, rest[0..len * 2])
14
14
  end
15
15
  end
16
16
  end
@@ -5,11 +5,11 @@ module Lightning
5
5
  module FailureMessages
6
6
  module ExpiryTooFar
7
7
  def to_payload
8
- [type_code].pack('n')
8
+ [TYPES[:expiry_too_far]].pack('n')
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- new(*payload.unpack('n'))
12
+ ExpiryTooFar
13
13
  end
14
14
  end
15
15
  end
@@ -5,12 +5,12 @@ module Lightning
5
5
  module FailureMessages
6
6
  module ExpiryTooSoon
7
7
  def to_payload
8
- [type_code, channel_update.htb.bytesize].pack('nn') + channel_update.htb
8
+ [TYPES[:expiry_too_soon], channel_update.htb.bytesize].pack('n2') + channel_update.htb
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- type_code, len, rest = payload.unpack('nnH*')
13
- new(type_code, rest[0..len * 2])
12
+ len, rest = payload.unpack('nH*')
13
+ new(rest[0..len * 2])
14
14
  end
15
15
  end
16
16
  end
@@ -5,12 +5,12 @@ module Lightning
5
5
  module FailureMessages
6
6
  module FeeInsufficient
7
7
  def to_payload
8
- [type_code, htlc_msat, channel_update.htb.bytesize].pack('nq>n') + channel_update.htb
8
+ [TYPES[:fee_insufficient], htlc_msat, channel_update.htb.bytesize].pack('nq>n') + channel_update.htb
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- type_code, htlc_msat, len, rest = payload.unpack('nq>nH*')
13
- new(type_code, htlc_msat, rest[0..len * 2])
12
+ htlc_msat, len, rest = payload.unpack('q>nH*')
13
+ new(htlc_msat, rest[0..len * 2])
14
14
  end
15
15
  end
16
16
  end
@@ -5,11 +5,11 @@ module Lightning
5
5
  module FailureMessages
6
6
  module FinalExpiryTooSoon
7
7
  def to_payload
8
- [type_code].pack('n')
8
+ [TYPES[:final_expiry_too_soon]].pack('n')
9
9
  end
10
10
 
11
- def self.load(payload)
12
- new(*payload.unpack('n'))
11
+ def self.load(_)
12
+ FinalExpiryTooSoon
13
13
  end
14
14
  end
15
15
  end
@@ -5,11 +5,11 @@ module Lightning
5
5
  module FailureMessages
6
6
  module FinalIncorrectCltvExpiry
7
7
  def to_payload
8
- [type_code, cltv_expiry].pack('nq>')
8
+ [TYPES[:final_incorrect_cltv_expiry], cltv_expiry].pack('nq>')
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- new(*payload.unpack('nq>'))
12
+ new(*payload.unpack('q>'))
13
13
  end
14
14
  end
15
15
  end
@@ -5,11 +5,11 @@ module Lightning
5
5
  module FailureMessages
6
6
  module FinalIncorrectHtlcAmount
7
7
  def to_payload
8
- [type_code, incoming_htlc_amt].pack('nq>')
8
+ [TYPES[:final_incorrect_htlc_amount], incoming_htlc_amt].pack('nq>')
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- new(*payload.unpack('nq>'))
12
+ new(*payload.unpack('q>'))
13
13
  end
14
14
  end
15
15
  end
@@ -5,12 +5,12 @@ module Lightning
5
5
  module FailureMessages
6
6
  module IncorrectCltvExpiry
7
7
  def to_payload
8
- [type_code, cltv_expiry, channel_update.htb.bytesize].pack('nq>n') + channel_update.htb
8
+ [TYPES[:incorrect_cltv_expiry], cltv_expiry, channel_update.htb.bytesize].pack('nq>n') + channel_update.htb
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- type_code, cltv_expiry, len, rest = payload.unpack('nq>nH*')
13
- new(type_code, cltv_expiry, rest[0..len * 2])
12
+ cltv_expiry, len, rest = payload.unpack('q>nH*')
13
+ new(cltv_expiry, rest[0..len * 2])
14
14
  end
15
15
  end
16
16
  end
@@ -5,11 +5,11 @@ module Lightning
5
5
  module FailureMessages
6
6
  module IncorrectPaymentAmount
7
7
  def to_payload
8
- [type_code].pack('n')
8
+ [TYPES[:incorrect_payment_amount]].pack('n')
9
9
  end
10
10
 
11
- def self.load(payload)
12
- new(*payload.unpack('n'))
11
+ def self.load(_)
12
+ IncorrectPaymentAmount
13
13
  end
14
14
  end
15
15
  end
@@ -5,12 +5,12 @@ module Lightning
5
5
  module FailureMessages
6
6
  module InvalidOnionHmac
7
7
  def to_payload
8
- [type_code, sha256_of_onion.htb.bytesize].pack('nn') + sha256_of_onion.htb
8
+ [TYPES[:invalid_onion_hmac], sha256_of_onion.htb.bytesize].pack('n2') + sha256_of_onion.htb
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- type_code, len, rest = payload.unpack('nnH*')
13
- new(type_code, rest[0..len * 2])
12
+ len, rest = payload.unpack('nH*')
13
+ new(rest[0..len * 2])
14
14
  end
15
15
  end
16
16
  end
@@ -5,12 +5,12 @@ module Lightning
5
5
  module FailureMessages
6
6
  module InvalidOnionKey
7
7
  def to_payload
8
- [type_code, sha256_of_onion.htb.bytesize].pack('nn') + sha256_of_onion.htb
8
+ [TYPES[:invalid_onion_key], sha256_of_onion.htb.bytesize].pack('n2') + sha256_of_onion.htb
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- type_code, len, rest = payload.unpack('nnH*')
13
- new(type_code, rest[0..len * 2])
12
+ len, rest = payload.unpack('nH*')
13
+ new(rest[0..len * 2])
14
14
  end
15
15
  end
16
16
  end
@@ -5,12 +5,12 @@ module Lightning
5
5
  module FailureMessages
6
6
  module InvalidOnionVersion
7
7
  def to_payload
8
- [type_code, sha256_of_onion.htb.bytesize].pack('nn') + sha256_of_onion.htb
8
+ [TYPES[:invalid_onion_version], sha256_of_onion.htb.bytesize].pack('n2') + sha256_of_onion.htb
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- type_code, len, rest = payload.unpack('nnH*')
13
- new(type_code, rest[0..len * 2])
12
+ len, rest = payload.unpack('nH*')
13
+ new(rest[0..len * 2])
14
14
  end
15
15
  end
16
16
  end
@@ -5,11 +5,11 @@ module Lightning
5
5
  module FailureMessages
6
6
  module InvalidRealm
7
7
  def to_payload
8
- [type_code].pack('n')
8
+ [TYPES[:invalid_realm]].pack('n')
9
9
  end
10
10
 
11
- def self.load(payload)
12
- new(*payload.unpack('n'))
11
+ def self.load(_)
12
+ InvalidRealm
13
13
  end
14
14
  end
15
15
  end
@@ -5,11 +5,11 @@ module Lightning
5
5
  module FailureMessages
6
6
  module PermanentChannelFailure
7
7
  def to_payload
8
- [type_code].pack('n')
8
+ [TYPES[:permanent_channel_failure]].pack('n')
9
9
  end
10
10
 
11
- def self.load(payload)
12
- new(*payload.unpack('n'))
11
+ def self.load(_)
12
+ PermanentChannelFailure
13
13
  end
14
14
  end
15
15
  end
@@ -5,11 +5,11 @@ module Lightning
5
5
  module FailureMessages
6
6
  module PermanentNodeFailure
7
7
  def to_payload
8
- [type_code].pack('n')
8
+ [TYPES[:permanent_node_failure]].pack('n')
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- new(*payload.unpack('n'))
12
+ PermanentNodeFailure
13
13
  end
14
14
  end
15
15
  end
@@ -5,11 +5,11 @@ module Lightning
5
5
  module FailureMessages
6
6
  module RequiredChannelFeatureMissing
7
7
  def to_payload
8
- [type_code].pack('n')
8
+ [TYPES[:required_channel_feature_missing]].pack('n')
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- new(*payload.unpack('n'))
12
+ RequiredChannelFeatureMissing
13
13
  end
14
14
  end
15
15
  end
@@ -5,11 +5,11 @@ module Lightning
5
5
  module FailureMessages
6
6
  module RequiredNodeFeatureMissing
7
7
  def to_payload
8
- [type_code].pack('n')
8
+ [TYPES[:required_node_feature_missing]].pack('n')
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- new(*payload.unpack('n'))
12
+ RequiredNodeFeatureMissing
13
13
  end
14
14
  end
15
15
  end
@@ -5,12 +5,12 @@ module Lightning
5
5
  module FailureMessages
6
6
  module TemporaryChannelFailure
7
7
  def to_payload
8
- [type_code, channel_update.bytesize].pack('nn') + channel_update.htb
8
+ [TYPES[:temporary_channel_failure], channel_update.bytesize].pack('n2') + channel_update.htb
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- type_code, len, rest = payload.unpack('nnH*')
13
- new(type_code, rest[0..len * 2])
12
+ len, rest = payload.unpack('nH*')
13
+ new(rest[0..len * 2])
14
14
  end
15
15
  end
16
16
  end
@@ -5,11 +5,11 @@ module Lightning
5
5
  module FailureMessages
6
6
  module TemporaryNodeFailure
7
7
  def to_payload
8
- [type_code].pack('n')
8
+ [TYPES[:temporary_node_failure]].pack('n')
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- new(*payload.unpack('n'))
12
+ TemporaryNodeFailure
13
13
  end
14
14
  end
15
15
  end
@@ -5,11 +5,11 @@ module Lightning
5
5
  module FailureMessages
6
6
  module UnknownNextPeer
7
7
  def to_payload
8
- [type_code].pack('n')
8
+ [TYPES[:unknown_next_peer]].pack('n')
9
9
  end
10
10
 
11
11
  def self.load(payload)
12
- new(*payload.unpack('n'))
12
+ UnknownNextPeer
13
13
  end
14
14
  end
15
15
  end
@@ -5,11 +5,11 @@ module Lightning
5
5
  module FailureMessages
6
6
  module UnknownPaymentHash
7
7
  def to_payload
8
- [type_code].pack('n')
8
+ [TYPES[:unknown_payment_hash]].pack('n')
9
9
  end
10
10
 
11
- def self.load(payload)
12
- new(*payload.unpack('n'))
11
+ def self.load(_)
12
+ UnknownPaymentHash
13
13
  end
14
14
  end
15
15
  end
@@ -41,87 +41,54 @@ module Lightning
41
41
  }.freeze
42
42
 
43
43
  FailureMessage = Algebrick.type do
44
- InvalidRealm = type do
45
- fields! type_code: Numeric
46
- end
47
- TemporaryNodeFailure = type do
48
- fields! type_code: Numeric
49
- end
50
- PermanentNodeFailure = type do
51
- fields! type_code: Numeric
52
- end
53
- RequiredNodeFeatureMissing = type do
54
- fields! type_code: Numeric
55
- end
44
+ InvalidRealm = atom
45
+ TemporaryNodeFailure = atom
46
+ PermanentNodeFailure = atom
47
+ RequiredNodeFeatureMissing = atom
56
48
  InvalidOnionVersion = type do
57
- fields! type_code: Numeric,
58
- sha256_of_onion: String
49
+ fields! sha256_of_onion: String
59
50
  end
60
51
  InvalidOnionHmac = type do
61
- fields! type_code: Numeric,
62
- sha256_of_onion: String
52
+ fields! sha256_of_onion: String
63
53
  end
64
54
  InvalidOnionKey = type do
65
- fields! type_code: Numeric,
66
- sha256_of_onion: String
55
+ fields! sha256_of_onion: String
67
56
  end
68
57
  TemporaryChannelFailure = type do
69
- fields! type_code: Numeric,
70
- channel_update: String
71
- end
72
- PermanentChannelFailure = type do
73
- fields! type_code: Numeric
74
- end
75
- RequiredChannelFeatureMissing = type do
76
- fields! type_code: Numeric
77
- end
78
- UnknownNextPeer = type do
79
- fields! type_code: Numeric
58
+ fields! channel_update: String
80
59
  end
60
+ PermanentChannelFailure = atom
61
+ RequiredChannelFeatureMissing = atom
62
+ UnknownNextPeer = atom
81
63
  AmountBelowMinimum = type do
82
- fields! type_code: Numeric,
83
- htlc_msat: Numeric,
64
+ fields! htlc_msat: Numeric,
84
65
  channel_update: String
85
66
  end
86
67
  FeeInsufficient = type do
87
- fields! type_code: Numeric,
88
- htlc_msat: Numeric,
68
+ fields! htlc_msat: Numeric,
89
69
  channel_update: String
90
70
  end
91
71
  IncorrectCltvExpiry = type do
92
- fields! type_code: Numeric,
93
- cltv_expiry: Numeric,
72
+ fields! cltv_expiry: Numeric,
94
73
  channel_update: String
95
74
  end
96
75
  ExpiryTooSoon = type do
97
- fields! type_code: Numeric,
98
- channel_update: String
99
- end
100
- UnknownPaymentHash = type do
101
- fields! type_code: Numeric
102
- end
103
- IncorrectPaymentAmount = type do
104
- fields! type_code: Numeric
105
- end
106
- FinalExpiryTooSoon = type do
107
- fields! type_code: Numeric
76
+ fields! channel_update: String
108
77
  end
78
+ UnknownPaymentHash = atom
79
+ IncorrectPaymentAmount = atom
80
+ FinalExpiryTooSoon = atom
109
81
  FinalIncorrectCltvExpiry = type do
110
- fields! type_code: Numeric,
111
- cltv_expiry: Numeric
82
+ fields! cltv_expiry: Numeric
112
83
  end
113
84
  FinalIncorrectHtlcAmount = type do
114
- fields! type_code: Numeric,
115
- incoming_htlc_amt: Numeric
85
+ fields! incoming_htlc_amt: Numeric
116
86
  end
117
87
  ChannelDisabled = type do
118
- fields! type_code: Numeric,
119
- flags: String,
88
+ fields! flags: String,
120
89
  channel_update: String
121
90
  end
122
- ExpiryTooFar = type do
123
- fields! type_code: Numeric
124
- end
91
+ ExpiryTooFar = atom
125
92
  variants InvalidRealm,
126
93
  TemporaryNodeFailure,
127
94
  PermanentNodeFailure,
@@ -147,11 +114,11 @@ module Lightning
147
114
  end
148
115
 
149
116
  def self.load(payload)
150
- type, = payload.unpack('na*')
117
+ type, rest = payload.unpack('na*')
151
118
  message_class = FailureMessage.variants.find do |t|
152
119
  TYPES[t.name.split('::').last.snake.to_sym] == type
153
120
  end
154
- message_class.load(payload)
121
+ message_class.load(rest)
155
122
  end
156
123
 
157
124
  require 'lightning/onion/failure_messages/invalid_realm'
@@ -38,6 +38,7 @@ module Lightning
38
38
 
39
39
  # @return payload 33bytes payload of the outermost layer of onions,which including realm
40
40
  # @return packet
41
+ # @return Shared Secret
41
42
  def self.parse(private_key, raw_packet)
42
43
  packet = Lightning::Onion::Packet.parse(raw_packet)
43
44
  shared_secret = compute_shared_secret(packet.public_key, private_key)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Lightning
4
4
  module Onion
5
- VERSION = '0.2.6'
5
+ VERSION = '0.2.8'
6
6
  end
7
7
  end
@@ -4,7 +4,7 @@ require 'lightning/onion/version'
4
4
 
5
5
  require 'algebrick'
6
6
  require 'bitcoin'
7
- require 'rbnacl'
7
+ require 'rbnacl/libsodium'
8
8
 
9
9
  require 'lightning/utils/string'
10
10
 
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.add_runtime_dependency 'algebrick'
24
24
  spec.add_runtime_dependency 'bitcoinrb'
25
- spec.add_runtime_dependency 'rbnacl'
25
+ spec.add_runtime_dependency 'rbnacl-libsodium'
26
26
 
27
27
  spec.add_development_dependency 'bundler', '~> 1.12'
28
28
  spec.add_development_dependency 'rake', '~> 10.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lightning-onion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hajime Yamaguchi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-01 00:00:00.000000000 Z
11
+ date: 2018-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: algebrick
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rbnacl
42
+ name: rbnacl-libsodium
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -166,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
166
  version: '0'
167
167
  requirements: []
168
168
  rubyforge_project:
169
- rubygems_version: 2.6.11
169
+ rubygems_version: 2.7.6
170
170
  signing_key:
171
171
  specification_version: 4
172
172
  summary: Onion routing for the Lightning Network.