selfsdk 0.0.155 → 0.0.160

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: 6e392ef3787bd32981273e008ba7e111e90432a639d6bdfa6183537ffc7bf54e
4
- data.tar.gz: 8416b8046e8b0d82d0b20df66e88948914800dabd708ab0baee028c7c202e42a
3
+ metadata.gz: b9e34e9c7b71fd0ee4cf1c8ed30a9febf6173f32a04914e5b20f267d8fd416fa
4
+ data.tar.gz: b2965cd517a8e8d189ae5a054cb98c8d8bd2ce37d29cadf16fc6ae100e65f877
5
5
  SHA512:
6
- metadata.gz: 2b9f14d63812415c0769c9e3664199b64478772e7a059f0479b47047b5ac0728dbfe05533a2181c497a1e35059f1ee94d129be148e1ccc156f14ae25d5f99cf3
7
- data.tar.gz: 5a8b438a22a9f2af22616c7294513fafd19e53c38a42b29d6f0dcc0008819fdb3adac8b4ac81c015cb0286596f901f07961e1a031402a95f94aa6bb805f34efb
6
+ metadata.gz: bac951c530244b572a3c9ffc32da0ac19d2c5fa43f3367c161994cde6e2a476fbcd14f1c1cc9f9ca90c71037cca4082dd4a0f114b59443730f7162b3db765d0b
7
+ data.tar.gz: 041e7a4eb12edb86530d4d9c93192bd230aa620b88e8585aaf49c808b28f7f0b1d5ad176e111d0d62b0aa5a2f0b74e2cf950fd531bca82f537df26d4c077ab4e
@@ -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,6 +57,7 @@ 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
62
  m.to_device = @messaging.device_id
62
63
  m.from_device = @to_device
@@ -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: body,
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.155
4
+ version: 0.0.160
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aldgate Ventures