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 openssl::encrypt::Decrypter;
|
||||
use openssl::pkey::PKey;
|
||||
use openssl::rsa::{Padding, Rsa};
|
||||
use openssl::rsa::Rsa;
|
||||
use rust_util::util_clap::{Command, CommandError};
|
||||
|
||||
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 padding_opt = sub_arg_matches.value_of("padding");
|
||||
|
||||
let padding = 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),
|
||||
};
|
||||
let padding_str = match padding {
|
||||
Padding::NONE => "none",
|
||||
Padding::PKCS1 => "pkcs1",
|
||||
Padding::PKCS1_PSS => "pkcs1_pss",
|
||||
Padding::PKCS1_OAEP => "pkcs1_oaep",
|
||||
_ => "unknown",
|
||||
};
|
||||
let padding = crate::rsautil::parse_padding(padding_opt)?;
|
||||
let padding_str = crate::rsautil::padding_to_string(padding);
|
||||
|
||||
let mut json = BTreeMap::new();
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ use std::collections::BTreeMap;
|
||||
use clap::{App, Arg, ArgMatches, SubCommand};
|
||||
use openssl::encrypt::Encrypter;
|
||||
use openssl::pkey::PKey;
|
||||
use openssl::rsa::{Padding, Rsa};
|
||||
use openssl::rsa::Rsa;
|
||||
use rust_util::util_clap::{Command, CommandError};
|
||||
|
||||
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 padding_opt = sub_arg_matches.value_of("padding");
|
||||
|
||||
let padding = 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),
|
||||
};
|
||||
let padding_str = match padding {
|
||||
Padding::NONE => "none",
|
||||
Padding::PKCS1 => "pkcs1",
|
||||
Padding::PKCS1_PSS => "pkcs1_pss",
|
||||
Padding::PKCS1_OAEP => "pkcs1_oaep",
|
||||
_ => "unknown",
|
||||
};
|
||||
let padding = crate::rsautil::parse_padding(padding_opt)?;
|
||||
let padding_str = crate::rsautil::padding_to_string(padding);
|
||||
|
||||
let mut json = BTreeMap::new();
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
use openssl::bn::{BigNum, BigNumContext};
|
||||
use openssl::rsa::Padding;
|
||||
use rust_util::XResult;
|
||||
|
||||
#[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))
|
||||
}
|
||||
|
||||
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> {
|
||||
let mut n = BigNum::new()?;
|
||||
n.checked_mul(&p, &q, &mut BigNumContext::new().unwrap())?;
|
||||
|
||||
Reference in New Issue
Block a user