selfsdk 0.0.156 → 0.0.161

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: 60b6d8b51dbc4342626614a4e46fef73108e2682a64720a6e2258660a89ef82e
4
- data.tar.gz: a5c531247384f1b2f7306caea9786f113e1a19332c276e53b9c7647744f58d5b
3
+ metadata.gz: 6c7562e018dee44a3bb70e3f52dcc12dc2e5a5824d68e3d85e9810e1b48afb06
4
+ data.tar.gz: 831bc7d29fabf7e32dbde64b6fa6d9b8b8466c8e3b203d024d45d4697d96b407
5
5
  SHA512:
6
- metadata.gz: 4d4627bf6291729efa8a8de5fc80f3999d9a6580f9fb76ecb07dc911be9cfa4f1c1844e0069082394c70934a1831d85b55efdf1ac619f298736216489516e0b0
7
- data.tar.gz: a09427be697a2be3c1cfd745c482146ee07f428a26b5fab80d6f89fdc7fc8e6cfdcf3fb2e31084f54c3be8514ba48f49561cd452db2cb0a64f4c8fbd91df294d
6
+ metadata.gz: 159b597aded28279b54b8a1b1e70dd54f04603b012a0487aa7dd95db0412e8d063e5a3b0af5acfb8711f41918d33cca6038704e136fe6fb6a1ed50773df1990d
7
+ data.tar.gz: c3c42b8c818150bff70d43b821bf73087925a81535abceabb45f293f3ded2c8b916d4b8f7e4d34da7cde9ba4916414d943c09212358727221800e9d369e09d0f
@@ -8,7 +8,7 @@ module SelfSDK
8
8
  @client = client
9
9
  @device = device
10
10
  @storage_key = storage_key
11
- @storage_folder = storage_folder
11
+ @storage_folder = "#{storage_folder}/#{@client.jwt.key_id}"
12
12
 
13
13
  if File.exist?(account_path)
14
14
  # 1a) if alice's account file exists load the pickle from the file
@@ -112,7 +112,7 @@ module SelfSDK
112
112
  "#{@storage_folder}/account.pickle"
113
113
  end
114
114
 
115
- def session_path(selfid, device)
115
+ def session_path(selfid, device)
116
116
  "#{@storage_folder}/#{selfid}:#{device}-session.pickle"
117
117
  end
118
118
  end
@@ -2,6 +2,8 @@
2
2
 
3
3
  # frozen_string_literal: true
4
4
 
5
+ require_relative '../ntptime'
6
+
5
7
  module SelfSDK
6
8
  module Messages
7
9
  class Attestation
@@ -42,6 +44,7 @@ module SelfSDK
42
44
  o = {
43
45
  sub: @to,
44
46
  iss: @origin,
47
+ iat: SelfSDK::Time.now.strftime('%FT%TZ'),
45
48
  source: @source,
46
49
  fact: @fact_name,
47
50
  expected_value: @expected_value,
@@ -57,8 +57,9 @@ module SelfSDK
57
57
  m.id = @id
58
58
  m.from = @to
59
59
  m.to = @from
60
+ m.sub = @to
60
61
  m.audience = @from
61
- m.to_device = @messaging.device_id
62
+ m.to_device = @from_device
62
63
  m.from_device = @to_device
63
64
  m.facts = @facts
64
65
  m
@@ -60,15 +60,13 @@ module SelfSDK
60
60
  end
61
61
  end
62
62
 
63
- protected
64
-
65
- def proto(to_device)
63
+ def body
66
64
  encoded_facts = []
67
65
  @facts.each do |fact|
68
66
  encoded_facts.push(fact.to_hash)
69
67
  end
70
- body = @jwt.prepare(
71
- typ: MSG_TYPE,
68
+
69
+ { typ: MSG_TYPE,
72
70
  iss: @jwt.id,
73
71
  sub: @sub || @to,
74
72
  aud: @audience,
@@ -77,15 +75,20 @@ module SelfSDK
77
75
  cid: @id,
78
76
  jti: SecureRandom.uuid,
79
77
  status: @status,
80
- facts: encoded_facts,
81
- )
78
+ facts: encoded_facts }
79
+ end
80
+
81
+ protected
82
+
83
+ def proto(to_device)
84
+
82
85
 
83
86
  Msgproto::Message.new(
84
87
  type: Msgproto::MsgType::MSG,
85
88
  id: SecureRandom.uuid,
86
89
  sender: "#{@jwt.id}:#{@messaging.device_id}",
87
90
  recipient: "#{@to}:#{@to_device}",
88
- ciphertext: encrypt_message(body, @to, @to_device)
91
+ ciphertext: encrypt_message(@jwt.prepare(body), @to, @to_device)
89
92
  )
90
93
  end
91
94
  end
@@ -45,13 +45,17 @@ module SelfSDK
45
45
  @timeout = 120 # seconds
46
46
  @device_id = options.fetch(:device_id, DEFAULT_DEVICE)
47
47
  @auto_reconnect = options.fetch(:auto_reconnect, DEFAULT_AUTO_RECONNECT)
48
- @storage_dir = options.fetch(:storage_dir, DEFAULT_STORAGE_DIR)
48
+ @raw_storage_dir = options.fetch(:storage_dir, DEFAULT_STORAGE_DIR)
49
+ @storage_dir = "#{@raw_storage_dir}/apps/#{@jwt.id}/devices/#{@device_id}"
50
+ FileUtils.mkdir_p @storage_dir unless File.exist? @storage_dir
49
51
  @offset_file = "#{@storage_dir}/#{@jwt.id}:#{@device_id}.offset"
50
52
  @offset = read_offset
53
+ migrate_old_storage_format
51
54
 
52
- FileUtils.mkdir_p @storage_dir unless File.exist? @storage_dir
53
55
  unless options.include? :no_crypto
54
- @encryption_client = Crypto.new(@client, @device_id, @storage_dir, storage_key)
56
+ crypto_path = "#{@storage_dir}/keys"
57
+ FileUtils.mkdir_p crypto_path unless File.exist? crypto_path
58
+ @encryption_client = Crypto.new(@client, @device_id, crypto_path, storage_key)
55
59
  end
56
60
 
57
61
  if options.include? :ws
@@ -439,15 +443,36 @@ module SelfSDK
439
443
  return 0 unless File.exist? @offset_file
440
444
 
441
445
  File.open(@offset_file, 'rb') do |f|
442
- return f.read.unpack('q')[0]
446
+ return f.read.to_i
443
447
  end
444
448
  end
445
449
 
446
450
  def write_offset(offset)
447
451
  File.open(@offset_file, 'wb') do |f|
448
452
  f.flock(File::LOCK_EX)
449
- f.write([offset].pack('q'))
453
+ f.write(offset.to_s.rjust(19, "0"))
454
+ end
455
+ end
456
+
457
+ def migrate_old_storage_format
458
+ # Move the offset file
459
+ old_offset_file = "#{@raw_storage_dir}/#{@jwt.id}:#{@device_id}.offset"
460
+ if File.file?(old_offset_file)
461
+ File.open(old_offset_file, 'rb') do |f|
462
+ offset = f.read.unpack('q')[0]
463
+ write_offset(offset)
464
+ end
465
+ File.delete(old_offset_file)
466
+ end
467
+
468
+ # Move all pickle files
469
+ crypto_path = "#{@storage_dir}/keys/#{@jwt.key_id}"
470
+ FileUtils.mkdir_p crypto_path unless File.exist? crypto_path
471
+ Dir[File.join(@raw_storage_dir, "*.pickle")].each do |file|
472
+ filename = File.basename(file, ".pickle")
473
+ File.rename file, "#{crypto_path}/#{filename}.pickle"
450
474
  end
475
+
451
476
  end
452
477
  end
453
478
  end
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.156
4
+ version: 0.0.161
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aldgate Ventures