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); }
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)); }
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)); }
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); }
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); }