feat: update derparser-rs

This commit is contained in:
2024-08-11 15:50:21 +08:00
parent 43922cda4a
commit 039a195573
3 changed files with 80 additions and 25 deletions

85
derparse-rs/Cargo.lock generated
View File

@@ -42,15 +42,21 @@ dependencies = [
[[package]]
name = "autocfg"
version = "1.1.0"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
[[package]]
name = "base64"
version = "0.21.5"
version = "0.21.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
[[package]]
name = "base64"
version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]]
name = "der-parser"
@@ -69,21 +75,22 @@ dependencies = [
name = "derparse-rs"
version = "0.1.0"
dependencies = [
"base64",
"base64 0.21.7",
"der-parser",
"hex",
"oid-registry",
"pem",
]
[[package]]
name = "displaydoc"
version = "0.2.4"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.39",
"syn 2.0.73",
]
[[package]]
@@ -94,9 +101,9 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
[[package]]
name = "memchr"
version = "2.6.4"
version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "minimal-lexical"
@@ -116,9 +123,9 @@ dependencies = [
[[package]]
name = "num-traits"
version = "0.2.17"
version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [
"autocfg",
]
@@ -133,19 +140,29 @@ dependencies = [
]
[[package]]
name = "proc-macro2"
version = "1.0.69"
name = "pem"
version = "3.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae"
dependencies = [
"base64 0.22.1",
"serde",
]
[[package]]
name = "proc-macro2"
version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.33"
version = "1.0.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
dependencies = [
"proc-macro2",
]
@@ -159,6 +176,26 @@ dependencies = [
"nom",
]
[[package]]
name = "serde"
version = "1.0.206"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b3e4cd94123dd520a128bcd11e34d9e9e423e7e3e50425cb1b4b1e3549d0284"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.206"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fabfb6138d2383ea8208cf98ccf69cdfb1aff4088460681d84189aa259762f97"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.73",
]
[[package]]
name = "syn"
version = "1.0.109"
@@ -172,9 +209,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.39"
version = "2.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
checksum = "837a7e8026c6ce912ff01cefbe8cafc2f8010ac49682e2a3d9decc3bce1ecaaf"
dependencies = [
"proc-macro2",
"quote",
@@ -195,22 +232,22 @@ dependencies = [
[[package]]
name = "thiserror"
version = "1.0.50"
version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.50"
version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.39",
"syn 2.0.73",
]
[[package]]

View File

@@ -10,5 +10,6 @@ base64 = "0.21.5"
der-parser = "8.2.0"
hex = "0.4.3"
oid-registry = { version = "0.6.1", features = ["x962", "x509", "crypto", "pkcs1", "pkcs12", "pkcs7", "pkcs9", "kdf", "ms_spc", "nist_algs"] }
pem = "3.0.4"

View File

@@ -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;