public InfoV1(V1.Internal.CryptoAlgorithm cryptoAlgorithm, V1.Internal.HashAlgorithm hashAlgorithm, byte[] myCryptoKey, byte[] otherCryptoKey, byte[] myHmacKey, byte[] otherHmacKey) { this.CryptoAlgorithm = cryptoAlgorithm; this.HashAlgorithm = hashAlgorithm; this.MyCryptoKey = myCryptoKey; this.OtherCryptoKey = otherCryptoKey; this.MyHmacKey = myHmacKey; this.OtherHmacKey = otherHmacKey; }
private IEnumerable <(ReadOnlyMemory <byte>, string)> GetHashesV1(V1.Internal.ProfileMessage profileMessage, OmniAgreementPublicKey agreementPublicKey, V1.Internal.HashAlgorithm hashAlgorithm) { var results = new Dictionary <ReadOnlyMemory <byte>, string>(); byte[] verificationMessageHash; { var verificationMessage = new V1.Internal.VerificationMessage(profileMessage, agreementPublicKey); if (hashAlgorithm == V1.Internal.HashAlgorithm.Sha2_256) { var hub = new Hub(); verificationMessage.Export(hub.Writer, _bufferPool); verificationMessageHash = Sha2_256.ComputeHash(hub.Reader.GetSequence()); } else { throw new NotSupportedException(nameof(hashAlgorithm)); } } foreach (var password in _passwords) { if (hashAlgorithm.HasFlag(V1.Internal.HashAlgorithm.Sha2_256)) { results.Add(Hmac_Sha2_256.ComputeHash(verificationMessageHash, Sha2_256.ComputeHash(password)), password); } } return(results.Select(item => (item.Key, item.Value))); }