Time locked to 0.3.20 to guarantee MSRV of 1.63.
Update snmp-parser to 0.10.0.
Update asn1-rs to 0.6.1.
Update kerberos-parser to 0.8.0.
Update x509-parser 0.16.0.
Update der-parser to 9.0.0.
Remove specific use of der-parser 6.
Ticket: #6817.
Ticket: #6818.
[[package]]
name = "asn1-rs"
-version = "0.5.2"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0"
+checksum = "22ad1373757efa0f70ec53939aabc7152e1591cb485208052993070ac8d2429d"
dependencies = [
"asn1-rs-derive",
"asn1-rs-impl",
[[package]]
name = "asn1-rs-derive"
-version = "0.4.0"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c"
+checksum = "7378575ff571966e99a744addeff0bff98b8ada0dedf1956d59e634db95eaac1"
dependencies = [
"proc-macro2 1.0.69",
"quote 1.0.33",
- "syn 1.0.109",
- "synstructure",
+ "syn 2.0.39",
+ "synstructure 0.13.1",
]
[[package]]
name = "asn1-rs-impl"
-version = "0.1.0"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed"
+checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7"
dependencies = [
"proc-macro2 1.0.69",
"quote 1.0.33",
- "syn 1.0.109",
+ "syn 2.0.39",
]
[[package]]
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
-[[package]]
-name = "der-oid-macro"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c73af209b6a5dc8ca7cbaba720732304792cddc933cfea3d74509c2b1ef2f436"
-dependencies = [
- "num-bigint 0.4.4",
- "num-traits 0.2.17",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "der-parser"
-version = "6.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4cddf120f700b411b2b02ebeb7f04dc0b7c8835909a6c2f52bf72ed0dd3433b2"
-dependencies = [
- "der-oid-macro",
- "nom",
- "num-traits 0.2.17",
- "rusticata-macros",
-]
-
[[package]]
name = "der-parser"
-version = "8.2.0"
+version = "9.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e"
+checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553"
dependencies = [
"asn1-rs",
"displaydoc",
"proc-macro2 1.0.69",
"quote 1.0.33",
"syn 1.0.109",
- "synstructure",
+ "synstructure 0.12.6",
]
[[package]]
[[package]]
name = "kerberos-parser"
-version = "0.7.1"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c10e7cfd4759cbce37ea65e2f48caebd695c246196a38e97ba4f731da48996da"
+checksum = "dedcd80c336b8a8dc828afe2be00fb7006c48a95c2396beb0555149fb414f321"
dependencies = [
- "der-parser 6.0.1",
+ "der-parser",
"nom",
"rusticata-macros",
]
"syn 1.0.109",
]
-[[package]]
-name = "num_threads"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
-dependencies = [
- "libc",
-]
-
[[package]]
name = "oid-registry"
-version = "0.6.1"
+version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff"
+checksum = "1c958dd45046245b9c3c2547369bb634eb461670b2e7e0de552905801a648d1d"
dependencies = [
"asn1-rs",
]
[[package]]
name = "snmp-parser"
-version = "0.9.0"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "773a26ad6742636f4259e7cc32262efb31feabd56bc34f0b2f28de9801aa24b3"
+checksum = "0f93180ada23141ed2643b7b4a7b20c7efea6af9c6bdc997c15b813bfa6e2c20"
dependencies = [
"asn1-rs",
"nom",
"brotli",
"byteorder",
"crc",
- "der-parser 6.0.1",
- "der-parser 8.2.0",
+ "der-parser",
"digest",
"flate2",
"hex",
"unicode-xid 0.2.4",
]
+[[package]]
+name = "synstructure"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
+dependencies = [
+ "proc-macro2 1.0.69",
+ "quote 1.0.33",
+ "syn 2.0.39",
+]
+
[[package]]
name = "test-case"
version = "3.3.1"
[[package]]
name = "time"
-version = "0.3.13"
+version = "0.3.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db76ff9fa4b1458b3c7f077f3ff9887394058460d21e634355b273aaf11eea45"
+checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
dependencies = [
"itoa",
- "libc",
- "num_threads",
+ "serde",
+ "time-core",
"time-macros",
]
+[[package]]
+name = "time-core"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
+
[[package]]
name = "time-macros"
-version = "0.2.4"
+version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792"
+checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
+dependencies = [
+ "time-core",
+]
[[package]]
name = "tls-parser"
[[package]]
name = "x509-parser"
-version = "0.15.1"
+version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7069fba5b66b9193bd2c5d3d4ff12b839118f6bcbef5328efafafb5395cf63da"
+checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69"
dependencies = [
"asn1-rs",
"data-encoding",
- "der-parser 8.2.0",
+ "der-parser",
"lazy_static",
"nom",
"oid-registry",
aes = "~0.7.5"
aes-gcm = "~0.9.4"
-der-parser = "~8.2.0"
-kerberos-parser = { version = "~0.7.1", default_features = false }
-
-# Kerberos parsing still depends on der-parser 6.0.1.
-der-parser6 = { package = "der-parser", version = "~6.0.1", default_features = false }
+der-parser = { version = "~9.0.0", default_features = false }
+kerberos-parser = { version = "~0.8.0", default_features = false }
sawp-modbus = "~0.12.1"
sawp = "~0.12.1"
ntp-parser = "~0.6.0"
ipsec-parser = "~0.7.0"
-snmp-parser = "~0.9.0"
+snmp-parser = "~0.10.0"
tls-parser = "~0.11.0"
-x509-parser = "~0.15.0"
+x509-parser = "~0.16.0"
libc = "~0.2.82"
sha2 = "~0.10.2"
digest = "~0.10.3"
lazy_static = "~1.4.0"
base64 = "~0.13.0"
bendy = { version = "~0.3.3", default-features = false }
-asn1-rs = { version = "~0.5.2" }
+asn1-rs = { version = "~0.6.1" }
-# The time crate has a policy of supporting Rust versions up to 6
-# month olds, so it needs to be pinned even at the patch level.
-time = "=0.3.13"
+# last version to work with MSRV 1.63
+time = "=0.3.20"
suricata-derive = { path = "./derive" }
-/* Copyright (C) 2018 Open Information Security Foundation
+/* Copyright (C) 2018-2024 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
use nom7::IResult;
use nom7::error::{ErrorKind, ParseError};
use nom7::number::streaming::le_u16;
-use der_parser6;
-use der_parser6::der::parse_der_oid;
-use der_parser6::error::BerError;
+use der_parser;
+use der_parser::der::parse_der_oid;
+use der_parser::error::BerError;
use kerberos_parser::krb5::{ApReq, PrincipalName, Realm};
-use kerberos_parser::krb5_parser::parse_ap_req;
+use asn1_rs::FromDer;
#[derive(Debug)]
pub enum SecBlobError {
fn parse_kerberos5_request_do(blob: &[u8]) -> IResult<&[u8], ApReq, SecBlobError>
{
- let (_,b) = der_parser6::parse_der(blob).map_err(nom7::Err::convert)?;
+ let (_,b) = der_parser::parse_der(blob).map_err(nom7::Err::convert)?;
let blob = b.as_slice().or(
Err(nom7::Err::Error(SecBlobError::KrbFmtError))
)?;
let parser = |i| {
let (i, _base_o) = parse_der_oid(i)?;
let (i, _tok_id) = le_u16(i)?;
- let (i, ap_req) = parse_ap_req(i)?;
+ let (i, ap_req) = ApReq::from_der(i)?;
Ok((i, ap_req))
};
parser(blob).map_err(nom7::Err::convert)
-/* Copyright (C) 2017-2021 Open Information Security Foundation
+/* Copyright (C) 2017-2024 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
use der_parser::der::der_read_element_header;
use der_parser::ber::Class;
use kerberos_parser::krb5_parser;
-use kerberos_parser::krb5::{EncryptionType,ErrorCode,MessageType,PrincipalName,Realm};
+use kerberos_parser::krb5::{EncryptionType,ErrorCode,MessageType,PrincipalName,Realm,KrbError};
+use asn1_rs::FromDer;
use crate::applayer::{self, *};
use crate::core;
use crate::core::{AppProto,Flow,ALPROTO_FAILED,ALPROTO_UNKNOWN,Direction};
self.req_id = 0;
},
30 => {
- let res = krb5_parser::parse_krb_error(i);
+ let res = KrbError::from_der(i);
if let Ok((_,error)) = res {
let mut tx = self.new_tx(direction);
if self.req_id > 0 {
-/* Copyright (C) 2018 Open Information Security Foundation
+/* Copyright (C) 2018-2024 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
use crate::smb::smb::*;
use nom7::{Err, IResult};
-use der_parser6::ber::BerObjectContent;
-use der_parser6::der::{parse_der_oid, parse_der_sequence};
+use der_parser::ber::BerObjectContent;
+use der_parser::der::{parse_der_oid, parse_der_sequence};
fn parse_secblob_get_spnego(blob: &[u8]) -> IResult<&[u8], &[u8], SecBlobError>
{
- let (rem, base_o) = der_parser6::parse_der(blob).map_err(Err::convert)?;
+ let (rem, base_o) = der_parser::parse_der(blob).map_err(Err::convert)?;
SCLogDebug!("parse_secblob_get_spnego: base_o {:?}", base_o);
let d = match base_o.content.as_slice() {
Err(_) => { return Err(Err::Error(SecBlobError::NotSpNego)); },
fn parse_secblob_spnego_start(blob: &[u8]) -> IResult<&[u8], &[u8], SecBlobError>
{
- let (rem, o) = der_parser6::parse_der(blob).map_err(Err::convert)?;
+ let (rem, o) = der_parser::parse_der(blob).map_err(Err::convert)?;
let d = match o.content.as_slice() {
Ok(d) => {
SCLogDebug!("d: next data len {}",d.len());
Ok(s) => s,
_ => { continue; },
};
- let o = match der_parser6::parse_der(n) {
+ let o = match der_parser::parse_der(n) {
Ok((_,x)) => x,
_ => { continue; },
};