public Packet[] Uncompress()
        {
            System.IO.Stream    msStream  = new System.IO.MemoryStream(bCompressedData);
            InflaterInputStream iisUnpack = new InflaterInputStream(msStream, new Inflater(true));

            byte[] bOutput = new byte[0];
            try {
                byte[] bWorkout = new byte[4096];
                int    iSize    = iisUnpack.Read(bWorkout, 0, bWorkout.Length);
                while (iSize > 0)
                {
                    byte[] bOldOutput = new byte[bOutput.Length];
                    bOutput.CopyTo(bOldOutput, 0);
                    bOutput = new byte[bOutput.Length + iSize];
                    bOldOutput.CopyTo(bOutput, 0);
                    Array.Copy(bWorkout, 0, bOutput, bOldOutput.Length, iSize);
                    iSize = iisUnpack.Read(bWorkout, 0, bWorkout.Length);
                }
                iisUnpack.Close();
            } catch (Exception e) {
                // TODO - Throw the exception in the main application
                // System.Windows.Forms.MessageBox.Show(e.ToString());
                throw new System.Exception("Error uncompressing the message: " + e.Message);
            }

            return(Packet.ParsePackets(bOutput));
        }
        // we don't need no craftcontent!

        public Packet[] Decrypt(byte[] bKey, SymmetricAlgorithm saAlgo)
        {
            saAlgo.Mode = CipherMode.OpenPGP_CFB;
            saAlgo.Key  = bKey;
            ICryptoTransform ictDecrypt = saAlgo.CreateDecryptor();
            int iBS     = saAlgo.BlockSize >> 3;
            int iLength = bBody.Length - iBS - 2;

            byte[] bOutput = new byte[bBody.Length];
            ictDecrypt.TransformBlock(bBody, 0, bBody.Length, ref bOutput, 0);
            byte[] bFinal = new byte[iLength];
            Array.Copy(bOutput, bFinal, iLength);

            Packet[] pReturn = Packet.ParsePackets(bFinal);
            return(pReturn);
        }