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); 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); try { writer.WriteObjectIdentifier(AttrType); } catch (ArgumentException e) { throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding, e); } writer.PushSetOf(); for (int i = 0; i < AttrValues.Length; i++) { try { writer.WriteEncodedValue(AttrValues[i].Span); } catch (ArgumentException e) { throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding, e); } } writer.PopSetOf(); writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); try { writer.WriteObjectIdentifier(Algorithm); } catch (ArgumentException e) { throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding, e); } if (Parameters.HasValue) { try { writer.WriteEncodedValue(Parameters.Value.Span); } catch (ArgumentException e) { throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding, e); } } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.WriteObjectIdentifier(FieldType); writer.WriteEncodedValue(Parameters.Span); writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.WriteObjectIdentifier(AttrType); writer.WriteEncodedValue(AttrValues); writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.WriteObjectIdentifier(TypeId); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteEncodedValue(Value.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.WriteObjectIdentifier(Algorithm); if (Parameters.HasValue) { writer.WriteEncodedValue(Parameters.Value.Span); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.WriteObjectIdentifier(AttrType); writer.PushSetOf(); for (int i = 0; i < AttrValues.Length; i++) { writer.WriteEncodedValue(AttrValues[i].Span); } writer.PopSetOf(); 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); try { writer.WriteObjectIdentifier(TypeId); } catch (ArgumentException e) { throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding, e); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); try { writer.WriteEncodedValue(Value.Span); } catch (ArgumentException e) { throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding, e); } writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.PopSequence(tag); }
internal void Encode(AsnWriter writer) { bool wroteValue = false; if (OtherName.HasValue) { if (wroteValue) { throw new CryptographicException(); } OtherName.Value.Encode(writer, new Asn1Tag(TagClass.ContextSpecific, 0)); wroteValue = true; } if (Rfc822Name != null) { if (wroteValue) { throw new CryptographicException(); } writer.WriteCharacterString(new Asn1Tag(TagClass.ContextSpecific, 1), UniversalTagNumber.IA5String, Rfc822Name); wroteValue = true; } if (DnsName != null) { if (wroteValue) { throw new CryptographicException(); } writer.WriteCharacterString(new Asn1Tag(TagClass.ContextSpecific, 2), UniversalTagNumber.IA5String, DnsName); wroteValue = true; } if (X400Address.HasValue) { if (wroteValue) { throw new CryptographicException(); } // Validator for tag constraint for X400Address { if (!Asn1Tag.TryParse(X400Address.Value.Span, out Asn1Tag validateTag, out _) || !validateTag.HasSameClassAndValue(new Asn1Tag(TagClass.ContextSpecific, 3))) { throw new CryptographicException(); } } writer.WriteEncodedValue(X400Address.Value); wroteValue = true; } if (DirectoryName.HasValue) { if (wroteValue) { throw new CryptographicException(); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); writer.WriteEncodedValue(DirectoryName.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); wroteValue = true; } if (EdiPartyName.HasValue) { if (wroteValue) { throw new CryptographicException(); } EdiPartyName.Value.Encode(writer, new Asn1Tag(TagClass.ContextSpecific, 5)); wroteValue = true; } if (Uri != null) { if (wroteValue) { throw new CryptographicException(); } writer.WriteCharacterString(new Asn1Tag(TagClass.ContextSpecific, 6), UniversalTagNumber.IA5String, Uri); wroteValue = true; } if (IPAddress.HasValue) { if (wroteValue) { throw new CryptographicException(); } writer.WriteOctetString(new Asn1Tag(TagClass.ContextSpecific, 7), IPAddress.Value.Span); wroteValue = true; } if (RegisteredId != null) { if (wroteValue) { throw new CryptographicException(); } writer.WriteObjectIdentifier(new Asn1Tag(TagClass.ContextSpecific, 8), RegisteredId); wroteValue = true; } if (!wroteValue) { throw new CryptographicException(); } }
internal void Encode(AsnWriter writer) { bool wroteValue = false; if (TeletexString != null) { if (wroteValue) { throw new CryptographicException(); } writer.WriteCharacterString(UniversalTagNumber.T61String, TeletexString); wroteValue = true; } if (PrintableString != null) { if (wroteValue) { throw new CryptographicException(); } writer.WriteCharacterString(UniversalTagNumber.PrintableString, PrintableString); wroteValue = true; } if (UniversalString.HasValue) { if (wroteValue) { throw new CryptographicException(); } // Validator for tag constraint for UniversalString { if (!Asn1Tag.TryDecode(UniversalString.Value.Span, out Asn1Tag validateTag, out _) || !validateTag.HasSameClassAndValue(new Asn1Tag((UniversalTagNumber)28))) { throw new CryptographicException(); } } try { writer.WriteEncodedValue(UniversalString.Value.Span); } catch (ArgumentException e) { throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding, e); } wroteValue = true; } if (Utf8String != null) { if (wroteValue) { throw new CryptographicException(); } writer.WriteCharacterString(UniversalTagNumber.UTF8String, Utf8String); wroteValue = true; } if (BmpString != null) { if (wroteValue) { throw new CryptographicException(); } writer.WriteCharacterString(UniversalTagNumber.BMPString, BmpString); wroteValue = true; } if (!wroteValue) { throw new CryptographicException(); } }
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); }