@@ -5,8 +5,8 @@ mod tests {
5
5
use cipherstash_client:: credentials:: auto_refresh:: AutoRefresh ;
6
6
use cipherstash_client:: ejsonpath:: Selector ;
7
7
use cipherstash_client:: encryption:: {
8
- Encrypted , EncryptedEntry , EncryptedSteVecTerm , JsonIndexer , Plaintext , PlaintextTarget ,
9
- QueryBuilder , ReferencedPendingPipeline ,
8
+ Encrypted , EncryptedEntry , EncryptedSteVecTerm , JsonIndexer , JsonIndexerOptions , OreTerm ,
9
+ Plaintext , PlaintextTarget , QueryBuilder , ReferencedPendingPipeline ,
10
10
} ;
11
11
use cipherstash_client:: {
12
12
encryption:: { ScopedCipher , SteVec } ,
@@ -69,20 +69,35 @@ mod tests {
69
69
#[ serde( rename = "s" ) ]
70
70
selector : Option < String > ,
71
71
72
- #[ serde( rename = "mac " ) ]
73
- mac_index : Option < String > ,
72
+ #[ serde( rename = "b " ) ]
73
+ blake3_index : Option < String > ,
74
74
75
75
#[ serde( rename = "ocf" ) ]
76
76
ore_cclw_fixed_index : Option < String > ,
77
77
#[ serde( rename = "ocv" ) ]
78
78
ore_cclw_var_index : Option < String > ,
79
79
80
80
#[ serde( rename = "sv" ) ]
81
- ste_vec_index : Option < Vec < EqlEncrypted > > ,
81
+ ste_vec_index : Option < Vec < EqlSteVecEncrypted > > ,
82
+ }
83
+
84
+ #[ derive( Debug , Deserialize , Serialize ) ]
85
+ pub struct EqlSteVecEncrypted {
86
+ #[ serde( rename = "c" , with = "option_mp_base85" ) ]
87
+ ciphertext : Option < EncryptedRecord > ,
88
+
89
+ #[ serde( rename = "s" ) ]
90
+ selector : Option < String > ,
91
+ #[ serde( rename = "b" ) ]
92
+ blake3_index : Option < String > ,
93
+ #[ serde( rename = "ocf" ) ]
94
+ ore_cclw_fixed_index : Option < String > ,
95
+ #[ serde( rename = "ocv" ) ]
96
+ ore_cclw_var_index : Option < String > ,
82
97
}
83
98
84
99
impl EqlEncrypted {
85
- pub fn ste_vec ( ste_vec_index : Vec < EqlEncrypted > ) -> Self {
100
+ pub fn ste_vec ( ste_vec_index : Vec < EqlSteVecEncrypted > ) -> Self {
86
101
Self {
87
102
ste_vec_index : Some ( ste_vec_index) ,
88
103
ciphertext : None ,
@@ -97,26 +112,18 @@ mod tests {
97
112
selector : None ,
98
113
ore_cclw_fixed_index : None ,
99
114
ore_cclw_var_index : None ,
100
- mac_index : None ,
115
+ blake3_index : None ,
101
116
}
102
117
}
103
-
118
+ }
119
+ impl EqlSteVecEncrypted {
104
120
pub fn ste_vec_element ( selector : String , record : EncryptedRecord ) -> Self {
105
121
Self {
106
122
ciphertext : Some ( record) ,
107
- identifier : Identifier {
108
- table : "blah" . to_string ( ) ,
109
- column : "vtha" . to_string ( ) ,
110
- } ,
111
- version : 1 ,
112
- ore_index : None ,
113
- match_index : None ,
114
- unique_index : None ,
115
123
selector : Some ( selector) ,
116
124
ore_cclw_fixed_index : None ,
117
125
ore_cclw_var_index : None ,
118
- mac_index : None ,
119
- ste_vec_index : None ,
126
+ blake3_index : None ,
120
127
}
121
128
}
122
129
}
@@ -151,10 +158,28 @@ mod tests {
151
158
152
159
let column_config = ColumnConfig :: build ( "column_name" . to_string ( ) )
153
160
. casts_as ( ColumnType :: JsonB )
154
- . add_index ( Index :: new ( IndexType :: SteVec { prefix } ) ) ;
161
+ . add_index ( Index :: new ( IndexType :: SteVec {
162
+ prefix : prefix. to_owned ( ) ,
163
+ } ) ) ;
164
+
165
+ // let mut value =
166
+ // serde_json::from_str::<serde_json::Value>("{\"hello\": \"one\", \"n\": 10}").unwrap();
167
+
168
+ // let mut value =
169
+ // serde_json::from_str::<serde_json::Value>("{\"hello\": \"two\", \"n\": 20}").unwrap();
155
170
156
171
let mut value =
157
- serde_json:: from_str :: < serde_json:: Value > ( "{\" hello\" : \" world\" , \" n\" : 42}" ) . unwrap ( ) ;
172
+ serde_json:: from_str :: < serde_json:: Value > ( "{\" hello\" : \" two\" , \" n\" : 30}" ) . unwrap ( ) ;
173
+
174
+ // let mut value =
175
+ // serde_json::from_str::<serde_json::Value>("{\"hello\": \"world\", \"n\": 42}").unwrap();
176
+
177
+ // let mut value =
178
+ // serde_json::from_str::<serde_json::Value>("{\"hello\": \"world\", \"n\": 42}").unwrap();
179
+
180
+ // let mut value =
181
+ // serde_json::from_str::<serde_json::Value>("{\"blah\": { \"vtha\": 42 }}").unwrap();
182
+
158
183
let plaintext = Plaintext :: JsonB ( Some ( value) ) ;
159
184
160
185
let idx = 0 ;
@@ -174,11 +199,11 @@ mod tests {
174
199
let term = entry. 1 ;
175
200
let record = entry. 2 ;
176
201
177
- let mut e = EqlEncrypted :: ste_vec_element ( selector, record) ;
202
+ let mut e = EqlSteVecEncrypted :: ste_vec_element ( selector, record) ;
178
203
179
204
match term {
180
205
EncryptedSteVecTerm :: Mac ( items) => {
181
- e. mac_index = Some ( hex:: encode ( & items) ) ;
206
+ e. blake3_index = Some ( hex:: encode ( & items) ) ;
182
207
}
183
208
EncryptedSteVecTerm :: OreFixed ( o) => {
184
209
e. ore_cclw_fixed_index = Some ( hex:: encode ( o. bytes ) ) ;
@@ -190,25 +215,51 @@ mod tests {
190
215
191
216
encrypteds. push ( e) ;
192
217
}
193
-
194
- // info!("{:?}" = ?sv);
218
+ // info!("{:?}" = encrypteds);
195
219
}
196
220
197
- let e = EqlEncrypted :: ste_vec ( encrypteds ) ;
221
+ info ! ( "---------------------------------------------" ) ;
198
222
223
+ let e = EqlEncrypted :: ste_vec ( encrypteds) ;
199
224
info ! ( "{:?}" = ?e) ;
200
225
201
226
let json = serde_json:: to_value ( e) . unwrap ( ) ;
202
-
203
227
info ! ( "{}" , json) ;
204
228
205
- let indexer = JsonIndexer :: new ( prefix) ;
229
+ let indexer = JsonIndexer :: new ( JsonIndexerOptions { prefix } ) ;
230
+
231
+ info ! ( "---------------------------------------------" ) ;
232
+
233
+ // Path
234
+ // let path: String = "$.blah.vtha".to_string();
235
+ // let selector = Selector::parse(&path).unwrap();
236
+ // let selector = indexer.generate_selector(selector, cipher.index_key());
237
+ // let selector = hex::encode(selector.0);
238
+ // info!("{}", selector);
206
239
207
- let path: String = "$.hello" . to_string ( ) ;
208
- let selector = Selector :: parse ( & path) ?;
209
- let selector = indexer. generate_selector ( selector, cipher. index_key ( ) ) ;
210
- let selector = hex:: encode ( selector) ;
240
+ // Comparison
241
+ let n = 30 ;
242
+ let term = OreTerm :: Number ( n) ;
243
+
244
+ let term = indexer. generate_term ( term, cipher. index_key ( ) ) . unwrap ( ) ;
245
+
246
+ match term {
247
+ EncryptedSteVecTerm :: Mac ( items) => todo ! ( ) ,
248
+ EncryptedSteVecTerm :: OreFixed ( ore_cllw8_v1) => {
249
+ let term = hex:: encode ( ore_cllw8_v1. bytes ) ;
250
+ info ! ( "{n}: {term}" ) ;
251
+ }
252
+ EncryptedSteVecTerm :: OreVariable ( ore_cllw8_variable_v1) => todo ! ( ) ,
253
+ }
211
254
212
- info ! ( "{}" , selector) ;
255
+ // if let Some(ste_vec_index) = e.ste_vec_index {
256
+ // for e in ste_vec_index {
257
+ // info!("{}", e);
258
+ // if let Some(ct) = e.ciphertext {
259
+ // let decrypted = cipher.decrypt(encrypted).await?;
260
+ // info!("{}", decrypted);
261
+ // }
262
+ // }
263
+ // }
213
264
}
214
265
}
0 commit comments