internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteInteger((long)EType); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); if (Asn1Extension.HasValue(Salt)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteCharacterString(UniversalTagNumber.GeneralString, Salt); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } if (Asn1Extension.HasValue(S2kParams)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.WriteOctetString(S2kParams.Value.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.PushSequence(); for (int i = 0; i < PaData.Length; i++) { PaData[i]?.Encode(writer); } writer.PopSequence(); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); if (Asn1Extension.HasValue(StrengthenKey)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); StrengthenKey?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } if (Asn1Extension.HasValue(Finished)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); Finished?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.WriteInteger(Nonce); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteInteger(Nonce); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); if (Asn1Extension.HasValue(CName)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); CName?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.WriteCharacterString(UniversalTagNumber.GeneralString, Realm); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); if (Asn1Extension.HasValue(SubjectCertificate)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.WriteOctetString(SubjectCertificate.Value.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); writer.WriteBitString(Options.AsReadOnlySpan()); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); writer.PopSequence(tag); }
internal void Encode(AsnWriter writer) { bool wroteValue = false; if (Asn1Extension.HasValue(InitialToken)) { if (wroteValue) { throw new CryptographicException(); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); InitialToken?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); wroteValue = true; } if (Asn1Extension.HasValue(ResponseToken)) { if (wroteValue) { throw new CryptographicException(); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); ResponseToken?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); wroteValue = true; } if (!wroteValue) { throw new CryptographicException(); } }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteInteger(ProtocolVersionNumber); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.WriteInteger((long)MessageType); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); if (Asn1Extension.HasValue(PaData)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.PushSequence(); for (int i = 0; i < PaData.Length; i++) { PaData[i]?.Encode(writer); } writer.PopSequence(); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); Body?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); writer.PopSequence(tag); }
public ReadOnlyMemory <byte> EncodeSpecial() { using (var writer = new AsnWriter(AsnEncodingRules.DER)) { var tag = Asn1Tag.Sequence; writer.PushSequence(tag); writer.WriteKeyParameterInteger(P.Span); writer.WriteKeyParameterInteger(G.Span); writer.WriteKeyParameterInteger(Q.Span); if (Asn1Extension.HasValue(J)) { writer.WriteKeyParameterInteger(J.Value.Span); } if (Asn1Extension.HasValue(ValidationParameters)) { ValidationParameters?.Encode(writer); } writer.PopSequence(tag); return(writer.EncodeAsMemory()); } }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteGeneralizedTime(CTime); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteInteger(CuSec); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); if (Asn1Extension.HasValue(SubSessionKey)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); SubSessionKey?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); } if (Asn1Extension.HasValue(SequenceNumber)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.WriteInteger(SequenceNumber.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteOctetString(KerbMessage.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); if (Asn1Extension.HasValue(TargetDomain)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteCharacterString(UniversalTagNumber.GeneralString, TargetDomain); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } if (Asn1Extension.HasValue(DcLocatorHint)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.WriteInteger((long)DcLocatorHint.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer) { bool wroteValue = false; if (Asn1Extension.HasValue(DHInfo)) { if (wroteValue) { throw new CryptographicException(); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); DHInfo?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); wroteValue = true; } if (Asn1Extension.HasValue(EncKeyPack)) { if (wroteValue) { throw new CryptographicException(); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteOctetString(EncKeyPack.Value.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); wroteValue = true; } if (!wroteValue) { throw new CryptographicException(); } }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteInteger(AuthenticatorVersionNumber); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteCharacterString(UniversalTagNumber.GeneralString, Realm); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); CName?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); if (Asn1Extension.HasValue(Checksum)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); Checksum?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); writer.WriteInteger(CuSec); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 5)); writer.WriteGeneralizedTime(CTime); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 5)); if (Asn1Extension.HasValue(Subkey)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 6)); Subkey?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 6)); } if (Asn1Extension.HasValue(SequenceNumber)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 7)); writer.WriteInteger(SequenceNumber.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 7)); } if (Asn1Extension.HasValue(AuthorizationData)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 8)); writer.PushSequence(); for (int i = 0; i < AuthorizationData.Length; i++) { AuthorizationData[i]?.Encode(writer); } writer.PopSequence(); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 8)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); if (Asn1Extension.HasValue(State)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteEnumeratedValue(State); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); } if (Asn1Extension.HasValue(SupportedMech)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteObjectIdentifier(SupportedMech); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } if (Asn1Extension.HasValue(ResponseToken)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.WriteOctetString(ResponseToken.Value.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); } if (Asn1Extension.HasValue(MechListMic)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.WriteOctetString(MechListMic.Value.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.WriteOctetString(new Asn1Tag(TagClass.ContextSpecific, 0), SignedAuthPack.Span); if (Asn1Extension.HasValue(TrustedCertifiers)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.PushSequence(); for (int i = 0; i < TrustedCertifiers.Length; i++) { TrustedCertifiers[i]?.Encode(writer); } writer.PopSequence(); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } if (Asn1Extension.HasValue(KdcPkId)) { writer.WriteOctetString(new Asn1Tag(TagClass.ContextSpecific, 2), KdcPkId.Value.Span); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.PushSequence(); for (int i = 0; i < TicketInfo.Length; i++) { TicketInfo[i]?.Encode(writer); } writer.PopSequence(); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); if (Asn1Extension.HasValue(Nonce)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteInteger(Nonce.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } if (Asn1Extension.HasValue(Timestamp)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.WriteGeneralizedTime(Timestamp.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); } if (Asn1Extension.HasValue(USec)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.WriteInteger(USec.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); } if (Asn1Extension.HasValue(SAddress)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); SAddress?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); } if (Asn1Extension.HasValue(RAddress)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 5)); RAddress?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 5)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.WriteObjectIdentifier(Algorithm); if (Asn1Extension.HasValue(Parameters)) { writer.WriteEncodedValue(Parameters.Value.Span); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.WriteOctetString(new Asn1Tag(TagClass.ContextSpecific, 0), DHSignedData.Span); if (Asn1Extension.HasValue(ServerDHNonce)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteOctetString(ServerDHNonce.Value.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteInteger((long)Type); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); if (Asn1Extension.HasValue(Value)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteOctetString(Value.Value.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteGeneralizedTime(PaTimestamp); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); if (Asn1Extension.HasValue(PaUSec)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteInteger(PaUSec.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); if (Asn1Extension.HasValue(ReferredName)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); ReferredName?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteCharacterString(UniversalTagNumber.GeneralString, ReferredRealm); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.WriteEncodedValue(P.Span); writer.WriteEncodedValue(G.Span); writer.WriteEncodedValue(Q.Span); if (Asn1Extension.HasValue(J)) { writer.WriteEncodedValue(J.Value.Span); } if (Asn1Extension.HasValue(ValidationParameters)) { ValidationParameters?.Encode(writer); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); if (Asn1Extension.HasValue(Armor)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); Armor?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); RequestChecksum?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); EncryptedFastRequest?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteBitString(SubjectPublicKey.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteInteger(Nonce); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); if (Asn1Extension.HasValue(DHKeyExpiration)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.WriteGeneralizedTime(DHKeyExpiration.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); if (Asn1Extension.HasValue(SubjectName)) { writer.WriteOctetString(new Asn1Tag(TagClass.ContextSpecific, 0), SubjectName.Value.Span); } if (Asn1Extension.HasValue(IssuerAndSerialNumber)) { writer.WriteOctetString(new Asn1Tag(TagClass.ContextSpecific, 1), IssuerAndSerialNumber.Value.Span); } if (Asn1Extension.HasValue(SubjectKeyIdentifier)) { writer.WriteOctetString(new Asn1Tag(TagClass.ContextSpecific, 2), SubjectKeyIdentifier.Value.Span); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer) { bool wroteValue = false; if (Asn1Extension.HasValue(ArmoredData)) { if (wroteValue) { throw new CryptographicException(); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); ArmoredData?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); wroteValue = true; } if (!wroteValue) { throw new CryptographicException(); } }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.PushSequence(); for (int i = 0; i < MechTypes.Length; i++) { writer.WriteObjectIdentifier(MechTypes[i]); } writer.PopSequence(); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); if (Asn1Extension.HasValue(RequestFlags)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteBitString(RequestFlags.Value.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } if (Asn1Extension.HasValue(MechToken)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.WriteOctetString(MechToken.Value.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); } if (Asn1Extension.HasValue(MechListMic)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.WriteOctetString(MechListMic.Value.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteInteger(ProtocolVersionNumber); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteInteger((long)MessageType); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); if (Asn1Extension.HasValue(PaData)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.PushSequence(); for (int i = 0; i < PaData.Length; i++) { PaData[i]?.Encode(writer); } writer.PopSequence(); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.WriteCharacterString(UniversalTagNumber.GeneralString, CRealm); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); CName?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 5)); Ticket?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 5)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 6)); EncPart?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 6)); writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); PKAuthenticator?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); if (Asn1Extension.HasValue(ClientPublicValue)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); ClientPublicValue?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); } if (Asn1Extension.HasValue(SupportedCMSTypes)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.PushSequence(); for (int i = 0; i < SupportedCMSTypes.Length; i++) { SupportedCMSTypes[i]?.Encode(writer); } writer.PopSequence(); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); } if (Asn1Extension.HasValue(ClientDHNonce)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.WriteOctetString(ClientDHNonce.Value.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteInteger(CuSec); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteGeneralizedTime(CTime); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.WriteInteger(Nonce); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); if (Asn1Extension.HasValue(PaChecksum)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.WriteOctetString(PaChecksum.Value.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteInteger(ProtocolVersionNumber); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.WriteInteger((long)MessageType); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); if (Asn1Extension.HasValue(CTime)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.WriteGeneralizedTime(CTime.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); } if (Asn1Extension.HasValue(Cusec)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.WriteInteger(Cusec.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); writer.WriteGeneralizedTime(STime); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 5)); writer.WriteInteger(Susc); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 5)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 6)); writer.WriteInteger((long)ErrorCode); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 6)); if (Asn1Extension.HasValue(CRealm)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 7)); writer.WriteCharacterString(UniversalTagNumber.GeneralString, CRealm); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 7)); } if (Asn1Extension.HasValue(CName)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 8)); CName?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 8)); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 9)); writer.WriteCharacterString(UniversalTagNumber.GeneralString, Realm); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 9)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 10)); SName?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 10)); if (Asn1Extension.HasValue(EText)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 11)); writer.WriteCharacterString(UniversalTagNumber.GeneralString, EText); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 11)); } if (Asn1Extension.HasValue(EData)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 12)); writer.WriteOctetString(EData.Value.Span); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 12)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); Key?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.PushSequence(); for (int i = 0; i < LastReq.Length; i++) { LastReq[i]?.Encode(writer); } writer.PopSequence(); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.WriteInteger(Nonce); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); if (Asn1Extension.HasValue(KeyExpiration)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.WriteGeneralizedTime(KeyExpiration.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); writer.WriteBitString(Flags.AsReadOnly()); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 5)); writer.WriteGeneralizedTime(AuthTime); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 5)); if (Asn1Extension.HasValue(StartTime)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 6)); writer.WriteGeneralizedTime(StartTime.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 6)); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 7)); writer.WriteGeneralizedTime(EndTime); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 7)); if (Asn1Extension.HasValue(RenewTill)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 8)); writer.WriteGeneralizedTime(RenewTill.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 8)); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 9)); writer.WriteCharacterString(UniversalTagNumber.GeneralString, Realm); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 9)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 10)); SName?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 10)); if (Asn1Extension.HasValue(CAddr)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 11)); writer.PushSequence(); for (int i = 0; i < CAddr.Length; i++) { CAddr[i]?.Encode(writer); } writer.PopSequence(); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 11)); } if (Asn1Extension.HasValue(EncryptedPaData)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 12)); EncryptedPaData?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 12)); } writer.PopSequence(tag); }
internal void Encode(AsnWriter writer, Asn1Tag tag) { writer.PushSequence(tag); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.WriteBitString(Flags.AsReadOnlySpan()); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 0)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); Key?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 1)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.WriteCharacterString(UniversalTagNumber.GeneralString, CRealm); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 2)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); CName?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 3)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); Transited?.Encode(writer); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 4)); writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 5)); writer.WriteGeneralizedTime(AuthTime); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 5)); if (Asn1Extension.HasValue(StartTime)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 6)); writer.WriteGeneralizedTime(StartTime.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 6)); } writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 7)); writer.WriteGeneralizedTime(EndTime); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 7)); if (Asn1Extension.HasValue(RenewTill)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 8)); writer.WriteGeneralizedTime(RenewTill.Value); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 8)); } if (Asn1Extension.HasValue(CAddr)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 9)); writer.PushSequence(); for (int i = 0; i < CAddr.Length; i++) { CAddr[i]?.Encode(writer); } writer.PopSequence(); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 9)); } if (Asn1Extension.HasValue(AuthorizationData)) { writer.PushSequence(new Asn1Tag(TagClass.ContextSpecific, 10)); writer.PushSequence(); for (int i = 0; i < AuthorizationData.Length; i++) { AuthorizationData[i]?.Encode(writer); } writer.PopSequence(); writer.PopSequence(new Asn1Tag(TagClass.ContextSpecific, 10)); } writer.PopSequence(tag); }