Skip to content

Commit 4b06e95

Browse files
committed
feat: Add array flag to encrypted structure
1 parent a3a2941 commit 4b06e95

2 files changed

Lines changed: 38 additions & 24 deletions

File tree

packages/cipherstash-proxy/src/encrypt/mod.rs

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,7 @@ fn to_eql_encrypted(
300300
selector,
301301
ste_vec_index: None,
302302
},
303+
is_array_item: None,
303304
},
304305
})
305306
}
@@ -308,30 +309,38 @@ fn to_eql_encrypted(
308309

309310
let ste_vec_index: Vec<EqlEncryptedBody> = ste_vec
310311
.into_iter()
311-
.map(|EncryptedEntry(selector, term, ciphertext)| {
312-
let indexes = match term {
313-
EncryptedSteVecTerm::Mac(bytes) => EqlEncryptedIndexes {
314-
selector: Some(hex::encode(selector.as_bytes())),
315-
blake3_index: Some(hex::encode(bytes)),
316-
..Default::default()
317-
},
318-
EncryptedSteVecTerm::OreFixed(ore) => EqlEncryptedIndexes {
319-
selector: Some(hex::encode(selector.as_bytes())),
320-
ore_cclw_fixed_index: Some(hex::encode(&ore)),
321-
..Default::default()
322-
},
323-
EncryptedSteVecTerm::OreVariable(ore) => EqlEncryptedIndexes {
324-
selector: Some(hex::encode(selector.as_bytes())),
325-
ore_cclw_var_index: Some(hex::encode(&ore)),
326-
..Default::default()
327-
},
328-
};
329-
330-
eql::EqlEncryptedBody {
331-
ciphertext,
332-
indexes,
333-
}
334-
})
312+
.map(
313+
|EncryptedEntry {
314+
tokenized_selector,
315+
term,
316+
record,
317+
parent_is_array,
318+
}| {
319+
let indexes = match term {
320+
EncryptedSteVecTerm::Mac(bytes) => EqlEncryptedIndexes {
321+
selector: Some(hex::encode(selector.as_bytes())),
322+
blake3_index: Some(hex::encode(bytes)),
323+
..Default::default()
324+
},
325+
EncryptedSteVecTerm::OreFixed(ore) => EqlEncryptedIndexes {
326+
selector: Some(hex::encode(selector.as_bytes())),
327+
ore_cclw_fixed_index: Some(hex::encode(&ore)),
328+
..Default::default()
329+
},
330+
EncryptedSteVecTerm::OreVariable(ore) => EqlEncryptedIndexes {
331+
selector: Some(hex::encode(selector.as_bytes())),
332+
ore_cclw_var_index: Some(hex::encode(&ore)),
333+
..Default::default()
334+
},
335+
};
336+
337+
eql::EqlEncryptedBody {
338+
ciphertext,
339+
indexes,
340+
is_array_item: Some(parent_is_array),
341+
}
342+
},
343+
)
335344
.collect();
336345

337346
// FIXME: I'm unsure if I've handled the root ciphertext correctly
@@ -351,6 +360,7 @@ fn to_eql_encrypted(
351360
selector: None,
352361
ste_vec_index: Some(ste_vec_index),
353362
},
363+
is_array_item: None,
354364
},
355365
})
356366
}

packages/cipherstash-proxy/src/eql/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ pub struct EqlEncryptedBody {
8080

8181
#[serde(flatten)]
8282
pub(crate) indexes: EqlEncryptedIndexes,
83+
84+
#[serde(rename = "a", skip_serializing_if = "Option::is_none")]
85+
pub(crate) is_array_item: Option<bool>,
8386
}
8487

8588
#[derive(Debug, Deserialize, Serialize, Default)]
@@ -163,6 +166,7 @@ mod tests {
163166
ore_cclw_var_index: None,
164167
ste_vec_index: None,
165168
},
169+
is_array_item: None,
166170
},
167171
};
168172

0 commit comments

Comments
 (0)