feat: add parse_padding, padding_to_string
This commit is contained in:
@@ -3,7 +3,7 @@ use std::collections::BTreeMap;
|
|||||||
use clap::{App, Arg, ArgMatches, SubCommand};
|
use clap::{App, Arg, ArgMatches, SubCommand};
|
||||||
use openssl::encrypt::Decrypter;
|
use openssl::encrypt::Decrypter;
|
||||||
use openssl::pkey::PKey;
|
use openssl::pkey::PKey;
|
||||||
use openssl::rsa::{Padding, Rsa};
|
use openssl::rsa::Rsa;
|
||||||
use rust_util::util_clap::{Command, CommandError};
|
use rust_util::util_clap::{Command, CommandError};
|
||||||
|
|
||||||
pub struct CommandImpl;
|
pub struct CommandImpl;
|
||||||
@@ -29,21 +29,8 @@ impl Command for CommandImpl {
|
|||||||
let pri_key_bytes = opt_result!(std::fs::read(pri_key_in), "Read file: {}, failed: {}", pri_key_in);
|
let pri_key_bytes = opt_result!(std::fs::read(pri_key_in), "Read file: {}, failed: {}", pri_key_in);
|
||||||
|
|
||||||
let padding_opt = sub_arg_matches.value_of("padding");
|
let padding_opt = sub_arg_matches.value_of("padding");
|
||||||
|
let padding = crate::rsautil::parse_padding(padding_opt)?;
|
||||||
let padding = match padding_opt {
|
let padding_str = crate::rsautil::padding_to_string(padding);
|
||||||
Some("oaep") | Some("pkcs1_oaep") => Padding::PKCS1_OAEP,
|
|
||||||
Some("pss") | Some("pkcs1_pss") => Padding::PKCS1_PSS,
|
|
||||||
Some("none") => Padding::NONE,
|
|
||||||
Some("pkcs1") | None => Padding::PKCS1,
|
|
||||||
Some(p) => return simple_error!("Not supported padding: {}", p),
|
|
||||||
};
|
|
||||||
let padding_str = match padding {
|
|
||||||
Padding::NONE => "none",
|
|
||||||
Padding::PKCS1 => "pkcs1",
|
|
||||||
Padding::PKCS1_PSS => "pkcs1_pss",
|
|
||||||
Padding::PKCS1_OAEP => "pkcs1_oaep",
|
|
||||||
_ => "unknown",
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut json = BTreeMap::new();
|
let mut json = BTreeMap::new();
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use std::collections::BTreeMap;
|
|||||||
use clap::{App, Arg, ArgMatches, SubCommand};
|
use clap::{App, Arg, ArgMatches, SubCommand};
|
||||||
use openssl::encrypt::Encrypter;
|
use openssl::encrypt::Encrypter;
|
||||||
use openssl::pkey::PKey;
|
use openssl::pkey::PKey;
|
||||||
use openssl::rsa::{Padding, Rsa};
|
use openssl::rsa::Rsa;
|
||||||
use rust_util::util_clap::{Command, CommandError};
|
use rust_util::util_clap::{Command, CommandError};
|
||||||
|
|
||||||
use crate::digest::sha256_bytes;
|
use crate::digest::sha256_bytes;
|
||||||
@@ -32,21 +32,8 @@ impl Command for CommandImpl {
|
|||||||
let pub_key_bytes = opt_result!(std::fs::read(pub_key_in), "Read file: {}, failed: {}", pub_key_in);
|
let pub_key_bytes = opt_result!(std::fs::read(pub_key_in), "Read file: {}, failed: {}", pub_key_in);
|
||||||
|
|
||||||
let padding_opt = sub_arg_matches.value_of("padding");
|
let padding_opt = sub_arg_matches.value_of("padding");
|
||||||
|
let padding = crate::rsautil::parse_padding(padding_opt)?;
|
||||||
let padding = match padding_opt {
|
let padding_str = crate::rsautil::padding_to_string(padding);
|
||||||
Some("oaep") | Some("pkcs1_oaep") => Padding::PKCS1_OAEP,
|
|
||||||
Some("pss") | Some("pkcs1_pss") => Padding::PKCS1_PSS,
|
|
||||||
Some("none") => Padding::NONE,
|
|
||||||
Some("pkcs1") | None => Padding::PKCS1,
|
|
||||||
Some(p) => return simple_error!("Not supported padding: {}", p),
|
|
||||||
};
|
|
||||||
let padding_str = match padding {
|
|
||||||
Padding::NONE => "none",
|
|
||||||
Padding::PKCS1 => "pkcs1",
|
|
||||||
Padding::PKCS1_PSS => "pkcs1_pss",
|
|
||||||
Padding::PKCS1_OAEP => "pkcs1_oaep",
|
|
||||||
_ => "unknown",
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut json = BTreeMap::new();
|
let mut json = BTreeMap::new();
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
use openssl::bn::{BigNum, BigNumContext};
|
use openssl::bn::{BigNum, BigNumContext};
|
||||||
|
use openssl::rsa::Padding;
|
||||||
use rust_util::XResult;
|
use rust_util::XResult;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
@@ -31,6 +32,26 @@ pub fn clone_big_num(n: &BigNum) -> XResult<BigNum> {
|
|||||||
Ok(opt_result!(BigNum::from_slice(n.to_vec().as_slice()), "Clone big num:{}, failed: {}", n))
|
Ok(opt_result!(BigNum::from_slice(n.to_vec().as_slice()), "Clone big num:{}, failed: {}", n))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn parse_padding(padding_opt: Option<&str>) -> XResult<Padding> {
|
||||||
|
Ok(match padding_opt {
|
||||||
|
Some("oaep") | Some("pkcs1_oaep") => Padding::PKCS1_OAEP,
|
||||||
|
Some("pss") | Some("pkcs1_pss") => Padding::PKCS1_PSS,
|
||||||
|
Some("none") => Padding::NONE,
|
||||||
|
Some("pkcs1") | None => Padding::PKCS1,
|
||||||
|
Some(p) => return simple_error!("Not supported padding: {}", p),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn padding_to_string(padding: Padding) -> &'static str {
|
||||||
|
match padding {
|
||||||
|
Padding::NONE => "none",
|
||||||
|
Padding::PKCS1 => "pkcs1",
|
||||||
|
Padding::PKCS1_PSS => "pkcs1_pss",
|
||||||
|
Padding::PKCS1_OAEP => "pkcs1_oaep",
|
||||||
|
_ => "unknown",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn inner_from(p: BigNum, q: BigNum, e: BigNum) -> XResult<RsaCrt> {
|
fn inner_from(p: BigNum, q: BigNum, e: BigNum) -> XResult<RsaCrt> {
|
||||||
let mut n = BigNum::new()?;
|
let mut n = BigNum::new()?;
|
||||||
n.checked_mul(&p, &q, &mut BigNumContext::new().unwrap())?;
|
n.checked_mul(&p, &q, &mut BigNumContext::new().unwrap())?;
|
||||||
|
|||||||
Reference in New Issue
Block a user