예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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]));
            }
        }
예제 #4
0
        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);
            }
        }
예제 #5
0
        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);
            }
        }
예제 #6
0
        public static void ExtractWithSpanWithNullSecret()
        {
            var a = new HkdfSha512();

            Assert.Throws <ArgumentNullException>("sharedSecret", () => a.Extract(null, ReadOnlySpan <byte> .Empty, Span <byte> .Empty));
        }