static void Main(string[] args) { //JustRSA(); var agent1 = new AgentSafeFromNSA(); var agent2 = new AgentSafeFromNSA(); var secret = Utility.GetSecret(); var message = Utility.ConvertBytesToString64(secret); var rsaRes = agent1.EncryptAndSignMessageRSA(message, agent2.RSAParametersPublic); Console.WriteLine("RSA result:"); Console.WriteLine($"Encrypted data: {rsaRes.Encrypted}"); Console.WriteLine($"Signed: {rsaRes.Signed}"); var decrypted = agent2.DecryptAdnVerifySignedMessageRSA(rsaRes.Encrypted, rsaRes.Signed, agent1.RSAParametersPublic); Console.WriteLine($"Decryted: {decrypted}"); var returnMessage = "I'll send an SOS to the world"; var hmacHash = agent2.SignMessageHMAC(returnMessage, Utility.ConvertFromString64ToBytes(decrypted)); Console.WriteLine($"HMACH HASH {hmacHash}"); var verification = agent1.VerifyMessageHMAC(returnMessage, Utility.ConvertFromString64ToBytes(hmacHash), secret); Console.WriteLine($"Verified? {verification}"); Console.WriteLine($"Message {returnMessage}"); Console.ReadKey(); }
private static void JustRSA() { var agent1 = new AgentSafeFromNSA(); var agent2 = new AgentSafeFromNSA(); var message = "in the bottle"; var rsaRes = agent1.EncryptAndSignMessageRSA(message, agent2.RSAParametersPublic); Console.WriteLine("RSA result:"); Console.WriteLine($"Encrypted data: {rsaRes.Encrypted}"); Console.WriteLine($"Signed: {rsaRes.Signed}"); var decrypted = agent2.DecryptAdnVerifySignedMessageRSA(rsaRes.Encrypted, rsaRes.Signed, agent1.RSAParametersPublic); Console.WriteLine($"Decryted: {decrypted}"); }