private static byte[] blake2bHmacSelfTest() { using var inc = Blake2b.CreateHashAlgorithm(blake2bCheck.Length); foreach (int diglen in new[] { 20, 32, 48, 64 }) { using var halg = Blake2b.CreateHashAlgorithm(diglen); using var hmac = Blake2b.CreateHMAC(diglen, getTestSequence(diglen)); foreach (int msglen in new[] { 0, 3, 128, 129, 255, 1024 }) { var msg = getTestSequence(msglen); inc.TransformBlock(halg.ComputeHash(msg), 0, diglen, null, 0); inc.TransformBlock(hmac.ComputeHash(msg), 0, diglen, null, 0); } } inc.TransformFinalBlock(Array.Empty <byte>(), 0, 0); var hash = inc.Hash; return(hash); }