mirror of
https://github.com/Drop-OSS/drop.git
synced 2026-07-27 18:24:43 +10:00
feat: iv and key creation
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
use std::path::PathBuf;
|
||||
|
||||
use droplet_rs::manifest::generate_manifest_rusty;
|
||||
use serde_json::json;
|
||||
use tokio::runtime::Handle;
|
||||
|
||||
#[tokio::main]
|
||||
pub async fn main() {
|
||||
let metrics = Handle::current().metrics();
|
||||
println!("using {} workers", metrics.num_workers());
|
||||
generate_manifest_rusty(
|
||||
let manifest = generate_manifest_rusty(
|
||||
&PathBuf::from("/home/decduck/.local/share/Steam/steamapps/common/Savage Resurrection"),
|
||||
|progress| {
|
||||
println!("PROGRESS: {}", progress)
|
||||
@@ -18,4 +19,5 @@ pub async fn main() {
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
tokio::fs::write("./manifst.json", json!(manifest).to_string()).await.expect("failed to write manifest");
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ pub struct FileEntry {
|
||||
pub struct ChunkData {
|
||||
files: Vec<FileEntry>,
|
||||
checksum: String,
|
||||
//iv: [u8; 16]
|
||||
iv: [u8; 16],
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
@@ -37,6 +37,7 @@ pub struct Manifest {
|
||||
version: String,
|
||||
chunks: HashMap<String, ChunkData>,
|
||||
size: u64,
|
||||
key: [u8; 16],
|
||||
}
|
||||
|
||||
const CHUNK_SIZE: u64 = 1024 * 1024 * 64;
|
||||
@@ -153,10 +154,12 @@ pub async fn generate_manifest_rusty<T: Fn(String), V: Fn(f32)>(
|
||||
let uuid = uuid::Uuid::new_v4().to_string();
|
||||
let mut hasher = Sha256::new();
|
||||
|
||||
let mut iv = [0u8; 16];
|
||||
getrandom::fill(&mut iv).map_err(|err| anyhow!("failed to generate IV: {:?}", err))?;
|
||||
let mut chunk_data = ChunkData {
|
||||
files: Vec::new(),
|
||||
checksum: String::new(),
|
||||
//iv:
|
||||
iv,
|
||||
};
|
||||
|
||||
let mut chunk_length = 0;
|
||||
@@ -224,9 +227,13 @@ pub async fn generate_manifest_rusty<T: Fn(String), V: Fn(f32)>(
|
||||
let manifest = manifest.lock().await;
|
||||
let manifest = manifest.clone();
|
||||
|
||||
let mut key = [0u8; 16];
|
||||
getrandom::fill(&mut key).map_err(|err| anyhow!("failed to generate key: {:?}", err))?;
|
||||
|
||||
Ok(Manifest {
|
||||
version: "2".to_string(),
|
||||
chunks: manifest,
|
||||
size: total_manifest_length.fetch_add(0, Ordering::Relaxed)
|
||||
size: total_manifest_length.fetch_add(0, Ordering::Relaxed),
|
||||
key,
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user