예제 #1
0
        public void Create2Test()
        {
            SEALContext  context    = GlobalContext.BFVContext;
            KeyGenerator keygen1    = new KeyGenerator(context);
            Encryptor    encryptor1 = new Encryptor(context, keygen1.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);
            Encryptor    encryptor2 = new Encryptor(context, keygen2.PublicKey);
            Decryptor    decryptor2 = new Decryptor(context, keygen2.SecretKey);

            Plaintext plain3 = new Plaintext();

            decryptor2.Decrypt(cipher, plain3);

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

            KeyGenerator keygen3    = new KeyGenerator(context, keygen1.SecretKey, keygen1.PublicKey);
            Encryptor    encryptor3 = new Encryptor(context, keygen3.PublicKey);
            Decryptor    decryptor3 = new Decryptor(context, keygen3.SecretKey);

            Plaintext plain4 = new Plaintext();

            decryptor3.Decrypt(cipher, plain4);

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

            Ciphertext cipher2 = new Ciphertext();

            plain2.Release();

            encryptor3.Encrypt(plain, cipher2);
            decryptor2.Decrypt(cipher2, plain2);

            Assert.AreNotSame(plain, plain2);
            Assert.AreEqual(plain, plain2);
        }
예제 #2
0
        public void ReleaseTest()
        {
            Plaintext plain = new Plaintext();

            plain.Reserve(10000);

            plain.Set("3x^2 + 4x^1 + 5");

            Assert.AreEqual(10000ul, plain.Capacity);
            Assert.AreEqual(3ul, plain.CoeffCount);

            plain.Release();

            Assert.AreEqual(0ul, plain.Capacity);
            Assert.AreEqual(0ul, plain.CoeffCount);
        }