public void ComputeJwkThumbprintSpec() { // https://tools.ietf.org/html/rfc7638#section-3.1 var context = TestUtilities.WriteHeader($"{this}.ComputeJwkThumbprintSpec", "", true); var jwk = new JsonWebKey() { Kty = JsonWebAlgorithmsKeyTypes.RSA, E = "AQAB", N = "0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMstn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw" }; var jwkThumbprint = jwk.ComputeJwkThumbprint(); var base64UrlEncodedJwkThumbprint = Base64UrlEncoder.Encode(jwkThumbprint); var expectedJwkThumbprint = new byte[] { 55, 54, 203, 177, 120, 124, 184, 48, 156, 119, 238, 140, 55, 5, 197, 225, 111, 251, 158, 133, 151, 21, 144, 31, 30, 76, 89, 177, 17, 130, 245, 123 }; var expectedBase64UrlEncodedThumbprint = "NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs"; IdentityComparer.AreBytesEqual(jwkThumbprint, expectedJwkThumbprint, context); IdentityComparer.AreStringsEqual(base64UrlEncodedJwkThumbprint, expectedBase64UrlEncodedThumbprint, context); TestUtilities.AssertFailIfErrors(context); }
public void ComputeJwkThumbprint(JwkThumbprintTheoryData theoryData) { Logging.IdentityModelEventSource.ShowPII = true; var context = TestUtilities.WriteHeader($"{this}.ComputeJwkThumbprint", theoryData); try { var jwkThumbprint = Base64UrlEncoder.Encode(theoryData.JWK.ComputeJwkThumbprint()); IdentityComparer.AreStringsEqual(jwkThumbprint, theoryData.ExpectedBase64UrlEncodedJwkThumbprint, context); theoryData.ExpectedException.ProcessNoException(context); } catch (Exception ex) { theoryData.ExpectedException.ProcessException(ex, context); } TestUtilities.AssertFailIfErrors(context); }