/// <summary> /// /// </summary> /// <param name="message"></param> /// <returns></returns> private bool VerifiyHashChain(VerifiyHashChainMessage message) { if (message == null) { throw new ArgumentNullException(nameof(message)); } if (message.Previous == null) { throw new ArgumentNullException(nameof(message.Previous)); } if (message.Next == null) { throw new ArgumentNullException(nameof(message.Next)); } bool validH = false, validK = false; try { var hint = Cryptography.GenericHashNoKey($"{message.Next.Version} {message.Next.Stamp} {message.Next.Principle}").ToHex(); var keeper = Cryptography.GenericHashNoKey($"{message.Next.Version} {message.Next.Stamp} {message.Next.Hint}").ToHex(); validH = message.Previous.Hint.Equals(hint); validK = message.Previous.Keeper.Equals(keeper); } catch (Exception ex) { logger.Error($"<<< SigningProvider.VerifiyHashChain >>>: {ex.ToString()}"); } return(validH && validK); }
/// <summary> /// /// </summary> /// <param name="message"></param> /// <returns></returns> public async Task <bool> VerifiyHashChain(VerifiyHashChainMessage message) { return(await actor.Ask <bool>(message)); }