예제 #1
0
        public void TestRsaSignatures()
        {
            var keys = RsaSignatures.GenerateKeys();

            Assert.AreNotEqual(keys.PrivKey, keys.PubKey);

            Assert.IsTrue(keys.PubKey.Length < keys.PrivKey.Length);

            var dataToSign = "some super secret data we need to sign";

            var signature = RsaSignatures.Sign(dataToSign, keys.PrivKey);


            var resultOk = RsaSignatures.VerifySignature(dataToSign, signature, keys.PubKey);

            Assert.AreEqual(true, resultOk);


            var resultFail = RsaSignatures.VerifySignature(dataToSign + "modify", signature, keys.PubKey);

            Assert.AreEqual(false, resultFail);


            var dataToEncrypt = "some super secret data we need to encrypt";

            var encrypted = RsaSignatures.Encrypt(dataToEncrypt, keys.PubKey);

            Assert.AreNotEqual(encrypted, dataToEncrypt);

            var decrypted = RsaSignatures.Decrypt(encrypted, keys.PrivKey);

            Assert.AreEqual(decrypted, dataToEncrypt);
        }
예제 #2
0
        private async Task Process(GenerateKeysRequest args)
        {
            var keys = RsaSignatures.GenerateKeys();

            SendCommand(new GenerateKeysDone()
            {
                PrivKey = keys.PrivKey, PubKey = keys.PubKey
            });
        }
예제 #3
0
        public LoginChecker(ZkLobbyServer server, string geoipPath)
        {
            this.server = server;
            geoIP       = new DatabaseReader(Path.Combine(geoipPath, "GeoLite2-Country.mmdb"), FileAccessMode.Memory);

            var keys = RsaSignatures.GenerateKeys();

            ServerPubKey      = keys.PubKey;
            passwordDecryptor = new RsaSignatures(keys.PrivKey);
        }