static public long Unzip(GZipInputStream gzipStream, byte[] data, int dataLen, byte[] secretKey, byte[] outputData, byte[] tmpBuffer) { if (gzipStream == null) { return(-1); } ZipXORHeader(data, dataLen, secretKey); gzipStream.Reset(new MemoryStream(data, 0, dataLen)); using (MemoryStream outMs = new MemoryStream(outputData)) { StreamUtils.CopyFromGzipInputStream(gzipStream, outMs, tmpBuffer, true); return(outMs.Position); } }