public static void ExtractWithEmptySalt() { const int HashLen = 512 / 8; var a = new HkdfSha512(); using (var s = SharedSecret.Import(ReadOnlySpan <byte> .Empty)) { var expected = a.Extract(s, new byte[HashLen]); var actual = a.Extract(s, ReadOnlySpan <byte> .Empty); Assert.Equal(expected, actual); } }
public static void ExtractWithSpanWithEmptySalt() { const int HashLen = 512 / 8; var a = new HkdfSha512(); using (var s = SharedSecret.Import(ReadOnlySpan <byte> .Empty)) { var expected = new byte[a.PseudorandomKeySize]; var actual = new byte[expected.Length]; a.Extract(s, new byte[HashLen], expected); a.Extract(s, ReadOnlySpan <byte> .Empty, actual); Assert.Equal(expected, actual); } }
public static void ExtractWithSpanTooLong() { var a = new HkdfSha512(); using (var s = SharedSecret.Import(ReadOnlySpan <byte> .Empty)) { Assert.Throws <ArgumentException>("pseudorandomKey", () => a.Extract(s, ReadOnlySpan <byte> .Empty, new byte[a.PseudorandomKeySize + 1])); } }
public static void ExtractSuccess() { var a = new HkdfSha512(); using (var s = SharedSecret.Import(ReadOnlySpan <byte> .Empty)) { var expected = s_prkForEmpty.DecodeHex(); var actual = a.Extract(s, ReadOnlySpan <byte> .Empty); Assert.Equal(expected, actual); Assert.Equal(a.PseudorandomKeySize, actual.Length); } }
public static void ExtractWithSpanSuccess() { var a = new HkdfSha512(); using (var s = SharedSecret.Import(ReadOnlySpan <byte> .Empty)) { var expected = s_prkForEmpty.DecodeHex(); var actual = new byte[expected.Length]; a.Extract(s, ReadOnlySpan <byte> .Empty, actual); Assert.Equal(expected, actual); } }
public static void ExtractWithSpanWithNullSecret() { var a = new HkdfSha512(); Assert.Throws <ArgumentNullException>("sharedSecret", () => a.Extract(null, ReadOnlySpan <byte> .Empty, Span <byte> .Empty)); }