public Cash Create(Stream stream) { if (stream == null) { throw new ArgumentNullException("stream"); } if (this == null || this.Limit == 0 || this.ComputationTime <= TimeSpan.Zero) { return(null); } if (this.CashAlgorithm == CashAlgorithm.Version1) { _isCanceled = false; var minerUtilities = new MinerUtilities(); try { var task = Task.Factory.StartNew(() => { var key = minerUtilities.Create_1(Sha256.ComputeHash(stream), this.Limit, this.ComputationTime); return(new Cash(CashAlgorithm.Version1, key)); }); while (!task.IsCompleted) { if (_isCanceled) { minerUtilities.Cancel(); } Thread.Sleep(1000); } return(task.Result); } catch (AggregateException e) { throw e.InnerExceptions.FirstOrDefault(); } } return(null); }
public static int Verify(Cash cash, Stream stream) { if (stream == null) { throw new ArgumentNullException("stream"); } if (cash == null) { return(0); } if (cash.CashAlgorithm == CashAlgorithm.Version1) { var minerUtilities = new MinerUtilities(); return(minerUtilities.Verify_1(cash.Key, Sha256.ComputeHash(stream))); } return(0); }
public static int Verify(Cash cash, Stream stream) { if (stream == null) throw new ArgumentNullException("stream"); if (cash == null) return 0; if (cash.CashAlgorithm == CashAlgorithm.Version1) { var minerUtilities = new MinerUtilities(); return minerUtilities.Verify_1(cash.Key, Sha256.ComputeHash(stream)); } return 0; }
public Cash Create(Stream stream) { if (stream == null) throw new ArgumentNullException("stream"); if (this.Limit == 0 || this.ComputationTime <= TimeSpan.Zero) return null; if (this.CashAlgorithm == CashAlgorithm.Version1) { _isCanceled = false; var minerUtilities = new MinerUtilities(); try { var task = Task.Factory.StartNew(() => { var key = minerUtilities.Create_1(Sha256.ComputeHash(stream), this.Limit, this.ComputationTime); return new Cash(CashAlgorithm.Version1, key); }); while (!task.IsCompleted) { if (_isCanceled) minerUtilities.Cancel(); Thread.Sleep(1000); } return task.Result; } catch (AggregateException e) { throw e.InnerExceptions.FirstOrDefault(); } } return null; }