tanker-core 2.32.0.alpha.3 → 2.32.0.alpha.5

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: 35807b63789da11922bba195e97ad38426d94d2ae88c4d7d86738f9aa81d29b3
4
- data.tar.gz: a71c96a6f18fdfbf5a6006e06268f841aeee930431786b0e5e7822333d429d2f
3
+ metadata.gz: 4e726e4d86e8f10f63f84de044cc21f237f4e60f4ade11a68bd2747dddff355e
4
+ data.tar.gz: fbd6d3f4ec2bb7b0b1c3b89047fb6b8aa288c6ce87b99e9176c0bc20ba29309c
5
5
  SHA512:
6
- metadata.gz: 268e586fd6b4753efe053d4d7d837a920fe20e3914f4e83c47b84d414f49e971ea0b874d8c608dd9495827b769847fc8fd05b9a02d21f01dd5bacc677dcc2e49
7
- data.tar.gz: e08552e46eb8c589e281f5fb77d85c585cfaaccd67baf037972f2cb9c0714dc4b2fe237b507ac64d8716d03ca6477c64f442430510864800ec761859af3e3a4d
6
+ metadata.gz: e402996baf9d60f1560949b357f9ecf4f64c5993940e4e1f787d6eaec34ab30cc82d3f609095f3129c47f7c2df08ee2ce6d981ef8cec2d4781fabf8e5f461369
7
+ data.tar.gz: 78ac03a3fe9bd102e93d15d1b75e4dc1a663b782d6ecfb7baa00db879dc609c118e58f10751a804e1f66989c1ee53cf0da059eba47987fa19141413e72d0af4f
@@ -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
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Tanker
4
4
  class Core
5
- VERSION = '2.32.0.alpha.3'
5
+ VERSION = '2.32.0.alpha.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,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tanker-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.32.0.alpha.3
4
+ version: 2.32.0.alpha.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-15 00:00:00.000000000 Z
11
+ date: 2022-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi