Skip to main content

read_in

Function read_in 

Source
pub fn read_in<'a>(
    identifier: AlgorithmIdentifier<'a>,
    parent: &ScopedReader<'a, '_>,
) -> Result<Option<Parameters<'a>>>
Expand description

Reads present PSS parameters in the producing session; preserves absence.

Callers reject absent signature parameters but may accept an unrestricted PSS key (RFC4055 ยง3.1). This function does neither role selection nor policy. Original encoding, offsets, depth and local/current work ceilings survive.

use std::sync::Arc;
use structured_asn1::{Parser, memory::{Memory, MemoryAccount}};
use structured_pkix::algorithm::{self, pss};
let parser = Parser::der(Memory::new(Arc::new(MemoryAccount::new(4096, 4096))));
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 algorithm = algorithm::read(&reader, &element, "signatureAlgorithm")?;
let parameters = pss::read_in(algorithm, &reader)?.unwrap();
assert!(parameters.hash().is_none());
assert_eq!(parameters.salt().as_u64(), Some(20));
assert_eq!(parameters.element().span().start, 413);