enquo-core 0.7.0.2.gb37f667-arm64-darwin → 0.8.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/Cargo.lock +59 -133
- data/ext/enquo/Cargo.toml +2 -2
- data/ext/enquo/src/field.rs +342 -0
- data/ext/enquo/src/lib.rs +29 -309
- data/ext/enquo/src/root.rs +39 -0
- data/ext/enquo/src/root_key.rs +67 -0
- 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/3.2/enquo.bundle +0 -0
- data/lib/enquo.rb +2 -4
- metadata +7 -8
- data/lib/enquo/field.rb +0 -173
- data/lib/enquo/root.rb +0 -28
- data/lib/enquo/root_key/static.rb +0 -27
- data/lib/enquo/root_key.rb +0 -1
data/lib/enquo/field.rb
DELETED
@@ -1,173 +0,0 @@
|
|
1
|
-
require "date"
|
2
|
-
|
3
|
-
module Enquo
|
4
|
-
class Field
|
5
|
-
def self.new(*_)
|
6
|
-
raise RuntimeError, "Enquo::Field cannot be instantiated directly; use Enquo::Crypto#field instead"
|
7
|
-
end
|
8
|
-
|
9
|
-
def encrypt_boolean(b, ctx, safety: true, no_query: false)
|
10
|
-
unless b.is_a?(TrueClass) || b.is_a?(FalseClass)
|
11
|
-
raise ArgumentError, "Enquo::Field#encrypt_boolean can only encrypt booleans (got an instance of #{b.class})"
|
12
|
-
end
|
13
|
-
|
14
|
-
unless ctx.is_a?(String)
|
15
|
-
raise ArgumentError, "Encryption context must be a string (got an instance of #{ctx.class})"
|
16
|
-
end
|
17
|
-
|
18
|
-
_encrypt_boolean(b, ctx, no_query ? :no_query : safety == :unsafe ? :unsafe : :default)
|
19
|
-
end
|
20
|
-
|
21
|
-
def decrypt_boolean(data, ctx)
|
22
|
-
unless data.is_a?(String)
|
23
|
-
raise ArgumentError, "Enquo::Field#decrypt_boolean can only decrypt from a string (got an instance of #{data.class})"
|
24
|
-
end
|
25
|
-
|
26
|
-
unless data.encoding == Encoding::UTF_8 && data.valid_encoding?
|
27
|
-
raise ArgumentError, "Enquo::Field#decrypt_boolean 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 an instance of #{ctx.class})"
|
32
|
-
end
|
33
|
-
|
34
|
-
_decrypt_boolean(data, ctx)
|
35
|
-
end
|
36
|
-
|
37
|
-
def encrypt_i64(i, ctx, safety: true, no_query: false)
|
38
|
-
unless i.is_a?(Integer)
|
39
|
-
raise ArgumentError, "Enquo::Field#encrypt_i64 can only encrypt integers (got an instance of #{i.class})"
|
40
|
-
end
|
41
|
-
|
42
|
-
unless i >= -2 ** 63 && i < 2 ** 63
|
43
|
-
raise RangeError, "Enquo::Field#encrypt_i64 can only encrypt integers between -2^63 and 2^63-1 (got #{i})"
|
44
|
-
end
|
45
|
-
|
46
|
-
unless ctx.is_a?(String)
|
47
|
-
raise ArgumentError, "Encryption context must be a string (got an instance of #{ctx.class})"
|
48
|
-
end
|
49
|
-
|
50
|
-
_encrypt_i64(i, ctx, no_query ? :no_query : safety == :unsafe ? :unsafe : :default)
|
51
|
-
end
|
52
|
-
|
53
|
-
def decrypt_i64(data, ctx)
|
54
|
-
unless data.is_a?(String)
|
55
|
-
raise ArgumentError, "Enquo::Field#decrypt_i64 can only decrypt from a string (got an instance of #{data.class})"
|
56
|
-
end
|
57
|
-
|
58
|
-
unless data.encoding == Encoding::UTF_8 && data.valid_encoding?
|
59
|
-
raise ArgumentError, "Enquo::Field#decrypt_i64 can only decrypt validly-encoded UTF-8 strings (got #{data.encoding})"
|
60
|
-
end
|
61
|
-
|
62
|
-
unless ctx.is_a?(String)
|
63
|
-
raise ArgumentError, "Encryption context must be a string (got an instance of #{ctx.class})"
|
64
|
-
end
|
65
|
-
|
66
|
-
_decrypt_i64(data, ctx)
|
67
|
-
end
|
68
|
-
|
69
|
-
def encrypt_date(d, ctx, safety: true, no_query: false)
|
70
|
-
unless d.is_a?(Date)
|
71
|
-
raise ArgumentError, "Enquo::Field#encrypt_date can only encrypt Dates (got an instance of #{d.class})"
|
72
|
-
end
|
73
|
-
|
74
|
-
unless d.year >= -2 ** 15 && d.year < 2 ** 15 - 1
|
75
|
-
raise RangeError, "Enquo::Field#encrypt_date can only encrypt dates where the year is between -32,768 and 32,767 (got #{d.year})"
|
76
|
-
end
|
77
|
-
|
78
|
-
unless ctx.is_a?(String)
|
79
|
-
raise ArgumentError, "Encryption context must be a string (got an instance of #{ctx.class})"
|
80
|
-
end
|
81
|
-
|
82
|
-
_encrypt_date(d.year, d.month, d.day, ctx, no_query ? :no_query : safety == :unsafe ? :unsafe : :default)
|
83
|
-
end
|
84
|
-
|
85
|
-
def decrypt_date(data, ctx)
|
86
|
-
unless data.is_a?(String)
|
87
|
-
raise ArgumentError, "Enquo::Field#decrypt_date can only decrypt from a string (got an instance of #{data.class})"
|
88
|
-
end
|
89
|
-
|
90
|
-
unless data.encoding == Encoding::UTF_8 && data.valid_encoding?
|
91
|
-
raise ArgumentError, "Enquo::Field#decrypt_date can only decrypt validly-encoded UTF-8 strings (got #{data.encoding})"
|
92
|
-
end
|
93
|
-
|
94
|
-
unless ctx.is_a?(String)
|
95
|
-
raise ArgumentError, "Encryption context must be a string (got an instance of #{ctx.class})"
|
96
|
-
end
|
97
|
-
|
98
|
-
_decrypt_date(data, ctx)
|
99
|
-
end
|
100
|
-
|
101
|
-
def encrypt_text(t, ctx, safety: true, no_query: false, order_prefix_length: nil)
|
102
|
-
unless t.is_a?(String)
|
103
|
-
raise ArgumentError, "Enquo::Field#encrypt_string can only encrypt Strings (got an instance of #{t.class})"
|
104
|
-
end
|
105
|
-
|
106
|
-
unless [Encoding::UTF_8, Encoding::US_ASCII].include?(t.encoding)
|
107
|
-
raise ArgumentError, "Enquo::Field#encrypt_string can only encrypt UTF-8 strings (got a string encoding of #{t.encoding})"
|
108
|
-
end
|
109
|
-
|
110
|
-
unless t.valid_encoding?
|
111
|
-
raise ArgumentError, "Enquo::Field#encrypt_string can only encrypt validly-encoded strings"
|
112
|
-
end
|
113
|
-
|
114
|
-
unless ctx.is_a?(String)
|
115
|
-
raise ArgumentError, "Encryption context must be a string (got an instance of #{ctx.class})"
|
116
|
-
end
|
117
|
-
|
118
|
-
unless order_prefix_length.nil?
|
119
|
-
unless safety == :unsafe
|
120
|
-
raise ArgumentError, "Ordering is only supported when the text field is marked unsafe"
|
121
|
-
end
|
122
|
-
|
123
|
-
unless order_prefix_length.is_a?(Integer)
|
124
|
-
raise ArgumentError, "Ordering prefix length must be an integer (got an instance of #{order_prefix_length.class})"
|
125
|
-
end
|
126
|
-
|
127
|
-
unless (1..255).include?(order_prefix_length)
|
128
|
-
raise ArgumentError, "Ordering prefix length must be between 1 and 255 inclusive (got #{order_prefix_length})"
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
mode = if no_query
|
133
|
-
:no_query
|
134
|
-
elsif !order_prefix_length.nil?
|
135
|
-
:orderable
|
136
|
-
elsif safety == :unsafe
|
137
|
-
:unsafe
|
138
|
-
else
|
139
|
-
:default
|
140
|
-
end
|
141
|
-
|
142
|
-
_encrypt_text(t, ctx, mode, order_prefix_length)
|
143
|
-
end
|
144
|
-
|
145
|
-
def decrypt_text(data, ctx)
|
146
|
-
unless data.is_a?(String)
|
147
|
-
raise ArgumentError, "Enquo::Field#decrypt_text can only decrypt from a string (got an instance of #{data.class})"
|
148
|
-
end
|
149
|
-
|
150
|
-
unless data.encoding == Encoding::UTF_8 && data.valid_encoding?
|
151
|
-
raise ArgumentError, "Enquo::Field#decrypt_date can only decrypt validly-encoded UTF-8 strings (got #{data.encoding})"
|
152
|
-
end
|
153
|
-
|
154
|
-
unless ctx.is_a?(String)
|
155
|
-
raise ArgumentError, "Encryption context must be a string (got an instance of #{ctx.class})"
|
156
|
-
end
|
157
|
-
|
158
|
-
_decrypt_text(data, ctx)
|
159
|
-
end
|
160
|
-
|
161
|
-
def encrypt_text_length_query(len)
|
162
|
-
unless len.is_a?(Integer)
|
163
|
-
raise ArgumentError, "Enquo::Field#encrypt_text_length_query can only encrypt integers (got an instance of #{len.class})"
|
164
|
-
end
|
165
|
-
|
166
|
-
unless len >= 0 && len < 2 ** 32
|
167
|
-
raise ArgumentError, "Enquo::Field#encrypt_text_length_query can only encrypt integers between 0 and 2^32-1 (got #{len})"
|
168
|
-
end
|
169
|
-
|
170
|
-
_encrypt_text_length_query(len)
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
data/lib/enquo/root.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
module Enquo
|
2
|
-
class Root
|
3
|
-
def self.new(key)
|
4
|
-
case key
|
5
|
-
when RootKey::Static
|
6
|
-
_new_from_static_root_key(key)
|
7
|
-
else
|
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)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def field(relation, name)
|
17
|
-
if relation.is_a?(Symbol)
|
18
|
-
relation = relation.to_s
|
19
|
-
end
|
20
|
-
|
21
|
-
if name.is_a?(Symbol)
|
22
|
-
name = name.to_s
|
23
|
-
end
|
24
|
-
|
25
|
-
_field(relation, name)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Enquo
|
2
|
-
module RootKey
|
3
|
-
class Static
|
4
|
-
def self.new(k)
|
5
|
-
unless k.is_a?(String)
|
6
|
-
raise ArgumentError, "An Enquo static root key must be passed a string"
|
7
|
-
end
|
8
|
-
|
9
|
-
key = if k.encoding == Encoding::BINARY
|
10
|
-
unless k.bytesize == 32
|
11
|
-
raise ArgumentError, "An Enquo static root key must be a 32 byte binary string"
|
12
|
-
end
|
13
|
-
|
14
|
-
k
|
15
|
-
else
|
16
|
-
unless k =~ /\A\h{64}\z/
|
17
|
-
raise ArgumentError, "An Enquo static root key must be a 64 byte hex string"
|
18
|
-
end
|
19
|
-
|
20
|
-
[k].pack("H*")
|
21
|
-
end
|
22
|
-
|
23
|
-
_new(key)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
data/lib/enquo/root_key.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require_relative "./root_key/static"
|