예제 #1
0
        public static void TestProtocol()
        {
            var rsa       = new RSACryptography();
            var validator = new Validator(rsa);

            validator.CreateKeys();

            var agency = new Agency(rsa, validator.PublicKey.GetChangeableCopy(), 10);

            var elector = new Elector(rsa, validator.PublicKey.GetChangeableCopy());

            elector.CreateNewKeys();

            var blinded       = elector.CreateBlindedMessage(0);
            var blindedSigned = elector.CreateBlindedSignedMessage(0);



            if (validator.VerifyBulletin(blindedSigned, blinded, elector.PublicSignKey.GetChangeableCopy()))
            {
                var signedByValidator       = validator.SignBulletin(blinded);
                var signedValidatorUnBlind  = elector.RemoveBlindEncryption(signedByValidator);
                var encryptedBulletin       = elector.GetEncryptedBulletin(0);
                var signedEncryptedBulletin = elector.GetSignedEncryptedBulletin(0);

                agency.AddBulletin(signedValidatorUnBlind, encryptedBulletin, signedEncryptedBulletin, elector.PublicSignKey.GetChangeableCopy(), 1);
            }
        }