Files
concrete/tools/parameter-curves/Makefile

70 lines
2.8 KiB
Makefile

LATTICE_ESTIMATOR_DIR=$(PWD)/../../third_party/lattice-estimator
SECURITY_LEVELS=80 112 128 192
SAGE_OBJECT_DIR=sage-object
SAGE_SECURITY_CURVES=$(SECURITY_LEVELS:%=$(SAGE_OBJECT_DIR)/%.sobj)
SAGE_VERIFIED_CURVES=$(SAGE_OBJECT_DIR)/verified_curves.sobj
CURVES_JSON_PATH=json/curves.json
CURVES_CPP_GEN_H=concrete-security-curves-cpp/include/concrete/curves.gen.h
CURVES_RUST_GEN_TXT=concrete-security-curves-rust/src/gaussian/curves_gen.rs
generate-code: generate-cpp generate-rust
# Generate CPP ########################
$(CURVES_CPP_GEN_H): concrete-security-curves-cpp/gen_header.py $(CURVES_JSON_PATH)
cat $(CURVES_JSON_PATH) | python3 concrete-security-curves-cpp/gen_header.py > $(CURVES_CPP_GEN_H)
generate-cpp: $(CURVES_CPP_GEN_H)
# Generate RUST ########################
$(CURVES_RUST_GEN_TXT): concrete-security-curves-rust/gen_table.py $(CURVES_JSON_PATH)
cat $(CURVES_JSON_PATH) | python3 concrete-security-curves-rust/gen_table.py > $(CURVES_RUST_GEN_TXT)
generate-rust: $(CURVES_RUST_GEN_TXT)
# Compare curves #######################
$(SAGE_OBJECT_DIR)/outdated_curves.timestamp: ./lattice-scripts/compare_curves_and_estimator.py
PYTHONPATH=$(LATTICE_ESTIMATOR_DIR) python3 ./lattice-scripts/compare_curves_and_estimator.py \
--curves-dir $(SAGE_OBJECT_DIR) --security-levels $(SECURITY_LEVELS) --log-q 64 \
&& touch $(SAGE_OBJECT_DIR)/outdated_curves.timestamp
compare-curves: $(SAGE_OBJECT_DIR)/outdated_curves.timestamp
# Compare curves custom q #######################
# run via e.g:
# logq=128 make compare-curves-custom-q
# for q = 2**(128)
$(SAGE_OBJECT_DIR)/outdated_curves.timestamp: ./lattice-scripts/compare_curves_and_estimator.py
PYTHONPATH=$(LATTICE_ESTIMATOR_DIR) python3 ./lattice-scripts/compare_curves_and_estimator.py \
--curves-dir $(SAGE_OBJECT_DIR) --security-levels $(SECURITY_LEVELS) --log-q $(logq) \
&& touch $(SAGE_OBJECT_DIR)/outdated_curves.timestamp
compare-curves-custom-q: $(SAGE_OBJECT_DIR)/outdated_curves.timestamp
# Generate curves ######################
$(SAGE_OBJECT_DIR)/%.sobj: $(SAGE_OBJECT_DIR)/outdated_curves.timestamp ./lattice-scripts/generate_data.sh ./lattice-scripts/generate_data.py
PYTHONPATH=$(LATTICE_ESTIMATOR_DIR) ./lattice-scripts/generate_data.sh \
$* --output $(SAGE_OBJECT_DIR) --old-models $(SAGE_VERIFIED_CURVES)
generate-curves: $(SAGE_SECURITY_CURVES)
# Verify curves #######################
$(CURVES_JSON_PATH) $(SAGE_VERIFIED_CURVES): ./lattice-scripts/verify_curves.py #$(SAGE_SECURITY_CURVES)
python3 ./lattice-scripts/verify_curves.py \
--curves-dir $(SAGE_OBJECT_DIR) --verified-curves-path $(SAGE_VERIFIED_CURVES) \
--security-levels $(SECURITY_LEVELS) --log-q 64 > $(CURVES_JSON_PATH)
verify-curves: $(CURVES_JSON_PATH)
.PHONY: generate-cpp \
generate-rust \
generate-code \
compare-curves \
generate-curves \
verify-curves