tanker-core 2.32.0.beta.1 → 2.32.0.beta.5

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: 7388050def89a42676bbdedeb3da0b75f14cf8617d82db513d705766ca8339ad
4
- data.tar.gz: f72fe6bc43e1c00aaf84f60ce317d2c526f64355e0735e18a79b93a9d7523419
3
+ metadata.gz: daa4b2c0d8815ee230c2b0d527cf4e22bc291caf8e26e1f900bfc13b1d9017d2
4
+ data.tar.gz: 48dc528f83683a21044011b007af7a840be1627bc3ef6d88fb74a2e3d384e7ac
5
5
  SHA512:
6
- metadata.gz: 93ea7d89537663770ecafb2f1c22827f3811bab482658b62b68527afd3581ad36287bacb0c72dac4863b893cbdc75636d54c50d3ed516d22db832baad7a630c4
7
- data.tar.gz: 678d2984cd08a7e0dfa4cf20decfe2be1cfa1c74dd56a21df7336b987d2e035fa80f56077b1eca3265337e2cc956f6db67316da0090af4d2affadcaa6308b282
6
+ metadata.gz: f3248db2c24300af11d21440ec162cccc0af2ed01a5d18b7d40386394940145c06958f4e0a8ee26058cd9668701fe1ce800b6231534f4e8320a55e188e70ad62
7
+ data.tar.gz: c7448b1ec95d804ae6c3cf23678f94fa63b8424eb90afeccf4f93e9f21ad1438a6b682d9af7ba7305969c8f4c30e48693940320a2cabc31d5b6f01f6881bc7a7
@@ -14,7 +14,7 @@ end
14
14
  module Tanker
15
15
  module CTanker
16
16
  def self.get_path(name)
17
- File.expand_path "../../../vendor/tanker/#{FFI::Platform::OS}-#{FFI::Platform::ARCH}/"\
17
+ File.expand_path "../../../vendor/tanker/#{FFI::Platform::OS}-#{FFI::Platform::ARCH}/" \
18
18
  "#{FFI::Platform::LIBPREFIX}#{name}.#{FFI::Platform::LIBSUFFIX}", __dir__
19
19
  end
20
20
 
@@ -47,7 +47,7 @@ module Tanker
47
47
  blocking_attach_function :tanker_attach_provisional_identity, [:session_pointer, :string], CFuture
48
48
  blocking_attach_function :tanker_verify_provisional_identity, [:session_pointer, CVerification], CFuture
49
49
 
50
- blocking_attach_function :tanker_encrypted_size, [:uint64], :uint64
50
+ blocking_attach_function :tanker_encrypted_size, [:uint64, :uint32], :uint64
51
51
  blocking_attach_function :tanker_decrypted_size, [:pointer, :uint64], CFuture
52
52
  blocking_attach_function :tanker_get_resource_id, [:pointer, :uint64], CFuture
53
53
 
@@ -68,7 +68,7 @@ module Tanker
68
68
 
69
69
  blocking_attach_function :tanker_encryption_session_open, [:session_pointer, Tanker::EncryptionOptions], CFuture
70
70
  blocking_attach_function :tanker_encryption_session_close, [:enc_sess_pointer], CFuture
71
- blocking_attach_function :tanker_encryption_session_encrypted_size, [:uint64], :uint64
71
+ blocking_attach_function :tanker_encryption_session_encrypted_size, [:enc_sess_pointer, :uint64], :uint64
72
72
  blocking_attach_function :tanker_encryption_session_get_resource_id, [:enc_sess_pointer], CFuture
73
73
  blocking_attach_function :tanker_encryption_session_encrypt, [:enc_sess_pointer, :pointer,
74
74
  :pointer, :uint64], CFuture
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'tanker/c_tanker'
4
+ require 'tanker/encryption_options'
4
5
  require_relative 'encryption_session'
5
6
 
6
7
  module Tanker
@@ -80,17 +81,19 @@ module Tanker
80
81
 
81
82
  private
82
83
 
83
- def encrypt_common(data, encryption_options = nil)
84
- unless !encryption_options || encryption_options.is_a?(EncryptionOptions)
84
+ def encrypt_common(data, encryption_options)
85
+ unless encryption_options.nil? || encryption_options.is_a?(EncryptionOptions)
85
86
  raise TypeError, "expected encryption_options to be a EncryptionOptions, but got a #{encryption_options.class}"
86
87
  end
87
88
 
88
89
  inbuf = FFI::MemoryPointer.from_string(data)
89
90
 
90
- encrypted_size = CTanker.tanker_encrypted_size data.bytesize
91
+ options = encryption_options || EncryptionOptions.new
92
+
93
+ encrypted_size = CTanker.tanker_encrypted_size(data.bytesize, options[:padding_step])
91
94
  outbuf = FFI::MemoryPointer.new(:char, encrypted_size)
92
95
 
93
- CTanker.tanker_encrypt(@ctanker, outbuf, inbuf, data.bytesize, encryption_options).get
96
+ CTanker.tanker_encrypt(@ctanker, outbuf, inbuf, data.bytesize, options).get
94
97
 
95
98
  outbuf.read_string encrypted_size
96
99
  end
@@ -33,7 +33,7 @@ module Tanker
33
33
  def encrypt_common(data)
34
34
  inbuf = FFI::MemoryPointer.from_string(data)
35
35
 
36
- encrypted_size = CTanker.tanker_encryption_session_encrypted_size data.bytesize
36
+ encrypted_size = CTanker.tanker_encryption_session_encrypted_size(@csession, data.bytesize)
37
37
  outbuf = FFI::MemoryPointer.new(:char, encrypted_size)
38
38
 
39
39
  CTanker.tanker_encryption_session_encrypt(@csession, outbuf, inbuf, data.bytesize).get
@@ -138,6 +138,11 @@ module Tanker
138
138
  body: fresponse.body
139
139
  CTanker.tanker_http_handle_response(request.crequest, cresponse)
140
140
  end
141
+ rescue Faraday::ConnectionFailed => e
142
+ # This can happen if Faraday is using a proxy, and it rejects the request
143
+ # If we get a 500 from the proxy, we want to differentiate this from a real server error
144
+ cresponse = CTanker::CHttpResponse.new_error "#{e.class}: #{e.message}"
145
+ CTanker.tanker_http_handle_response(request.crequest, cresponse)
141
146
  rescue Exception => e # rubocop:disable Lint/RescueException I do want to rescue all exceptions
142
147
  # NOTE: when debugging, you might want to uncomment this to print a full backtrace
143
148
  # puts "HTTP request error:\n#{e.full_message}"
@@ -14,7 +14,7 @@ module Tanker
14
14
  end
15
15
  end
16
16
 
17
- def self.set_log_handler(&block) # rubocop:disable Naming/AccessorMethodName
17
+ def self.set_log_handler(&block)
18
18
  @log_handler_set = 1
19
19
  @log_handler = lambda do |clog|
20
20
  block.call LogRecord.new clog[:category], clog[:level], clog[:file], clog[:line], clog[:message]
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Tanker
4
4
  class Core
5
- VERSION = '2.32.0.beta.1'
5
+ VERSION = '2.32.0.beta.5'
6
6
 
7
7
  def self.native_version
8
8
  CTanker.tanker_version_string
@@ -6,7 +6,8 @@ require 'tanker/c_tanker/c_string'
6
6
  module Tanker
7
7
  # Options that can be given when encrypting data
8
8
  class EncryptionOptions < FFI::Struct
9
- def initialize(share_with_users: [], share_with_groups: [], share_with_self: true)
9
+ def initialize(share_with_users: [], share_with_groups: [], share_with_self: true,
10
+ padding_step: Padding::AUTO)
10
11
  super()
11
12
 
12
13
  @users_objs = share_with_users.map { |id| CTanker.new_cstring id }
@@ -17,12 +18,13 @@ module Tanker
17
18
  groups = FFI::MemoryPointer.new(:pointer, share_with_groups.length)
18
19
  groups.write_array_of_pointer(@groups_objs)
19
20
 
20
- self[:version] = 3
21
+ self[:version] = 4
21
22
  self[:recipient_public_identities] = users
22
23
  self[:nb_recipient_public_identities] = share_with_users.length
23
24
  self[:recipient_group_ids] = groups
24
25
  self[:nb_recipient_group_ids] = share_with_groups.length
25
26
  self[:share_with_self] = share_with_self
27
+ self[:padding_step] = padding_step.native_value
26
28
  end
27
29
 
28
30
  layout :version, :uint8,
@@ -30,6 +32,33 @@ module Tanker
30
32
  :nb_recipient_public_identities, :uint32,
31
33
  :recipient_group_ids, :pointer,
32
34
  :nb_recipient_group_ids, :uint32,
33
- :share_with_self, :bool
35
+ :share_with_self, :bool,
36
+ :padding_step, :uint32
37
+ end
38
+
39
+ class Padding
40
+ private_class_method :new
41
+ attr_reader :native_value
42
+
43
+ def initialize(native_value)
44
+ super()
45
+ @native_value = native_value
46
+ end
47
+
48
+ AUTO = new 0
49
+ OFF = new 1
50
+
51
+ def self.step(value)
52
+ unless value.is_a?(Integer)
53
+ raise TypeError,
54
+ "expected step to be an Integer >= 2, but got a #{value.class}"
55
+ end
56
+ unless value >= 2
57
+ raise ArgumentError,
58
+ "expected step to be an Integer >= 2, but got #{value}"
59
+ end
60
+
61
+ new(value)
62
+ end
34
63
  end
35
64
  end
metadata CHANGED
@@ -1,127 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tanker-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.32.0.beta.1
4
+ version: 2.32.0.beta.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tanker team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-28 00:00:00.000000000 Z
11
+ date: 2022-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: ffi
14
+ name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.13'
19
+ version: 0.17.5
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.13'
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '2.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '2.0'
41
- - !ruby/object:Gem::Dependency
42
- name: bundler-audit
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '0.7'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '0.7'
26
+ version: 0.17.5
55
27
  - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '13.0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '13.0'
69
- - !ruby/object:Gem::Dependency
70
- name: rspec
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '3.0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '3.0'
83
- - !ruby/object:Gem::Dependency
84
- name: rubocop
28
+ name: ffi
85
29
  requirement: !ruby/object:Gem::Requirement
86
30
  requirements:
87
31
  - - "~>"
88
32
  - !ruby/object:Gem::Version
89
33
  version: '1.13'
90
- type: :development
34
+ type: :runtime
91
35
  prerelease: false
92
36
  version_requirements: !ruby/object:Gem::Requirement
93
37
  requirements:
94
38
  - - "~>"
95
39
  - !ruby/object:Gem::Version
96
40
  version: '1.13'
97
- - !ruby/object:Gem::Dependency
98
- name: rubygems-tasks
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: 0.2.5
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: 0.2.5
111
- - !ruby/object:Gem::Dependency
112
- name: tanker-identity
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '0.1'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '0.1'
125
41
  description: |
126
42
  Ruby bindings for the Tanker SDK.
127
43
  Tanker is a platform as a service that allows you to easily protect your users' data with end-to-end encryption through a SDK
@@ -172,8 +88,8 @@ licenses:
172
88
  - Apache-2.0
173
89
  metadata:
174
90
  homepage_uri: https://tanker.io
175
- source_code_uri: https://github.com/TankerHQ/sdk-ruby
176
91
  rubygems_mfa_required: 'true'
92
+ source_code_uri: https://github.com/TankerHQ/sdk-ruby
177
93
  post_install_message:
178
94
  rdoc_options: []
179
95
  require_paths:
@@ -182,7 +98,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
182
98
  requirements:
183
99
  - - ">="
184
100
  - !ruby/object:Gem::Version
185
- version: 2.6.0
101
+ version: 2.7.0
186
102
  required_rubygems_version: !ruby/object:Gem::Requirement
187
103
  requirements:
188
104
  - - ">"