Add command actions, sign a message
This commit is contained in:
parent
f08ddd24fa
commit
a03899a588
47
gongor.rs
47
gongor.rs
|
@ -1,25 +1,46 @@
|
||||||
|
use std::io::BufReader;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::prelude::*;
|
use std::io::prelude::*;
|
||||||
|
|
||||||
use rand::rngs::OsRng;
|
use rand::rngs::OsRng;
|
||||||
use ed25519_dalek::SigningKey;
|
use ed25519_dalek::SigningKey;
|
||||||
//use ed25519_dalek::Signature;
|
use ed25519_dalek::Signature;
|
||||||
|
use ed25519_dalek::Signer;
|
||||||
|
|
||||||
fn main() -> std::io::Result<()>{
|
fn main() -> std::io::Result<()>{
|
||||||
let filename = std::env::args().nth(1).expect("no filename given");
|
let action = std::env::args().nth(1).expect("no command given");
|
||||||
|
if action == "sign" {
|
||||||
|
let keyfilepath = std::env::args().nth(2).expect("no keyfilepath given");
|
||||||
|
let messagefilepath = std::env::args().nth(3).expect("no message given");
|
||||||
|
|
||||||
//let mut csprng = OsRng;
|
let mut keyfile = File::open(&keyfilepath).expect("no file found");
|
||||||
// let signing_key: SigningKey = SigningKey::generate(&mut csprng);
|
let mut keybuffer: [u8; 32] = [0; 32];
|
||||||
|
keyfile.read(&mut keybuffer).expect("buffer overflow");
|
||||||
|
let signing_key: SigningKey = SigningKey::from_bytes(&keybuffer);
|
||||||
|
|
||||||
// let mut file = File::create(filename)?;
|
let messagefile= File::open(&messagefilepath).expect("no file found");
|
||||||
// file.write_all(&signing_key.to_bytes())?;
|
let mut messagereader = BufReader::new(messagefile);
|
||||||
|
let mut messagebuf = Vec::new();
|
||||||
|
messagereader.read_to_end(&mut messagebuf)?;
|
||||||
|
|
||||||
let mut f = File::open(&filename).expect("no file found");
|
|
||||||
//let metadata = File::metadata(&f).expect("unable to read metadata");
|
|
||||||
let mut buffer: [u8; 32] = [0; 32];
|
|
||||||
f.read(&mut buffer).expect("buffer overflow");
|
|
||||||
let signing_key: SigningKey = SigningKey::from_bytes(&buffer);
|
|
||||||
|
|
||||||
println!("Using key {filename}");
|
|
||||||
Ok(())
|
println!("Using key {keyfilepath}");
|
||||||
|
|
||||||
|
let signature: Signature = signing_key.sign(&messagebuf);
|
||||||
|
println!("Signture: {signature}");
|
||||||
|
return Ok(())
|
||||||
|
} else if action == "create" {
|
||||||
|
let keyfilepath = std::env::args().nth(2).expect("no keyfilepath given");
|
||||||
|
let mut csprng = OsRng;
|
||||||
|
let signing_key: SigningKey = SigningKey::generate(&mut csprng);
|
||||||
|
|
||||||
|
println!("Writing new key to {keyfilepath}");
|
||||||
|
let mut file = File::create(keyfilepath)?;
|
||||||
|
file.write_all(&signing_key.to_bytes())?;
|
||||||
|
return Ok(());
|
||||||
|
} else {
|
||||||
|
println!("Unrecognized command {action}");
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue