Exemple #1
0
 public void TestInit()
 {
     context_   = GlobalContext.BFVContext;
     keyGen_    = new KeyGenerator(context_);
     secretKey_ = keyGen_.SecretKey;
     keyGen_.CreatePublicKey(out publicKey_);
 }
Exemple #2
0
        public void KeyCopyTest()
        {
            {
                SEALContext context = GlobalContext.BFVContext;
                PublicKey   pk;
                SecretKey   sk = null;

                using (KeyGenerator keygen = new KeyGenerator(context))
                {
                    keygen.CreatePublicKey(out pk);
                    sk = keygen.SecretKey;
                }

                ParmsId parmsIdPK = pk.ParmsId;
                ParmsId parmsIdSK = sk.ParmsId;
                Assert.AreEqual(parmsIdPK, parmsIdSK);
                Assert.AreEqual(parmsIdPK, context.KeyParmsId);
            }
            {
                SEALContext context = GlobalContext.BGVContext;
                PublicKey   pk;
                SecretKey   sk = null;

                using (KeyGenerator keygen = new KeyGenerator(context))
                {
                    keygen.CreatePublicKey(out pk);
                    sk = keygen.SecretKey;
                }

                ParmsId parmsIdPK = pk.ParmsId;
                ParmsId parmsIdSK = sk.ParmsId;
                Assert.AreEqual(parmsIdPK, parmsIdSK);
                Assert.AreEqual(parmsIdPK, context.KeyParmsId);
            }
        }
        public void Create2Test()
        {
            SEALContext  context = GlobalContext.BFVContext;
            KeyGenerator keygen1 = new KeyGenerator(context);

            keygen1.CreatePublicKey(out PublicKey publicKey);

            Encryptor encryptor1 = new Encryptor(context, publicKey);
            Decryptor decryptor1 = new Decryptor(context, keygen1.SecretKey);

            Ciphertext cipher = new Ciphertext();
            Plaintext  plain  = new Plaintext("2x^1 + 5");
            Plaintext  plain2 = new Plaintext();

            encryptor1.Encrypt(plain, cipher);
            decryptor1.Decrypt(cipher, plain2);

            Assert.AreNotSame(plain, plain2);
            Assert.AreEqual(plain, plain2);

            KeyGenerator keygen2 = new KeyGenerator(context, keygen1.SecretKey);

            keygen2.CreatePublicKey(out publicKey);
            Encryptor encryptor2 = new Encryptor(context, publicKey);
            Decryptor decryptor2 = new Decryptor(context, keygen2.SecretKey);

            Plaintext plain3 = new Plaintext();

            decryptor2.Decrypt(cipher, plain3);

            Assert.AreNotSame(plain, plain3);
            Assert.AreEqual(plain, plain3);
        }