public void B() { var json = this.GetResource("RFC7517_B.json"); var jwks = JWKS.Parse(json).ToList(); Assert.AreEqual(1, jwks.Count); Assert.IsInstanceOfType(jwks[0].Key, typeof(RSA)); Assert.IsFalse(jwks[0].IsEncryption); Assert.IsTrue(jwks[0].IsSignature); Assert.AreEqual("1b94c", jwks[0].Id); Assert.IsInstanceOfType(jwks[0].Header["x5c"], typeof(IList)); IList x5c = jwks[0].Header["x5c"] as IList; var list = x5c.OfType <string>() .Select(t => Convert.FromBase64String(t)) .Select(t => new X509Certificate2(t)) .ToList(); Assert.AreEqual(1, list.Count); Assert.IsInstanceOfType(list[0], typeof(X509Certificate2)); Assert.IsInstanceOfType(list[0].GetRSAPublicKey(), typeof(RSA)); Assert.AreEqual( (jwks[0].Key as RSA).ToXmlString(false), list[0].GetRSAPublicKey().ToXmlString(false)); }
public void B() { var json = this.GetResource("RFC7517_B.json"); var jwks = JWKS.Parse(json).ToList(); Assert.Equal(1, jwks.Count); Assert.IsAssignableFrom <RSA>(jwks[0].Key); Assert.False(jwks[0].IsEncryption); Assert.True(jwks[0].IsSignature); Assert.Equal("1b94c", jwks[0].Id); Assert.IsAssignableFrom <IList>(jwks[0].Header["x5c"]); IList x5c = jwks[0].Header["x5c"] as IList; var list = x5c.OfType <string>() .Select(t => Convert.FromBase64String(t)) .Select(t => new X509Certificate2(t)) .ToList(); Assert.Equal(1, list.Count); Assert.IsAssignableFrom <X509Certificate2>(list[0]); Assert.IsAssignableFrom <RSA>(list[0].GetRSAPublicKey()); Assert.Equal( (jwks[0].Key as RSA).ExportParameters(false).Modulus, list[0].GetRSAPublicKey().ExportParameters(false).Modulus); }
public void C() { const string TOKEN = "" + "eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJwMnMiOiIyV0NUY0paMVJ2ZF9DSn" + "VKcmlwUTF3IiwicDJjIjo0MDk2LCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiY3R5Ijoi" + "andrK2pzb24ifQ." + "TrqXOwuNUfDV9VPTNbyGvEJ9JMjefAVn-TR1uIxR9p6hsRQh9Tk7BA." + "Ye9j1qs22DmRSAddIh-VnA." + "AwhB8lxrlKjFn02LGWEqg27H4Tg9fyZAbFv3p5ZicHpj64QyHC44qqlZ3JEmnZTgQo" + "wIqZJ13jbyHB8LgePiqUJ1hf6M2HPLgzw8L-mEeQ0jvDUTrE07NtOerBk8bwBQyZ6g" + "0kQ3DEOIglfYxV8-FJvNBYwbqN1Bck6d_i7OtjSHV-8DIrp-3JcRIe05YKy3Oi34Z_" + "GOiAc1EK21B11c_AE11PII_wvvtRiUiG8YofQXakWd1_O98Kap-UgmyWPfreUJ3lJP" + "nbD4Ve95owEfMGLOPflo2MnjaTDCwQokoJ_xplQ2vNPz8iguLcHBoKllyQFJL2mOWB" + "wqhBo9Oj-O800as5mmLsvQMTflIrIEbbTMzHMBZ8EFW9fWwwFu0DWQJGkMNhmBZQ-3" + "lvqTc-M6-gWA6D8PDhONfP2Oib2HGizwG1iEaX8GRyUpfLuljCLIe1DkGOewhKuKkZ" + "h04DKNM5Nbugf2atmU9OP0Ldx5peCUtRG1gMVl7Qup5ZXHTjgPDr5b2N731UooCGAU" + "qHdgGhg0JVJ_ObCTdjsH4CF1SJsdUhrXvYx3HJh2Xd7CwJRzU_3Y1GxYU6-s3GFPbi" + "rfqqEipJDBTHpcoCmyrwYjYHFgnlqBZRotRrS95g8F95bRXqsaDY7UgQGwBQBwy665" + "d0zpvTasvfXf_c0MWAl-neFaKOW_Px6g4EUDjG1GWSXV9cLStLw_0ovdApDIFLHYHe" + "PyagyHjouQUuGiq7BsYwYrwaF06tgB8hV8omLNfMEmDPJaZUzMuHw6tBDwGkzD-tS_" + "ub9hxrpJ4UsOWnt5rGUyoN2N_c1-TQlXxm5oto14MxnoAyBQBpwIEgSH3Y4ZhwKBhH" + "PjSo0cdwuNdYbGPpb-YUvF-2NZzODiQ1OvWQBRHSbPWYz_xbGkgD504LRtqRwCO7CC" + "_CyyURi1sEssPVsMJRX_U4LFEOc82TiDdqjKOjRUfKK5rqLi8nBE9soQ0DSaOoFQZi" + "GrBrqxDsNYiAYAmxxkos-i3nX4qtByVx85sCE5U_0MqG7COxZWMOPEFrDaepUV-cOy" + "rvoUIng8i8ljKBKxETY2BgPegKBYCxsAUcAkKamSCC9AiBxA0UOHyhTqtlvMksO7AE" + "hNC2-YzPyx1FkhMoS4LLe6E_pFsMlmjA6P1NSge9C5G5tETYXGAn6b1xZbHtmwrPSc" + "ro9LWhVmAaA7_bxYObnFUxgWtK4vzzQBjZJ36UTk4OTB-JvKWgfVWCFsaw5WCHj6Oo" + "4jpO7d2yN7WMfAj2hTEabz9wumQ0TMhBduZ-QON3pYObSy7TSC1vVme0NJrwF_cJRe" + "hKTFmdlXGVldPxZCplr7ZQqRQhF8JP-l4mEQVnCaWGn9ONHlemczGOS-A-wwtnmwjI" + "B1V_vgJRf4FdpV-4hUk4-QLpu3-1lWFxrtZKcggq3tWTduRo5_QebQbUUT_VSCgsFc" + "OmyWKoj56lbxthN19hq1XGWbLGfrrR6MWh23vk01zn8FVwi7uFwEnRYSafsnWLa1Z5" + "TpBj9GvAdl2H9NHwzpB5NqHpZNkQ3NMDj13Fn8fzO0JB83Etbm_tnFQfcb13X3bJ15" + "Cz-Ww1MGhvIpGGnMBT_ADp9xSIyAM9dQ1yeVXk-AIgWBUlN5uyWSGyCxp0cJwx7HxM" + "38z0UIeBu-MytL-eqndM7LxytsVzCbjOTSVRmhYEMIzUAnS1gs7uMQAGRdgRIElTJE" + "SGMjb_4bZq9s6Ve1LKkSi0_QDsrABaLe55UY0zF4ZSfOV5PMyPtocwV_dcNPlxLgNA" + "D1BFX_Z9kAdMZQW6fAmsfFle0zAoMe4l9pMESH0JB4sJGdCKtQXj1cXNydDYozF7l8" + "H00BV_Er7zd6VtIw0MxwkFCTatsv_R-GsBCH218RgVPsfYhwVuT8R4HarpzsDBufC4" + "r8_c8fc9Z278sQ081jFjOja6L2x0N_ImzFNXU6xwO-Ska-QeuvYZ3X_L31ZOX4Llp-" + "7QSfgDoHnOxFv1Xws-D5mDHD3zxOup2b2TppdKTZb9eW2vxUVviM8OI9atBfPKMGAO" + "v9omA-6vv5IxUH0-lWMiHLQ_g8vnswp-Jav0c4t6URVUzujNOoNd_CBGGVnHiJTCHl" + "88LQxsqLHHIu4Fz-U2SGnlxGTj0-ihit2ELGRv4vO8E1BosTmf0cx3qgG0Pq0eOLBD" + "IHsrdZ_CCAiTc0HVkMbyq1M6qEhM-q5P6y1QCIrwg." + "0HFmhOzsQ98nNWJjIHkR7A"; const string SECRET = "Thus from my lips, by yours, my sin is purged."; var s = JWT.Decode(TOKEN, SECRET); var jwks = JWKS.Parse(s).ToList(); Assert.AreEqual(1, jwks.Count); Assert.IsInstanceOfType(jwks[0].Key, typeof(RSA)); Assert.IsFalse(jwks[0].IsSignature); Assert.IsTrue(jwks[0].IsEncryption); Assert.AreEqual("*****@*****.**", jwks[0].Id); }
public void A3() { var json = this.GetResource("RFC7517_A3.json"); var jwks = JWKS.Parse(json).ToList(); Assert.Equal(2, jwks.Count); Assert.IsAssignableFrom <byte[]>(jwks[0].Key); Assert.True(jwks[0].IsEncryption); Assert.True(jwks[0].IsSignature); Assert.IsAssignableFrom <byte[]>(jwks[1].Key); Assert.True(jwks[1].IsEncryption); Assert.True(jwks[1].IsSignature); Assert.Equal("HMAC key used in JWS spec Appendix A.1 example", jwks[1].Id); }
public void A3() { var json = this.GetResource("RFC7517_A3.json"); var jwks = JWKS.Parse(json).ToList(); Assert.AreEqual(2, jwks.Count); Assert.IsInstanceOfType(jwks[0].Key, typeof(byte[])); Assert.IsTrue(jwks[0].IsEncryption); Assert.IsTrue(jwks[0].IsSignature); Assert.IsInstanceOfType(jwks[1].Key, typeof(byte[])); Assert.IsTrue(jwks[1].IsEncryption); Assert.IsTrue(jwks[1].IsSignature); Assert.AreEqual("HMAC key used in JWS spec Appendix A.1 example", jwks[1].Id); }
public void A2() { var json = this.GetResource("RFC7517_A2.json"); var jwks = JWKS.Parse(json).ToList(); Assert.Equal(2, jwks.Count); Assert.IsAssignableFrom <ECDsa>(jwks[0].Key); Assert.True(jwks[0].IsEncryption); Assert.False(jwks[0].IsSignature); Assert.Equal("1", jwks[0].Id); Assert.IsAssignableFrom <RSA>(jwks[1].Key); Assert.True(jwks[1].IsEncryption); Assert.True(jwks[1].IsSignature); Assert.Equal("RS256", jwks[1].Header["alg"]); Assert.Equal("2011-04-29", jwks[1].Id); }
public void A2() { var json = this.GetResource("RFC7517_A2.json"); var jwks = JWKS.Parse(json).ToList(); Assert.AreEqual(2, jwks.Count); Assert.IsInstanceOfType(jwks[0].Key, typeof(ECDsa)); Assert.IsTrue(jwks[0].IsEncryption); Assert.IsFalse(jwks[0].IsSignature); Assert.AreEqual("1", jwks[0].Id); Assert.IsInstanceOfType(jwks[1].Key, typeof(RSA)); Assert.IsTrue(jwks[1].IsEncryption); Assert.IsTrue(jwks[1].IsSignature); Assert.AreEqual("RS256", jwks[1].Header["alg"]); Assert.AreEqual("2011-04-29", jwks[1].Id); }