示例#1
0
        public static string Encode(string payload, string signingAlgorithm, object key)
        {
            Ensure.IsNotEmpty(payload, "JoseRT.Jwt.Encode(): payload expected to be not empty, whitespace or null.");

            if (!signers.ContainsKey(signingAlgorithm))
            {
                throw new Exception(string.Format("JoseRT.Jwt.Encode(): unknown or unsupported signing algorithm:{0}.", signingAlgorithm));
            }

            IJwsSigner signer = signers[signingAlgorithm];

            var jwtHeader = new JsonObject
            {
                { "typ", JsonValue.CreateStringValue("JWT") },
                { "alg", JsonValue.CreateStringValue(signingAlgorithm) }
            };

            var header  = Part.New(jwtHeader.Stringify());
            var content = Part.New(payload);

            var securedInput = Encoding.UTF8.GetBytes(Compact.Serialize(header, content));

            var signature = new Part(signer.Sign(securedInput, key)); //TODO: subject to change signer.Sign() to return Part

            return(Compact.Serialize(header, content, signature));
        }
示例#2
0
        public IEnumerable <KeyValuePair <string, object> > DescribeTraits(IJwsSigner ext)
        {
            var rs256 = (Rs256Signer)ext;

            return(new Dictionary <string, object>
            {
                [nameof(Rs256Signer.Algorithm)] = rs256.Algorithm,
                [nameof(Rs256Signer.SignerParams.RsaTypeName)] = rs256.Params.RsaTypeName,
                [nameof(Rs256Signer.ActualRsaTypeName)] = rs256.ActualRsaTypeName,
                [nameof(Rs256Signer.SignerParams.KeyLength)] = rs256.Params.KeyLength,
            });
        }
示例#3
0
        public static string Encode(string payload, string signingAlgorithm, object key)
        {
            Ensure.IsNotEmpty(payload, "JosePCL.Jwt.Encode(): payload expected to be not empty, whitespace or null.");

            if (!signers.ContainsKey(signingAlgorithm))
            {
                throw new Exception(string.Format("JosePCL.Jwt.Encode(): unknown or unsupported signing algorithm:{0}.", signingAlgorithm));
            }

            IJwsSigner signer = signers[signingAlgorithm];

            var jwtHeader = new Dictionary <string, string>
            {
                { "typ", "JWT" },
                { "alg", signingAlgorithm }
            };

            var header       = Part.New(JsonConvert.SerializeObject(jwtHeader));
            var content      = Part.New(payload);
            var securedInput = Encoding.UTF8.GetBytes(Compact.Serialize(header, content));
            var signature    = new Part(signer.Sign(securedInput, key));

            return(Compact.Serialize(header, content, signature));
        }
示例#4
0
 public static void RegisterJws(IJwsSigner signer)
 {
     signers[signer.Name] = signer;
 }