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 +4 -4
- data/ext/enquo/src/lib.rs +59 -54
- data/lib/2.7/enquo.bundle +0 -0
- data/lib/3.0/enquo.bundle +0 -0
- data/lib/3.1/enquo.bundle +0 -0
- data/lib/enquo/root.rb +4 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f87cb0b46c9858389184f4227ade8d684471933cd48158d4474bcdba02977892
|
4
|
+
data.tar.gz: e0a8da5b1c6b033174010ece807a504681f921a918e07b6a0213a2a916b5edb7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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!(
|
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
|
-
|
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
|
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(
|
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
|
-
|
55
|
+
unsafe_methods!(
|
57
56
|
EnquoRootKeyStatic,
|
58
57
|
_rbself,
|
59
|
-
fn enquo_root_key_static_new(
|
60
|
-
|
61
|
-
|
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
|
-
|
84
|
+
unsafe_methods!(
|
85
85
|
EnquoField,
|
86
86
|
rbself,
|
87
|
-
fn enquo_field_encrypt_i64(
|
88
|
-
let i =
|
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
|
95
|
-
I64::new_with_unsafe_parts(i, &context
|
95
|
+
if mode == "unsafe" {
|
96
|
+
I64::new_with_unsafe_parts(i, &context, field)
|
96
97
|
} else {
|
97
|
-
I64::new(i, &context
|
98
|
+
I64::new(i, &context, field)
|
98
99
|
},
|
99
100
|
"Failed to create encrypted i64",
|
100
101
|
);
|
101
|
-
if
|
102
|
+
if mode == "no_query" {
|
102
103
|
res.drop_ore_ciphertext();
|
103
104
|
}
|
104
105
|
|
105
|
-
RString::new_utf8(&serde_json::to_string(&res)
|
106
|
+
RString::new_utf8(&maybe_raise(serde_json::to_string(&res), "Failed to JSONify ciphertext"))
|
106
107
|
},
|
107
|
-
fn enquo_field_decrypt_i64(
|
108
|
-
let
|
109
|
-
let
|
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
|
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
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
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 =
|
129
|
-
let m =
|
130
|
-
let d =
|
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
|
140
|
+
if mode == "unsafe" {
|
137
141
|
Date::new_with_unsafe_parts(
|
138
142
|
(y, m, d),
|
139
|
-
&context
|
143
|
+
&context,
|
140
144
|
field,
|
141
145
|
)
|
142
146
|
} else {
|
143
|
-
Date::new((y, m, d), &context
|
147
|
+
Date::new((y, m, d), &context, field)
|
144
148
|
},
|
145
149
|
"Failed to create encrypted date",
|
146
150
|
);
|
147
|
-
if
|
151
|
+
if mode == "no_query" {
|
148
152
|
res.drop_ore_ciphertexts();
|
149
153
|
}
|
150
154
|
|
151
|
-
RString::new_utf8(&serde_json::to_string(&res)
|
155
|
+
RString::new_utf8(&maybe_raise(serde_json::to_string(&res), "Failed to JSONify ciphertext"))
|
152
156
|
},
|
153
|
-
fn enquo_field_decrypt_date(
|
154
|
-
let
|
155
|
-
let
|
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
|
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
|
+
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-
|
11
|
+
date: 2022-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|