/// <summary> /// MD5のチェックを行います。 /// </summary> public bool VerifyMD5(string filename) { // check if we have a md5 signature if (string.IsNullOrEmpty(MD5Signature)) { Log.Info("No MD5 check needed"); return(true); } var md5 = MD5Verificator.ComputeMD5(filename); if (!MD5Verificator.CompareMD5(md5, MD5Signature)) { Log.Info("MD5 check failed."); return(false); } Log.Info("MD5 check succeeded."); return(true); }
/// <summary> /// ダウンロード終了後に呼ばれます。 /// </summary> private void HandleDownloadDone(bool cancelled, Exception ex) { // エラーの場合は呼びます。 if (cancelled || ex != null) { if (Interlocked.Exchange(ref this.isDownloadFailedInt, 1) == 1) { return; } this.downloadDoneEvent.Set(); OnDownloadDone(cancelled, ex); return; } // すべてのダウンロードが終わった時にも呼びます。 if (this.downloader.LeaveCount == 0) { Log.Info("すべてのダウンロードを終了しました。"); this.downloadDoneEvent.Set(); // MD5のチェックを行います。 var correctMD5 = this.latestVersion.MD5Signature; if (!string.IsNullOrEmpty(correctMD5)) { var targetMD5 = MD5Verificator.ComputeMD5(this.downloadFilePath); if (!MD5Verificator.CompareMD5(targetMD5, correctMD5)) { OnDownloadDone(false, new Exception()); return; } } if (!OnDownloadDone(cancelled, ex)) { return; } ExecutePack(); } }