public void BGVExceptionsTest() { EncryptionParameterQualifiers epq1 = GlobalContext.BGVContext.FirstContextData.Qualifiers; EncryptionParameterQualifiers epq2 = null; Utilities.AssertThrows <ArgumentNullException>(() => epq2 = new EncryptionParameterQualifiers(null)); }
public void ExceptionsTest() { EncryptionParameterQualifiers epq1 = GlobalContext.BFVContext.FirstContextData.Qualifiers; EncryptionParameterQualifiers epq2 = null; Assert.ThrowsException <ArgumentNullException>(() => epq2 = new EncryptionParameterQualifiers(null)); }
public void SEALContextParamsTest() { List <SmallModulus> coeffModulus = new List <SmallModulus> { DefaultParams.SmallMods30Bit(0), DefaultParams.SmallMods30Bit(1), DefaultParams.SmallMods30Bit(2) }; EncryptionParameters parms = new EncryptionParameters(SchemeType.BFV) { PolyModulusDegree = 128, PlainModulus = new SmallModulus(1 << 6), CoeffModulus = coeffModulus }; SEALContext context = SEALContext.Create(parms); SEALContext.ContextData data = context.FirstContextData; Assert.IsNotNull(data); EncryptionParameters parms2 = data.Parms; Assert.AreEqual(parms.PolyModulusDegree, parms2.PolyModulusDegree); Assert.AreEqual(parms.NoiseStandardDeviation, parms2.NoiseStandardDeviation); EncryptionParameterQualifiers qualifiers = data.Qualifiers; Assert.IsNotNull(qualifiers); Assert.IsTrue(qualifiers.ParametersSet); Assert.IsFalse(qualifiers.UsingBatching); Assert.IsTrue(qualifiers.UsingFastPlainLift); Assert.IsTrue(qualifiers.UsingFFT); Assert.IsTrue(qualifiers.UsingNTT); Assert.IsTrue(qualifiers.UsingHEStdSecurity); ulong[] cdpm = data.CoeffDivPlainModulus; Assert.AreEqual(3, cdpm.Length); Assert.AreEqual(32ul, data.PlainUpperHalfThreshold); Assert.AreEqual(3, data.PlainUpperHalfIncrement.Length); Assert.IsNull(data.UpperHalfThreshold); Assert.IsNotNull(data.UpperHalfIncrement); Assert.AreEqual(3, data.UpperHalfIncrement.Length); Assert.AreEqual(2ul, data.ChainIndex); SEALContext.ContextData data2 = data.NextContextData; Assert.IsNotNull(data2); Assert.AreEqual(1ul, data2.ChainIndex); SEALContext.ContextData data3 = data2.NextContextData; Assert.IsNotNull(data3); Assert.AreEqual(0ul, data3.ChainIndex); Assert.IsNull(data3.NextContextData); }
public void SEALContextParamsTest() { EncryptionParameters parms = new EncryptionParameters(SchemeType.BFV) { PolyModulusDegree = 128, PlainModulus = new SmallModulus(1 << 6), CoeffModulus = CoeffModulus.Create(128, new int[] { 30, 30, 30 }) }; SEALContext context = new SEALContext(parms, expandModChain: true, secLevel: SecLevelType.None); SEALContext.ContextData data = context.KeyContextData; Assert.IsNotNull(data); EncryptionParameters parms2 = data.Parms; Assert.AreEqual(parms.PolyModulusDegree, parms2.PolyModulusDegree); EncryptionParameterQualifiers qualifiers = data.Qualifiers; Assert.IsNotNull(qualifiers); Assert.IsTrue(qualifiers.ParametersSet); Assert.IsFalse(qualifiers.UsingBatching); Assert.IsTrue(qualifiers.UsingFastPlainLift); Assert.IsTrue(qualifiers.UsingFFT); Assert.IsTrue(qualifiers.UsingNTT); Assert.AreEqual(SecLevelType.None, qualifiers.SecLevel); Assert.IsFalse(qualifiers.UsingDescendingModulusChain); Assert.IsTrue(context.UsingKeyswitching); ulong[] cdpm = data.CoeffDivPlainModulus; Assert.AreEqual(3, cdpm.Length); Assert.AreEqual(32ul, data.PlainUpperHalfThreshold); Assert.AreEqual(3, data.PlainUpperHalfIncrement.Length); Assert.IsNull(data.UpperHalfThreshold); Assert.IsNotNull(data.UpperHalfIncrement); Assert.AreEqual(3, data.UpperHalfIncrement.Length); Assert.AreEqual(2ul, data.ChainIndex); Assert.IsNull(data.PrevContextData); SEALContext.ContextData data2 = data.NextContextData; Assert.IsNotNull(data2); Assert.AreEqual(1ul, data2.ChainIndex); Assert.AreEqual(2ul, data2.PrevContextData.ChainIndex); SEALContext.ContextData data3 = data2.NextContextData; Assert.IsNotNull(data3); Assert.AreEqual(0ul, data3.ChainIndex); Assert.AreEqual(1ul, data3.PrevContextData.ChainIndex); Assert.IsNull(data3.NextContextData); }
public void PropertiesTest() { SEALContext context = GlobalContext.BFVContext; Assert.IsTrue(context.FirstContextData.Qualifiers.ParametersSet); Assert.IsTrue(context.FirstContextData.Qualifiers.UsingBatching); Assert.IsTrue(context.FirstContextData.Qualifiers.UsingFastPlainLift); Assert.IsTrue(context.FirstContextData.Qualifiers.UsingFFT); Assert.AreEqual(SecLevelType.TC128, context.FirstContextData.Qualifiers.SecLevel); Assert.IsFalse(context.FirstContextData.Qualifiers.UsingDescendingModulusChain); Assert.IsTrue(context.FirstContextData.Qualifiers.UsingNTT); Assert.IsTrue(context.UsingKeyswitching); EncryptionParameters parms = new EncryptionParameters(SchemeType.CKKS) { PolyModulusDegree = 4096, CoeffModulus = CoeffModulus.BFVDefault(4096) }; SEALContext context2 = new SEALContext(parms); Assert.IsTrue(context2.FirstContextData.Qualifiers.ParametersSet); Assert.IsTrue(context2.FirstContextData.Qualifiers.UsingBatching); Assert.IsFalse(context2.FirstContextData.Qualifiers.UsingFastPlainLift); Assert.IsTrue(context2.FirstContextData.Qualifiers.UsingFFT); Assert.AreEqual(SecLevelType.TC128, context2.FirstContextData.Qualifiers.SecLevel); Assert.IsFalse(context.FirstContextData.Qualifiers.UsingDescendingModulusChain); Assert.IsTrue(context2.FirstContextData.Qualifiers.UsingNTT); Assert.IsTrue(context.UsingKeyswitching); EncryptionParameterQualifiers qualifiers = new EncryptionParameterQualifiers(context2.FirstContextData.Qualifiers); Assert.IsNotNull(qualifiers); Assert.IsTrue(qualifiers.ParametersSet); Assert.IsTrue(qualifiers.UsingBatching); Assert.IsFalse(qualifiers.UsingFastPlainLift); Assert.IsTrue(qualifiers.UsingFFT); Assert.AreEqual(SecLevelType.TC128, qualifiers.SecLevel); Assert.IsTrue(qualifiers.UsingDescendingModulusChain); Assert.IsTrue(qualifiers.UsingNTT); SEALContext context3 = GlobalContext.BGVContext; Assert.IsTrue(context.FirstContextData.Qualifiers.ParametersSet); Assert.IsTrue(context.FirstContextData.Qualifiers.UsingBatching); Assert.IsTrue(context.FirstContextData.Qualifiers.UsingFastPlainLift); Assert.IsTrue(context.FirstContextData.Qualifiers.UsingFFT); Assert.AreEqual(SecLevelType.TC128, context.FirstContextData.Qualifiers.SecLevel); Assert.IsFalse(context.FirstContextData.Qualifiers.UsingDescendingModulusChain); Assert.IsTrue(context.FirstContextData.Qualifiers.UsingNTT); Assert.IsTrue(context.UsingKeyswitching); }
public void BGVParameterErrorTest() { SEALContext context = GlobalContext.BGVContext; EncryptionParameterQualifiers qualifiers = context.FirstContextData.Qualifiers; Assert.AreEqual(qualifiers.ParametersErrorName(), "success"); Assert.AreEqual(qualifiers.ParametersErrorMessage(), "valid"); EncryptionParameters encParam = new EncryptionParameters(SchemeType.BGV) { PolyModulusDegree = 127, PlainModulus = new Modulus(1 << 6), CoeffModulus = CoeffModulus.Create(128, new int[] { 30, 30, 30 }) }; context = new SEALContext(encParam, expandModChain: true, secLevel: SecLevelType.None); qualifiers = context.FirstContextData.Qualifiers; Assert.AreEqual(qualifiers.ParametersErrorName(), "invalid_poly_modulus_degree_non_power_of_two"); Assert.AreEqual(qualifiers.ParametersErrorMessage(), "poly_modulus_degree is not a power of two"); }
public void PropertiesTest() { SEALContext context = GlobalContext.Context; Assert.IsTrue(context.FirstContextData.Qualifiers.ParametersSet); Assert.IsFalse(context.FirstContextData.Qualifiers.UsingBatching); Assert.IsTrue(context.FirstContextData.Qualifiers.UsingFastPlainLift); Assert.IsTrue(context.FirstContextData.Qualifiers.UsingFFT); Assert.IsTrue(context.FirstContextData.Qualifiers.UsingHEStdSecurity); Assert.IsTrue(context.FirstContextData.Qualifiers.UsingNTT); EncryptionParameters parms = new EncryptionParameters(SchemeType.CKKS) { PolyModulusDegree = 4096, CoeffModulus = DefaultParams.CoeffModulus128(4096) }; SEALContext context2 = SEALContext.Create(parms); Assert.IsTrue(context2.FirstContextData.Qualifiers.ParametersSet); Assert.IsTrue(context2.FirstContextData.Qualifiers.UsingBatching); Assert.IsFalse(context2.FirstContextData.Qualifiers.UsingFastPlainLift); Assert.IsTrue(context2.FirstContextData.Qualifiers.UsingFFT); Assert.IsTrue(context2.FirstContextData.Qualifiers.UsingHEStdSecurity); Assert.IsTrue(context2.FirstContextData.Qualifiers.UsingNTT); EncryptionParameterQualifiers qualifiers = new EncryptionParameterQualifiers(context2.FirstContextData.Qualifiers); Assert.IsNotNull(qualifiers); Assert.IsTrue(qualifiers.ParametersSet); Assert.IsTrue(qualifiers.UsingBatching); Assert.IsFalse(qualifiers.UsingFastPlainLift); Assert.IsTrue(qualifiers.UsingFFT); Assert.IsTrue(qualifiers.UsingHEStdSecurity); Assert.IsTrue(qualifiers.UsingNTT); }