From 4ccb9c9bfd0c5be7598b8c07e975efcd32b73c57 Mon Sep 17 00:00:00 2001 From: dishmaker <141624503+dishmaker@users.noreply.github.com> Date: Thu, 24 Apr 2025 00:32:30 +0200 Subject: [PATCH] pkcs8: add PrivateKeyInfo.attributes [0] IMPLICIT reader --- pkcs8/src/private_key_info.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkcs8/src/private_key_info.rs b/pkcs8/src/private_key_info.rs index e61f8f1e6..c862f0d9c 100644 --- a/pkcs8/src/private_key_info.rs +++ b/pkcs8/src/private_key_info.rs @@ -5,7 +5,7 @@ use core::fmt; use der::{ Decode, DecodeValue, Encode, EncodeValue, FixedTag, Header, Length, Reader, Sequence, TagMode, TagNumber, Writer, - asn1::{AnyRef, BitStringRef, ContextSpecific, OctetStringRef}, + asn1::{AnyRef, BitStringRef, ContextSpecific, OctetStringRef, SequenceRef}, }; use spki::AlgorithmIdentifier; @@ -26,6 +26,9 @@ use der::pem::PemLabel; #[cfg(feature = "subtle")] use subtle::{Choice, ConstantTimeEq}; +/// Context-specific tag number for attributes. +const ATTRIBUTES_TAG: TagNumber = TagNumber(0); + /// Context-specific tag number for the public key. const PUBLIC_KEY_TAG: TagNumber = TagNumber(1); @@ -199,6 +202,10 @@ where let version = Version::decode(reader)?; let algorithm = reader.decode()?; let private_key = Key::decode(reader)?; + + let _attributes = + reader.context_specific::>(ATTRIBUTES_TAG, TagMode::Implicit)?; + let public_key = reader.context_specific::(PUBLIC_KEY_TAG, TagMode::Implicit)?;