public override void Decode (Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { int llen = (explicitTagging) ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; Init(); // decode SEQUENCE Asn1BerDecodeContext context = new Asn1BerDecodeContext(buffer, llen); IntHolder elemLen = new IntHolder(); // decode sessionEncryptedKey if (context.MatchElemTag(Asn1Tag.Universal, Asn1Tag.CONS, 16, elemLen, false)) { sessionEncryptedKey = new Gost28147_89_EncryptedKey(); sessionEncryptedKey.Decode(buffer, true, elemLen.Value); } else { throw new Exception("Asn1MissingRequiredException (buffer)"); } // decode transportParameters if (context.MatchElemTag(Asn1Tag.CTXT, Asn1Tag.CONS, 0, elemLen, true)) { transportParameters = new GostR3410_TransportParameters(); transportParameters.Decode(buffer, false, elemLen.Value); } }
public override void Decode(Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { var elemLength = explicitTagging ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; EncryptedKey = null; EncryptedParams = null; var context = new Asn1BerDecodeContext(buffer, elemLength); var parsedLen = new IntHolder(); if (!context.MatchElemTag(0, 0x20, SequenceTypeCode, parsedLen, false)) { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } EncryptedKey = new Gost_28147_89_EncryptedKey(); EncryptedKey.Decode(buffer, true, parsedLen.Value); if (!context.MatchElemTag(0, 0x20, SequenceTypeCode, parsedLen, false)) { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } EncryptedParams = new Gost_28147_89_KeyWrapParams(); EncryptedParams.Decode(buffer, true, parsedLen.Value); }
public override void Decode(Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { var elemLength = explicitTagging ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; Init(); var context = new Asn1BerDecodeContext(buffer, elemLength); var parsedLen = new IntHolder(); if (!context.MatchElemTag(0, 0x20, 0x10, parsedLen, false)) { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } Algorithm = new AlgorithmIdentifier(); Algorithm.Decode(buffer, true, parsedLen.Value); if (!context.MatchElemTag(0, 0, 3, parsedLen, false)) { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } SubjectPublicKey = new Asn1BitString(); SubjectPublicKey.Decode(buffer, true, parsedLen.Value); }
public override void Decode(Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { var elemLength = explicitTagging ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; EncryptionParamSet = null; Ukm = null; var context = new Asn1BerDecodeContext(buffer, elemLength); var parsedLen = new IntHolder(); if (!context.MatchElemTag(0, 0, ObjectIdentifierTypeCode, parsedLen, false)) { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } EncryptionParamSet = new Gost_28147_89_ParamSet(); EncryptionParamSet.Decode(buffer, true, parsedLen.Value); if (context.MatchElemTag(0, 0, OctetStringTypeCode, parsedLen, false)) { Ukm = new Asn1OctetString(); Ukm.Decode(buffer, true, parsedLen.Value); if (Ukm.Length != 8) { throw ExceptionUtility.CryptographicException(Resources.Asn1ConsVioException, nameof(Ukm.Length), Ukm.Length); } } }
public override void Decode(Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { var elemLength = explicitTagging ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; Init(); var context = new Asn1BerDecodeContext(buffer, elemLength); var parsedLen = new IntHolder(); if (!context.MatchElemTag(0, 0, ObjectIdentifierTypeCode, parsedLen, false)) { throw new Exception("Asn1MissingRequiredException"); } PublicKeyParamSet = new Asn1ObjectIdentifier(); PublicKeyParamSet.Decode(buffer, true, parsedLen.Value); if (!context.MatchElemTag(0, 0, ObjectIdentifierTypeCode, parsedLen, false)) { throw new Exception("Asn1MissingRequiredException"); } DigestParamSet = new Asn1ObjectIdentifier(); DigestParamSet.Decode(buffer, true, parsedLen.Value); if (context.MatchElemTag(0, 0, ObjectIdentifierTypeCode, parsedLen, false)) { EncryptionParamSet = new Gost2814789ParamSet(); EncryptionParamSet.Decode(buffer, true, parsedLen.Value); } }
public override void Decode(Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { var elemLength = explicitTagging ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; Init(); var context = new Asn1BerDecodeContext(buffer, elemLength); var parsedLen = new IntHolder(); if (!context.MatchElemTag(0, 0, 6, parsedLen, false)) { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } _publicKeyParamSet = new Asn1ObjectIdentifier(); _publicKeyParamSet.Decode(buffer, true, parsedLen.Value); if (!context.MatchElemTag(0, 0, 6, parsedLen, false)) { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } _digestParamSet = new Asn1ObjectIdentifier(); _digestParamSet.Decode(buffer, true, parsedLen.Value); if (context.MatchElemTag(0, 0, 6, parsedLen, false)) { _encryptionParamSet = new Gost2814789ParamSet(); _encryptionParamSet.Decode(buffer, true, parsedLen.Value); } }
public override void Decode (Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { int llen = (explicitTagging) ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; Init(); // decode SEQUENCE Asn1BerDecodeContext context = new Asn1BerDecodeContext(buffer, llen); IntHolder elemLen = new IntHolder(); // decode encryptionParamSet if (context.MatchElemTag(Asn1Tag.Universal, Asn1Tag.PRIM, 6, elemLen, false)) { encryptionParamSet = new Gost28147_89_ParamSet(); encryptionParamSet.Decode(buffer, true, elemLen.Value); } else { throw new Exception("Asn1MissingRequiredException (buffer)"); } // decode ephemeralPublicKey if (context.MatchElemTag(Asn1Tag.CTXT, Asn1Tag.CONS, 0, elemLen, true)) { ephemeralPublicKey = new SubjectPublicKeyInfo(); ephemeralPublicKey.Decode(buffer, false, elemLen.Value); } // decode ukm if (context.MatchElemTag(Asn1Tag.Universal, Asn1Tag.PRIM, 4, elemLen, false)) { ukm = new Asn1OctetString(); ukm.Decode(buffer, true, elemLen.Value); if (!(ukm.Length == 8)) { throw new Exception("Asn1ConsVioException (ukm.Length, ukm.Length)"); } } else { throw new Exception("Asn1MissingRequiredException (buffer)"); } }
public override void Decode (Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { int llen = (explicitTagging) ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; Init(); // decode SEQUENCE Asn1BerDecodeContext context = new Asn1BerDecodeContext(buffer, llen); IntHolder elemLen = new IntHolder(); // decode encryptedKey if (context.MatchElemTag(Asn1Tag.Universal, Asn1Tag.PRIM, 4, elemLen, false)) { encryptedKey = new Gost28147_89_Key(); encryptedKey.Decode(buffer, true, elemLen.Value); } else { throw new Exception("Asn1MissingRequiredException"); } // decode maskKey if (context.MatchElemTag(Asn1Tag.CTXT, Asn1Tag.PRIM, 0, elemLen, true)) { maskKey = new Gost28147_89_Key(); maskKey.Decode(buffer, false, elemLen.Value); } // decode macKey if (context.MatchElemTag(Asn1Tag.Universal, Asn1Tag.PRIM, 4, elemLen, false)) { macKey = new Gost28147_89_MAC(); macKey.Decode(buffer, true, elemLen.Value); if (!(macKey.Length == 4)) { throw new Exception("Asn1ConsVioException"); } } else { throw new Exception("Asn1MissingRequiredException"); } }
public override void Decode(Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { var elemLength = explicitTagging ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; Algorithm = null; Parameters = null; var context = new Asn1BerDecodeContext(buffer, elemLength); var parsedLen = new IntHolder(); if (!context.MatchElemTag(0, 0, ObjectIdentifierTypeCode, parsedLen, false)) { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } Algorithm = new Asn1ObjectIdentifier(); Algorithm.Decode(buffer, true, parsedLen.Value); if (!context.Expired()) { Parameters = new Asn1OpenType(); Parameters.Decode(buffer, true, 0); } CheckAlg(true); }
public override void Decode (Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { int llen = (explicitTagging) ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; Init(); // decode SEQUENCE Asn1BerDecodeContext context = new Asn1BerDecodeContext(buffer, llen); IntHolder elemLen = new IntHolder(); // decode publicKeyParamSet if (context.MatchElemTag(Asn1Tag.Universal, Asn1Tag.PRIM, 6, elemLen, false)) { publicKeyParamSet = new Asn1ObjectIdentifier(); publicKeyParamSet.Decode(buffer, true, elemLen.Value); } else { throw new Exception("Asn1MissingRequiredException (buffer)"); } // decode digestParamSet if (context.MatchElemTag(Asn1Tag.Universal, Asn1Tag.PRIM, 6, elemLen, false)) { digestParamSet = new Asn1ObjectIdentifier(); digestParamSet.Decode(buffer, true, elemLen.Value); } else { throw new Exception("Asn1MissingRequiredException (buffer)"); } // decode encryptionParamSet if (context.MatchElemTag(Asn1Tag.Universal, Asn1Tag.PRIM, 6, elemLen, false)) { encryptionParamSet = new Gost28147_89_ParamSet(); encryptionParamSet.Decode(buffer, true, elemLen.Value); } }
public override void Decode (Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { int llen = (explicitTagging) ? MatchTag(buffer, Asn1Tag.SEQUENCE) : implicitLength; Init(); // decode SEQUENCE Asn1BerDecodeContext _context = new Asn1BerDecodeContext(buffer, llen); IntHolder elemLen = new IntHolder(); // decode type if (_context.MatchElemTag(Asn1Tag.UNIV, Asn1Tag.PRIM, 4, elemLen, false)) { type = new AttributeDescription(); type.Decode(buffer, true, elemLen.mValue); } else { throw new Asn1MissingRequiredException(buffer); } // decode vals if (_context.MatchElemTag(Asn1Tag.UNIV, Asn1Tag.CONS, 17, elemLen, false)) { vals = new _SetOfAttributeValue(); vals.Decode(buffer, true, elemLen.mValue); } else { throw new Asn1MissingRequiredException(buffer); } if (explicitTagging && llen == Asn1Status.INDEFLEN) { MatchTag(buffer, Asn1Tag.EOC); } }
public override void Decode(Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { var elemLength = explicitTagging ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; PublicKeyParamSet = null; DigestParamSet = null; EncryptionParamSet = null; var context = new Asn1BerDecodeContext(buffer, elemLength); var parsedLen = new IntHolder(); if (context.MatchElemTag(0, 0, ObjectIdentifierTypeCode, parsedLen, false)) { PublicKeyParamSet = new Asn1ObjectIdentifier(); PublicKeyParamSet.Decode(buffer, true, parsedLen.Value); } else { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } if (context.MatchElemTag(0, 0, ObjectIdentifierTypeCode, parsedLen, false)) { DigestParamSet = new Asn1ObjectIdentifier(); DigestParamSet.Decode(buffer, true, parsedLen.Value); } if (context.MatchElemTag(0, 0, ObjectIdentifierTypeCode, parsedLen, false)) { EncryptionParamSet = new Asn1ObjectIdentifier(); EncryptionParamSet.Decode(buffer, true, parsedLen.Value); } if (!context.Expired()) { var lastTag = buffer.PeekTag(); if (lastTag.Equals(0, 0, ObjectIdentifierTypeCode)) { throw ExceptionUtility.CryptographicException(Resources.Asn1SeqOrderException); } } }
public override void Decode (Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { int llen = (explicitTagging) ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; Init(); // decode SEQUENCE Asn1BerDecodeContext context = new Asn1BerDecodeContext(buffer, llen); IntHolder elemLen = new IntHolder(); // decode algorithm if (context.MatchElemTag(Asn1Tag.Universal, Asn1Tag.CONS, 16, elemLen, false)) { algorithm = new AlgorithmIdentifier(); algorithm.Decode(buffer, true, elemLen.Value); } else { throw new Exception("Asn1MissingRequiredException (buffer)"); } // decode subjectPublicKey if (context.MatchElemTag(Asn1Tag.Universal, Asn1Tag.PRIM, 3, elemLen, false)) { subjectPublicKey = new Asn1BitString(); subjectPublicKey.Decode(buffer, true, elemLen.Value); } else { throw new Exception("Asn1MissingRequiredException (buffer)"); } }
public override void Decode(Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { var elemLength = explicitTagging ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; EncryptedKey = null; MacKey = null; MaskKey = null; var context = new Asn1BerDecodeContext(buffer, elemLength); var parsedLen = new IntHolder(); if (!context.MatchElemTag(0, 0, OctetStringTypeCode, parsedLen, false)) { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } EncryptedKey = new Gost_28147_89_Key(); EncryptedKey.Decode(buffer, true, parsedLen.Value); if (context.MatchElemTag(0x80, 0, EocTypeCode, parsedLen, true)) { MaskKey = new Gost_28147_89_Key(); MaskKey.Decode(buffer, false, parsedLen.Value); } if (!context.MatchElemTag(0, 0, OctetStringTypeCode, parsedLen, false)) { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } MacKey = new Gost_28147_89_Mac(); MacKey.Decode(buffer, true, parsedLen.Value); if (MacKey.Length != 4) { throw ExceptionUtility.CryptographicException(Resources.Asn1ConsVioException, nameof(MacKey.Length), MacKey.Length); } }
public override void Decode(Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { var elemLength = explicitTagging ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; Init(); var context = new Asn1BerDecodeContext(buffer, elemLength); var parsedLen = new IntHolder(); if (!context.MatchElemTag(0, 0x20, SequenceTypeCode, parsedLen, false)) { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } SessionEncryptedKey = new Gost2814789EncryptedKey(); SessionEncryptedKey.Decode(buffer, true, parsedLen.Value); if (context.MatchElemTag(0x80, 0x20, EocTypeCode, parsedLen, true)) { TransportParameters = new GostR3410TransportParameters(); TransportParameters.Decode(buffer, false, parsedLen.Value); } }
public override void Decode (Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { int llen = (explicitTagging) ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; Init(); // decode SEQUENCE Asn1BerDecodeContext context = new Asn1BerDecodeContext(buffer, llen); IntHolder elemLen = new IntHolder(); // decode encryptionParamSet if (context.MatchElemTag(Asn1Tag.Universal, Asn1Tag.PRIM, 6, elemLen, false)) { encryptionParamSet = new Gost28147_89_ParamSet(); encryptionParamSet.Decode(buffer, true, elemLen.Value); } else { throw new Exception("Asn1MissingRequiredException"); } // decode extElem1 if (!context.Expired()) { Asn1Tag _tag = buffer.PeekTag(); if (_tag.Equals(Asn1Tag.Universal, Asn1Tag.PRIM, 6)) { throw new Exception("Asn1SeqOrderException"); } else { extElem1 = new Asn1OpenExt(); while (!context.Expired()) { extElem1.DecodeComponent(buffer); } } } else { extElem1 = null; } }
public override void Decode(Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { var elemLength = explicitTagging ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; Init(); var context = new Asn1BerDecodeContext(buffer, elemLength); var parsedLen = new IntHolder(); if (!context.MatchElemTag(0, 0, ObjectIdentifierTypeCode, parsedLen, false)) { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } EncryptionParamSet = new Gost2814789ParamSet(); EncryptionParamSet.Decode(buffer, true, parsedLen.Value); if (context.MatchElemTag(0x80, 0x20, EocTypeCode, parsedLen, true)) { EphemeralPublicKey = new SubjectPublicKeyInfo(); EphemeralPublicKey.Decode(buffer, false, parsedLen.Value); } if (!context.MatchElemTag(0, 0, OctetStringTypeCode, parsedLen, false)) { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } Ukm = new Asn1OctetString(); Ukm.Decode(buffer, true, parsedLen.Value); if (Ukm.Length != 8) { throw ExceptionUtility.CryptographicException(Resources.Asn1ConsVioException, "Ukm.Length", Ukm.Length); } }
public override void Decode(Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { var elemLength = explicitTagging ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; EncryptionParamSet = null; ExtElement = null; var context = new Asn1BerDecodeContext(buffer, elemLength); var parsedLen = new IntHolder(); if (!context.MatchElemTag(0, 0, ObjectIdentifierTypeCode, parsedLen, false)) { throw ExceptionUtility.CryptographicException(Resources.Asn1MissingRequiredException, buffer.ByteCount); } EncryptionParamSet = new Gost_28147_89_ParamSet(); EncryptionParamSet.Decode(buffer, true, parsedLen.Value); if (!context.Expired()) { if (buffer.PeekTag().Equals(0, 0, ObjectIdentifierTypeCode)) { throw ExceptionUtility.CryptographicException(Resources.Asn1SeqOrderException); } ExtElement = new Asn1OpenExt(); while (!context.Expired()) { ExtElement.DecodeComponent(buffer); } } else { ExtElement = null; } }
public override void Decode (Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { int llen = (explicitTagging) ? MatchTag(buffer, Asn1Tag.Sequence) : implicitLength; Init(); // decode SEQUENCE Asn1BerDecodeContext context = new Asn1BerDecodeContext(buffer, llen); IntHolder elemLen = new IntHolder(); // decode algorithm if (context.MatchElemTag(Asn1Tag.Universal, Asn1Tag.PRIM, 6, elemLen, false)) { algorithm = new Asn1ObjectIdentifier(); algorithm.Decode(buffer, true, elemLen.Value); } else { throw new Exception("Asn1MissingRequiredException (buffer)"); } // decode parameters if (!context.Expired()) { parameters = new Asn1OpenType(); parameters.Decode(buffer, true, 0); } checkTC(true); }
public override void Decode(Asn1BerDecodeBuffer buffer, bool explicitTagging, int implicitLength) { int llen = (explicitTagging) ? MatchTag (buffer, Asn1Tag.SEQUENCE) : implicitLength; Init (); // decode SEQUENCE Asn1BerDecodeContext _context = new Asn1BerDecodeContext (buffer, llen); IntHolder elemLen = new IntHolder(); // decode type if (_context.MatchElemTag (Asn1Tag.UNIV, Asn1Tag.PRIM, 4, elemLen, false)) { type = new AttributeDescription(); type.Decode (buffer, true, elemLen.mValue); } else throw new Asn1MissingRequiredException (buffer); // decode vals if (_context.MatchElemTag (Asn1Tag.UNIV, Asn1Tag.CONS, 17, elemLen, false)) { vals = new _SetOfAttributeValue(); vals.Decode (buffer, true, elemLen.mValue); } else throw new Asn1MissingRequiredException (buffer); if (explicitTagging && llen == Asn1Status.INDEFLEN) { MatchTag (buffer, Asn1Tag.EOC); } }