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); }