MCPcopy Create free account
hub / github.com/apache/datafusion / parquet_table_encryption

Function parquet_table_encryption

datafusion/common/src/config.rs:3550–3670  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

3548 #[cfg(feature = "parquet_encryption")]
3549 #[test]
3550 fn parquet_table_encryption() {
3551 use crate::config::{
3552 ConfigFileDecryptionProperties, ConfigFileEncryptionProperties,
3553 };
3554 use parquet::encryption::decrypt::FileDecryptionProperties;
3555 use parquet::encryption::encrypt::FileEncryptionProperties;
3556 use std::sync::Arc;
3557
3558 let footer_key = b"0123456789012345".to_vec(); // 128bit/16
3559 let column_names = vec!["double_field", "float_field"];
3560 let column_keys =
3561 vec![b"1234567890123450".to_vec(), b"1234567890123451".to_vec()];
3562
3563 let file_encryption_properties =
3564 FileEncryptionProperties::builder(footer_key.clone())
3565 .with_column_keys(column_names.clone(), column_keys.clone())
3566 .unwrap()
3567 .build()
3568 .unwrap();
3569
3570 let decryption_properties = FileDecryptionProperties::builder(footer_key.clone())
3571 .with_column_keys(column_names.clone(), column_keys.clone())
3572 .unwrap()
3573 .build()
3574 .unwrap();
3575
3576 // Test round-trip
3577 let config_encrypt =
3578 ConfigFileEncryptionProperties::from(&file_encryption_properties);
3579 let encryption_properties_built =
3580 Arc::new(FileEncryptionProperties::try_from(config_encrypt.clone()).unwrap());
3581 assert_eq!(file_encryption_properties, encryption_properties_built);
3582
3583 let config_decrypt =
3584 ConfigFileDecryptionProperties::try_from(&decryption_properties).unwrap();
3585 let decryption_properties_built =
3586 Arc::new(FileDecryptionProperties::try_from(config_decrypt.clone()).unwrap());
3587 assert_eq!(decryption_properties, decryption_properties_built);
3588
3589 ///////////////////////////////////////////////////////////////////////////////////
3590 // Test encryption config
3591
3592 // Display original encryption config
3593 // println!("{:#?}", config_encrypt);
3594
3595 let mut table_config = TableOptions::new();
3596 table_config.set_config_format(ConfigFileType::PARQUET);
3597 table_config
3598 .parquet
3599 .set(
3600 "crypto.file_encryption.encrypt_footer",
3601 config_encrypt.encrypt_footer.to_string().as_str(),
3602 )
3603 .unwrap();
3604 table_config
3605 .parquet
3606 .set(
3607 "crypto.file_encryption.footer_key_as_hex",

Callers

nothing calls this directly

Calls 9

newFunction · 0.85
to_vecMethod · 0.80
set_config_formatMethod · 0.80
buildMethod · 0.45
cloneMethod · 0.45
setMethod · 0.45
as_strMethod · 0.45
to_stringMethod · 0.45
iterMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…