Skip to content

Commit c2497e6

Browse files
committed
Cleanup
1 parent 2e52d13 commit c2497e6

File tree

3 files changed

+76
-31
lines changed

3 files changed

+76
-31
lines changed

parquet/examples/read_with_rowgroup.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ impl RowGroups for InMemoryRowGroup {
115115
None => Err(ParquetError::General(format!(
116116
"Invalid column index {i}, column was not fetched"
117117
))),
118+
// todo: provide crypto_context
118119
Some(data) => {
119120
let page_reader: Box<dyn PageReader> = Box::new(SerializedPageReader::new(
120121
data.clone(),

parquet/src/encryption/ciphers.rs

Lines changed: 75 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,8 @@ impl RingGcmBlockDecryptor {
139139

140140
impl BlockDecryptor for RingGcmBlockDecryptor {
141141
fn decrypt(&self, length_and_ciphertext: &[u8], aad: &[u8]) -> Result<Vec<u8>> {
142-
let mut result = Vec::with_capacity(
143-
length_and_ciphertext.len() - SIZE_LEN - NONCE_LEN - TAG_LEN,
144-
);
142+
let mut result =
143+
Vec::with_capacity(length_and_ciphertext.len() - SIZE_LEN - NONCE_LEN - TAG_LEN);
145144
result.extend_from_slice(&length_and_ciphertext[SIZE_LEN + NONCE_LEN..]);
146145

147146
let nonce = ring::aead::Nonce::try_assume_unique_for_key(
@@ -175,48 +174,74 @@ pub fn create_footer_aad(file_aad: &[u8]) -> Result<Vec<u8>> {
175174
create_module_aad(file_aad, ModuleType::Footer, 0, 0, None)
176175
}
177176

178-
pub(crate) fn create_page_aad(file_aad: &[u8], module_type: ModuleType, row_group_ordinal: usize,
179-
column_ordinal: usize, page_ordinal: Option<usize>) -> Result<Vec<u8>> {
180-
create_module_aad(file_aad, module_type, row_group_ordinal, column_ordinal, page_ordinal)
177+
pub(crate) fn create_page_aad(
178+
file_aad: &[u8],
179+
module_type: ModuleType,
180+
row_group_ordinal: usize,
181+
column_ordinal: usize,
182+
page_ordinal: Option<usize>,
183+
) -> Result<Vec<u8>> {
184+
create_module_aad(
185+
file_aad,
186+
module_type,
187+
row_group_ordinal,
188+
column_ordinal,
189+
page_ordinal,
190+
)
181191
}
182192

183-
fn create_module_aad(file_aad: &[u8], module_type: ModuleType, row_group_ordinal: usize,
184-
column_ordinal: usize, page_ordinal: Option<usize>) -> Result<Vec<u8>> {
193+
fn create_module_aad(
194+
file_aad: &[u8],
195+
module_type: ModuleType,
196+
row_group_ordinal: usize,
197+
column_ordinal: usize,
198+
page_ordinal: Option<usize>,
199+
) -> Result<Vec<u8>> {
185200

186201
let module_buf = [module_type as u8];
187202

188203
if module_buf[0] == (ModuleType::Footer as u8) {
189204
let mut aad = Vec::with_capacity(file_aad.len() + 1);
190205
aad.extend_from_slice(file_aad);
191206
aad.extend_from_slice(module_buf.as_ref());
192-
return Ok(aad)
207+
return Ok(aad);
193208
}
194209

195210
if row_group_ordinal > i16::MAX as usize {
196-
return Err(general_err!("Encrypted parquet files can't have more than {} row groups: {}",
197-
i16::MAX, row_group_ordinal));
211+
return Err(general_err!(
212+
"Encrypted parquet files can't have more than {} row groups: {}",
213+
i16::MAX,
214+
row_group_ordinal
215+
));
198216
}
199217
if column_ordinal > i16::MAX as usize {
200-
return Err(general_err!("Encrypted parquet files can't have more than {} columns: {}",
201-
i16::MAX, column_ordinal));
218+
return Err(general_err!(
219+
"Encrypted parquet files can't have more than {} columns: {}",
220+
i16::MAX,
221+
column_ordinal
222+
));
202223
}
203224

204-
if module_buf[0] != (ModuleType::DataPageHeader as u8) &&
205-
module_buf[0] != (ModuleType::DataPage as u8) {
225+
if module_buf[0] != (ModuleType::DataPageHeader as u8)
226+
&& module_buf[0] != (ModuleType::DataPage as u8)
227+
{
206228
let mut aad = Vec::with_capacity(file_aad.len() + 5);
207229
aad.extend_from_slice(file_aad);
208230
aad.extend_from_slice(module_buf.as_ref());
209231
aad.extend_from_slice((row_group_ordinal as i16).to_le_bytes().as_ref());
210232
aad.extend_from_slice((column_ordinal as i16).to_le_bytes().as_ref());
211-
return Ok(aad)
233+
return Ok(aad);
212234
}
213235

214-
let page_ordinal = page_ordinal.ok_or_else(|| general_err!(
215-
"Page ordinal must be set for data pages"))?;
236+
let page_ordinal =
237+
page_ordinal.ok_or_else(|| general_err!("Page ordinal must be set for data pages"))?;
216238

217239
if page_ordinal > i16::MAX as usize {
218-
return Err(general_err!("Encrypted parquet files can't have more than {} pages per column chunk: {}",
219-
i16::MAX, page_ordinal));
240+
return Err(general_err!(
241+
"Encrypted parquet files can't have more than {} pages per column chunk: {}",
242+
i16::MAX,
243+
page_ordinal
244+
));
220245
}
221246

222247
let mut aad = Vec::with_capacity(file_aad.len() + 7);
@@ -239,7 +264,9 @@ impl FileDecryptionProperties {
239264
pub fn builder() -> DecryptionPropertiesBuilder {
240265
DecryptionPropertiesBuilder::with_defaults()
241266
}
242-
pub fn has_footer_key(&self) -> bool { self.footer_key.is_some() }
267+
pub fn has_footer_key(&self) -> bool {
268+
self.footer_key.is_some()
269+
}
243270

244271
pub fn has_column_keys(&self) -> bool {
245272
self.column_keys.is_some()
@@ -285,7 +312,7 @@ impl DecryptionPropertiesBuilder {
285312
}
286313

287314
pub fn with_column_key(mut self, key: Vec<u8>, value: Vec<u8>) -> Self {
288-
let mut column_keys= self.column_keys.unwrap_or_default();
315+
let mut column_keys = self.column_keys.unwrap_or_default();
289316
column_keys.insert(key, value);
290317
self.column_keys = Some(column_keys);
291318
self
@@ -308,8 +335,15 @@ impl PartialEq for FileDecryptor {
308335
}
309336

310337
impl FileDecryptor {
311-
pub(crate) fn new(decryption_properties: &FileDecryptionProperties, aad_file_unique: Vec<u8>, aad_prefix: Vec<u8>) -> Self {
312-
let footer_decryptor = decryption_properties.footer_key.clone().map(|footer_key| RingGcmBlockDecryptor::new(footer_key.as_ref()));
338+
pub(crate) fn new(
339+
decryption_properties: &FileDecryptionProperties,
340+
aad_file_unique: Vec<u8>,
341+
aad_prefix: Vec<u8>,
342+
) -> Self {
343+
let footer_decryptor = decryption_properties
344+
.footer_key
345+
.clone()
346+
.map(|footer_key| RingGcmBlockDecryptor::new(footer_key.as_ref()));
313347

314348
Self {
315349
// todo decr: if no key available yet (not set in properties, will be retrieved from metadata)
@@ -326,7 +360,11 @@ impl FileDecryptor {
326360
}
327361

328362
pub(crate) fn has_column_key(&self, column_name: &[u8]) -> bool {
329-
self.decryption_properties.column_keys.clone().unwrap().contains_key(column_name)
363+
self.decryption_properties
364+
.column_keys
365+
.clone()
366+
.unwrap()
367+
.contains_key(column_name)
330368
}
331369

332370
pub(crate) fn get_column_decryptor(&self, column_name: &[u8]) -> FileDecryptor {
@@ -387,9 +425,12 @@ pub struct CryptoContext {
387425
}
388426

389427
impl CryptoContext {
390-
pub fn new(row_group_ordinal: usize,
391-
column_ordinal: usize, data_decryptor: Arc<FileDecryptor>,
392-
metadata_decryptor: Arc<FileDecryptor>) -> Self {
428+
pub fn new(
429+
row_group_ordinal: usize,
430+
column_ordinal: usize,
431+
data_decryptor: Arc<FileDecryptor>,
432+
metadata_decryptor: Arc<FileDecryptor>
433+
) -> Self {
393434
Self {
394435
row_group_ordinal,
395436
column_ordinal,
@@ -422,6 +463,10 @@ impl CryptoContext {
422463
}
423464
}
424465

425-
pub fn data_decryptor(&self) -> Arc<FileDecryptor> { self.data_decryptor.clone()}
426-
pub fn metadata_decryptor(&self) -> Arc<FileDecryptor> { self.metadata_decryptor.clone() }
466+
pub fn data_decryptor(&self) -> Arc<FileDecryptor> {
467+
self.data_decryptor.clone()
468+
}
469+
pub fn metadata_decryptor(&self) -> Arc<FileDecryptor> {
470+
self.metadata_decryptor.clone()
471+
}
427472
}

parquet/src/file/footer.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
//! Module for working with Parquet file footers.
1919
20-
#[cfg(feature = "encryption")]
2120
use crate::errors::Result;
2221
use crate::file::{metadata::*, reader::ChunkReader, FOOTER_SIZE};
2322

0 commit comments

Comments
 (0)