コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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());
        }
コード例 #4
0
        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());
        }