コード例 #1
0
 public void Intialize()
 {
     ReadObj           = new JSonObject();
     WriteObj          = new JSonObject();
     SymmetricKey      = new SymmetricKeyGenerator();
     GeneratoreMachine = new PrimeNumberGenerator();
 }
コード例 #2
0
        public virtual void SetUp()
        {
            plainText    = "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet";
            plainTextCTS = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam venenatis ex sit amet risus pellentesque, a faucibus quam ultrices. Ut tincidunt quam eu aliquam maximus. Quisque posuere risus at erat blandit eleifend. Curabitur viverra rutrum volutpat. Donec quis quam tellus. Aenean fermentum elementum augue, a semper risus scelerisque sit amet. Nullam vitae sapien vitae dui ullamcorper dapibus quis quis leo. Sed neque felis, pellentesque in risus et, lobortis ultricies nulla. Quisque quis quam risus. Donec vestibulum, lectus vel vestibulum eleifend, velit ante volutpat lacus, ut mattis quam ligula eget est. Sed et pulvinar lectus. In mollis turpis non ipsum vehicula, sit amet rutrum nibh dictum. Duis consectetur convallis ex, eu ultricies enim bibendum vel. Vestibulum vel libero nibh. Morbi nec odio mattis, vestibulum quam blandit, pretium orci.Aenean pellentesque tincidunt nunc a malesuada. Etiam gravida fermentum mi, at dignissim dui aliquam quis. Nullam vel lobortis libero. Phasellus non gravida posuere";

            keyGen = new SymmetricKeyGenerator();

            /**** CREATE KEYS ****/
            key1024 = keyGen.doGenerateKey("GENERICRANDOM", 1024);
            key512  = keyGen.doGenerateKey("GENERICRANDOM", 512);
            key448  = keyGen.doGenerateKey("GENERICRANDOM", 448);
            key256  = keyGen.doGenerateKey("GENERICRANDOM", 256);
            key160  = keyGen.doGenerateKey("GENERICRANDOM", 160);
            key192  = keyGen.doGenerateKey("GENERICRANDOM", 192);
            key128  = keyGen.doGenerateKey("GENERICRANDOM", 128);
            key64   = keyGen.doGenerateKey("GENERICRANDOM", 64);

            /**** CREATE IVs ****/
            IV128 = keyGen.doGenerateIV("GENERICRANDOM", 128);
            IV64  = keyGen.doGenerateIV("GENERICRANDOM", 64);


            encodings = new string[] { "UTF_8", "UTF_16", "UTF_16BE", "UTF_16LE", "UTF_32", "UTF_32BE", "UTF_32LE", "SJIS", "GB2312" };
            eu        = new EncodingUtil();
        }
コード例 #3
0
        public virtual void SetUp()
        {
            jwt     = new JWTCreator();
            options = new JWTOptions();
            keyGen  = new SymmetricKeyGenerator();
            claims  = new PrivateClaims();
            rList   = new RevocationList();



            options.AddRegisteredClaim("iss", "GXSA");
            options.AddRegisteredClaim("sub", "subject1");
            options.AddRegisteredClaim("aud", "audience1");
            ID = "0696bb20-6223-4a1c-9ebf-e15c74387b9c, 0696bb20-6223-4a1c-9ebf-e15c74387b9c";            //&guid.Generate()
            options.AddRegisteredClaim("jti", ID);
            claims.setClaim("hola1", "hola1");
            claims.setClaim("hola2", "hola2");

            String hexaKey = keyGen.doGenerateKey("GENERICRANDOM", 256);

            options.SetSecret(hexaKey);
            options.AddRevocationList(rList);

            token = jwt.DoCreate("HS256", claims, options);
        }
コード例 #4
0
        public virtual void SetUp()
        {
            jwt     = new JWTCreator();
            options = new JWTOptions();

            keyGen       = new SymmetricKeyGenerator();
            claimslevel1 = new PrivateClaims();
            claimslevel2 = new PrivateClaims();
            claimslevel3 = new PrivateClaims();


            hexaKey = keyGen.doGenerateKey("GENERICRANDOM", 256);

            options.AddRegisteredClaim("aud", "jitsi");
            options.AddRegisteredClaim("iss", "my_client");
            options.AddRegisteredClaim("sub", "meet.jit.si");


            claimslevel1.setClaim("room", "*");

            claimslevel1.setClaim("context", claimslevel2);

            claimslevel2.setClaim("user", claimslevel3);
            claimslevel3.setClaim("avatar", "https:/gravatar.com/avatar/abc123");
            claimslevel3.setClaim("name", "John Doe");
            claimslevel3.setClaim("email", "*****@*****.**");
            claimslevel3.setClaim("id", "abcd:a1b2c3-d4e5f6-0abc1-23de-abcdef01fedcba");
            claimslevel2.setClaim("group", "a123-123-456-789");

            options.SetSecret(hexaKey);
            token = jwt.DoCreate("HS256", claimslevel1, options);
        }
        public virtual void SetUp()
        {
            jwt     = new JWTCreator();
            options = new JWTOptions();
            du      = new DateUtil();
            keyGen  = new SymmetricKeyGenerator();
            claims  = new PrivateClaims();

            currentDate = du.GetCurrentDate();
            hexaKey     = keyGen.doGenerateKey("GENERICRANDOM", 256);

            options.AddRegisteredClaim("aud", "jitsi");
            options.AddRegisteredClaim("iss", "my_client");
            options.AddRegisteredClaim("sub", "meet.jit.si");
            string expiration = du.CurrentPlusSeconds(200);

            options.AddCustomTimeValidationClaim("exp", expiration, "20");

            claims.setClaim("hola", "hola");

            options.AddHeaderParameter("cty", "twilio-fpa;v=1");
            options.SetSecret(hexaKey);

            token = jwt.DoCreate("HS256", claims, options);
        }
コード例 #6
0
        public virtual void SetUp()
        {
            du           = new DateUtil();
            guid         = new GUID();
            keyGenerator = new SymmetricKeyGenerator();
            jwt          = new JWTCreator();
            options      = new JWTOptions();
            claims       = new PrivateClaims();

            options.AddRegisteredClaim("iss", "GXSA");
            options.AddRegisteredClaim("sub", "subject1");
            options.AddRegisteredClaim("aud", "audience1");

            options.AddRegisteredClaim("jti", guid.Generate());

            options.AddCustomTimeValidationClaim("exp", du.CurrentPlusSeconds(100), "20");
            options.AddCustomTimeValidationClaim("iat", du.GetCurrentDate(), "20");
            options.AddCustomTimeValidationClaim("nbf", du.GetCurrentDate(), "20");

            claims.setClaim("hola1", "hola1");
            claims.setClaim("hola2", "hola2");

            path_RSA_sha256_1024 = Path.Combine(BASE_PATH, "dummycerts", "RSA_sha256_1024");
            path_RSA_sha256_2048 = Path.Combine(BASE_PATH, "dummycerts", "RSA_sha256_2048");
            path_RSA_sha512_2048 = Path.Combine(BASE_PATH, "dummycerts", "RSA_sha512_2048");
            path_EC = Path.Combine(BASE_PATH, "dummycerts", "JWT_ECDSA", "prime_test");

            alias    = "1";
            password = "******";
        }
コード例 #7
0
        public void GeneratesByteArrayOfRequestedLength(int length)
        {
            // Arrange
            var target = new SymmetricKeyGenerator();

            // Act
            var actual = target.Generate(length);

            // Assert
            Assert.NotNull(actual);
            Assert.Equal(actual.Length, length);
        }
コード例 #8
0
        protected virtual void SetUp()
        {
            // new EncodingUtil().setEncoding("UTF8");
            plainText    = "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet";
            plainTextCTS = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam venenatis ex sit amet risus pellentesque, a faucibus quam ultrices. Ut tincidunt quam eu aliquam maximus. Quisque posuere risus at erat blandit eleifend. Curabitur viverra rutrum volutpat. Donec quis quam tellus. Aenean fermentum elementum augue, a semper risus scelerisque sit amet. Nullam vitae sapien vitae dui ullamcorper dapibus quis quis leo. Sed neque felis, pellentesque in risus et, lobortis ultricies nulla. Quisque quis quam risus. Donec vestibulum, lectus vel vestibulum eleifend, velit ante volutpat lacus, ut mattis quam ligula eget est. Sed et pulvinar lectus. In mollis turpis non ipsum vehicula, sit amet rutrum nibh dictum. Duis consectetur convallis ex, eu ultricies enim bibendum vel. Vestibulum vel libero nibh. Morbi nec odio mattis, vestibulum quam blandit, pretium orci.Aenean pellentesque tincidunt nunc a malesuada. Etiam gravida fermentum mi, at dignissim dui aliquam quis. Nullam vel lobortis libero. Phasellus non gravida posuere";

            keyGen = new SymmetricKeyGenerator();

            /**** CREATE KEYS ****/
            key1024 = keyGen.doGenerateKey("GENERICRANDOM", 1024);
            key512  = keyGen.doGenerateKey("GENERICRANDOM", 512);
            key448  = keyGen.doGenerateKey("GENERICRANDOM", 448);
            key256  = keyGen.doGenerateKey("GENERICRANDOM", 256);
            key160  = keyGen.doGenerateKey("GENERICRANDOM", 160);
            key192  = keyGen.doGenerateKey("GENERICRANDOM", 192);
            key128  = keyGen.doGenerateKey("GENERICRANDOM", 128);
            key64   = keyGen.doGenerateKey("GENERICRANDOM", 64);

            /**** CREATE IVs ****/
            IV1024 = keyGen.doGenerateIV("GENERICRANDOM", 1024);
            IV512  = keyGen.doGenerateIV("GENERICRANDOM", 512);
            IV256  = keyGen.doGenerateIV("GENERICRANDOM", 256);
            IV224  = keyGen.doGenerateIV("GENERICRANDOM", 224);
            IV192  = keyGen.doGenerateIV("GENERICRANDOM", 192);
            IV160  = keyGen.doGenerateIV("GENERICRANDOM", 160);
            IV128  = keyGen.doGenerateIV("GENERICRANDOM", 128);
            IV64   = keyGen.doGenerateIV("GENERICRANDOM", 64);

            /**** CREATE nonces ****/
            string nonce104 = keyGen.doGenerateIV("GENERICRANDOM", 104);
            string nonce64  = keyGen.doGenerateIV("GENERICRANDOM", 64);
            string nonce56  = keyGen.doGenerateIV("GENERICRANDOM", 56);

            arrayNoncesCCM = new string[] { nonce56, nonce64, nonce104 };

            /**** CREATE PADDINGS ****/
            arrayPaddings = new string[] { "PKCS7PADDING", "ISO10126D2PADDING", "X923PADDING", "ISO7816D4PADDING",
                                           "ZEROBYTEPADDING" };

            /**** CREATEMODES ****/
            arrayModes   = new string[] { "ECB", "CBC", "CFB", "CTR", "CTS", "OFB", "OPENPGPCFB" };
            arrayModes64 = new string[] { "ECB", "CBC", "CFB", "CTR", "CTS", "OFB", "OPENPGPCFB", "GCTR" };
            arrayTagsGCM = new int[] { 128, 120, 112, 104, 96 };
            arrayTagsCCM = new int[] { 64, 128 };
            arrayMacsEAX = new int[] { 8, 16, 64, 128 };
            arrayNonces  = new string[] { IV64, IV128, IV192, IV256 };

            encodings = new string[] { "UTF_8", "UTF_16", "UTF_16BE", "UTF_16LE", "UTF_32", "UTF_32BE", "UTF_32LE", "SJIS",
                                       "GB2312" };

            eu = new EncodingUtil();
        }
        public virtual void SetUp()
        {
            plainText = "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet";
            keyGen    = new SymmetricKeyGenerator();

            key128         = keyGen.doGenerateKey(" GENERICRANDOM", 128);
            IV128          = keyGen.doGenerateIV("GENERICRANDOM ", 128);
            symBlockCipher = new SymmetricBlockCipher();

            plainTextStream = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam venenatis ex sit amet risus pellentesque, a faucibus quam ultrices. Ut tincidunt quam eu aliquam maximus. Quisque posuere risus at erat blandit eleifend. Curabitur viverra rutrum volutpat. Donec quis quam tellus. Aenean fermentum elementum augue, a semper risus scelerisque sit amet. Nullam vitae sapien vitae dui ullamcorper dapibus quis quis leo. Sed neque felis, pellentesque in risus et, lobortis ultricies nulla. Quisque quis quam risus. Donec vestibulum, lectus vel vestibulum eleifend, velit ante volutpat lacus, ut mattis quam ligula eget est. Sed et pulvinar lectus. In mollis turpis non ipsum vehicula, sit amet rutrum nibh dictum. Duis consectetur convallis ex, eu ultricies enim bibendum vel. Vestibulum vel libero nibh. Morbi nec odio mattis, vestibulum quam blandit, pretium orci.Aenean pellentesque tincidunt nunc a malesuada. Etiam gravida fermentum mi, at dignissim dui aliquam quis. Nullam vel lobortis libero. Phasellus non gravida posuere";
            key1024         = keyGen.doGenerateKey("GENERICRANDOM ", 1024);
            symStreamCipher = new SymmetricStreamCipher();
        }
コード例 #10
0
        public virtual void SetUp()
        {
            keyGenerator = new SymmetricKeyGenerator();
            jwt          = new JWTCreator();
            options      = new JWTOptions();
            claims       = new PrivateClaims();

            string hexaKey = keyGenerator.doGenerateKey("GENERICRANDOM", 256);

            options.SetSecret(hexaKey);

            claims.setClaim("hola1", "hola1");
        }
コード例 #11
0
        public virtual void SetUp()
        {
            options = new JWTOptions();
            jwt     = new JWTCreator();
            claims  = new PrivateClaims();
            keyGen  = new SymmetricKeyGenerator();

            options.AddRegisteredClaim("iss", "GXSA");
            options.AddRegisteredClaim("sub", "subject1");
            options.AddRegisteredClaim("aud", "audience1");
            ID = "0696bb20-6223-4a1c-9ebf-e15c74387b9c, 0696bb20-6223-4a1c-9ebf-e15c74387b9c";            // &guid.Generate()
            options.AddRegisteredClaim("jti", ID);
            claims.setClaim("hola1", "hola1");
            claims.setClaim("hola2", "hola2");
        }
コード例 #12
0
        public virtual void SetUp()
        {
            keyGenerator = new SymmetricKeyGenerator();
            jwt          = new JWTCreator();
            options      = new JWTOptions();
            claims       = new PrivateClaims();

            options.AddRegisteredClaim("iss", "GXSA");
            options.AddRegisteredClaim("sub", "subject1");
            options.AddRegisteredClaim("aud", "audience1");

            claims.setClaim("hola1", "hola1");
            claims.setClaim("hola2", "hola2");

            path_RSA_sha256_1024 = Path.Combine(BASE_PATH, "dummycerts", "RSA_sha256_1024");
        }
コード例 #13
0
        public virtual void SetUp()
        {
            jwt     = new JWTCreator();
            options = new JWTOptions();
            keyGen  = new SymmetricKeyGenerator();
            claims  = new PrivateClaims();

            options.AddCustomTimeValidationClaim("exp", "2020/07/20 17:56:51", "20");
            options.AddCustomTimeValidationClaim("iat", "2020/07/20 17:56:51", "20");
            options.AddCustomTimeValidationClaim("nbf", "2020/07/20 17:56:51", "20");
            claims.setClaim("hola1", "hola1");
            string hexaKey = keyGen.doGenerateKey("GENERICRANDOM", 256);

            options.SetSecret(hexaKey);
            string token = jwt.DoCreate("HS256", claims, options);

            payload = jwt.GetPayload(token);


            expected = "{\"hola1\":\"hola1\",\"exp\":1595267811,\"iat\":1595267811,\"nbf\":1595267811}";
        }
コード例 #14
0
        public virtual void SetUp()
        {
            du           = new DateUtil();
            guid         = new GUID();
            keyGenerator = new SymmetricKeyGenerator();
            jwt          = new JWTCreator();
            options      = new JWTOptions();
            claims       = new PrivateClaims();

            options.AddRegisteredClaim("iss", "GXSA");
            options.AddRegisteredClaim("sub", "subject1");
            options.AddRegisteredClaim("aud", "audience1");

            options.AddRegisteredClaim("jti", guid.Generate());


            options.AddCustomTimeValidationClaim("iat", du.GetCurrentDate(), "20");
            options.AddCustomTimeValidationClaim("nbf", du.GetCurrentDate(), "20");

            claims.setClaim("hola1", "hola1");
            claims.setClaim("hola2", "hola2");
        }
コード例 #15
0
        public void ManualWriteHmacSha256ValidSigningCredentials()
        {
            var jwt = new JsonWebToken
            {
                Header = new JwtHeader
                {
                    SignatureAlgorithm = JwtConstants.SignatureAlgorithms.HMACSHA256,
                    SigningCredentials = new HmacSigningCredentials(SymmetricKeyGenerator.Create(32))
                },

                Audience       = new Uri("http://foo.com"),
                Issuer         = "dominick",
                ExpirationTime = 500000,

                Claims = new Dictionary <string, string>
                {
                    { ClaimTypes.Name, "dominick" },
                    { ClaimTypes.Email, "*****@*****.**" }
                }
            };

            var handler = new JsonWebTokenHandler();
            var token   = handler.WriteToken(jwt);

            Trace.WriteLine(token);

            // token should not be empty
            Assert.IsTrue(!string.IsNullOrWhiteSpace(token));

            // token with signature needs to be 3 parts
            var parts = token.Split('.');

            Assert.IsTrue(parts.Length == 3, "JWT should have excactly 3 parts");

            // signature must be 256 bits
            var sig = Base64Url.Decode(parts[2]);

            Assert.IsTrue(sig.Length == 32, "Signature is not 32 bits");
        }
コード例 #16
0
        public virtual void SetUp()
        {
            jwt     = new JWTCreator();
            options = new JWTOptions();
            du      = new DateUtil();
            keyGen  = new SymmetricKeyGenerator();
            claims  = new PrivateClaims();



            hexaKey = keyGen.doGenerateKey("GENERICRANDOM", 256);

            options.AddRegisteredClaim("aud", "jitsi");
            options.AddRegisteredClaim("iss", "my_client");
            options.AddRegisteredClaim("sub", "meet.jit.si");


            claims.setClaim("hola", "hola");

            options.AddHeaderParameter("cty", "twilio-fpa;v=1");
            options.SetSecret(hexaKey);

            token = jwt.DoCreate("HS256", claims, options);
        }
コード例 #17
0
        public void ManualWriteUnsupportedSignatureAlgorithm()
        {
            var jwt = new JsonWebToken
            {
                Header = new JwtHeader
                {
                    SignatureAlgorithm = "unsupported",
                    SigningCredentials = new HmacSigningCredentials(SymmetricKeyGenerator.Create(48))
                },

                Audience       = new Uri("http://foo.com"),
                Issuer         = "dominick",
                ExpirationTime = 500000,

                Claims = new Dictionary <string, string>
                {
                    { ClaimTypes.Name, "dominick" },
                    { ClaimTypes.Email, "*****@*****.**" }
                }
            };

            var handler = new JsonWebTokenHandler();
            var token   = handler.WriteToken(jwt);
        }
コード例 #18
0
        public void HandlerCreateRoundtripDuplicateClaimTypes()
        {
            var signinKey = SymmetricKeyGenerator.Create(32);

            var identity = new ClaimsIdentity(new List <Claim>
            {
                new Claim(ClaimTypes.Name, "dominick"),
                new Claim(ClaimTypes.Name, "dominick2"),
                new Claim(ClaimTypes.Email, "*****@*****.**"),
                new Claim(ClaimTypes.Role, "bar"),
                new Claim(ClaimTypes.Role, "foo")
            }, "Custom");

            var descriptor = new SecurityTokenDescriptor
            {
                Subject            = identity,
                SigningCredentials = new HmacSigningCredentials(signinKey),
                TokenIssuerName    = "dominick",
                Lifetime           = new Lifetime(DateTime.UtcNow, DateTime.UtcNow.AddHours(8)),
                AppliesToAddress   = "http://foo.com"
            };

            var handler = new JsonWebTokenHandler();
            var token   = handler.CreateToken(descriptor);


            var tokenString = handler.WriteToken(token);

            Trace.WriteLine(tokenString);

            // token should not be empty
            Assert.IsTrue(!string.IsNullOrWhiteSpace(tokenString));

            // token with signature needs to be 3 parts
            var parts = tokenString.Split('.');

            Assert.IsTrue(parts.Length == 3, "JWT should have excactly 3 parts");

            // signature must be 256 bits
            var sig = Base64Url.Decode(parts[2]);

            Assert.IsTrue(sig.Length == 32, "Signature is not 32 bits");

            var jwtToken = handler.ReadToken(tokenString);


            var config   = new SecurityTokenHandlerConfiguration();
            var registry = new WebTokenIssuerNameRegistry();

            registry.AddTrustedIssuer("dominick", "dominick");
            config.IssuerNameRegistry = registry;

            var issuerResolver = new WebTokenIssuerTokenResolver();

            issuerResolver.AddSigningKey("dominick", Convert.ToBase64String(signinKey));
            config.IssuerTokenResolver = issuerResolver;

            config.AudienceRestriction.AllowedAudienceUris.Add(new Uri("http://foo.com"));

            handler.Configuration = config;
            var identity2 = handler.ValidateToken(jwtToken).First();

            Assert.IsTrue(identity.Claims.Count() == 5);
            //Assert.IsTrue(identity.Claims.First().Issuer == "dominick");
        }
コード例 #19
0
        public virtual void SetUp()
        {
            SymmetricKeyGenerator keyGen = new SymmetricKeyGenerator();

            password    = keyGen.doGenerateKey("GENERICRANDOM", 128);
            passUTF8    = "64887e525dce27351f5cb5ce85615e52";
            plainText   = "Lorem ipsum dolor sit amet";
            arrayHashes = new string[] { "MD5", "SHA1", "SHA224", "SHA256", "SHA384", "SHA512", "BLAKE2B_224",
                                         "BLAKE2B_256", "BLAKE2B_384", "BLAKE2B_512", "BLAKE2S_128", "BLAKE2S_160", "BLAKE2S_224", "BLAKE2S_256",
                                         "GOST3411_2012_256", "GOST3411_2012_512", "GOST3411", "KECCAK_224", "KECCAK_256", "KECCAK_288",
                                         "KECCAK_384", "KECCAK_512", "MD2", "MD4", "RIPEMD128", "RIPEMD160", "RIPEMD256", "RIPEMD320",
                                         "SHA3-224", "SHA3-256", "SHA3-384", "SHA3-512", "SHAKE_128", "SHAKE_256", "SM3", "TIGER", "WHIRLPOOL" };

            encodings = new string[] { "UTF_8", "UTF_16", "UTF_16BE", "UTF_16LE", "UTF_32", "UTF_32BE", "UTF_32LE", "SJIS",
                                       "GB2312" };

            eu = new EncodingUtil();

            string MD5               = "41A5B12FFE84175A2982A8D500B1EBAF";
            string SHA1              = "50D4AE631960E8D040FBEC617EF442B7AB251221";
            string SHA224            = "F441D15E93F2BAA1B5379A5F16B878307A21D5BEDCB61A987F01CE61";
            string SHA256            = "6B0E8EB91ED3EAE87A0AD4E1293F8FC50C2C297E4FAEC07AA43AB47E49CB7B1F";
            string SHA384            = "04C3B9B5A874D95749D6134073FB27C2B4E02D701BC5A2B5D3A0CCC345EA66B8D3C57036977DE686CBFBFFEEC2398218";
            string SHA512            = "E9A2125DBA53A4227DE74855526BA4816C6B45B5D001318C3D069D2DF94359A93099F6CDBC14710D8D3B5B956037192B44EEF8C32DE32E3AF59D24BDFC3E5DAF";
            string BLAKE2B_224       = "26CF9B1A316F1FD854DF19163C7B8C142618254DA200A20635E1D698";
            string BLAKE2B_256       = "9F78D7ACAFDA844CADD4F57817E1A368776A7D783B61BC95D174097BAC9E12BC";
            string BLAKE2B_384       = "2E2205934FB1057E3A347958180170FCE5F4DFA5ACC7623EA79BD6BC9CDAC2E57A192A77E2B9B0FE87D24BAB5BDDEEF2";
            string BLAKE2B_512       = "453EBB12652903F1C0DB44A86CF4D8DE8BD10BBDDCAE20C62ABFA16B3F7F289E10D69AAE6BEACEEEDD4CB4C42B1181C2964B95B7AE18A342605E969536A21B47";
            string BLAKE2S_128       = "9FF71F18EB2D3A9E21D5F7CD17BCF5C9";
            string BLAKE2S_160       = "CE919197A9207946EEC7DEDD2DA8F0CFCE3D10B8";
            string BLAKE2S_224       = "4CFE71196DAEAB298B31362BB2B908C667C2395DB45E717328093F21";
            string BLAKE2S_256       = "B4272BFA822369C40A3FA584739755E47F2EEE3D1A109CA010773B79883E5581";
            string GOST3411_2012_256 = "4BB2AC559E3A163BDFEC294339DE624AA90CFA5E91812477FCF43EC8692EA8E9";
            string GOST3411_2012_512 = "B96ABD6DCAB30DF76777B214AD243EC5C9349D5017A2D2F196499757AE31EAC121C72ADC457081BBF6B0763E9AE32472B7D85F1E1342B3104E5F2934F2DC83A0";
            string GOST3411          = "CA0BCB7E5C49CDFA68F2D0B53F52670626C3EDEABEA8335CBC7ED1FDFC8200D8";
            string KECCAK_224        = "1FE172D71F537B6F83B23E24E744C5E880E25F0051DCEC3B1F678327";
            string KECCAK_256        = "BFDFB4872184A37996A6A8544A3ABB84C1968D46F89E0839B3BDF7C8E87C2E4F";
            string KECCAK_288        = "6C49617278C34213B98CB90510ADD1346DEF8D0FB90B0F693553E0FFB41CB5D425C5A2EF";
            string KECCAK_384        = "B37946F7370758D7656B8D48DD9704B1AECBB4A2C58CBA0DD4B1FC730EACC9D42CCE666FD216A5238C127D4552CEA6D7";
            string KECCAK_512        = "0CCBD557A60DA24082FF20EA8A1987516BBDA2ACAD23DAA27C47F20082BA940A8D7B298C08395180A56DA5E68E90BBCC4A56B1C51431BF9AAB1A10B72BC988D4";
            string MD2               = "4F13A1C9AE27F3EF6D824DF30A1E2290";
            string MD4               = "8FB02C3DFC1E5F570BBDDDAF844D74F2";
            string RIPEMD128         = "AE3231A70E15B56FB15FE6947BACF32B";
            string RIPEMD160         = "BB7AC728783394986A6085DE3CA4CABA1B16B35B";
            string RIPEMD256         = "C0AA36C7D7A5F4C9ADA1A33976DEB7D8E61A55D5B6378F023A011A92AEFB8FC7";
            string RIPEMD320         = "34DABB9D5E807F77309A59289B7F339CB824C963DF66EBCEF56E3499630D86B2E31E0AC98C50EED4";
            string SHA3_224          = "621437AB69507712BC89DDB9128E1DF19894357AAB3637557CAD39B9";
            string SHA3_256          = "3B19CB71223B73C8B8BE4E9CAE8FDF9FDCFB53B0CE8788749F5EBDD186C90620";
            string SHA3_384          = "C3682F9296438F8A6F83599FB9F37F40C8EAC20A63B3F3E889C34982CD5B22FEEF5B1B23816B5047303C4BB953F68B57";
            string SHA3_512          = "0B9BD9EB8D6A6F7A2E64FAD66798250B5007CEC289BB6354973D02BD1BA94F4FF6C4561E75781D784FD0620515D67BD084956542CE80D7B6E49FE06E8CB755B5";
            string SHAKE_128         = "F08CC5D7EA62097A1B180F2902CD287B";
            string SHAKE_256         = "D760B7E606CD64BBEDACA6B36F3F2D9EE0D9EBD84B5CC195999AB549CDE60914";
            string SM3               = "8F447ED2CF879D5001CAE681041DE38326C55B948846168997D3C304AEA32D6D";
            string TIGER             = "FEF8448095FC19DFCE2E6B6CAE8BA594D3DC358E910473B2";
            string WHIRLPOOL         = "594BDF03B876331E3642685A497DDEC69894403422ABCB6ADE0E77999DA030027EA613027E0E18A3D42190110DEBE75357412EB7567EEF9C7CB170BCCFC3E7EC";

            arrayResHashes = new string[] { MD5, SHA1, SHA224, SHA256, SHA384, SHA512, BLAKE2B_224, BLAKE2B_256,
                                            BLAKE2B_384, BLAKE2B_512, BLAKE2S_128, BLAKE2S_160, BLAKE2S_224, BLAKE2S_256, GOST3411_2012_256,
                                            GOST3411_2012_512, GOST3411, KECCAK_224, KECCAK_256, KECCAK_288, KECCAK_384, KECCAK_512, MD2, MD4,
                                            RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA3_224, SHA3_256, SHA3_384, SHA3_512, SHAKE_128,
                                            SHAKE_256, SM3, TIGER, WHIRLPOOL };
        }
コード例 #20
0
 public void CreateKeyGenerator()
 {
     symmetricKeyGenerator = new SymmetricKeyGenerator();
 }
コード例 #21
0
 public void CreateKeyGenerator()
 {
     symmetricKeyGenerator = new SymmetricKeyGenerator();
 }
コード例 #22
0
        public void ManualWriteRoundtripDuplicateClaimTypes()
        {
            var signinKey = SymmetricKeyGenerator.Create(32);

            var jwt = new JsonWebToken
            {
                Header = new JwtHeader
                {
                    SignatureAlgorithm = JwtConstants.SignatureAlgorithms.HMACSHA256,
                    SigningCredentials = new HmacSigningCredentials(signinKey)
                },

                Audience       = new Uri("http://foo.com"),
                Issuer         = "dominick",
                ExpirationTime = 50000000000,
            };

            jwt.AddClaim(ClaimTypes.Name, "dominick");
            jwt.AddClaim(ClaimTypes.Email, "*****@*****.**");
            jwt.AddClaim(ClaimTypes.Role, "bar");
            jwt.AddClaim(ClaimTypes.Role, "foo");


            var handler = new JsonWebTokenHandler();
            var token   = handler.WriteToken(jwt);

            Trace.WriteLine(token);

            // token should not be empty
            Assert.IsTrue(!string.IsNullOrWhiteSpace(token));

            // token with signature needs to be 3 parts
            var parts = token.Split('.');

            Assert.IsTrue(parts.Length == 3, "JWT should have excactly 3 parts");

            // signature must be 256 bits
            var sig = Base64Url.Decode(parts[2]);

            Assert.IsTrue(sig.Length == 32, "Signature is not 32 bits");

            var jwtToken = handler.ReadToken(token);


            var config   = new SecurityTokenHandlerConfiguration();
            var registry = new WebTokenIssuerNameRegistry();

            registry.AddTrustedIssuer("dominick", "dominick");
            config.IssuerNameRegistry = registry;

            var issuerResolver = new WebTokenIssuerTokenResolver();

            issuerResolver.AddSigningKey("dominick", Convert.ToBase64String(signinKey));
            config.IssuerTokenResolver = issuerResolver;

            config.AudienceRestriction.AllowedAudienceUris.Add(new Uri("http://foo.com"));

            handler.Configuration = config;
            var identity = handler.ValidateToken(jwtToken).First();

            Assert.IsTrue(identity.Claims.Count() == 4);
            Assert.IsTrue(identity.Claims.First().Issuer == "dominick");
        }