internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.WriteInteger(Version); writer.WriteObjectIdentifier(Policy); MessageImprint.Encode(writer); writer.WriteInteger(SerialNumber.Span); writer.WriteGeneralizedTime(GenTime); if (Accuracy.HasValue) { Accuracy.Value.Encode(writer); } // DEFAULT value handler for Ordering. { using (AsnWriter tmp = new AsnWriter(AsnEncodingRules.DER)) { tmp.WriteBoolean(Ordering); ReadOnlySpan <byte> encoded = tmp.EncodeAsSpan(); if (!encoded.SequenceEqual(DefaultOrdering)) { writer.WriteEncodedValue(encoded); } } } if (Nonce.HasValue) { writer.WriteInteger(Nonce.Value.Span); } if (Tsa.HasValue) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); Tsa.Value.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); } if (Extensions != null) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); for (int i = 0; i < Extensions.Length; i++) { Extensions[i].Encode(writer); } writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.WriteInteger(Version); MessageImprint.Encode(writer); if (ReqPolicy != null) { writer.WriteObjectIdentifier(ReqPolicy); } if (Nonce.HasValue) { writer.WriteInteger(Nonce.Value.Span); } // DEFAULT value handler for CertReq. { using (AsnWriter tmp = new AsnWriter(AsnEncodingRules.DER)) { tmp.WriteBoolean(CertReq); ReadOnlySpan <byte> encoded = tmp.EncodeAsSpan(); if (!encoded.SequenceEqual(DefaultCertReq)) { writer.WriteEncodedValue(encoded); } } } if (Extensions != null) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); for (int i = 0; i < Extensions.Length; i++) { Extensions[i].Encode(writer); } writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); } writer.PopSequence(tag); }