public override void Close()
            {
                if (_off != 0)
                {
                    DerOctetString.Encode(_derOut, _buf, 0, _off);
                }

                _gen.WriteBerEnd();
                base.Close();
            }
            protected override void Dispose(bool disposing)
            {
                if (disposing)
                {
                    if (_off != 0)
                    {
                        DerOctetString.Encode(_derOut, _buf, 0, _off);
                    }

                    _gen.WriteBerEnd();
                }
                base.Dispose(disposing);
            }
            // TODO Override Write
//			public override void Write(
//				byte[] buf,
//				int    offSet,
//				int    len)

            public override void Close()
            {
                if (_off != 0)
                {
                    byte[] bytes = new byte[_off];
                    Array.Copy(_buf, 0, bytes, 0, _off);

                    byte[] encoded = new DerOctetString(bytes).GetEncoded();
                    _gen.Out.Write(encoded, 0, encoded.Length);
                }

                _gen.WriteBerEnd();
                base.Close();
            }
            protected override void Dispose(bool isDisposing)
            {
                try
                {
                    if (_off != 0)
                    {
                        DerOctetString.Encode(_derOut, _buf, 0, _off);
                    }

                    _gen.WriteBerEnd();
                }
                finally
                {
                    base.Dispose(isDisposing);
                }
            }
 public override void Close()
 {
     _gen.WriteBerEnd();
     base.Close();
 }