/// <summary>
 /// This constructor allows primitive data to be passed for all
 /// primitive elements.  It will create new object wrappers for
 /// the primitive data and set other elements to references to
 /// the given objects
 /// </summary>
 public Gost28147_89_Parameters(byte[] iv_,
                                int[] encryptionParamSet_
                                )
     : base()
 {
     iv = new Gost28147_89_IV(iv_);
     encryptionParamSet = new Gost28147_89_ParamSet(encryptionParamSet_);
 }
 /// <summary>
 /// This constructor sets all elements to references to the
 /// given objects
 /// </summary>
 public Gost28147_89_Parameters(
     Gost28147_89_IV iv_,
     Gost28147_89_ParamSet encryptionParamSet_
     )
     : base()
 {
     iv = iv_;
     encryptionParamSet = encryptionParamSet_;
 }
        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 iv

            if (context.MatchElemTag(Asn1Tag.Universal, Asn1Tag.PRIM, 4, elemLen, false))
            {
                iv = new Gost28147_89_IV();
                iv.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);
            }
            else
            {
                throw new Exception("Asn1MissingRequiredException (buffer)");
            }
        }
 public void Init()
 {
     iv = null;
     encryptionParamSet = null;
 }