feat: update derparser-rs
This commit is contained in:
@@ -9,12 +9,14 @@
|
||||
//! ```
|
||||
|
||||
use std::fs;
|
||||
use std::str::FromStr;
|
||||
|
||||
use base64::Engine;
|
||||
use der_parser::ber::{BerObject, BerObjectContent};
|
||||
use der_parser::Oid;
|
||||
use oid_registry::{OidEntry, OidRegistry};
|
||||
use oid_registry::asn1_rs::oid;
|
||||
use pem::Pem;
|
||||
|
||||
fn main() {
|
||||
let args = std::env::args().skip(1).collect::<Vec<_>>();
|
||||
@@ -23,7 +25,7 @@ fn main() {
|
||||
return;
|
||||
}
|
||||
let arg1 = &args[0];
|
||||
let content = try_parse(arg1);
|
||||
let content = try_load_and_parse(arg1);
|
||||
let ber_obj = match der_parser::parse_ber(&content) {
|
||||
Ok(ber_obj) => ber_obj.1,
|
||||
Err(e) => panic!("Parse DER failed: {}", e),
|
||||
@@ -33,7 +35,22 @@ fn main() {
|
||||
print(&oid_reg, 0, &ber_obj);
|
||||
}
|
||||
|
||||
fn try_load_and_parse(arg1: &str) -> Vec<u8> {
|
||||
match fs::read(arg1) {
|
||||
Ok(file_content) => match String::from_utf8(file_content.clone()) {
|
||||
Ok(file_content_string) => try_parse(&file_content_string),
|
||||
Err(_) => file_content,
|
||||
}
|
||||
Err(_) => try_parse(arg1)
|
||||
}
|
||||
}
|
||||
|
||||
fn try_parse(arg1: &str) -> Vec<u8> {
|
||||
if arg1.contains("-----") {
|
||||
let pem = Pem::from_str(arg1).expect("Parse pem failed.");
|
||||
return pem.contents().to_vec();
|
||||
}
|
||||
|
||||
let arg1 = arg1.replace("\n", "").replace("\r", "");
|
||||
if let Ok(h) = hex::decode(&arg1) {
|
||||
return h;
|
||||
|
||||
Reference in New Issue
Block a user