internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); Salt.Encode(writer); writer.WriteInteger(IterationCount); if (KeyLength.HasValue) { writer.WriteInteger(KeyLength.Value); } // DEFAULT value handler for Prf. { using (AsnWriter tmp = new AsnWriter(AsnEncodingRules.DER)) { Prf.Encode(tmp); ReadOnlySpan <byte> encoded = tmp.EncodeAsSpan(); if (!encoded.SequenceEqual(s_defaultPrf)) { writer.WriteEncodedValue(encoded.ToArray()); } } } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); // DEFAULT value handler for HashFunc. { using (AsnWriter tmp = new AsnWriter(AsnEncodingRules.DER)) { HashFunc.Encode(tmp); ReadOnlySpan <byte> encoded = tmp.EncodeAsSpan(); if (!encoded.SequenceEqual(s_defaultHashFunc)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteEncodedValue(encoded); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); } } } // DEFAULT value handler for MaskGenFunc. { using (AsnWriter tmp = new AsnWriter(AsnEncodingRules.DER)) { MaskGenFunc.Encode(tmp); ReadOnlySpan <byte> encoded = tmp.EncodeAsSpan(); if (!encoded.SequenceEqual(s_defaultMaskGenFunc)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteEncodedValue(encoded); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } } } // DEFAULT value handler for PSourceFunc. { using (AsnWriter tmp = new AsnWriter(AsnEncodingRules.DER)) { PSourceFunc.Encode(tmp); ReadOnlySpan <byte> encoded = tmp.EncodeAsSpan(); if (!encoded.SequenceEqual(s_defaultPSourceFunc)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.WriteEncodedValue(encoded); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); } } } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.WriteObjectIdentifier(ExtnId); // DEFAULT value handler for Critical. { using (AsnWriter tmp = new AsnWriter(AsnEncodingRules.DER)) { tmp.WriteBoolean(Critical); ReadOnlySpan <byte> encoded = tmp.EncodeAsSpan(); if (!encoded.SequenceEqual(s_defaultCritical)) { writer.WriteEncodedValue(encoded); } } } writer.WriteOctetString(ExtnValue.Span); writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); // DEFAULT value handler for HashAlgorithm. { using (AsnWriter tmp = new AsnWriter(AsnEncodingRules.DER)) { HashAlgorithm.Encode(tmp); ReadOnlySpan <byte> encoded = tmp.EncodeAsSpan(); if (!encoded.SequenceEqual(s_defaultHashAlgorithm)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteEncodedValue(encoded.ToArray()); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); } } } // DEFAULT value handler for MaskGenAlgorithm. { using (AsnWriter tmp = new AsnWriter(AsnEncodingRules.DER)) { MaskGenAlgorithm.Encode(tmp); ReadOnlySpan <byte> encoded = tmp.EncodeAsSpan(); if (!encoded.SequenceEqual(s_defaultMaskGenAlgorithm)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteEncodedValue(encoded.ToArray()); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } } } // DEFAULT value handler for SaltLength. { using (AsnWriter tmp = new AsnWriter(AsnEncodingRules.DER)) { tmp.WriteInteger(SaltLength); ReadOnlySpan <byte> encoded = tmp.EncodeAsSpan(); if (!encoded.SequenceEqual(s_defaultSaltLength)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.WriteEncodedValue(encoded.ToArray()); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); } } } // DEFAULT value handler for TrailerField. { using (AsnWriter tmp = new AsnWriter(AsnEncodingRules.DER)) { tmp.WriteInteger(TrailerField); ReadOnlySpan <byte> encoded = tmp.EncodeAsSpan(); if (!encoded.SequenceEqual(s_defaultTrailerField)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.WriteEncodedValue(encoded.ToArray()); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); } } } writer.PopSequence(tag); }