feat: v1.1.11, piv sign works, add piv generate

This commit is contained in:
2022-04-09 19:57:32 +08:00
parent 27dca7af84
commit 51ba3d8500
9 changed files with 106 additions and 28 deletions

View File

@@ -1,11 +1,13 @@
use std::fs::File;
use clap::{App, Arg, ArgMatches, SubCommand};
use openssl::bn::{BigNum, BigNumContext};
use openssl::hash::MessageDigest;
use openssl::pkey::PKey;
use openssl::rsa::Rsa;
use openssl::sign::Verifier;
use rust_util::util_clap::{Command, CommandError};
use rust_util::util_msg::MessageType;
use rust_util::XResult;
use crate::digest::sha256_bytes;
@@ -47,6 +49,16 @@ impl Command for CommandImpl {
return simple_error!("Signature is required, --signature argument!");
};
rust_util::util_msg::when(MessageType::DEBUG, || {
let rsa = keypair.rsa().clone().unwrap();
let n = rsa.n();
let e = rsa.e();
let m = BigNum::from_slice(&signature).unwrap();
let mut r = BigNum::new().unwrap();
r.mod_exp(&m, &e, &n, &mut BigNumContext::new().unwrap()).unwrap();
debugging!("Signature raw HEX: {}", hex::encode(&r.to_vec()));
});
let file_in = opt_value_result!(sub_arg_matches.value_of("in"), "File in --in required");
information!("File in: {}", file_in);
information!("Public key fingerprint: {}", pub_key_fingerprint);