tanker-core 2.4.1 → 2.5.0.beta.10

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: 47177c338448fe49539aadaffeac2d9b6985b3a1cd542365ff9b62574e9d8b37
4
- data.tar.gz: 4d89a7bb217d9f5de62e251702da655a81e5ae7f4b84d1e654203d11639a37c6
3
+ metadata.gz: 496d6f80bee00400fe0907f38b89b60e86c64e2247d92827e8216341b8b617b5
4
+ data.tar.gz: e6d81ebbd98dc1e1a7cff73e4d7365b855ec7dea60dc87244652dd79701b4958
5
5
  SHA512:
6
- metadata.gz: 56f4db9b61e87b92f002f242c291d64de64ddd79445e1a2bbe174de7cce84f749d2ddac91f56c6f3741bd7892771785bdba4a78aa750f8bf0f128328f9780672
7
- data.tar.gz: d8aaa442b5d28a87c30faf9d644bb03162ea4986ef8c0f05b0774e0836f712285ebb7a7e423e7cde3e20b88fb9584c98abbd4c6066479b5887e3ed2fa964a290
6
+ metadata.gz: 794f493ca15b7d886903b74c9417cdd3498e38d259fe41a1644a900ae6c9fad7c2b0009b871bfda57c0452d9bfd75a104af2c53c23e9e2df956136d6156d59eb
7
+ data.tar.gz: 79524ccd3f443655b4678375e83bff1862199a53e7e2efccc30c596be73766fc9babb058e2d8d71c216f099fe5ec246bb292c074b112213dff2e9945bf4ca9d7
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2020 Kontrol SAS
1
+ Copyright 2020 Tanker SAS
2
2
 
3
3
  Licensed under the Apache License, Version 2.0 (the "License");
4
4
  you may not use this file except in compliance with the License.
@@ -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.1'
5
+ VERSION = '2.5.0.beta.10'
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.1
4
+ version: 2.5.0.beta.10
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
@@ -182,11 +184,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
182
184
  version: 2.6.0
183
185
  required_rubygems_version: !ruby/object:Gem::Requirement
184
186
  requirements:
185
- - - ">="
187
+ - - ">"
186
188
  - !ruby/object:Gem::Version
187
- version: '0'
189
+ version: 1.3.1
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