tanker-core 2.4.2 → 2.5.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: 58d3bb4f3507a91646d35abf258091dd70ac67448918e1ae740c57d7853cf6a7
4
- data.tar.gz: 5957f005ee52f329551a20c038b0672911b5930e772eb6ae1289c22e1409889e
3
+ metadata.gz: a679a4adda85f80bb146bf73a365982a492c65ddf4c4930fc688c38796e624b8
4
+ data.tar.gz: 62a6fc4e808225298bbf8a30b494780a6e81f47e5c66904014f56f1754cc957a
5
5
  SHA512:
6
- metadata.gz: 42566745f1f997e845b04d59e76999abb18f938ebf16ba637e4ecf77bbd51cfb60e93875dec55e3f66c06c84234159d57a3907580d01e5292656a06675d21387
7
- data.tar.gz: 94abebfe0253967a31637c02436578068482540805f29f28693c86ef5f0b305d59516ddc2346ffa07cf6de1887ff312c033ef8caff2230847a6d2cfb69bc7d43
6
+ metadata.gz: 952d8771ff38bc23dd80aeb45fd87d41481484c3900f9676d2ea4266e04dd06246c811c13fb72a481082a895ca526e16a0fb96475333f2ed11302287b04ca62b
7
+ data.tar.gz: 41c19bea75dec5c26e2c17b6bc4435c85917df1edff5756663847a10f3f1fcc692d0f9b197e17219358723afc342523ab1b2ed8540c44c1ff252e81ee4a359bb
@@ -2,14 +2,14 @@
2
2
 
3
3
  require 'ffi'
4
4
  require 'tanker/c_tanker/c_future'
5
+ require 'tanker/c_tanker/c_lib'
5
6
 
6
7
  module Tanker
7
8
  class Admin
8
9
  module CAdmin
9
10
  extend FFI::Library
10
11
 
11
- ffi_lib "#{__dir__}/../../../vendor/libctanker/linux64/tanker/lib/libtanker_admin-c.so"
12
-
12
+ ffi_lib Tanker::CTanker.get_path('tanker_admin-c')
13
13
  typedef :pointer, :admin_pointer
14
14
 
15
15
  # Note: We use those CFutures with the tanker_future_* functions exposed by CTanker,
@@ -4,6 +4,7 @@ require 'ffi'
4
4
  require_relative 'core/options'
5
5
  require_relative 'sharing_options'
6
6
  require_relative 'encryption_options'
7
+ require_relative 'c_tanker/c_lib'
7
8
  require_relative 'c_tanker/c_future'
8
9
  require_relative 'c_tanker/c_verification'
9
10
  require_relative 'c_tanker/c_verification_method'
@@ -22,8 +23,7 @@ end
22
23
  module Tanker
23
24
  module CTanker
24
25
  extend FFI::Library
25
-
26
- ffi_lib "#{__dir__}/../../vendor/libctanker/linux64/tanker/lib/libctanker.so"
26
+ ffi_lib get_path('ctanker')
27
27
 
28
28
  typedef :pointer, :session_pointer
29
29
  typedef :pointer, :enc_sess_pointer
@@ -2,13 +2,14 @@
2
2
 
3
3
  require 'ffi'
4
4
  require 'tanker/error'
5
+ require 'tanker/c_tanker/c_lib'
5
6
  require_relative 'c_tanker_error'
6
7
 
7
8
  module Tanker
8
9
  module CTanker
9
10
  extend FFI::Library
10
11
 
11
- ffi_lib "#{__dir__}/../../../vendor/libctanker/linux64/tanker/lib/libctanker.so"
12
+ ffi_lib get_path('ctanker')
12
13
 
13
14
  class CFuture < FFI::AutoPointer
14
15
  def initialize(ptr, proc = nil, &block)
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tanker::CTanker
4
+ def self.get_path(name)
5
+ if /darwin/ =~ RUBY_PLATFORM
6
+ ext = '.dylib'
7
+ subdir = 'mac64'
8
+ else
9
+ ext = '.so'
10
+ subdir = 'linux64'
11
+ end
12
+
13
+ File.expand_path "../../../vendor/libctanker/#{subdir}/tanker/lib/lib#{name}#{ext}", __dir__
14
+ end
15
+ end
@@ -8,8 +8,11 @@ module Tanker
8
8
  def initialize(options)
9
9
  @revoke_event_handlers = Set.new
10
10
  @ctanker = CTanker.tanker_create(options).get
11
+ @freed = false
11
12
  ctanker_addr = @ctanker.address
12
13
  ObjectSpace.define_finalizer(@ctanker) do |_|
14
+ next if @freed
15
+
13
16
  CTanker.tanker_destroy(FFI::Pointer.new(:void, ctanker_addr)).get
14
17
  end
15
18
 
@@ -19,6 +22,18 @@ module Tanker
19
22
  CTanker.tanker_event_connect(@ctanker, CTanker::CTankerEvent::DEVICE_REVOKED, @device_revoked_handler, nil).get
20
23
  end
21
24
 
25
+ def free
26
+ @freed = true
27
+ CTanker.tanker_destroy(@ctanker).get
28
+ @ctanker = nil
29
+
30
+ public_methods(false).each do |method|
31
+ send(:define_singleton_method, method) do |*_|
32
+ raise "using Tanker::Core##{method} after free"
33
+ end
34
+ end
35
+ end
36
+
22
37
  def self.set_log_handler(&block) # rubocop:disable Naming/AccessorMethodName
23
38
  @log_handler = lambda do |clog|
24
39
  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.4.2'
5
+ VERSION = '2.5.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.4.2
4
+ version: 2.5.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: 2020-07-03 00:00:00.000000000 Z
11
+ date: 2020-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -142,6 +142,7 @@ files:
142
142
  - lib/tanker/c_tanker/c_device_info.rb
143
143
  - lib/tanker/c_tanker/c_event.rb
144
144
  - lib/tanker/c_tanker/c_future.rb
145
+ - lib/tanker/c_tanker/c_lib.rb
145
146
  - lib/tanker/c_tanker/c_log_record.rb
146
147
  - lib/tanker/c_tanker/c_string.rb
147
148
  - lib/tanker/c_tanker/c_tanker_error.rb
@@ -165,6 +166,7 @@ files:
165
166
  - lib/tanker/error.rb
166
167
  - lib/tanker/sharing_options.rb
167
168
  - vendor/libctanker/linux64/tanker/lib/libctanker.so
169
+ - vendor/libctanker/mac64/tanker/lib/libctanker.dylib
168
170
  homepage: https://tanker.io
169
171
  licenses:
170
172
  - Apache-2.0
@@ -186,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
188
  - !ruby/object:Gem::Version
187
189
  version: '0'
188
190
  requirements: []
189
- rubygems_version: 3.0.8
191
+ rubygems_version: 3.0.3
190
192
  signing_key:
191
193
  specification_version: 4
192
194
  summary: Ruby SDK for Tanker