enquo-core 0.6.0.7.gc8b36a2-x86_64-darwin → 0.6.0.10.g2771c04-x86_64-darwin

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: ed247ba4101de8143524a0da4bb7cc4cfea85927fae4920cae483e762fc05d35
4
- data.tar.gz: bfa6bc0ac920b3cee2883071ca2dc5d514fedc37c51eb916dd16876809944b01
3
+ metadata.gz: b294f43dc0d52c683a169e8302a39bfa9dc0c847023c86f9745d902689bc7418
4
+ data.tar.gz: 8b7a40c51a21fd0e57dee6c0a6719278e7fa61db39572255f4ba866594d02026
5
5
  SHA512:
6
- metadata.gz: 54024f30e0ac25af8e60d3d9664dd645249b4de02720ae8907db65f8e710ce31336687c2688fe27b82adbd617b5dd21788ba76397fd7720b2d3610d3b96ffbfb
7
- data.tar.gz: 4f374fa2f10e5806215a0b7880b270d546f4e03f0c47ae66de5ac15cf9ba7b843d5e24e69bd666fca6b471fe0c9542badaa05905d547b810ee49e066b0a45825
6
+ metadata.gz: 93ef77d27c68754af223d8028e23ed2ebd44873f6d4115b58dbc494bc75f96a9504148648a889d85d265a2c670f62f0a1b1b404f348685466c8ae9a62399d445
7
+ data.tar.gz: db0a79215d381c2bfb3d00556ddcbe241e10708eadd80945b43fb75d742eed561c38dc0ccfa321cd42765236a82dbdb1847b119fd114f41967e08124075508ef
data/enquo-core.gemspec CHANGED
@@ -24,6 +24,7 @@ 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
 
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.bundle CHANGED
Binary file
data/lib/3.0/enquo.bundle CHANGED
Binary file
data/lib/3.1/enquo.bundle 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,14 +1,14 @@
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.10.g2771c04
5
5
  platform: x86_64-darwin
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
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler