From c113551dbb8e3665e24aa0d7cfcf099ea58c6fa4 Mon Sep 17 00:00:00 2001 From: Ben Date: Wed, 11 Aug 2021 11:26:03 +0100 Subject: [PATCH] add ct modulus --- cpp/gen_cpp.py | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/cpp/gen_cpp.py b/cpp/gen_cpp.py index e4826d6e9..eb8829914 100644 --- a/cpp/gen_cpp.py +++ b/cpp/gen_cpp.py @@ -3,6 +3,8 @@ from v0curves import curves # define the number of security levels in curves num_sec_levels = len(curves) +polynomial_i + import_string = f""" @@ -19,12 +21,15 @@ typedef struct v0curves { int rlweDimension; int polynomialSize; + int ciphertextModulus; v0curves(int rlweDimension, - int polynomialSize_) + int polynomialSize_, + int ciphertextModulus) { rlweDimension = rlweDimension_; polynomialSize = polynomialSize_; + ciphertextModulus = ciphertextModulus_; } } v0curves;""" @@ -35,19 +40,20 @@ v0curves parameters[num_sec_levels] = """ get_string = """ -extern "C" int security_estimator(int rlweDimension, int polynomialSize) +extern "C" int security_estimator(int rlweDimension, int polynomialSize, int ciphertextModulus) { }""" -def constructor(rlweDimension, polynomialSize): - return f"v0curves({rlweDimension}, {polynomialSize})," +def constructor(rlweDimension, polynomialSize, ciphertextModulus): + return f"v0curves({rlweDimension}, {polynomialSize}, {ciphertextModulus})," def fill_parameters( # Return a string with parameters for the c++ array initialization polynomial_size_results, rlwe_dimension_results, + ciphertextModulus, ): parameters = "{}{{".format(table_string) for security_level in range(num_sec_levels): @@ -58,10 +64,10 @@ def fill_parameters( line += constructor( int(polynomial_size_results[security_level]), int(rlwe_dimension_results[security_level]), - + int(ciphertext_modulus_results[security_level]), ) except ValueError: - line += constructor(0, 0) + line += constructor(0, 0,0) line = line[:-1] line += "}," parameters += line @@ -73,6 +79,7 @@ def fill_parameters( def codegen( polynomial_size_results, rlwe_dimension_results, + ciphertext_modulus_results, ): # Generate the C++ file as a string code = f""" @@ -82,6 +89,7 @@ def codegen( {fill_parameters( polynomial_size_results, rlwe_dimension_results, + ciphertext_modulus_results )} {get_string} """ @@ -91,11 +99,13 @@ def codegen( def write_codegen( polynomial_size_results, rlwe_dimension_results, + ciphertext_modulus_results ): # Create the c++ source code = codegen( polynomial_size_results, rlwe_dimension_results, + ciphertext_modulus_results ) # TODO: insert correct filename here with a path with open(f"test.cpp", "w") as f: @@ -107,12 +117,13 @@ def main_codegen(): # finding parameters for V0 ( polynomial_size_results, - rlwe_dimension_results + rlwe_dimension_results, + ciphertext_modulus_resultss ) = main_optimization_v0() # code generation write_codegen( polynomial_size_results, - rlwe_dimension_results + rlwe_dimension_results, + ciphertext_modulus_results ) -