selfsdk 0.0.161 → 0.0.166

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c7562e018dee44a3bb70e3f52dcc12dc2e5a5824d68e3d85e9810e1b48afb06
4
- data.tar.gz: 831bc7d29fabf7e32dbde64b6fa6d9b8b8466c8e3b203d024d45d4697d96b407
3
+ metadata.gz: 8c85c6fa67915d806be363e234ac87b2bdffc6d331a48a273f48f737bb476fa6
4
+ data.tar.gz: fadf3e8a7df24cb74b71fc0e695f647b94510afb4092e58ca86f9aa6e0d2deaa
5
5
  SHA512:
6
- metadata.gz: 159b597aded28279b54b8a1b1e70dd54f04603b012a0487aa7dd95db0412e8d063e5a3b0af5acfb8711f41918d33cca6038704e136fe6fb6a1ed50773df1990d
7
- data.tar.gz: c3c42b8c818150bff70d43b821bf73087925a81535abceabb45f293f3ded2c8b916d4b8f7e4d34da7cde9ba4916414d943c09212358727221800e9d369e09d0f
6
+ metadata.gz: dfc07013f91c98b460991df709e4526fe86ee37d6f26818d87fe3c29c10c99ec69401d1c51a1f7ab80f1a7bad1248ce81cb7091fa469d584863d962e6c39effa
7
+ data.tar.gz: 7f3455f82fd7a2dec5579dd67d4a43a80ffc3fb24b35f90f7ab82bffd86d264e8760154decc7119ffc9c9fc6976669f2804f0f8222c7f52a6a0e4ebe55496cc5
@@ -9,7 +9,7 @@ module SelfSDK
9
9
  module Messages
10
10
  class AuthenticationMessage < Base
11
11
 
12
- def parse(input, original=nil)
12
+ def parse(input, envelope=nil)
13
13
  @input = input
14
14
  @typ = @typ
15
15
  @payload = get_payload input
@@ -21,6 +21,10 @@ module SelfSDK
21
21
  @expires = ::Time.parse(payload[:exp])
22
22
  @issued = ::Time.parse(payload[:iat])
23
23
  @status = payload[:status]
24
+ if envelope
25
+ issuer = envelope.sender.split(":")
26
+ @from_device = issuer.last
27
+ end
24
28
  end
25
29
  end
26
30
  end
data/lib/messages/base.rb CHANGED
@@ -27,10 +27,12 @@ module SelfSDK
27
27
  res
28
28
  end
29
29
 
30
- def send_message
30
+ def send_message(device_id = nil)
31
31
  check_credits!
32
+ dds = devices
33
+ dds = [device_id] if device_id
32
34
  res = []
33
- devices.each do |d|
35
+ dds.each do |d|
34
36
  res << @messaging.send_message(proto(d))
35
37
  SelfSDK.logger.info "asynchronously requested information to #{@to}:#{d}"
36
38
  end
@@ -39,17 +39,23 @@ module SelfSDK
39
39
  end
40
40
  end
41
41
 
42
- def parse(input)
42
+ def parse(input, envelope=nil)
43
43
  @input = input
44
44
  @typ = MSG_TYPE
45
45
  @payload = get_payload input
46
46
  @id = @payload[:cid]
47
47
  @from = @payload[:iss]
48
48
  @to = @payload[:sub]
49
+ @audience = payload[:aud]
49
50
  @expires = @payload[:exp]
50
51
  @description = @payload.include?(:description) ? @payload[:description] : nil
51
52
  @facts = @payload[:facts]
52
53
  @options = @payload[:options]
54
+
55
+ if envelope
56
+ issuer = envelope.sender.split(":")
57
+ @from_device = issuer.last
58
+ end
53
59
  end
54
60
 
55
61
  def build_response
@@ -59,8 +65,6 @@ module SelfSDK
59
65
  m.to = @from
60
66
  m.sub = @to
61
67
  m.audience = @from
62
- m.to_device = @from_device
63
- m.from_device = @to_device
64
68
  m.facts = @facts
65
69
  m
66
70
  end
@@ -13,7 +13,7 @@ module SelfSDK
13
13
 
14
14
  attr_accessor :facts, :audience
15
15
 
16
- def parse(input)
16
+ def parse(input, envelope=nil)
17
17
  @input = input
18
18
  @typ = MSG_TYPE
19
19
  @payload = get_payload input
@@ -35,6 +35,10 @@ module SelfSDK
35
35
  SelfSDK.logger.info e.message
36
36
  end
37
37
  end
38
+ if envelope
39
+ issuer = envelope.sender.split(":")
40
+ @from_device = issuer.last
41
+ end
38
42
  end
39
43
 
40
44
  def fact(name)
@@ -81,8 +85,7 @@ module SelfSDK
81
85
  protected
82
86
 
83
87
  def proto(to_device)
84
-
85
-
88
+ @to_device = to_device
86
89
  Msgproto::Message.new(
87
90
  type: Msgproto::MsgType::MSG,
88
91
  id: SecureRandom.uuid,
@@ -10,11 +10,13 @@ require_relative "authentication_req"
10
10
  module SelfSDK
11
11
  module Messages
12
12
  def self.parse(input, messaging, original=nil)
13
+ envelope = nil
13
14
  body = if input.is_a? String
14
- input
15
+ input
15
16
  else
16
- issuer = input.sender.split(":")
17
- messaging.encryption_client.decrypt(input.ciphertext, issuer.first, issuer.last)
17
+ envelope = input
18
+ issuer = input.sender.split(":")
19
+ messaging.encryption_client.decrypt(input.ciphertext, issuer.first, issuer.last)
18
20
  end
19
21
 
20
22
  jwt = JSON.parse(body, symbolize_names: true)
@@ -23,16 +25,16 @@ module SelfSDK
23
25
  case payload[:typ]
24
26
  when "identities.facts.query.req"
25
27
  m = FactRequest.new(messaging)
26
- m.parse(body)
28
+ m.parse(body, envelope)
27
29
  when "identities.facts.query.resp"
28
30
  m = FactResponse.new(messaging)
29
- m.parse(body)
31
+ m.parse(body, envelope)
30
32
  when "identities.authenticate.resp"
31
33
  m = AuthenticationResp.new(messaging)
32
- m.parse(body)
34
+ m.parse(body, envelope)
33
35
  when "identities.authenticate.req"
34
36
  m = AuthenticationReq.new(messaging)
35
- m.parse(body)
37
+ m.parse(body, envelope)
36
38
  else
37
39
  raise StandardError.new("Invalid message type.")
38
40
  end
data/lib/messaging.rb CHANGED
@@ -286,6 +286,14 @@ module SelfSDK
286
286
  @acks["authentication"][:waiting_cond].wait_while { @acks["authentication"][:waiting] }
287
287
  @acks.delete("authentication")
288
288
  end
289
+ # In case this does not succeed start the process again.
290
+ if @acks.include? 'authentication'
291
+ if @acks['authentication'][:waiting]
292
+ close
293
+ start_connection
294
+ end
295
+ @acks.delete("authentication")
296
+ end
289
297
  end
290
298
 
291
299
  # Cleans expired messages
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selfsdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.161
4
+ version: 0.0.166
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aldgate Ventures