public void Jwt_sign_with_rs256_private_key_verify_with_public_key() { var bytes = Convert.FromBase64String(File.ReadAllText("private.blob")); var csp = new RSACryptoServiceProvider(); csp.ImportCspBlob(bytes); var securityKey = new RsaSecurityKey(csp); var credentials = new SigningCredentials(securityKey, "RS256"); //SecurityAlgorithms.HmacSha256Signature var header = new JwtHeader(credentials); var payload = new JwtPayload { { "some ", "hello " }, { "scope", "http://dummy.com/" }, }; var secToken = new JwtSecurityToken(header, payload); var handler = new JwtSecurityTokenHandler(); var tokenString = handler.WriteToken(secToken); Console.WriteLine(tokenString); var sb = new StringBuilder(); PEMExporter.ExportKey(csp, new StringWriter(sb), false); Console.WriteLine(string.Empty); Console.WriteLine(sb.ToString()); var token = handler.ReadJwtToken(tokenString); }
public static RSAKeyPair GenerateKeys(int keySize = 2048) { RSAKeyPair keys = null; using (var rsa = RSA.Create()) { rsa.KeySize = keySize; var privateKey = PEMExporter.Export(rsa, true); var publicKey = PEMExporter.Export(rsa, false); keys = new RSAKeyPair(privateKey, publicKey); } return(keys); }
public void RSA_create_new_keypair_as_pem() { var csp = new RSACryptoServiceProvider(2048); var sb = new StringBuilder(); PEMExporter.ExportKey(csp, new StringWriter(sb), true); File.WriteAllText("private.key", sb.ToString()); sb.Clear(); PEMExporter.ExportKey(csp, new StringWriter(sb), false); File.WriteAllText("public.pem", sb.ToString()); }
private void RSABlobToPem(RSACryptoServiceProvider csp, string fileName, bool includePrivate) { var sb = new StringBuilder(); if (includePrivate) { PEMExporter.ExportKey(csp, new StringWriter(sb), true); File.WriteAllText(fileName, sb.ToString()); sb.Clear(); } PEMExporter.ExportKey(csp, new StringWriter(sb), false); File.WriteAllText(fileName, sb.ToString()); }