Exemplo n.º 1
0
//        [TestCase("ffffffff48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001", "fc59093aafa9ab43daae0e914c57635c5402d8e3d2130eb9b3cc181de7f0ecf9b22bf99a7815ce16419e200e01846e6b5df8cc7703041bbceb571de6631d2615")]
        public void compression_function_should_return_valid_output(string input, string output)
        {
            var blake2 = new Blake2();
            var result = blake2.Compress(Bytes.FromHexString(input)).ToHexString();

            result.Should().BeEquivalentTo(output);
        }
Exemplo n.º 2
0
        public static void Test(string msg, string hash)
        {
            var a = new Blake2();

            var expected = hash.DecodeHex();
            var actual   = a.Hash(msg.DecodeHex(), expected.Length);

            Assert.Equal(expected, actual);
        }
Exemplo n.º 3
0
        public static void HashWithWrongKey()
        {
            var a = new Blake2();

            using (var k = new Key(new Ed25519()))
            {
                Assert.Throws <ArgumentException>("key", () => a.Hash(k, ReadOnlySpan <byte> .Empty));
            }
        }
Exemplo n.º 4
0
        public static void HashWithMaxSpanSuccess()
        {
            var a = new Blake2();

            using (var k = new Key(a))
            {
                a.Hash(k, ReadOnlySpan <byte> .Empty, new byte[a.MaxHashSize]);
            }
        }
Exemplo n.º 5
0
        public static void HashWithSpanTooLarge()
        {
            var a = new Blake2();

            using (var k = new Key(a))
            {
                Assert.Throws <ArgumentException>("hash", () => a.Hash(k, ReadOnlySpan <byte> .Empty, new byte[a.MaxHashSize + 1]));
            }
        }
Exemplo n.º 6
0
        public static void HashWithSizeTooSmall()
        {
            var a = new Blake2();

            using (var k = new Key(a))
            {
                Assert.Throws <ArgumentOutOfRangeException>("hashSize", () => a.Hash(k, ReadOnlySpan <byte> .Empty, a.MinHashSize - 1));
            }
        }
Exemplo n.º 7
0
        private static TheoryData <int> GetKeySizes()
        {
            var data = new TheoryData <int>();
            var a    = new Blake2();

            data.Add(a.DefaultKeySize);
            data.Add(a.MinKeySize);
            data.Add(a.MaxKeySize);
            return(data);
        }
Exemplo n.º 8
0
        public static void HashWithKeySuccess()
        {
            var a = new Blake2();

            using (var k = new Key(a))
            {
                var b = a.Hash(k, ReadOnlySpan <byte> .Empty);

                Assert.NotNull(b);
                Assert.Equal(a.DefaultHashSize, b.Length);
            }
        }
Exemplo n.º 9
0
        public static void ExportImportSymmetric(int keySize)
        {
            var a = new Blake2();

            using (var k = Key.Import(a, Utilities.RandomBytes.Slice(0, keySize), KeyBlobFormat.RawSymmetricKey, KeyFlags.AllowExport))
            {
                Assert.Equal(KeyFlags.AllowExport, k.Flags);

                var b = k.Export(KeyBlobFormat.RawSymmetricKey);
                Assert.NotNull(b);
                Assert.Equal(b.Length, keySize);
            }
        }
Exemplo n.º 10
0
        public static void Test(string msg, string key, string hash)
        {
            var a = new Blake2();

            using (var k = Key.Import(a, key.DecodeHex(), KeyBlobFormat.RawSymmetricKey))
            {
                var m = msg.DecodeHex();

                var expected = hash.DecodeHex();
                var actual   = a.Hash(k, m, expected.Length);

                Assert.Equal(expected, actual);
            }
        }
Exemplo n.º 11
0
        public static void CreateKey()
        {
            var a = new Blake2();

            using (var k = new Key(a, KeyFlags.AllowArchiving))
            {
                var actual = k.Export(KeyBlobFormat.RawSymmetricKey);

                var expected = new byte[actual.Length];
                Utilities.Fill(expected, 0xD0);

                Assert.NotEqual(expected, actual);
            }
        }
Exemplo n.º 12
0
        public static void Properties()
        {
            var a = new Blake2();

            Assert.True(a.MinKeySize >= 0);
            Assert.True(a.DefaultKeySize >= a.MinKeySize);
            Assert.True(a.MaxKeySize >= a.DefaultKeySize);
            Assert.True(a.MaxKeySize <= 64);

            Assert.True(a.MinHashSize >= 1);
            Assert.True(a.DefaultHashSize >= a.MinHashSize);
            Assert.True(a.MaxHashSize >= a.DefaultHashSize);
            Assert.True(a.MaxHashSize <= 64);
        }
        public (byte[], bool) Run(byte[] inputData)
        {
            if (inputData.Length != RequiredInputLength)
            {
                return(Bytes.Empty, false);
            }

            var finalByte = inputData[212];

            if (finalByte != 0 && finalByte != 1)
            {
                return(Bytes.Empty, false);
            }

            var blake  = new Blake2();
            var result = blake.Compress(inputData);

            return(result, true);
        }
Exemplo n.º 14
0
        public static void HashWithNullKey()
        {
            var a = new Blake2();

            Assert.Throws <ArgumentNullException>("key", () => a.Hash(null, ReadOnlySpan <byte> .Empty));
        }