enquo-core 0.6.0.7.gc8b36a2-aarch64-linux → 0.6.0.11.g8d4f25f-aarch64-linux

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: 618797fec66b66aca2607aee57341ec0628caa8d9a6fd96b25f8e0b5039497dc
4
- data.tar.gz: 929f196513dbd61d5f371ac61ac61f0d68e3b30e171171b6d985ce226c3ea39b
3
+ metadata.gz: d3d5018ef2fe9b6e9df6223ac1d39552a78480754fa0e46de1215a406e3c3ef4
4
+ data.tar.gz: 76a64c9bc45063fb24371f6d117fc068a7cd2b8af5579378e53ac0332c0aa91c
5
5
  SHA512:
6
- metadata.gz: '039ef72659a4ce2f0bc43cafb8b0fbc1bab8814ee3bc8ddfcb508ebdb16bf5c1819a60a4e2bbead9158a3a09e469c26d55dc53a3fc68ede619f59092bae46bdf'
7
- data.tar.gz: 193369d6fc1ee63461a28dd6b67ce3db500e03e253bf756cf20f699279eff9606de825848b2f1dffcce729b994ab99849bb0f8ececeaaa4d83a517a4efe8665f
6
+ metadata.gz: 0c70e6a25cc93931c73f8066335b669c4b59e807759dc192f9092eaf5f931cc94a96e15776f4724d46a3879a4b6e21433a76b5aad3e46f88122f25a2179fe792
7
+ data.tar.gz: 8db907ddff6a3723aee4fbdbe71259e74ba1c3aa2c246d1f714042ecf2caf4e8fc54d0b1aa5e4529fd31906dfe745071323ae54edf266f85c352c410f9ae4e41
data/enquo-core.gemspec CHANGED
@@ -24,15 +24,17 @@ Gem::Specification.new do |s|
24
24
  s.metadata["bug_tracker_uri"] = "https://github.com/enquo/enquo-core/issues"
25
25
 
26
26
  s.files = `git ls-files -z`.split("\0").reject { |f| f =~ /^(G|spec|Rakefile)/ }
27
+ s.extensions = ["ext/enquo/extconf.rb"]
27
28
 
28
29
  s.required_ruby_version = ">= 2.7.0"
29
30
 
31
+ s.add_runtime_dependency 'rb_sys', '~> 0.1'
32
+
30
33
  s.add_development_dependency 'bundler'
31
34
  s.add_development_dependency 'github-release'
32
35
  s.add_development_dependency 'rake', '~> 13.0'
33
36
  s.add_development_dependency 'rake-compiler', '~> 1.2'
34
37
  s.add_development_dependency 'rake-compiler-dock', '~> 1.2'
35
- s.add_development_dependency 'rb_sys', '~> 0.1'
36
38
  s.add_development_dependency 'redcarpet'
37
39
  s.add_development_dependency 'rspec'
38
40
  s.add_development_dependency 'simplecov'
data/ext/enquo/Cargo.lock CHANGED
@@ -211,9 +211,9 @@ dependencies = [
211
211
 
212
212
  [[package]]
213
213
  name = "cretrit"
214
- version = "0.2.0"
214
+ version = "0.4.1"
215
215
  source = "registry+https://github.com/rust-lang/crates.io-index"
216
- checksum = "4df4760922c5f3dd56f84699b523b2aa6ce0b4b82845eff8eb4efc3e642dadf0"
216
+ checksum = "0b424f56a53c945d026954e4b431c9d8bd3cd8c431574c8f4b77f59e860c366a"
217
217
  dependencies = [
218
218
  "aes",
219
219
  "cmac",
data/ext/enquo/src/lib.rs CHANGED
@@ -1,8 +1,11 @@
1
1
  #[macro_use]
2
2
  extern crate rutie;
3
3
 
4
- use enquo_core::{key_provider, Date, Field, Root, Text, I64};
5
- use rutie::{AnyObject, Class, Integer, Module, Object, RString, Symbol, VerifiedObject, VM};
4
+ use enquo_core::{key_provider, Boolean, Date, Field, Root, Text, I64};
5
+ use rutie::{
6
+ AnyObject, Boolean as RBoolean, Class, Integer, Module, Object, RString, Symbol,
7
+ VerifiedObject, VM,
8
+ };
6
9
 
7
10
  class!(EnquoRoot);
8
11
  class!(EnquoRootKeyStatic);
@@ -84,6 +87,42 @@ impl VerifiedObject for EnquoRootKeyStatic {
84
87
  unsafe_methods!(
85
88
  EnquoField,
86
89
  rbself,
90
+ fn enquo_field_encrypt_bool(b_obj: RBoolean, context_obj: RString, mode_obj: Symbol) -> RString {
91
+ let b = b_obj.to_bool();
92
+ let context = context_obj.to_vec_u8_unchecked();
93
+ let mode = mode_obj.to_str();
94
+
95
+ let field = rbself.get_data(&*FIELD_WRAPPER);
96
+
97
+ let mut res = maybe_raise(
98
+ if mode == "unsafe" {
99
+ Boolean::new_with_unsafe_parts(b, &context, field)
100
+ } else {
101
+ Boolean::new(b, &context, field)
102
+ },
103
+ "Failed to create encrypted bool",
104
+ );
105
+ if mode == "no_query" {
106
+ res.make_unqueryable();
107
+ }
108
+
109
+ RString::new_utf8(&maybe_raise(serde_json::to_string(&res), "Failed to JSONify ciphertext"))
110
+ },
111
+ fn enquo_field_decrypt_bool(ciphertext_obj: RString, context_obj: RString) -> RBoolean {
112
+ let ct = ciphertext_obj.to_str_unchecked();
113
+ let context = context_obj.to_vec_u8_unchecked();
114
+
115
+ let field = rbself.get_data(&*FIELD_WRAPPER);
116
+
117
+ let e_value: Boolean =
118
+ maybe_raise(serde_json::from_str(ct), "Failed to deserialize ciphertext");
119
+
120
+ let value = maybe_raise(
121
+ e_value.decrypt(&context, field),
122
+ "Failed to decrypt bool value",
123
+ );
124
+ RBoolean::new(value)
125
+ },
87
126
  fn enquo_field_encrypt_i64(i_obj: Integer, context_obj: RString, mode_obj: Symbol) -> RString {
88
127
  let i = i_obj.to_i64();
89
128
  let context = context_obj.to_vec_u8_unchecked();
@@ -235,6 +274,8 @@ pub extern "C" fn Init_enquo() {
235
274
  topmod
236
275
  .define_nested_class("Field", None)
237
276
  .define(|fieldklass| {
277
+ fieldklass.def_private("_encrypt_bool", enquo_field_encrypt_bool);
278
+ fieldklass.def_private("_decrypt_bool", enquo_field_decrypt_bool);
238
279
  fieldklass.def_private("_encrypt_i64", enquo_field_encrypt_i64);
239
280
  fieldklass.def_private("_decrypt_i64", enquo_field_decrypt_i64);
240
281
  fieldklass.def_private("_encrypt_date", enquo_field_encrypt_date);
data/lib/2.7/enquo.so CHANGED
Binary file
data/lib/3.0/enquo.so CHANGED
Binary file
data/lib/3.1/enquo.so CHANGED
Binary file
data/lib/enquo/field.rb CHANGED
@@ -6,6 +6,34 @@ module Enquo
6
6
  raise RuntimeError, "Enquo::Field cannot be instantiated directly; use Enquo::Crypto#field instead"
7
7
  end
8
8
 
9
+ def encrypt_bool(b, ctx, safety: true, no_query: false)
10
+ unless b.is_a?(TrueClass) || b.is_a?(FalseClass)
11
+ raise ArgumentError, "Enquo::Field#encrypt_bool can only encrypt booleans"
12
+ end
13
+
14
+ unless ctx.is_a?(String)
15
+ raise ArgumentError, "Encryption context must be a string (got a #{ctx.class})"
16
+ end
17
+
18
+ _encrypt_bool(b, ctx, no_query ? :no_query : safety == :unsafe ? :unsafe : :default)
19
+ end
20
+
21
+ def decrypt_bool(data, ctx)
22
+ unless data.is_a?(String)
23
+ raise ArgumentError, "Enquo::Field#decrypt_i64 can only decrypt from a string (got #{data.class})"
24
+ end
25
+
26
+ unless data.encoding == Encoding::UTF_8 && data.valid_encoding?
27
+ raise ArgumentError, "Enquo::Field#decrypt_i64 can only decrypt validly-encoded UTF-8 strings (got #{data.encoding})"
28
+ end
29
+
30
+ unless ctx.is_a?(String)
31
+ raise ArgumentError, "Encryption context must be a string (got a #{ctx.class})"
32
+ end
33
+
34
+ _decrypt_bool(data, ctx)
35
+ end
36
+
9
37
  def encrypt_i64(i, ctx, safety: true, no_query: false)
10
38
  unless i.is_a?(Integer)
11
39
  raise ArgumentError, "Enquo::Field#encrypt_i64 can only encrypt integers"
metadata CHANGED
@@ -1,15 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enquo-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0.7.gc8b36a2
4
+ version: 0.6.0.11.g8d4f25f
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - Matt Palmer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-08 00:00:00.000000000 Z
11
+ date: 2023-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rb_sys
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.1'
27
+ force_ruby_platform: false
13
28
  - !ruby/object:Gem::Dependency
14
29
  name: bundler
15
30
  requirement: !ruby/object:Gem::Requirement
@@ -80,20 +95,6 @@ dependencies:
80
95
  - - "~>"
81
96
  - !ruby/object:Gem::Version
82
97
  version: '1.2'
83
- - !ruby/object:Gem::Dependency
84
- name: rb_sys
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '0.1'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '0.1'
97
98
  - !ruby/object:Gem::Dependency
98
99
  name: redcarpet
99
100
  requirement: !ruby/object:Gem::Requirement