Пример #1
0
        public void When_Trying_To_Rsa_Sign_With_A_Not_Supported_Algorithm_Then_Null_Is_Returned()
        {
            // ARRANGE
            InitializeFakeObjects();

            // ACT
            var result = _createJwsSignature.SignWithRsa(JwsAlg.ES512, string.Empty, string.Empty);

            // ASSERT
            Assert.Null(result);
        }
Пример #2
0
        public string Generate(
            JwsPayload jwsPayload,
            JwsAlg jwsAlg,
            JsonWebKey jsonWebKey)
        {
            if (jwsPayload == null)
            {
                throw new ArgumentNullException("jwsPayload");
            }

            if (jsonWebKey == null &&
                jwsAlg != JwsAlg.none)
            {
                jwsAlg = JwsAlg.none;
            }

            var protectedHeader = ConstructProtectedHeader(jwsAlg);

            if (jwsAlg != JwsAlg.none)
            {
                protectedHeader.Kid = jsonWebKey.Kid;
            }

            var serializedProtectedHeader = protectedHeader.SerializeWithDataContract();
            var base64EncodedSerializedProtectedHeader = serializedProtectedHeader.Base64Encode();
            var serializedPayload = jwsPayload.SerializeWithJavascript();
            var base64EncodedSerializedPayload    = serializedPayload.Base64Encode();
            var combinedProtectedHeaderAndPayLoad = string.Format(
                "{0}.{1}",
                base64EncodedSerializedProtectedHeader,
                base64EncodedSerializedPayload);

            var signedJws = string.Empty;

            if (jwsAlg != JwsAlg.none)
            {
                switch (jsonWebKey.Kty)
                {
                case KeyType.RSA:
                    signedJws = _createJwsSignature.SignWithRsa(jwsAlg, jsonWebKey.SerializedKey, combinedProtectedHeaderAndPayLoad);
                    break;

#if NET46 || NET45
                case KeyType.EC:
                    signedJws = _createJwsSignature.SignWithEllipseCurve(jsonWebKey.SerializedKey, combinedProtectedHeaderAndPayLoad);
                    break;
#endif
                }
            }

            return(string.Format("{0}.{1}", combinedProtectedHeaderAndPayLoad, signedJws));
        }