private void Decrypt(string path, string secret, string salt, Action <ExtendBinaryReader> action) { byte[] bytes = null; Decrypt(path, secret, salt, (Stream cs) => { using (var ms = new MemoryStream()) { var buffer = new byte[1024]; var read = cs.Read(buffer, 0, buffer.Length); while (read > 0) { ms.Write(buffer, 0, read); read = cs.Read(buffer, 0, buffer.Length); } bytes = ms.ToArray(); } }); using (var ms = new MemoryStream(bytes)) using (var reader = new ExtendBinaryReader(ms)) { action(reader); } }
private IReadOnlyList <MHCC.Common.DataAccess.Models.Recording> ParseVersion1(string hash, ExtendBinaryReader reader) { var headerLength = reader.ReadInt32(); var dataLength = reader.ReadInt32(); var bytes = reader.ReadBytes(headerLength); var headerString = Encoding.UTF8.GetString(bytes); var header = JsonConvert.DeserializeObject <Header>(headerString); var result = new List <MHCC.Common.DataAccess.Models.Recording>(); foreach (var meas in header.Measurements) { foreach (var recording in meas.Recordings) { var values = new float[meas.Count]; // 1 for version byte // 4 for header length bytes // 4 for data length bytes reader.BaseStream.Position = 1 + 4 + 4 + headerLength + recording.StartIndex; for (var i = 0; i < meas.Count; i++) { values[i] = reader.ReadSingle(); } result.Add(new MHCC.Common.DataAccess.Models.Recording { Timestamp = recording.Timestamp, MeasurementID = meas.MeasurementID, Type = recording.Type, AlarmStatus = recording.Alarmstatus, BiasVoltage = recording.BiasVoltage, Hash = hash, MeasurementType = meas.MeasurementType, Overall = recording.Overall, RPM = recording.RPM, Delta = recording.Delta, Offset = recording.Offset, XUnit = meas.XUnit, Count = meas.Count, YUnit = meas.YUnit, //AlarmCalculated = true, YValues = values }); } } return(result); }