コード例 #1
0
        public void TestFullHandshake()
        {
            for (var i = 0; i < 25; i++)
            {
                var serverCrypto = new HabboRSACrypto(CryptoConstants.Exponent, CryptoConstants.Modulus, CryptoConstants.PrivateExponent);
                var server       = new HabboDiffieHellman(serverCrypto, HabboConnectionType.Server);

                var clientCrypto = new HabboRSACrypto(CryptoConstants.Exponent, CryptoConstants.Modulus);
                var client       = new HabboDiffieHellman(clientCrypto, HabboConnectionType.Client);

                // Server sends prime and generator to the client.
                client.DoHandshake(server.GetSignedPrime(), server.GetSignedGenerator());

                Assert.Equal(client.DHPrime, server.DHPrime);
                Assert.Equal(client.DHGenerator, server.DHGenerator);

                // Client sends DH public key to the server.
                var clientPublic = client.GetPublicKey();
                var serverKey    = server.GetSharedKey(clientPublic);

                // Server sends DH public key to the client.
                var serverPublic = server.GetPublicKey();
                var clientKey    = client.GetSharedKey(serverPublic);

                Assert.Equal(serverKey.ToArray(), clientKey.ToArray());
            }
        }
コード例 #2
0
 public HabboEncryption(string e, string n)
 {
     Crypto = new HabboRSACrypto(e, n);
     Diffie = new HabboDiffieHellman(Crypto, HabboConnectionType.Client);
 }
コード例 #3
0
 public HabboEncryption(string e, string n, string d)
 {
     Crypto = new HabboRSACrypto(e, n, d);
     Diffie = new HabboDiffieHellman(Crypto, HabboConnectionType.Server);
 }