pub struct Parameters<'a> { /* private fields */ }Expand description
Original PSS schema values, not algorithm support or signature validity.
Implementations§
Source§impl<'a> Parameters<'a>
impl<'a> Parameters<'a>
Sourcepub fn profile<W: Work>(&self, execution: &W) -> Result<Resolution<Profile<'a>>>
pub fn profile<W: Work>(&self, execution: &W) -> Result<Resolution<Profile<'a>>>
Interprets already decoded fields without a second PSS schema pass.
Written digests reuse the shared digest resolver (SHA-1/SHA-2/SHA3);
schema defaults impose SHA-1 without a fabricated identifier. MGF1
may use a different digest from the message. Unknown digests/mask
functions or nonnegative trailers other than 1 are Unsupported,
never a key mismatch. Recognition does not promise backend support.
Negative trailers and invalid known digest parameters are located
malformed errors. Original fields remain available for inspection.
Strict versus recoverable DER spelling is determined by the caller’s
earlier pss::read or pss::inspect; projection does not erase faults
or turn an inspection result into conforming evidence.
§Errors
Located malformed fields or terminal source/current resource refusal.
§Examples
use std::sync::Arc;
use structured_asn1::{Parser, digest::Resolution, memory::{Memory, MemoryAccount}};
use structured_pkix::algorithm::{self, digest, pss};
let parser = Parser::ber(Memory::new(Arc::new(MemoryAccount::new(4096, 4096))));
// id-RSASSA-PSS, empty parameters: SHA1, MGF1-SHA1, salt 20, trailer 1.
let bytes = b"\x30\x0d\x06\x09\x2a\x86\x48\x86\xf7\x0d\x01\x01\x0a\x30\x00";
let mut reader = parser.read(bytes, 400).unwrap();
let element = reader.next_element().unwrap().unwrap();
let identifier = algorithm::read(&reader, &element, "signatureAlgorithm")?;
let fields = pss::read(identifier, parser.memory())?.unwrap();
let current = Memory::new(Arc::new(MemoryAccount::new(0, 4096)));
let Resolution::Supported(profile) = fields.profile(¤t)? else { panic!("PSS") };
assert_eq!(profile.hash(), digest::Algorithm::Sha1);
assert_eq!(profile.salt().as_u64(), Some(20));
assert!(profile.allows(&profile, ¤t)?);Source§impl<'a> Parameters<'a>
impl<'a> Parameters<'a>
Sourcepub fn element(self) -> Element<'a>
pub fn element(self) -> Element<'a>
Complete original parameter SEQUENCE, without copies or normalization.
Sourcepub fn hash(self) -> Option<Written<'a, AlgorithmIdentifier<'a>>>
pub fn hash(self) -> Option<Written<'a, AlgorithmIdentifier<'a>>>
Written hash identifier; None is the schema’s SHA-1 default.