// This method is responsible for generating public and private key if keys are not present in consul public static async System.Threading.Tasks.Task KeyGeneratorAsync(ConsulClient client) { Chilkat.Global glob = new Chilkat.Global(); glob.UnlockBundle("Anything for 30-day trial"); Chilkat.Rsa rsaKey = new Chilkat.Rsa(); rsaKey.GenerateKey(1024); var rsaPrivKey = rsaKey.ExportPrivateKeyObj(); var rsaPrivKeyAsString = rsaKey.ExportPrivateKey(); var rsaPublicKey = rsaKey.ExportPublicKeyObj(); var rsaPublicKeyAsString = rsaKey.ExportPublicKey(); var putPair = new KVPair("myPublicKey") { Value = Encoding.UTF8.GetBytes(rsaPublicKeyAsString) }; var putAttempt = await client.KV.Put(putPair); var putPair1 = new KVPair("myPrivateKey") { Value = Encoding.UTF8.GetBytes(rsaPrivKeyAsString) }; var putAttempt1 = await client.KV.Put(putPair1); }
static async System.Threading.Tasks.Task Main(string[] args) { Chilkat.Global glob = new Chilkat.Global(); glob.UnlockBundle("Anything for 30-day trial"); Chilkat.Rsa rsaKey = new Chilkat.Rsa(); rsaKey.GenerateKey(1024); var rsaPrivKey = rsaKey.ExportPrivateKeyObj(); var rsaPublicKey = rsaKey.ExportPublicKeyObj(); var rsaPublicKeyAsString = rsaKey.ExportPublicKey(); Chilkat.JsonObject jwtHeader = new Chilkat.JsonObject(); jwtHeader.AppendString("alg", "RS256"); jwtHeader.AppendString("typ", "JWT"); Chilkat.JsonObject claims = new Chilkat.JsonObject(); claims.AppendString("Email", "*****@*****.**"); claims.AppendString("Test", "test1"); Chilkat.Jwt jwt = new Chilkat.Jwt(); string token = jwt.CreateJwtPk(jwtHeader.Emit(), claims.Emit(), rsaPrivKey); Console.WriteLine("This is the token generated"); Console.WriteLine(token); // Verifying Token using Public Key Console.WriteLine(jwt.VerifyJwtPk(token, rsaPublicKey)); Console.WriteLine(jwt.GetPayload(token)); // Importing public key Chilkat.Rsa rsaExportedPublicKey = new Chilkat.Rsa(); Console.WriteLine(rsaExportedPublicKey.ImportPublicKey(rsaPublicKeyAsString)); Console.WriteLine(jwt.VerifyJwtPk(token, rsaExportedPublicKey.ExportPublicKeyObj())); // Store the value in Consul KV using (var client = new ConsulClient()) { var putPair = new KVPair("secretkey") { Value = Encoding.UTF8.GetBytes(rsaPublicKeyAsString) }; var putAttempt = await client.KV.Put(putPair); if (putAttempt.Response) { var getPair = await client.KV.Get("secretkey"); if (getPair.Response != null) { Console.WriteLine("Getting Back the Stored String"); Console.WriteLine(Encoding.UTF8.GetString(getPair.Response.Value, 0, getPair.Response.Value.Length)); } } } }
public static void Createuser(string user) { Connectimimedb.InsertStudent(user); Chilkat.Global glob = new Chilkat.Global(); Chilkat.Rsa rsa = new Chilkat.Rsa(); glob.UnlockBundle("hELLOW"); // Generate a 1024-bit key. Chilkat RSA supports // key sizes ranging from 512 bits to 4096 bits. bool success = rsa.GenerateKey(1024); if (success != true) { Console.WriteLine(rsa.LastErrorText); return; } // Keys are exported in XML format: string publicKeyXml = rsa.ExportPublicKey(); string privateKeyXml = rsa.ExportPrivateKey(); // Save the private key in PEM format: Chilkat.PrivateKey privKey = new Chilkat.PrivateKey(); success = privKey.LoadXml(privateKeyXml); success = privKey.SaveRsaPemFile("C:\\Users\\Lenovo\\Desktop\\Detyra1_DS-Gr-6-master\\ds\\bin\\Debug\\netcoreapp3.0\\keys\\" + user + ".pem"); Console.WriteLine("Eshte krijuar qelesi privat " + "keys\\" + user + ".pem"); // Save the public key in PEM format: Chilkat.PublicKey pubKey = new Chilkat.PublicKey(); success = pubKey.LoadXml(publicKeyXml); success = pubKey.SaveOpenSslPemFile("C:\\Users\\Lenovo\\Desktop\\Detyra1_DS-Gr-6-master\\ds\\bin\\Debug\\netcoreapp3.0\\keys\\" + user + ".pub.pem"); Console.WriteLine("Eshte krijuar qelesi public " + "keys\\" + user + ".pub.pem"); }