Skip to content

Commit 048166f

Browse files
committed
Try read from SHARED_SSS and PRIVATE_SSS when files are not found
1 parent d8f977f commit 048166f

3 files changed

Lines changed: 21 additions & 6 deletions

File tree

sss-tool/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sss-tool/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "sss-tool"
3-
version = "0.1.0"
3+
version = "0.1.1"
44

55
[dependencies]
66
clap = { version = "4.5", features = ["derive"] }

sss-tool/src/main.rs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@ mod sss {
114114
use Aes256Gcm;
115115
use HashMap;
116116

117+
use std::env;
118+
use std::io::Cursor;
117119
use std::io::Error;
118120
use std::io::ErrorKind;
119121

@@ -549,9 +551,22 @@ mod sss {
549551
Ok(usize::from_le_bytes(buf))
550552
}
551553

552-
fn load_preffix(path: &str) -> std::io::Result<File> {
553-
let mut reader = File::open(path)?;
554+
fn load_preffix(path: &str, env_var: &str) -> std::io::Result<Box<dyn Read>> {
555+
let reader: Box<dyn Read> = match File::open(path) {
556+
Ok(f) => Box::new(f),
557+
Err(e) => {
558+
if let Ok(val) = env::var(env_var) {
559+
let bytes = general_purpose::STANDARD
560+
.decode(val)
561+
.map_err(|e| Error::new(ErrorKind::InvalidData, e))?;
562+
Box::new(Cursor::new(bytes))
563+
} else {
564+
return Err(e);
565+
}
566+
}
567+
};
554568

569+
let mut reader = reader;
555570
let ver = Self::read_u32(&mut reader)?;
556571
if SSS_DATA_VER != ver {
557572
return Err(std::io::Error::other("unsupported ver"));
@@ -561,7 +576,7 @@ mod sss {
561576
}
562577

563578
pub fn load_private_only() -> std::io::Result<State> {
564-
let mut reader = Self::load_preffix(FILE_PRIVATE)?;
579+
let mut reader = Self::load_preffix(FILE_PRIVATE, "PRIVATE_SSS")?;
565580

566581
let mut seed = [0_u8; 32];
567582
reader.read_exact(&mut seed)?;
@@ -599,7 +614,7 @@ mod sss {
599614
}
600615

601616
pub fn load_shared(&mut self) -> anyhow::Result<()> {
602-
let mut reader = Self::load_preffix(FILE_SHARED)?;
617+
let mut reader = Self::load_preffix(FILE_SHARED, "SHARED_SSS")?;
603618

604619
let mut flag = [0_u8];
605620
reader.read_exact(&mut flag)?;

0 commit comments

Comments
 (0)