tanker-core 2.26.0.alpha.2 → 2.26.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a02a6574cb69334df6878a6341e7e63f80ab79344524ad528b488d81fc8ba8fb
4
- data.tar.gz: 8e644c43bbe8cd986ffd8337c3ebe504534d605435d1cb7e8bf4aca6de3b24e2
3
+ metadata.gz: 801c76b9378656d9e8acb296cc835bd1a32823b5aaf7fd93353625a6e24bb464
4
+ data.tar.gz: 604eea378290e8e56367d77b6cb7e5343d6818a11c3b5da964028af1a7e9fad0
5
5
  SHA512:
6
- metadata.gz: 04ab68bb697d6e9974f80d31a55eb31fec942cbab4cb6dcd110507c3b0e5cd1aa9e93c22fe2b9f8b939965a58f0224f3573751d1093108004e89b4800e67b43c
7
- data.tar.gz: 6b286414a4881db854d3c23ed6db0ede4b45ac09488a3a5e0f996f00530ac32cf807ea5c79eded94dbc88860114e3c5c6c324b9d2c006c5298e80f7527e116c2
6
+ metadata.gz: 81036aafb0c2bda28ad57dd320c79e02a0cdb09e1b5e4a33e482f4703ceffa5573d00fff33bd79500a41d06f8769f2ecc724df4364c403f837c16391c9f82302
7
+ data.tar.gz: 68903a2dafe8443546df9ace550069746ea9ad15bc697890d974410457e32f0b444991d8af856c1b08dec1fa1c4e597cacb8092db55d433689ffcec11260f715
@@ -7,9 +7,10 @@ module Tanker
7
7
  class Admin
8
8
  class AppUpdateOptions < FFI::Struct
9
9
  def initialize(oidc_client_id: nil, oidc_client_provider: nil,
10
- session_certificates: nil, preverified_verification: nil)
10
+ session_certificates: nil, preverified_verification: nil,
11
+ user_enrollment: nil)
11
12
  super()
12
- self[:version] = 2
13
+ self[:version] = 3
13
14
  unless oidc_client_id.nil?
14
15
  @oidc_client_id = CTanker.new_cstring oidc_client_id
15
16
  self[:oidc_client_id] = @oidc_client_id
@@ -24,19 +25,26 @@ module Tanker
24
25
  @session_certificates = boolptr
25
26
  self[:session_certificates] = @session_certificates
26
27
  end
27
- unless preverified_verification.nil? # rubocop:disable Style/GuardClause no different than the other parameters
28
+ unless preverified_verification.nil?
28
29
  boolptr = FFI::MemoryPointer.new(:bool, 1)
29
30
  boolptr.put(:bool, 0, preverified_verification)
30
31
  @preverified_verification = boolptr
31
32
  self[:preverified_verification] = @preverified_verification
32
33
  end
34
+ unless user_enrollment.nil? # rubocop:disable Style/GuardClause no different than the other parameters
35
+ boolptr = FFI::MemoryPointer.new(:bool, 1)
36
+ boolptr.put(:bool, 0, user_enrollment)
37
+ @user_enrollment = boolptr
38
+ self[:user_enrollment] = @user_enrollment
39
+ end
33
40
  end
34
41
 
35
42
  layout :version, :uint8,
36
43
  :oidc_client_id, :pointer,
37
44
  :oidc_client_provider, :pointer,
38
45
  :session_certificates, :pointer,
39
- :preverified_verification, :pointer
46
+ :preverified_verification, :pointer,
47
+ :user_enrollment, :pointer
40
48
  end
41
49
  end
42
50
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ffi'
4
+ require 'tanker/core/verification'
5
+ require 'tanker/c_tanker/c_string'
6
+
7
+ module Tanker
8
+ module CTanker
9
+ class CDatastoreOptions < FFI::Struct
10
+ layout :open, :pointer,
11
+ :close, :pointer,
12
+ :nuke, :pointer,
13
+ :put_serialized_device, :pointer,
14
+ :find_serialized_device, :pointer,
15
+ :put_cache_values, :pointer,
16
+ :find_cache_values, :pointer
17
+ end
18
+
19
+ class CHttpOptions < FFI::Struct
20
+ layout :send_request, :pointer,
21
+ :cancel_request, :pointer,
22
+ :data, :pointer
23
+ end
24
+ end
25
+ end
@@ -104,5 +104,32 @@ module Tanker
104
104
  self[:version] = 5
105
105
  end
106
106
  end
107
+
108
+ class CVerificationList < FFI::Struct
109
+ layout :version, :uint8,
110
+ :verifications, :pointer,
111
+ :count, :uint32
112
+
113
+ def initialize(verifications)
114
+ super()
115
+
116
+ unless verifications.is_a?(Array)
117
+ raise TypeError, 'Verifications argument is not an Array[Tanker::Verification]'
118
+ end
119
+
120
+ self[:version] = 1
121
+ self[:count] = verifications.length
122
+
123
+ # NOTE: Instance variables are required to keep the CVerifications alive
124
+ @verifications = []
125
+ self[:verifications] = FFI::MemoryPointer.new(CVerification, self[:count])
126
+ verifications.each_with_index do |verification, idx|
127
+ @verifications.push(CVerification.new(verification))
128
+ # NOTE: memcopy
129
+ str = @verifications[idx].pointer.read_bytes CVerification.size
130
+ self[:verifications].put_bytes(idx * CVerification.size, str, 0, CVerification.size)
131
+ end
132
+ end
133
+ end
107
134
  end
108
135
  end
@@ -40,6 +40,7 @@ module Tanker
40
40
  blocking_attach_function :tanker_create, [Tanker::Core::Options], CFuture
41
41
  blocking_attach_function :tanker_destroy, [:session_pointer], CFuture
42
42
  blocking_attach_function :tanker_start, [:session_pointer, :string], CFuture
43
+ blocking_attach_function :tanker_enroll_user, [:session_pointer, :string, CVerificationList], CFuture
43
44
  blocking_attach_function :tanker_register_identity, [:session_pointer, CVerification,
44
45
  Tanker::VerificationOptions], CFuture
45
46
  blocking_attach_function :tanker_verify_identity, [:session_pointer, CVerification,
@@ -28,9 +28,9 @@ module Tanker
28
28
  decrypted_size = CTanker.tanker_decrypted_size(inbuf, data.bytesize).get.address
29
29
  outbuf = FFI::MemoryPointer.new(:char, decrypted_size)
30
30
 
31
- clear_size = CTanker.tanker_decrypt(@ctanker, outbuf, inbuf, data.bytesize).get.address
31
+ CTanker.tanker_decrypt(@ctanker, outbuf, inbuf, data.bytesize).get
32
32
 
33
- outbuf.read_string clear_size
33
+ outbuf.read_string decrypted_size
34
34
  end
35
35
 
36
36
  def decrypt_utf8(data)
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'ffi'
4
4
  require 'tanker/c_tanker/c_string'
5
+ require 'tanker/c_tanker/c_backends'
5
6
 
6
7
  module Tanker
7
8
  # Options that can be given when opening a Tanker session
@@ -9,26 +10,31 @@ module Tanker
9
10
  layout :version, :uint8,
10
11
  :app_id, :pointer,
11
12
  :url, :pointer,
12
- :writable_path, :pointer,
13
+ :persistent_path, :pointer,
14
+ :cache_path, :pointer,
13
15
  :sdk_type, :pointer,
14
- :sdk_version, :pointer
16
+ :sdk_version, :pointer,
17
+ :http_options, CTanker::CHttpOptions,
18
+ :datastore_options, CTanker::CDatastoreOptions
15
19
 
16
20
  SDK_TYPE = 'client-ruby'
17
21
  SDK_VERSION = CTanker.new_cstring Core::VERSION
18
22
 
19
- def initialize(app_id:, url: nil, sdk_type: SDK_TYPE, writable_path: nil)
23
+ def initialize(app_id:, url: nil, sdk_type: SDK_TYPE, persistent_path: nil, cache_path: nil)
20
24
  super()
21
25
 
22
26
  # NOTE: Instance variables are required to keep the CStrings alive
23
27
  @app_id = CTanker.new_cstring app_id
24
28
  @url = CTanker.new_cstring url
25
- @writable_path = CTanker.new_cstring writable_path
29
+ @persistent_path = CTanker.new_cstring persistent_path
30
+ @cache_path = CTanker.new_cstring cache_path
26
31
  @sdk_type = CTanker.new_cstring sdk_type
27
32
 
28
- self[:version] = 2
33
+ self[:version] = 4
29
34
  self[:app_id] = @app_id
30
35
  self[:url] = @url
31
- self[:writable_path] = @writable_path
36
+ self[:persistent_path] = @persistent_path
37
+ self[:cache_path] = @cache_path
32
38
  self[:sdk_type] = @sdk_type
33
39
  self[:sdk_version] = SDK_VERSION
34
40
  end
@@ -11,6 +11,11 @@ module Tanker
11
11
  CTanker.tanker_start(@ctanker, identity).get.address
12
12
  end
13
13
 
14
+ def enroll_user(identity, verifications)
15
+ cverifs = CTanker::CVerificationList.new(verifications)
16
+ CTanker.tanker_enroll_user(@ctanker, identity, cverifs).get
17
+ end
18
+
14
19
  def generate_verification_key
15
20
  CTanker.tanker_generate_verification_key(@ctanker).get_string
16
21
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Tanker
4
4
  class Core
5
- VERSION = '2.26.0.alpha.2'
5
+ VERSION = '2.26.0'
6
6
 
7
7
  def self.native_version
8
8
  CTanker.tanker_version_string
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tanker-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.26.0.alpha.2
4
+ version: 2.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tanker team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-09 00:00:00.000000000 Z
11
+ date: 2022-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -140,6 +140,7 @@ files:
140
140
  - lib/tanker/admin/c_admin/c_app_descriptor.rb
141
141
  - lib/tanker/admin/c_admin/c_app_update_options.rb
142
142
  - lib/tanker/c_tanker.rb
143
+ - lib/tanker/c_tanker/c_backends.rb
143
144
  - lib/tanker/c_tanker/c_device_info.rb
144
145
  - lib/tanker/c_tanker/c_event.rb
145
146
  - lib/tanker/c_tanker/c_future.rb
@@ -187,9 +188,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
187
188
  version: 2.6.0
188
189
  required_rubygems_version: !ruby/object:Gem::Requirement
189
190
  requirements:
190
- - - ">"
191
+ - - ">="
191
192
  - !ruby/object:Gem::Version
192
- version: 1.3.1
193
+ version: '0'
193
194
  requirements: []
194
195
  rubygems_version: 3.0.3.1
195
196
  signing_key: