Exemplo n.º 1
0
        public string GenerateSecret()
        {
            var buffer = new byte[9];

            using var rng = RNGCryptoServiceProvider.Create();
            rng.GetBytes(buffer);

            var secret  = Convert.ToBase64String(buffer).Substring(0, 10).Replace('/', '0').Replace('+', '1');
            var encoded = new Base32Codec().Encode(Encoding.ASCII.GetBytes(secret));

            return(encoded);
        }
Exemplo n.º 2
0
        public void EncodeTest()
        {
            var tests = new[] {
                new { encoded = "", decoded = "", },
                new { encoded = "MY======", decoded = "f", },
                new { encoded = "MZXQ====", decoded = "fo", },
                new { encoded = "MZXW6===", decoded = "foo", },
                new { encoded = "MZXW6YQ=", decoded = "foob", },
                new { encoded = "MZXW6YTB", decoded = "fooba", },
                new { encoded = "MZXW6YTBOI======", decoded = "foobar", },
            };

            var encoding = new Base32Codec();

            foreach (var test in tests)
            {
                var buffer  = Encoding.ASCII.GetBytes(test.decoded);
                var encoded = encoding.Encode(buffer);
                Assert.AreEqual(test.encoded, encoded);
            }
        }
Exemplo n.º 3
0
        public void DecodeTest()
        {
            var tests = new[] {
                new { encoded = "", decoded = "", },
                new { encoded = "MY======", decoded = "f", },
                new { encoded = "MZXQ====", decoded = "fo", },
                new { encoded = "MZXW6===", decoded = "foo", },
                new { encoded = "MZXW6YQ=", decoded = "foob", },
                new { encoded = "MZXW6YTB", decoded = "fooba", },
                new { encoded = "MZXW6YTBOI======", decoded = "foobar", },
            };

            var encoding = new Base32Codec();

            foreach (var test in tests)
            {
                var bytes   = encoding.Decode(test.encoded);
                var decoded = Encoding.ASCII.GetString(bytes);
                Assert.AreEqual(test.decoded, decoded);
            }
        }
Exemplo n.º 4
0
        public byte[] GetKey(string secret)
        {
            var decoded = new Base32Codec().Decode(secret);

            return(decoded);
        }