Skip to content

Commit

Permalink
Merge pull request #1493 from mit-plv/saturated-solinas
Browse files Browse the repository at this point in the history
 Saturated Solinas Reduction, rebased and fixed
  • Loading branch information
JasonGross authored Nov 12, 2022
2 parents 5ff9a7f + 623676f commit fb965d1
Show file tree
Hide file tree
Showing 29 changed files with 11,991 additions and 5 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -159,19 +159,23 @@ third_party/openssl-nistz256/measure
third_party/curve25519-donna-c64/measure
src/ExtractionHaskell/saturated_solinas
src/ExtractionHaskell/unsaturated_solinas
src/ExtractionHaskell/solinas_reduction
src/ExtractionHaskell/word_by_word_montgomery
src/ExtractionHaskell/base_conversion
src/ExtractionHaskell/*.hs
src/ExtractionOCaml/saturated_solinas
src/ExtractionOCaml/unsaturated_solinas
src/ExtractionOCaml/solinas_reduction
src/ExtractionOCaml/word_by_word_montgomery
src/ExtractionOCaml/base_conversion
src/ExtractionOCaml/bedrock2_saturated_solinas
src/ExtractionOCaml/bedrock2_unsaturated_solinas
src/ExtractionOCaml/bedrock2_solinas_reduction
src/ExtractionOCaml/bedrock2_word_by_word_montgomery
src/ExtractionOCaml/bedrock2_base_conversion
src/ExtractionOCaml/with_bedrock2_saturated_solinas
src/ExtractionOCaml/with_bedrock2_unsaturated_solinas
src/ExtractionOCaml/with_bedrock2_solinas_reduction
src/ExtractionOCaml/with_bedrock2_word_by_word_montgomery
src/ExtractionOCaml/with_bedrock2_base_conversion
src/ExtractionOCaml/perf_unsaturated_solinas
Expand Down
2 changes: 1 addition & 1 deletion Makefile.config
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ else
if_SKIP_BEDROCK2 = $(1)
endif

BASE_STANDALONE := unsaturated_solinas saturated_solinas word_by_word_montgomery base_conversion
BASE_STANDALONE := unsaturated_solinas saturated_solinas word_by_word_montgomery base_conversion solinas_reduction
BEDROCK2_STANDALONE := $(addprefix bedrock2_,$(BASE_STANDALONE)) $(addprefix with_bedrock2_,$(BASE_STANDALONE))
STANDALONE := $(BASE_STANDALONE) $(call if_SKIP_BEDROCK2,,$(BEDROCK2_STANDALONE) $(WITH_BEDROCK2_STANDALONE))
PERF_STANDALONE := perf_unsaturated_solinas perf_word_by_word_montgomery
Expand Down
7 changes: 6 additions & 1 deletion Makefile.examples
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,10 @@ endef
UNSATURATED_SOLINAS_FUNCTIONS := carry_mul carry_square carry add sub opp selectznz to_bytes from_bytes relax
FUNCTIONS_FOR_25519 := $(UNSATURATED_SOLINAS_FUNCTIONS) carry_scmul121666
WORD_BY_WORD_MONTGOMERY_FUNCTIONS := mul square add sub opp from_montgomery to_montgomery nonzero selectznz to_bytes from_bytes one msat divstep divstep_precomp
SOLINAS_REDUCTION_FUNCTIONS := mul square
UNSATURATED_SOLINAS := src/ExtractionOCaml/unsaturated_solinas
WORD_BY_WORD_MONTGOMERY := src/ExtractionOCaml/word_by_word_montgomery
SOLINAS_REDUCTION := src/ExtractionOCaml/solinas_reduction

UNSATURATED_SOLINAS_BASE_FILES := # p224_solinas_64
WORD_BY_WORD_MONTGOMERY_BASE_FILES := # p434_32
Expand Down Expand Up @@ -118,6 +120,8 @@ $(foreach bw,64 32,$(eval $(call add_curve_keys,p256_scalar_$(bw),WORD_BY_WORD_M
$(foreach bw,64 32,$(eval $(call add_curve_keys,p384_scalar_$(bw),WORD_BY_WORD_MONTGOMERY,'p384_scalar',$(bw),'2^384 - 1388124618062372383947042015309946732620727252194336364173',$(WORD_BY_WORD_MONTGOMERY_FUNCTIONS),WORD_BY_WORD_MONTGOMERY)))
$(foreach bw,64 32,$(eval $(call add_curve_keys,secp256k1_scalar_$(bw),WORD_BY_WORD_MONTGOMERY,'secp256k1_scalar',$(bw),'2^256 - 432420386565659656852420866394968145599',$(WORD_BY_WORD_MONTGOMERY_FUNCTIONS),WORD_BY_WORD_MONTGOMERY)))

$(foreach bw,64,$(eval $(call add_curve_keys,curve25519_solinas_$(bw),SOLINAS_REDUCTION,'curve25519_solinas',$(bw),'2^255 - 19',$(SOLINAS_REDUCTION_FUNCTIONS),SOLINAS_REDUCTION)))

# Files taking 30s or less
LITE_BASE_FILES := curve25519_64 poly1305_64 poly1305_32 p256_64 secp256k1_64 p384_64 p224_32 p434_64 p448_solinas_64 secp256k1_32 p256_32 p448_solinas_32 \
curve25519_scalar_64 p256_scalar_64 secp256k1_scalar_64 p384_scalar_64 secp256k1_scalar_32 p256_scalar_32
Expand All @@ -143,6 +147,7 @@ LITE_ZIG_FILES := $(patsubst %,$(ZIG_DIR)%.zig,$(LITE_BASE_FILES))

BEDROCK2_UNSATURATED_SOLINAS := src/ExtractionOCaml/bedrock2_unsaturated_solinas
BEDROCK2_WORD_BY_WORD_MONTGOMERY := src/ExtractionOCaml/bedrock2_word_by_word_montgomery
BEDROCK2_SOLINAS_REDUCTION := src/ExtractionOCaml/bedrock2_solinas_reduction

C_EXTRA_ARGS := --inline --static --use-value-barrier

Expand Down Expand Up @@ -359,7 +364,7 @@ test-amd64-files-status only-test-amd64-files-status test-amd64-files-lite-statu

.PHONY: test-amd64-files-status only-test-amd64-files-status test-amd64-files-lite-status only-test-amd64-files-lite-status

test-amd64-files test-amd64-files-lite: $(UNSATURATED_SOLINAS) $(WORD_BY_WORD_MONTGOMERY)
test-amd64-files test-amd64-files-lite: $(UNSATURATED_SOLINAS) $(WORD_BY_WORD_MONTGOMERY) $(SOLINAS_REDUCTION)

test-amd64-files: test-amd64-files-print-report test-amd64-files-status

Expand Down
2 changes: 1 addition & 1 deletion etc/ensure_stack_limit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

set -eu

recstacksize=32768
recstacksize=65536
if command -v ulimit >/dev/null 2>/dev/null; then
hardstacksize="$(ulimit -H -s || true)"
(
Expand Down
Loading

0 comments on commit fb965d1

Please sign in to comment.