enquo-core 0.4.0-arm64-darwin → 0.5.0-arm64-darwin

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: '0080cd3e8d8965717cd611d5cada1c66bef3db61e247cc6a6670147098e02f39'
4
- data.tar.gz: 72f95033fb2f3dacac688d674d2717b486b0ea5b35630f28967694d2f75fc1a3
3
+ metadata.gz: f87cb0b46c9858389184f4227ade8d684471933cd48158d4474bcdba02977892
4
+ data.tar.gz: e0a8da5b1c6b033174010ece807a504681f921a918e07b6a0213a2a916b5edb7
5
5
  SHA512:
6
- metadata.gz: b99e9b2573fe6dae84435bf02c6d2c7cf23b7fbc6edfa1cbe47a8d0c6fd8b38bec1fbc6a2067466250d10d7b27c6182d7b37ef5289a74c46aa281c9bb2060b05
7
- data.tar.gz: 7165bfad5e14a1fdc685759953c3884e5d6b9501d512fa62e4b0ec2bbe4181006d84c5dd043a1d6d6d1800f21ecc0e174393e647a5418bbb7591c75f5cdee89f
6
+ metadata.gz: acb6e7b483751992743cb4c012ffb05458499b3e6b84f270a46fa04d6da1fbe2e800fb5ea81d9128111155ee23a738774cf751451c95ef11163a55ea00e50546
7
+ data.tar.gz: 78896aafeaaf463530ae59fff72d9f336e3474960d02d8cf480b44a0ce3cc2c868af9e8f1525214522664b9a7acc64860d1c6ab6146e106d69a310b137e91336
data/ext/enquo/src/lib.rs CHANGED
@@ -1,17 +1,19 @@
1
1
  #[macro_use]
2
2
  extern crate rutie;
3
3
 
4
- use enquo_core::{Date, Field, Root, I64};
4
+ use enquo_core::{key_provider, Date, Field, Root, I64};
5
5
  use rutie::{AnyObject, Class, Integer, Module, Object, RString, Symbol, VerifiedObject, VM};
6
6
 
7
7
  class!(EnquoRoot);
8
8
  class!(EnquoRootKeyStatic);
9
9
  class!(EnquoField);
10
10
 
11
- type StaticRootKey = Vec<u8>;
12
-
13
11
  wrappable_struct!(Root<'static>, RootWrapper, ROOT_WRAPPER);
14
- wrappable_struct!(StaticRootKey, StaticRootKeyWrapper, STATIC_ROOT_KEY_WRAPPER);
12
+ wrappable_struct!(
13
+ key_provider::Static,
14
+ StaticRootKeyWrapper,
15
+ STATIC_ROOT_KEY_WRAPPER
16
+ );
15
17
  wrappable_struct!(Field, FieldWrapper, FIELD_WRAPPER);
16
18
 
17
19
  fn maybe_raise<T, E: std::error::Error>(r: Result<T, E>, s: &str) -> T {
@@ -24,27 +26,24 @@ fn maybe_raise<T, E: std::error::Error>(r: Result<T, E>, s: &str) -> T {
24
26
  .unwrap()
25
27
  }
26
28
 
27
- methods!(
29
+ unsafe_methods!(
28
30
  EnquoRoot,
29
31
  rbself,
30
32
  fn enquo_root_new_from_static_root_key(root_key_obj: EnquoRootKeyStatic) -> EnquoRoot {
31
- let root_key = root_key_obj.unwrap();
32
- // Not so needless after all, Clippy...
33
- #[allow(clippy::needless_borrow)]
34
- let rk = root_key.get_data(&*STATIC_ROOT_KEY_WRAPPER);
33
+ let rk = root_key_obj.get_data(&*STATIC_ROOT_KEY_WRAPPER);
35
34
  let root = maybe_raise(Root::new(rk), "Failed to create Enquo::Root");
36
35
 
37
36
  let klass = Module::from_existing("Enquo").get_nested_class("Root");
38
37
  klass.wrap_data(root, &*ROOT_WRAPPER)
39
38
  },
40
- fn enquo_root_field(relation: RString, name: RString) -> EnquoField {
39
+ fn enquo_root_field(relation_obj: RString, name_obj: RString) -> EnquoField {
40
+ let relation = relation_obj.to_vec_u8_unchecked();
41
+ let name = name_obj.to_vec_u8_unchecked();
42
+
41
43
  let root = rbself.get_data(&*ROOT_WRAPPER);
42
44
 
43
45
  let field = maybe_raise(
44
- root.field(
45
- &relation.unwrap().to_vec_u8_unchecked(),
46
- &name.unwrap().to_vec_u8_unchecked(),
47
- ),
46
+ root.field(&relation, &name),
48
47
  "Failed to create Enquo::Field",
49
48
  );
50
49
 
@@ -53,12 +52,13 @@ methods!(
53
52
  }
54
53
  );
55
54
 
56
- methods!(
55
+ unsafe_methods!(
57
56
  EnquoRootKeyStatic,
58
57
  _rbself,
59
- fn enquo_root_key_static_new(root_key: RString) -> EnquoRootKeyStatic {
60
- #[allow(clippy::redundant_clone)]
61
- let k = root_key.unwrap().to_vec_u8_unchecked().to_owned();
58
+ fn enquo_root_key_static_new(root_key_obj: RString) -> EnquoRootKeyStatic {
59
+ let root_key = root_key_obj.to_vec_u8_unchecked();
60
+
61
+ let k = key_provider::Static::new(&root_key);
62
62
  let klass = Module::from_existing("Enquo")
63
63
  .get_nested_class("RootKey")
64
64
  .get_nested_class("Static");
@@ -81,85 +81,90 @@ impl VerifiedObject for EnquoRootKeyStatic {
81
81
 
82
82
  // rustfmt fucks this so it doesn't compile
83
83
  #[rustfmt::skip]
84
- methods!(
84
+ unsafe_methods!(
85
85
  EnquoField,
86
86
  rbself,
87
- fn enquo_field_encrypt_i64(value: Integer, context: RString, mode: Symbol) -> RString {
88
- let i = value.unwrap().to_i64();
87
+ fn enquo_field_encrypt_i64(i_obj: Integer, context_obj: RString, mode_obj: Symbol) -> RString {
88
+ let i = i_obj.to_i64();
89
+ let context = context_obj.to_vec_u8_unchecked();
90
+ let mode = mode_obj.to_str();
91
+
89
92
  let field = rbself.get_data(&*FIELD_WRAPPER);
90
- let r_mode = mode.unwrap();
91
- let s_mode = r_mode.to_str();
92
93
 
93
94
  let mut res = maybe_raise(
94
- if s_mode == "unsafe" {
95
- I64::new_with_unsafe_parts(i, &context.unwrap().to_vec_u8_unchecked(), field)
95
+ if mode == "unsafe" {
96
+ I64::new_with_unsafe_parts(i, &context, field)
96
97
  } else {
97
- I64::new(i, &context.unwrap().to_vec_u8_unchecked(), field)
98
+ I64::new(i, &context, field)
98
99
  },
99
100
  "Failed to create encrypted i64",
100
101
  );
101
- if s_mode == "no_query" {
102
+ if mode == "no_query" {
102
103
  res.drop_ore_ciphertext();
103
104
  }
104
105
 
105
- RString::new_utf8(&serde_json::to_string(&res).unwrap())
106
+ RString::new_utf8(&maybe_raise(serde_json::to_string(&res), "Failed to JSONify ciphertext"))
106
107
  },
107
- fn enquo_field_decrypt_i64(ciphertext: RString, context: RString) -> Integer {
108
- let ct_r = ciphertext.unwrap();
109
- let ct = ct_r.to_str_unchecked();
108
+ fn enquo_field_decrypt_i64(ciphertext_obj: RString, context_obj: RString) -> Integer {
109
+ let ct = ciphertext_obj.to_str_unchecked();
110
+ let context = context_obj.to_vec_u8_unchecked();
111
+
112
+ let field = rbself.get_data(&*FIELD_WRAPPER);
113
+
110
114
  let e_value: I64 =
111
115
  maybe_raise(serde_json::from_str(ct), "Failed to deserialize ciphertext");
112
116
 
113
- let field = rbself.get_data(&*FIELD_WRAPPER);
114
117
 
115
118
  let value = maybe_raise(
116
- e_value.decrypt(&context.unwrap().to_vec_u8_unchecked(), field),
119
+ e_value.decrypt(&context, field),
117
120
  "Failed to decrypt i64 value",
118
121
  );
119
122
  Integer::from(value)
120
123
  },
121
124
  fn enquo_field_encrypt_date(
122
- y_r: Integer,
123
- m_r: Integer,
124
- d_r: Integer,
125
- context: RString,
126
- mode: Symbol
125
+ y_obj: Integer,
126
+ m_obj: Integer,
127
+ d_obj: Integer,
128
+ context_obj: RString,
129
+ mode_obj: Symbol
127
130
  ) -> RString {
128
- let y = y_r.unwrap().to_i32() as i16;
129
- let m = m_r.unwrap().to_i32() as u8;
130
- let d = d_r.unwrap().to_i32() as u8;
131
+ let y = y_obj.to_i32() as i16;
132
+ let m = m_obj.to_i32() as u8;
133
+ let d = d_obj.to_i32() as u8;
134
+ let context = context_obj.to_vec_u8_unchecked();
135
+ let mode = mode_obj.to_str();
136
+
131
137
  let field = rbself.get_data(&*FIELD_WRAPPER);
132
- let r_mode = mode.unwrap();
133
- let s_mode = r_mode.to_str();
134
138
 
135
139
  let mut res = maybe_raise(
136
- if s_mode == "unsafe" {
140
+ if mode == "unsafe" {
137
141
  Date::new_with_unsafe_parts(
138
142
  (y, m, d),
139
- &context.unwrap().to_vec_u8_unchecked(),
143
+ &context,
140
144
  field,
141
145
  )
142
146
  } else {
143
- Date::new((y, m, d), &context.unwrap().to_vec_u8_unchecked(), field)
147
+ Date::new((y, m, d), &context, field)
144
148
  },
145
149
  "Failed to create encrypted date",
146
150
  );
147
- if s_mode == "no_query" {
151
+ if mode == "no_query" {
148
152
  res.drop_ore_ciphertexts();
149
153
  }
150
154
 
151
- RString::new_utf8(&serde_json::to_string(&res).unwrap())
155
+ RString::new_utf8(&maybe_raise(serde_json::to_string(&res), "Failed to JSONify ciphertext"))
152
156
  },
153
- fn enquo_field_decrypt_date(ciphertext: RString, context: RString) -> AnyObject {
154
- let ct_r = ciphertext.unwrap();
155
- let ct = ct_r.to_str_unchecked();
156
- let e_value: Date =
157
- maybe_raise(serde_json::from_str(ct), "Failed to deserialize ciphertext");
157
+ fn enquo_field_decrypt_date(ciphertext_obj: RString, context_obj: RString) -> AnyObject {
158
+ let ct = ciphertext_obj.to_str_unchecked();
159
+ let context = context_obj.to_vec_u8_unchecked();
158
160
 
159
161
  let field = rbself.get_data(&*FIELD_WRAPPER);
160
162
 
163
+ let e_value: Date =
164
+ maybe_raise(serde_json::from_str(ct), "Failed to deserialize ciphertext");
165
+
161
166
  let (y, m, d) = maybe_raise(
162
- e_value.decrypt(&context.unwrap().to_vec_u8_unchecked(), field),
167
+ e_value.decrypt(&context, field),
163
168
  "Failed to decrypt date value",
164
169
  );
165
170
  let klass = Class::from_existing("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/root.rb CHANGED
@@ -6,6 +6,10 @@ module Enquo
6
6
  _new_from_static_root_key(key)
7
7
  else
8
8
  raise ArgumentError, "key must be a root key provider object (got a #{key.class})"
9
+ end.tap do |k|
10
+ # DIRTY HACK ALERT: take a reference to the key so it doesn't get GC'd
11
+ # If someone can come up with a better way to acheive this, I'm all ears
12
+ k.instance_variable_set(:@_key, key)
9
13
  end
10
14
  end
11
15
 
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.4.0
4
+ version: 0.5.0
5
5
  platform: arm64-darwin
6
6
  authors:
7
7
  - Matt Palmer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-04 00:00:00.000000000 Z
11
+ date: 2022-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler