add support for RFC5914 structs. #356
Merged
tarcieri merged 5 commits intoRustCrypto:masterfrom Feb 2, 2022
Merged
Conversation
… definitions to work around macro-related issues. Notes on non-use of macros
In trust_anchor_format.rs
- Choice was not used on TrustAnchorChoice owing to types not available in Asn1Type enum
- Sequence was not used on TrustAnchorInfo owing to lack of DecodeValue required by context_specific
error[E0277]: the trait bound `TrustAnchorInfo<'a>: DecodeValue<'_>` is not satisfied
--> x509/src/trust_anchor_format.rs:295:22
|
295 | .context_specific::<TrustAnchorInfo<'a>>(TAC_TA_INFO_TAG, TagMode::Explicit)?;
| ^^^^^^^^^^^^^^^^ the trait `DecodeValue<'_>` is not implemented for `TrustAnchorInfo<'a>`
|
note: required by a bound in `Decoder::<'a>::context_specific`
--> der/src/decoder.rs:172:12
|
172 | T: DecodeValue<'a> + FixedTag,
| ^^^^^^^^^^^^^^^ required by this bound in `Decoder::<'a>::context_specific`
- Sequence was not used on CertPathControls to use decode_implicit for each field (trailing bits were left using the default decoder even with mods to Certificate and NameConstraints)
In certificate.rs
- Sequence was not used on Certificate due to same issue as described above for TrustAnchorInfo (i.e., tension between use of DecodeValue and Decodable)
- Sequence was not used on NameConstraints for the same DecodeValue vs Decodable issue.
tarcieri
reviewed
Feb 1, 2022
… Decodable (RustCrypto#375) and remove custom impls on Certificate, NameConstraints and CertPathControls.
Member
|
@carl-wallace can you rebase? I just want to make sure #377 didn't cause any breakages |
Contributor
Author
|
I pushed changes to use x501 in the trust_anchor_format file. |
tarcieri
reviewed
Feb 2, 2022
Comment on lines
+50
to
+77
| impl<'a> DecodeValue<'a> for TrustAnchorInfo<'a> { | ||
| fn decode_value(decoder: &mut Decoder<'a>, _length: Length) -> der::Result<Self> { | ||
| let version = match decoder.decode()? { | ||
| Some(v) => Some(v), | ||
| _ => Some(1), | ||
| }; | ||
|
|
||
| let pub_key = decoder.decode()?; | ||
| let key_id = decoder.decode()?; | ||
| let ta_title = decoder.decode()?; | ||
| let cert_path = decoder.decode()?; | ||
| let extensions = | ||
| ::der::asn1::ContextSpecific::decode_explicit(decoder, ::der::TagNumber::N1)? | ||
| .map(|cs| cs.value); | ||
| let ta_title_lang_tag = | ||
| ::der::asn1::ContextSpecific::decode_explicit(decoder, ::der::TagNumber::N2)? | ||
| .map(|cs| cs.value); | ||
| Ok(Self { | ||
| version, | ||
| pub_key, | ||
| key_id, | ||
| ta_title, | ||
| cert_path, | ||
| extensions, | ||
| ta_title_lang_tag, | ||
| }) | ||
| } | ||
| } |
Member
There was a problem hiding this comment.
Can this one use the proc macro now?
Member
There was a problem hiding this comment.
I guess you left a note here:
Sequencewas not used onTrustAnchorInfoowing to lack ofDecodeValuerequired bycontext_specific
It should probably work now.
Member
|
In the interest of moving things along I'm going to go ahead and merge this. Perhaps @npmccallum can take a look at converting them to a proc macro in #363. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
make adjusts to some prior structure definitions to work around macro-related issues. Notes on non-use of macros
In trust_anchor_format.rs
error[E0277]: the trait bound
TrustAnchorInfo<'a>: DecodeValue<'_>is not satisfied--> x509/src/trust_anchor_format.rs:295:22
|
295 | .context_specific::<TrustAnchorInfo<'a>>(TAC_TA_INFO_TAG, TagMode::Explicit)?;
| ^^^^^^^^^^^^^^^^ the trait
DecodeValue<'_>is not implemented forTrustAnchorInfo<'a>|
note: required by a bound in
Decoder::<'a>::context_specific--> der/src/decoder.rs:172:12
|
172 | T: DecodeValue<'a> + FixedTag,
| ^^^^^^^^^^^^^^^ required by this bound in
Decoder::<'a>::context_specificIn certificate.rs