enveloperb 0.1.2 → 0.1.4

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: 259684581e23b0717b031f45484264fa36912b958e5e89cf488a84820ea033f4
4
- data.tar.gz: c3a4a55b10770848b2ed5070754eff61669bd584eeb6d046cb6fcad91881f26a
3
+ metadata.gz: 1ba53e0a6672ecc675655f6d0e4d6fbee843d335c58a65a4af4ad8d4eaa66f73
4
+ data.tar.gz: 290a0c2823e0ac04ccef3327d373d3705e2e030829106b7ab24587117a9258aa
5
5
  SHA512:
6
- metadata.gz: 505d54237e7f6626e450a365c8ebf0b9b42c83a9c04715796089690d78c0cd7b2f9785aa611ab2529ace3860e8101e00598ffa427cd259c80ea84b10c2d31bb5
7
- data.tar.gz: 9e18bcf8ea30d26d34050ebffbab91ebc6d15cd8494a986281011cb31176579319be87599a88b8a3ad1a9044efd4c43b341ceba1de1596798db7d41a6209937c
6
+ metadata.gz: a8ef6e0b3a551e1a6f8a7baff17498529f42ba63864539035e49d121b11f569363d28285e92f23a7d955d2e7a9dd77c8c05918fd5c001094b687bfee7c4e5092
7
+ data.tar.gz: cc563953876a6690d9ccf859e2bc6329a6cf1711c71972e107031a9245d74a3ed26c548c221ca7869e123f5e4fae025e67e25baefe9c207d60465d630cf3daad
data/Cargo.toml CHANGED
@@ -6,7 +6,7 @@ edition = "2021"
6
6
  [dependencies]
7
7
  enveloper = { git = "https://github.com/cipherstash/enveloper", branch = "main" }
8
8
  lazy_static = "^0.2.2"
9
- rutie = "0.8.4"
9
+ rutie = { version = "0.8.4", features = ["no-link"] }
10
10
  tokio = { version = "^1.17.0", features = [ "rt-multi-thread" ] }
11
11
  aws-config = "0.10.1"
12
12
  aws-sdk-kms = "0.10.1"
data/README.md CHANGED
@@ -19,24 +19,22 @@ Except for testing purposes, it is not common to use envelope encryption in situ
19
19
 
20
20
  # Installation
21
21
 
22
- In order to build the `enveloperb` gem, you must have Rust 1.31.0 or later installed.
23
- On an ARM-based platform, you must use Rust nightly, for SIMD intrinsics support.
22
+ For the most common platforms, we provide "native" gems (which have the shared object that provides the cryptographic primitives pre-compiled).
23
+ At present, we provide native gems for:
24
24
 
25
- With that available, you should be able to install it like any other gem:
25
+ * Linux `x86_64` and `aarch64`
26
+ * macOS `x86_64` and `arm64`
26
27
 
27
- gem install enveloperb
28
+ On these platforms, you can just install the `enveloperb` gem via your preferred method, and it should "just work".
29
+ If it doesn't, please [report that as a bug](https://github.com/cipherstash/enveloperb/issues).
28
30
 
29
- There's also the wonders of [the Gemfile](http://bundler.io):
31
+ For other platforms, you will need to install the source gem, which requires that you have Rust 1.31.0 or later installed.
32
+ On ARM-based platforms, you must use Rust nightly, for SIMD intrinsics support.
30
33
 
31
- gem 'enveloperb'
34
+ ## Installing from Git
32
35
 
33
- If you're the sturdy type that likes to run from git:
34
-
35
- bundle install
36
- rake install
37
-
38
- Or, if you've eschewed the convenience of Rubygems entirely, then you
39
- presumably know what to do already.
36
+ If you have a burning need to install directly from a checkout of the git repository, you can do so by running `bundle install && rake install`.
37
+ As this is a source-based installation, you will need to have Rust installed, as described above.
40
38
 
41
39
 
42
40
  # Usage
data/enveloperb.gemspec CHANGED
@@ -24,10 +24,9 @@ Gem::Specification.new do |s|
24
24
 
25
25
  s.required_ruby_version = ">= 2.7.0"
26
26
 
27
- s.add_runtime_dependency "rutie", "~> 0.0.4"
27
+ s.add_runtime_dependency 'fiddle', '~> 1.1'
28
28
 
29
29
  s.add_development_dependency 'bundler'
30
- s.add_development_dependency 'gem-compiler'
31
30
  s.add_development_dependency 'github-release'
32
31
  s.add_development_dependency 'guard-rspec'
33
32
  s.add_development_dependency 'rake', '~> 10.4', '>= 10.4.2'
data/ext/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  task :build do
2
2
  sh "cargo build --release"
3
+ mv "../target/release/libenveloperb.#{RbConfig::CONFIG["SOEXT"]}", "../lib"
3
4
  end
4
5
 
5
6
  task default: :build
data/lib/enveloperb.rb CHANGED
@@ -1,7 +1,13 @@
1
- require "rutie"
1
+ require "fiddle"
2
2
 
3
- module Enveloperb
4
- Rutie.new(:enveloperb).init 'Init_enveloperb', __dir__
3
+ begin
4
+ Fiddle::Function.new(Fiddle.dlopen("#{__dir__}/#{RbConfig::CONFIG["ruby_version"]}/libenveloperb.#{RbConfig::CONFIG["SOEXT"]}")["Init_libenveloperb"], [], Fiddle::TYPE_VOIDP).call
5
+ rescue Fiddle::DLError
6
+ begin
7
+ Fiddle::Function.new(Fiddle.dlopen("#{__dir__}/libenveloperb.#{RbConfig::CONFIG["SOEXT"]}")["Init_libenveloperb"], [], Fiddle::TYPE_VOIDP).call
8
+ rescue Fiddle::DLError
9
+ raise LoadError, "Failed to initialize libenveloperb.#{RbConfig::CONFIG["SOEXT"]}; either it hasn't been built, or was built incorrectly for your system"
10
+ end
5
11
  end
6
12
 
7
13
  require_relative "./enveloperb/encrypted_record"
data/src/lib.rs CHANGED
@@ -173,8 +173,8 @@ methods!(
173
173
 
174
174
  #[allow(non_snake_case)]
175
175
  #[no_mangle]
176
- pub extern "C" fn Init_enveloperb() {
177
- Module::from_existing("Enveloperb").define(|envmod| {
176
+ pub extern "C" fn Init_libenveloperb() {
177
+ Module::new("Enveloperb").define(|envmod| {
178
178
  envmod.define_nested_class("Simple", None).define(|klass| {
179
179
  klass.singleton_class().def_private("_new", enveloperb_simple_new);
180
180
  klass.def_private("_encrypt", enveloperb_simple_encrypt);
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enveloperb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Palmer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-29 00:00:00.000000000 Z
11
+ date: 2022-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rutie
14
+ name: fiddle
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.0.4
19
+ version: '1.1'
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: 0.0.4
26
+ version: '1.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: gem-compiler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: github-release
57
43
  requirement: !ruby/object:Gem::Requirement