enquo-core 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/enquo/src/lib.rs +10 -4
- data/lib/enquo/field.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '019495fa89d0d738dcc9a233d4184e8d3cf58cdd9c27969e24ca613eb5a02a66'
|
4
|
+
data.tar.gz: a8ec7915b1a274cacf663914ee7bca2cbda0bcb92ba32dbd8dd45270069fef79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b10d02c6c60da77891c80b1d1d3992dcbf1eb3fa185632e302c72866f23edd92b1da0aa083012dc2a08c1c3d6e9e490239e6856074d8af3c89741061b18b8fd6
|
7
|
+
data.tar.gz: 413cb390002789a07e1a0a3b5d1785d662ad59c9d96f43a37be0ded27c0240f5b2b96b2685a8954528ab124400d4b7f68f611d1233c4970403c2a5bdcdce7c1b
|
data/ext/enquo/src/lib.rs
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
extern crate rutie;
|
3
3
|
|
4
4
|
use enquo_core::{Field, Root, I64};
|
5
|
-
use rutie::{
|
5
|
+
use rutie::{Class, Integer, Module, Object, RString, Symbol, VerifiedObject, VM};
|
6
6
|
|
7
7
|
class!(EnquoRoot);
|
8
8
|
class!(EnquoRootKeyStatic);
|
@@ -81,18 +81,24 @@ impl VerifiedObject for EnquoRootKeyStatic {
|
|
81
81
|
methods!(
|
82
82
|
EnquoField,
|
83
83
|
rbself,
|
84
|
-
fn enquo_field_encrypt_i64(value: Integer, context: RString,
|
84
|
+
fn enquo_field_encrypt_i64(value: Integer, context: RString, mode: Symbol) -> RString {
|
85
85
|
let i = value.unwrap().to_i64();
|
86
86
|
let field = rbself.get_data(&*FIELD_WRAPPER);
|
87
|
+
let r_mode = mode.unwrap();
|
88
|
+
let s_mode = r_mode.to_str();
|
87
89
|
|
88
|
-
let res = maybe_raise(
|
89
|
-
if
|
90
|
+
let mut res = maybe_raise(
|
91
|
+
if s_mode == "unsafe" {
|
90
92
|
I64::new_with_unsafe_parts(i, &context.unwrap().to_vec_u8_unchecked(), field)
|
91
93
|
} else {
|
92
94
|
I64::new(i, &context.unwrap().to_vec_u8_unchecked(), field)
|
93
95
|
},
|
94
96
|
"Failed to create encrypted i64",
|
95
97
|
);
|
98
|
+
if s_mode == "no_query" {
|
99
|
+
res.drop_ore_ciphertext();
|
100
|
+
}
|
101
|
+
|
96
102
|
RString::new_utf8(&serde_json::to_string(&res).unwrap())
|
97
103
|
},
|
98
104
|
fn enquo_field_decrypt_i64(ciphertext: RString, context: RString) -> Integer {
|
data/lib/enquo/field.rb
CHANGED
@@ -4,7 +4,7 @@ module Enquo
|
|
4
4
|
raise RuntimeError, "Enquo::Field cannot be instantiated directly; use Enquo::Crypto#field instead"
|
5
5
|
end
|
6
6
|
|
7
|
-
def encrypt_i64(i, ctx, safety:
|
7
|
+
def encrypt_i64(i, ctx, safety: true, no_query: false)
|
8
8
|
unless i.is_a?(Integer)
|
9
9
|
raise ArgumentError, "Enquo::Field#encrypt_i64 can only encrypt integers"
|
10
10
|
end
|
@@ -17,7 +17,7 @@ module Enquo
|
|
17
17
|
raise ArgumentError, "Encryption context must be a string (got a #{ctx.class})"
|
18
18
|
end
|
19
19
|
|
20
|
-
_encrypt_i64(i, ctx, safety == :unsafe)
|
20
|
+
_encrypt_i64(i, ctx, no_query ? :no_query : safety == :unsafe ? :unsafe : :default)
|
21
21
|
end
|
22
22
|
|
23
23
|
def decrypt_i64(data, ctx)
|