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)); }
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, }); }
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)); }
public static void RegisterJws(IJwsSigner signer) { signers[signer.Name] = signer; }