/// <summary> /// Read items from a file. /// </summary> /// <param name="path">Full path to the file.</param> /// <returns>Number of items read.</returns> public int ReadFile(string path, CheckSumType currentSumType) { TextFileReader reader = new TextFileReader(path); IFile sumFile = InitSumFile(currentSumType); List<Pair<string>> itemList = sumFile.ReadData(reader); int items = 0; foreach (Pair<string> item in itemList) { // TODO: must validity-check values! string filename = item.Item2; FileInfo fi = new FileInfo(filename); // Check if fhe file is found and accessible try { if (fi.Exists) { string fullpath = Path.Combine(fi.DirectoryName, fi.Name); _list.AddFile(fullpath, item.Item1); ++items; continue; } } catch { continue; } } return items; }
/// <summary> /// Read items from a file. /// </summary> /// <param name="path">Full path to the file.</param> /// <returns>Number of items read.</returns> public int ReadFile(string path, CheckSumType currentSumType) { TextFileReader reader = new TextFileReader(path); IFile sumFile = InitSumFile(currentSumType); List <Pair <string> > itemList = sumFile.ReadData(reader); int items = 0; foreach (Pair <string> item in itemList) { // TODO: must validity-check values! string filename = item.Item2; FileInfo fi = new FileInfo(filename); // Check if fhe file is found and accessible try { if (fi.Exists) { string fullpath = Path.Combine(fi.DirectoryName, fi.Name); _list.AddFile(fullpath, item.Item1); ++items; continue; } } catch { continue; } } return(items); }
protected void estimatedChecksum(byte[] arr) { if (this.checksum == CheckSumType.None) { this.checksum = this.des[this.dev]; } IChecksum ck = this.check[this.Checksum]; ck.setParameter(this.nbyterequest, arr); ck.execute(); }
///<summary> /// Checksum algorimth based on Adler32 and CRC32 algorimths ///</summary> ///<param name="stream">Stream to apply the algorimth</param> ///<param name="checkSumeType">Checksum type, Adler32 or CRC32</param> ///<returns>Checksum numeber</returns> ///<exception cref="InvalidOperationException"></exception> ///<exception cref="ArgumentOutOfRangeException"></exception> public static long CheckSum(this Stream stream, CheckSumType checkSumeType) { if (stream == null) { throw new ArgumentNullException("stream"); } if (!stream.CanRead) { throw new InvalidOperationException("The stream not suported readings"); } ICheckSum checkSum; switch (checkSumeType) { case CheckSumType.Adler32: checkSum = new Adler32(); break; case CheckSumType.CRC32: checkSum = new Crc32(); break; default: throw new ArgumentOutOfRangeException("checkSumeType"); } lock (stream) { long tmp = stream.Position; stream.Position = 0; int readers; var buffer = new byte[MB_SIZE]; while ((readers = stream.Read(buffer, 0, MB_SIZE)) > 0) { checkSum.Update(buffer, 0, readers); } stream.Position = tmp; } return(checkSum.Value); }
/// <summary> /// Convert sumfile type to sumtype. /// </summary> /// <param name="fileType">Filetype converted to sumtype</param> void SetSumTypeFromFileType(SumFileType fileType) { switch (fileType) { case SumFileType.MD5: _currentSumType = CheckSumType.MD5; break; case SumFileType.SFV: _currentSumType = CheckSumType.CRC32; break; case SumFileType.SHA1: _currentSumType = CheckSumType.SHA1; break; default: throw new NotImplementedException(); } }
/// <summary> /// Write items to the file. /// </summary> /// <param name="path">Full path to the file.</param> public void WriteFile(string path, CheckSumType currentSumType) { StreamWriter file = new StreamWriter(path, false, System.Text.Encoding.ASCII); IFile sumFile = InitSumFile(currentSumType); sumFile.Header(file); for (int i = 0; i < _list.FileList.Count; i++) { string filename = _list.FileList[i].FileName; if (_list.FileList[i].CheckSum == null) { continue; } DirectoryInfo rootDirector = Directory.GetParent(path); string relativePath = ""; string checksum = _list.FileList[i].CheckSum.ToString(); if (rootDirector.Parent == null) { relativePath = _list.FileList[i].FullPath.Replace(rootDirector.Name, ""); } else { relativePath = _list.FileList[i].FullPath.Replace(Path.GetDirectoryName(path) + Path.DirectorySeparatorChar, ""); } relativePath = FileUtils.FromNativeSeparators(relativePath); sumFile.WriteDataRow(file, checksum, relativePath); } file.Flush(); file.Close(); }
/// <summary> /// Create sumfile instance for checksum file. /// </summary> /// <param name="fileType">Type of checksum file to initialize.</param> /// <returns>ISumFile instance.</returns> IFile InitSumFile(CheckSumType currentSumType) { IFile newFile = null; switch (currentSumType) { case CheckSumType.MD5: newFile = (IFile) new MD5File(); break; case CheckSumType.SHA1: newFile = (IFile) new Sha1File(); break; case CheckSumType.CRC32: newFile = (IFile) new SFVFile(); break; default: break; } return(newFile); }
/// <summary> /// Get checksum calculator for given checksum type. /// </summary> /// <param name="impl">Checksum type.</param> /// <returns>Checksum calculator.</returns> public static ICheckSum GetImplementation(CheckSumType impl) { ICheckSum sum; switch (impl) { case CheckSumType.SHA1: sum = new Sha1Sum(); break; case CheckSumType.MD5: sum = new Md5Sum(); break; case CheckSumType.CRC32: sum = new CRC32Sum(); break; case CheckSumType.CRC64_ECMA: sum = new CRC64ECMASum(); break; case CheckSumType.CRC64_ISO: sum = new CRC64ISOSum(); break; default: sum = new Sha1Sum(); #if DEBUG throw new ApplicationException("Unknown Sum type!"); #else break; #endif } return(sum); }
/// <summary> /// Get checksum calculator for given checksum type. /// </summary> /// <param name="impl">Checksum type.</param> /// <returns>Checksum calculator.</returns> public static ICheckSum GetImplementation(CheckSumType impl) { ICheckSum sum; switch (impl) { case CheckSumType.SHA1: sum = new Sha1Sum(); break; case CheckSumType.MD5: sum = new Md5Sum(); break; case CheckSumType.CRC32: sum = new CRC32Sum(); break; default: sum = new Sha1Sum(); #if DEBUG throw new ApplicationException("Unknown Sum type!"); #else break; #endif } return sum; }
/// <summary> /// Get name for checksum implementation. /// </summary> /// <param name="impl">Checkcum implementation.</param> /// <returns>Name of checksum implementation.</returns> public static string GetImplementationName(CheckSumType impl) { string name = SumNames[(int)impl]; return(name); }
/// <summary> /// Select correct sumtype into the sumtype combobox, based on /// checksum type. /// </summary> /// <param name="sumType">File type loaded.</param> private void SetSumTypeCombo(CheckSumType sumType) { int ind; switch (sumType) { case CheckSumType.MD5: ind = toolStripComboSumTypes.FindStringExact("MD5"); toolStripComboSumTypes.SelectedIndex = ind; break; case CheckSumType.CRC32: ind = toolStripComboSumTypes.FindStringExact("CRC32"); toolStripComboSumTypes.SelectedIndex = ind; break; case CheckSumType.SHA1: ind = toolStripComboSumTypes.FindStringExact("SHA-1"); toolStripComboSumTypes.SelectedIndex = ind; break; default: throw new NotImplementedException("Unknown checksum type"); } }
/// <summary> /// Set current checksum type. /// </summary> /// <param name="sumtype">Checksumtype to set as current.</param> private void SetCurrentSumType(CheckSumType sumtype) { // If sumtype already matches, it means we are loading sum // file and so don't want to clear existing items! // TODO: This is a bit hacky fix - we'll need to handle this // sum type change in some better way. if (sumtype != _document.SumType) { // Clear existing sums as they are now of wrong type if (_document.Items.HasCheckSums) ClearSums(); _document.SumType = sumtype; } SetListSumType(sumtype); // Clear filename so we ask it while saving // and don't override file with wrong (old) name. SetFilename(String.Empty); }
protected void estimatedChecksum(byte[] arr) { if (this.checksum == CheckSumType.None) this.checksum = this.des[this.dev]; IChecksum ck = this.check[this.Checksum]; ck.setParameter(this.nbyterequest, arr); ck.execute(); }
/// <summary> /// Set the checsum tyle for GUI list. /// </summary> /// <param name="sumtype">Checksum type.</param> private void SetListSumType(CheckSumType sumtype) { string colname = CheckSumImplList.GetImplementationName(sumtype); SetListColumnHeader(ListIndices.CheckSum, colname); }
public VirtualMachineConfiguration SetDownloadChecksum(string checksum, CheckSumType checksumType) { _downloadCheckSum = checksum; _downloadCheckSumType = checksumType; return this; }
/// <summary> /// Constructor selecting checksum type. /// </summary> /// <param name="sumtype">Checksum type.</param> public Calculator(CheckSumType sumtype) { _sumType = sumtype; }
/// <summary> /// Create sumfile instance for checksum file. /// </summary> /// <param name="fileType">Type of checksum file to initialize.</param> /// <returns>ISumFile instance.</returns> IFile InitSumFile(CheckSumType currentSumType) { IFile newFile = null; switch (currentSumType) { case CheckSumType.MD5: newFile = (IFile) new MD5File(); break; case CheckSumType.SHA1: newFile = (IFile) new Sha1File(); break; case CheckSumType.CRC32: newFile = (IFile) new SFVFile(); break; default: break; } return newFile; }
/// <summary> /// Get name for checksum implementation. /// </summary> /// <param name="impl">Checkcum implementation.</param> /// <returns>Name of checksum implementation.</returns> public static string GetImplementationName(CheckSumType impl) { string name = SumNames[(int) impl]; return name; }
/// <summary> /// Convert sumfile type to sumtype. /// </summary> /// <param name="fileType">Filetype converted to sumtype</param> void SetSumTypeFromFileType(SumFileType fileType) { switch (fileType) { case SumFileType.MD5: SumType = CheckSumType.MD5; break; case SumFileType.SFV: SumType = CheckSumType.CRC32; break; case SumFileType.SHA1: SumType = CheckSumType.SHA1; break; default: throw new NotImplementedException(); } }
/// <summary> /// Write items to the file. /// </summary> /// <param name="path">Full path to the file.</param> public void WriteFile(string path, CheckSumType currentSumType) { StreamWriter file = new StreamWriter(path, false, System.Text.Encoding.ASCII); IFile sumFile = InitSumFile(currentSumType); sumFile.Header(file); for (int i = 0; i < _list.FileList.Count; i++) { string filename = _list.FileList[i].FileName; if (_list.FileList[i].CheckSum == null) continue; DirectoryInfo rootDirector = Directory.GetParent(path); string relativePath = ""; string checksum = _list.FileList[i].CheckSum.ToString(); if (rootDirector.Parent == null) { relativePath = _list.FileList[i].FullPath.Replace(rootDirector.Name, ""); } else { relativePath = _list.FileList[i].FullPath.Replace(Path.GetDirectoryName(path) + Path.DirectorySeparatorChar, ""); } relativePath = FileUtils.FromNativeSeparators(relativePath); sumFile.WriteDataRow(file, checksum,relativePath); } file.Flush(); file.Close(); }