From 1b7912850a5d33d076c1667b9f5e28781791847e Mon Sep 17 00:00:00 2001 From: LordMZTE Date: Sat, 9 Oct 2021 23:21:39 +0200 Subject: [PATCH] init --- .gitignore | 2 ++ Cargo.toml | 16 ++++++++++++++++ build.rs | 27 +++++++++++++++++++++++++++ enc_data.json | 4 ++++ src/main.rs | 10 ++++++++++ 5 files changed, 59 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.toml create mode 100644 build.rs create mode 100644 enc_data.json create mode 100644 src/main.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..96ef6c0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +Cargo.lock diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..7517ecd --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "rust_comptime_encryption_example" +version = "0.1.0" +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +bincode = "1.3.3" +serde = "1.0.130" + +[build-dependencies] +base64 = "0.13.0" +bincode = "1.3.3" +serde = "1.0.130" +serde_json = "1.0.68" diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..994be64 --- /dev/null +++ b/build.rs @@ -0,0 +1,27 @@ +use std::{ + collections::HashMap, + fs::{self, File}, + io::Read, + path::Path, +}; +fn main() { + println!("cargo:rerun-if-changed=enc_data.json"); + let mut file = File::open("enc_data.json").expect("Failed to open enc_data.json"); + let mut content = vec![]; + file.read_to_end(&mut content) + .expect("Failed to read enc_data.json"); + + let deserialized = serde_json::from_slice::>(&content) + .expect("Failed to deserialize enc_data.json"); + + let encrypted = deserialized + .into_iter() + .map(|(k, v)| (k, base64::encode(v))) + .collect::>(); + + let serialized = + bincode::serialize(&encrypted).expect("Failed to seralize enc_data.json to bincode"); + + let out_path = Path::new(&std::env::var("OUT_DIR").unwrap()).join("enc_data.bin"); + fs::write(out_path, serialized).expect("Failed to write outfile"); +} diff --git a/enc_data.json b/enc_data.json new file mode 100644 index 0000000..5d5855f --- /dev/null +++ b/enc_data.json @@ -0,0 +1,4 @@ +{ + "foo": "bar", + "some_key": "some_data" +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..8fbdeed --- /dev/null +++ b/src/main.rs @@ -0,0 +1,10 @@ +use std::collections::HashMap; + +const ENC_DATA: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/enc_data.bin")); + +fn main() { + let enc_data = bincode::deserialize::>(ENC_DATA) + .expect("Failed to deserialize enc_data"); + + dbg!(enc_data); +}