コード例 #1
0
ファイル: DescriptorTests.cs プロジェクト: uruk-project/Jwt
        public void Descriptor_FullCapacity()
        {
            var payload = new JwtPayload();

            for (int i = 0; i < 256; i++)
            {
                payload.Add(i.ToString(), i);
            }

            var descriptor = new JweDescriptor(SymmetricJwk.GenerateKey(EncryptionAlgorithm.A128CbcHS256), KeyManagementAlgorithm.Dir, EncryptionAlgorithm.A128CbcHS256, CompressionAlgorithm.Def)
            {
                Payload = new JwsDescriptor(SymmetricJwk.GenerateKey(SignatureAlgorithm.HS256), SignatureAlgorithm.HS256)
                {
                    Payload = payload
                }
            };

            for (int i = 0; i < 256; i++)
            {
                descriptor.Payload.TryGetClaim(i.ToString(), out var member);
                Assert.Equal(JwtValueKind.Int32, member.Type);
                Assert.Equal(i.ToString(), member.Name.ToString());
                Assert.Equal(i, (int)member.Value);
            }

            PooledByteBufferWriter writer = new PooledByteBufferWriter();
            var context = new EncodingContext(writer, null, 0, false);

            descriptor.Encode(context);
        }
コード例 #2
0
        public void WithCacheHit_5parameters()
        {
            _output.Clear();
            JweDescriptor descriptor = new JweDescriptor(_encryptionKey, KeyManagementAlgorithm.Dir, EncryptionAlgorithm.A128Gcm, typ: "typ", cty: "cty")
            {
                Payload = new JwsDescriptor(_signingKey, SignatureAlgorithm.HS256)
            };

            descriptor.Encode(new EncodingContext(_output, _enabledCache, 0, false));
        }
コード例 #3
0
        public void WithCacheHit_9parameters()
        {
            _output.Clear();
            JweDescriptor descriptor = new JweDescriptor(_encryptionKey, KeyManagementAlgorithm.Dir, EncryptionAlgorithm.A128Gcm, typ: "typ", cty: "cty")
            {
                Header = new JwtHeader
                {
                    { "header5", "value 5" },
                    { "header6", "value 6" },
                    { "header7", "value 7" },
                    { "header8", "value 8" }
                },
                Payload = new JwsDescriptor(_signingKey, SignatureAlgorithm.HS256)
                {
                }
            };

            descriptor.Encode(new EncodingContext(_output, _enabledCache, 0, false));
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: uruk-project/Jwt
        private static ReadOnlyMemory <byte> CreateJws()
        {
            var descriptor = new JweDescriptor(encryptionKey1, KeyManagementAlgorithm.A128KW, EncryptionAlgorithm.A128CbcHS256)
            {
                Payload = new JwsDescriptor(signingKey1, SignatureAlgorithm.HS256)
                {
                    Payload = new JwtPayload
                    {
                        { JwtClaimNames.Iat, 1500000000L },
                        { JwtClaimNames.Exp, 2000000000L },
                        { JwtClaimNames.Iss, "https://idp.example.com/" },
                        { JwtClaimNames.Aud, "636C69656E745F6964" },
                        { JwtClaimNames.Sub, "*****@*****.**" },
                        { JwtClaimNames.Jti, "12345667890" }
                    }
                }
            };

            var bufferWriter = new System.Buffers.ArrayBufferWriter <byte>();
            var context      = new EncodingContext(bufferWriter, null, 0, false);

            descriptor.Encode(context);
            return(bufferWriter.WrittenMemory);
        }
コード例 #5
0
ファイル: DescriptorTests.cs プロジェクト: uruk-project/Jwt
        public void Descriptor_AllKindOfObject()
        {
            var descriptor = new JweDescriptor(SymmetricJwk.GenerateKey(256), KeyManagementAlgorithm.Dir, EncryptionAlgorithm.A128CbcHS256, CompressionAlgorithm.Def)
            {
                Payload = new JwsDescriptor(SymmetricJwk.GenerateKey(SignatureAlgorithm.HS256), SignatureAlgorithm.HS256)
                {
                    Header = new JwtHeader
                    {
                        { "H1", "value1" },
                        { "H2", new Dictionary <string, object> {
                              { "prop1", "value2" }
                          } },
                        { "H3", 123L },
                        { "H4", new Fake {
                              Inner = new Fake {
                                  Value = "Inner1", Inner = new Fake {
                                      Value = "Inner2"
                                  }
                              }, Value = "Inner0"
                          } },
                        { "H5", new [] { "a", "b", "c" } },
                        { "H6", new [] { new object(), new object(), "abc", 123 } },
                        { "H7", true },
                        { "H8", false },
                    },
                    Payload = new JwtPayload
                    {
                        { "P1", "value1" },
                        { "P2", new Dictionary <string, object> {
                              { "prop1", "value2" }
                          } },
                        { "P3", 123L },
                        { "P4", new Fake {
                              Inner = new Fake {
                                  Value = "Inner1", Inner = new Fake {
                                      Value = "Inner2"
                                  }
                              }, Value = "Inner0"
                          } },
                        { "P5", new [] { "a", "b", "c" } },
                        { "P6", new [] { new object(), new object(), "abc", 123 } },
                        { "P7", true },
                        { "P8", false },
                    }
                }
            };

            Assert.True(descriptor.Payload.TryGetClaim("P1", out var claim));
            Assert.Equal(JwtValueKind.String, claim.Type);
            Assert.True(descriptor.Payload.TryGetClaim("P2", out claim));
            Assert.Equal(JwtValueKind.Object, claim.Type);
            Assert.True(descriptor.Payload.TryGetClaim("P3", out claim));
            Assert.Equal(JwtValueKind.Int64, claim.Type);
            Assert.True(descriptor.Payload.TryGetClaim("P4", out claim));
            Assert.Equal(JwtValueKind.Object, claim.Type);
            Assert.True(descriptor.Payload.TryGetClaim("P5", out claim));
            Assert.Equal(JwtValueKind.Array, claim.Type);
            Assert.True(descriptor.Payload.TryGetClaim("P6", out claim));
            Assert.Equal(JwtValueKind.Array, claim.Type);
            Assert.True(descriptor.Payload.TryGetClaim("P7", out claim));
            Assert.Equal(JwtValueKind.True, claim.Type);
            Assert.True(descriptor.Payload.TryGetClaim("P8", out claim));
            Assert.Equal(JwtValueKind.False, claim.Type);

            Assert.True(descriptor.Payload.Header.TryGetValue("alg", out var jwsHeaderParameter));
            Assert.Equal(JwtValueKind.JsonEncodedString, jwsHeaderParameter.Type);
            Assert.True(descriptor.Payload.Header.TryGetValue("kid", out jwsHeaderParameter));
            Assert.Equal(JwtValueKind.JsonEncodedString, jwsHeaderParameter.Type);
            Assert.True(descriptor.Payload.Header.TryGetValue("H1", out jwsHeaderParameter));
            Assert.Equal(JwtValueKind.String, jwsHeaderParameter.Type);
            Assert.True(descriptor.Payload.Header.TryGetValue("H2", out jwsHeaderParameter));
            Assert.Equal(JwtValueKind.Object, jwsHeaderParameter.Type);
            Assert.True(descriptor.Payload.Header.TryGetValue("H3", out jwsHeaderParameter));
            Assert.Equal(JwtValueKind.Int64, jwsHeaderParameter.Type);
            Assert.True(descriptor.Payload.Header.TryGetValue("H4", out jwsHeaderParameter));
            Assert.Equal(JwtValueKind.Object, jwsHeaderParameter.Type);
            Assert.True(descriptor.Payload.Header.TryGetValue("H5", out jwsHeaderParameter));
            Assert.Equal(JwtValueKind.Array, jwsHeaderParameter.Type);
            Assert.True(descriptor.Payload.Header.TryGetValue("H6", out jwsHeaderParameter));
            Assert.Equal(JwtValueKind.Array, jwsHeaderParameter.Type);
            Assert.True(descriptor.Payload.Header.TryGetValue("H7", out jwsHeaderParameter));
            Assert.Equal(JwtValueKind.True, jwsHeaderParameter.Type);
            Assert.True(descriptor.Payload.Header.TryGetValue("H8", out jwsHeaderParameter));
            Assert.Equal(JwtValueKind.False, jwsHeaderParameter.Type);

            Assert.True(descriptor.Header.TryGetValue("kid", out var jweHeaderParameter));
            Assert.True(descriptor.Header.TryGetValue("alg", out jweHeaderParameter));
            Assert.Equal(KeyManagementAlgorithm.Dir.Name, ((JsonEncodedText)jweHeaderParameter.Value));
            Assert.True(descriptor.Header.TryGetValue("enc", out jweHeaderParameter));
            Assert.Equal(EncryptionAlgorithm.A128CbcHS256.Name, ((JsonEncodedText)jweHeaderParameter.Value));
            Assert.True(descriptor.Header.TryGetValue("zip", out jweHeaderParameter));
            Assert.Equal(CompressionAlgorithm.Def.Name, (JsonEncodedText)jweHeaderParameter.Value);

            PooledByteBufferWriter writer = new PooledByteBufferWriter();
            var context = new EncodingContext(writer, null, 0, false);

            descriptor.Encode(context);
        }