aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Hamburg <mike@shiftleft.org>2020-10-15 23:36:17 +0100
committerMike Hamburg <mike@shiftleft.org>2020-10-15 23:36:17 +0100
commita5c33de79b3845782444a379f2739b1e915e8a4b (patch)
tree6dfec236ec5ba9d61a966b440a713b50e12cc3b6
parenta couple more tests for EdDSA malleability (diff)
downloadgoldilocks-a5c33de79b3845782444a379f2739b1e915e8a4b.tar.xz
goldilocks-a5c33de79b3845782444a379f2739b1e915e8a4b.zip
update HISTORY to mention the malleability flaw
-rw-r--r--HISTORY.txt14
-rw-r--r--Makefile867
2 files changed, 539 insertions, 342 deletions
diff --git a/HISTORY.txt b/HISTORY.txt
index 169286b..0fc14b1 100644
--- a/HISTORY.txt
+++ b/HISTORY.txt
@@ -1,3 +1,17 @@
+October 10, 2020:
+ A paper by Konstantinos Chalkias, François Garillot, and Valeria
+ Nikolaenko, to be found at:
+
+ https://eprint.iacr.org/2020/1244.pdf
+
+ discusses malleability in EdDSA implementations. Their test
+ vectors reveal unintentional malleability in libdecaf's version
+ of EdDSA verify, in violation of RFC 8032. With this malleability,
+ an attacker could modify an existing valid signature to create a
+ new signature that is still valid, but only for the same message.
+
+ Releave v1.0.1, correcting this flaw.
+
July 12, 2018:
Release 1.0 with Johan Pascal's build scripts.
diff --git a/Makefile b/Makefile
index b19fe3e..4881750 100644
--- a/Makefile
+++ b/Makefile
@@ -1,345 +1,528 @@
-# Copyright (c) 2014-2017 Cryptography Research, Inc.
-# Released under the MIT License. See LICENSE.txt for license information.
-
-
-UNAME := $(shell uname)
-MACHINE := $(shell uname -m)
-
-# Subdirectories for objects etc.
-# Many of them are mapped to build/obj right now, but could be split later.
-# The non-build/obj directories are the public interface.
-BUILD_OBJ = build/obj
-BUILD_C = src/GENERATED/c
-BUILD_H = src/GENERATED/c
-BUILD_PY = build/obj
-BUILD_LIB = build/lib
-BUILD_INC = src/GENERATED/include
-BUILD_BIN = build/bin
-BUILD_IBIN = build/obj/bin
-
-DOXYGEN ?= doxygen
-
-ifeq ($(UNAME),Darwin)
-CC ?= clang
-CXX ?= clang++
-else
-CC ?= gcc
-CXX ?= g++
-endif
-LD = $(CC)
-LDXX = $(CXX)
-ASM ?= $(CC)
-
-PYTHON ?= python
-
-WARNFLAGS = -pedantic -Wall -Wextra -Werror -Wunreachable-code \
- -Wmissing-declarations -Wunused-function -Wno-overlength-strings $(EXWARN)
-
-INCFLAGS = -Isrc/include -I$(BUILD_INC) -I$(BUILD_H)
-PUB_INCFLAGS = -I$(BUILD_INC)
-LANGFLAGS = -std=c99 -fno-strict-aliasing
-LANGXXFLAGS = -fno-strict-aliasing
-GENFLAGS = -ffunction-sections -fdata-sections -fvisibility=hidden -fomit-frame-pointer -fPIC
-OFLAGS ?= -O2
-
-MACOSX_VERSION_MIN ?= 10.9
-ifeq ($(UNAME),Darwin)
-GENFLAGS += -mmacosx-version-min=$(MACOSX_VERSION_MIN)
-endif
-
-TODAY = $(shell date "+%Y-%m-%d")
-
-ARCHFLAGS ?= -march=native
-
-ifeq ($(CC),clang)
-WARNFLAGS_C += -Wgcc-compat
-endif
-
-ifeq ($(CXX),clang++)
-WARNFLAGS_CXX += -Wgcc-compat
-endif
-
-ARCHFLAGS += $(XARCHFLAGS)
-CFLAGS = $(LANGFLAGS) $(WARNFLAGS) $(WARNFLAGS_C) $(INCFLAGS) $(OFLAGS) $(ARCHFLAGS) $(GENFLAGS) $(XCFLAGS)
-PUB_CFLAGS = $(LANGFLAGS) $(WARNFLAGS) $(WARNFLAGS_C) $(PUB_INCFLAGS) $(OFLAGS) $(ARCHFLAGS) $(GENFLAGS) $(XCFLAGS)
-CXXFLAGS = $(LANGXXFLAGS) $(WARNFLAGS) $(WARNFLAGS_CXX) $(INCFLAGS) $(OFLAGS) $(ARCHFLAGS) $(GENFLAGS) $(XCXXFLAGS)
-LDFLAGS = $(XLDFLAGS)
-ASFLAGS = $(ARCHFLAGS) $(XASFLAGS)
-
-SAGE ?= sage
-SAGES= $(shell ls test/*.sage)
-BUILDPYS= $(SAGES:test/%.sage=$(BUILD_PY)/%.py)
-
-.PHONY: clean all test test_ct bench todo doc lib bat sage sagetest gen_code gen_code_static
-.PRECIOUS: $(BUILD_C)/*/%.c $(BUILD_H)/*/%.h $(BUILD_H)/%.h $(BUILD_H)/%.hxx $(BUILD_H)/*/%.hxx $(BUILD_IBIN)/%
-
-HEADER_SRCS= $(shell find src/public_include -name "*.h*")
-HEADER_PRIVATE_SRCS= $(shell find src/include -name "*.tmpl.h*")
-GEN_CODE_0= $(HEADER_SRCS:src/public_include/%=$(BUILD_INC)/%)
-GEN_CODE_0+= $(HEADER_PRIVATE_SRCS:src/include/%=$(BUILD_C)/%)
-GEN_CODE_1= $(GEN_CODE_0:%.tmpl.h=%.h)
-GEN_CODE= $(GEN_CODE_1:%.tmpl.hxx=%.hxx)
-HEADERS= Makefile $(shell find src test -name "*.h") $(BUILD_OBJ)/timestamp $(GEN_CODE)
-
-# components needed by the lib
-LIBCOMPONENTS = $(BUILD_OBJ)/utils.o $(BUILD_OBJ)/shake.o $(BUILD_OBJ)/sha512.o $(BUILD_OBJ)/spongerng.o
-# and per-field components
-
-BENCHCOMPONENTS = $(BUILD_OBJ)/bench.o $(BUILD_OBJ)/shake.o
-
-all: lib $(BUILD_IBIN)/test $(BUILD_BIN)/ristretto $(BUILD_IBIN)/bench $(BUILD_BIN)/shakesum
-
-scan: clean
- scan-build --use-analyzer=`which clang` \
- -enable-checker deadcode -enable-checker llvm \
- -enable-checker osx -enable-checker security -enable-checker unix \
- make all
-
-# Internal test programs, which are not part of the final build/bin directory.
-$(BUILD_IBIN)/test: $(BUILD_OBJ)/test_decaf.o lib
-ifeq ($(UNAME),Darwin)
- $(LDXX) $(LDFLAGS) -o $@ $< -L$(BUILD_LIB) -ldecaf
-else
- $(LDXX) $(LDFLAGS) -Wl,-rpath,`pwd`/$(BUILD_LIB) -o $@ $< -L$(BUILD_LIB) -ldecaf
-endif
-
-$(BUILD_BIN)/ristretto: $(BUILD_OBJ)/ristretto.o lib
-ifeq ($(UNAME),Darwin)
- $(LDXX) $(LDFLAGS) -o $@ $< -L$(BUILD_LIB) -ldecaf
-else
- $(LDXX) $(LDFLAGS) -Wl,-rpath,`pwd`/$(BUILD_LIB) -o $@ $< -L$(BUILD_LIB) -ldecaf
-endif
-
-# Internal test programs, which are not part of the final build/bin directory.
-$(BUILD_IBIN)/test_ct: $(BUILD_OBJ)/test_ct.o lib
-ifeq ($(UNAME),Darwin)
- $(LDXX) $(LDFLAGS) -o $@ $< -L$(BUILD_LIB) -ldecaf
-else
- $(LDXX) $(LDFLAGS) -Wl,-rpath,`pwd`/$(BUILD_LIB) -o $@ $< -L$(BUILD_LIB) -ldecaf
-endif
-
-$(BUILD_IBIN)/bench: $(BUILD_OBJ)/bench_decaf.o lib
-ifeq ($(UNAME),Darwin)
- $(LDXX) $(LDFLAGS) -o $@ $< -L$(BUILD_LIB) -ldecaf
-else
- $(LDXX) $(LDFLAGS) -Wl,-rpath,`pwd`/$(BUILD_LIB) -o $@ $< -L$(BUILD_LIB) -ldecaf
-endif
-
-# Create all the build subdirectories
-$(BUILD_OBJ)/timestamp:
- mkdir -p $(BUILD_OBJ) $(BUILD_C) $(BUILD_PY) \
- $(BUILD_LIB) $(BUILD_INC) $(BUILD_BIN) $(BUILD_IBIN) $(BUILD_H) $(BUILD_INC)/decaf \
- $(PER_OBJ_DIRS) $(BUILD_C)/decaf
- touch $@
-
-$(BUILD_INC)/%: src/public_include/% $(BUILD_OBJ)/timestamp
- cp -f $< $@
-
-$(BUILD_INC)/%.h: src/public_include/%.tmpl.h src/generator/*
- $(PYTHON) -B src/generator/template.py --per=global --guard=$(@:$(BUILD_INC)/%=%) -o $@ $<
-
-$(BUILD_C)/%.h: src/include/%.tmpl.h src/generator/*
- $(PYTHON) -B src/generator/template.py --per=global --guard=$(@:$(BUILD_C)/%=%) -o $@ $<
-
-$(BUILD_INC)/%.hxx: src/public_include/%.tmpl.hxx src/generator/*
- $(PYTHON) -B src/generator/template.py --per=global --guard=$(@:$(BUILD_INC)/%=%) -o $@ $<
-
-$(BUILD_C)/%.hxx: src/include/%.tmpl.hxx src/generator/*
- $(PYTHON) -B src/generator/template.py --per=global --guard=$(@:$(BUILD_C)/%=%) -o $@ $<
-
-################################################################
-# Per-field code: call with field, arch
-################################################################
-PER_FIELD_C = $(wildcard src/per_field/*.tmpl.c)
-PER_FIELD_H = $(wildcard src/per_field/*.tmpl.h*)
-define define_field
-ARCH_FOR_$(1) ?= $(2)
-COMPONENTS_OF_$(1) = $$(BUILD_OBJ)/$(1)/f_impl.o $$(BUILD_OBJ)/$(1)/f_arithmetic.o $$(BUILD_OBJ)/$(1)/f_generic.o
-HEADERS_OF_$(1) = $(HEADERS) $$(BUILD_H)/$(1)/f_field.h
-LIBCOMPONENTS += $$(COMPONENTS_OF_$(1))
-GEN_CODE_FOR_$(1) = $$(patsubst src/per_field/%,$(BUILD_C)/$(1)/%,$(patsubst %.tmpl.c,%.c,$(PER_FIELD_C)))
-GEN_CODE_FOR_$(1) += $$(patsubst src/per_field/%,$(BUILD_H)/$(1)/%,$(patsubst %.tmpl.h,%.h,$(PER_FIELD_H)))
-GEN_CODE += $$(GEN_CODE_FOR_$(1))
-PER_OBJ_DIRS += $$(BUILD_OBJ)/$(1)
-
-$$(BUILD_C)/$(1)/%.c: src/per_field/%.tmpl.c src/generator/* Makefile
- $(PYTHON) -B src/generator/template.py --per=field --guard=$(1)/`basename $$@` --item=$(1) -o $$@ $$<
-
-$$(BUILD_H)/$(1)/%.h: src/per_field/%.tmpl.h src/generator/* Makefile
- $(PYTHON) -B src/generator/template.py --per=field --guard=$(1)/`basename $$@` --item=$(1) -o $$@ $$<
-
-$$(BUILD_OBJ)/$(1)/%.o: $$(BUILD_C)/$(1)/%.c $$(HEADERS_OF_$(1))
- $$(CC) $$(CFLAGS) -I src/$(1) -I src/$(1)/$$(ARCH_FOR_$(1)) -I $(BUILD_H)/$(1) \
- -I $(BUILD_H)/$(1)/$$(ARCH_FOR_$(1)) -I src/include/$$(ARCH_FOR_$(1)) \
- -c -o $$@ $$<
-
-$$(BUILD_OBJ)/$(1)/%.o: src/$(1)/%.c $$(HEADERS_OF_$(1))
- $$(CC) $$(CFLAGS) -I src/$(1) -I src/$(1)/$$(ARCH_FOR_$(1)) -I $(BUILD_H)/$(1) \
- -I $(BUILD_H)/$(1)/$$(ARCH_FOR_$(1)) -I src/include/$$(ARCH_FOR_$(1)) \
- -c -o $$@ $$<
-
-$$(BUILD_OBJ)/$(1)/%.o: src/$(1)/$$(ARCH_FOR_$(1))/%.c $$(HEADERS_OF_$(1))
- $$(CC) $$(CFLAGS) -I src/$(1) -I src/$(1)/$$(ARCH_FOR_$(1)) -I $(BUILD_H)/$(1) \
- -I $(BUILD_H)/$(1)/$$(ARCH_FOR_$(1)) -I src/include/$$(ARCH_FOR_$(1)) \
- -c -o $$@ $$<
-endef
-
-################################################################
-# Per-field, per-curve code: call with curve, field
-################################################################
-PER_CURVE_C = $(wildcard src/per_curve/*.tmpl.c)
-define define_curve
-
-LIBCOMPONENTS += $$(BUILD_OBJ)/$(1)/decaf.o $$(BUILD_OBJ)/$(1)/elligator.o $$(BUILD_OBJ)/$(1)/scalar.o \
- $$(BUILD_OBJ)/$(1)/eddsa.o $$(BUILD_OBJ)/$(1)/decaf_tables.o
-PER_OBJ_DIRS += $$(BUILD_OBJ)/$(1)
-GLOBAL_HEADERS_OF_$(1) = $(BUILD_INC)/decaf/point_$(3).h $(BUILD_INC)/decaf/point_$(3).hxx \
- $(BUILD_INC)/decaf/ed$(3).h $(BUILD_INC)/decaf/ed$(3).hxx
-HEADERS_OF_$(1) = $$(HEADERS_OF_$(2)) $$(GLOBAL_HEADERS_OF_$(1))
-HEADERS += $$(GLOBAL_HEADERS_OF_$(1))
-
-GEN_CODE_FOR_$(1) = $$(patsubst src/per_curve/%,$(BUILD_C)/$(1)/%,$(patsubst %.tmpl.c,%.c,$(PER_CURVE_C)))
-GEN_CODE_FOR_$(1) += $$(GLOBAL_HEADERS_OF_$(1))
-GEN_CODE_P2 += $(BUILD_C)/$(1)/decaf_tables.c
-GEN_CODE += $$(GEN_CODE_FOR_$(1))
-
-$$(BUILD_C)/$(1)/%.c: src/per_curve/%.tmpl.c src/generator/* Makefile
- $(PYTHON) -B src/generator/template.py --per=curve --item=$(1) --guard=$(1)/`basename $$@` -o $$@ $$<
-
-$$(BUILD_H)/$(1)/%.h: src/per_curve/%.tmpl.h src/generator/* Makefile
- $(PYTHON) -B src/generator/template.py --per=curve --item=$(1) --guard=$(1)/`basename $$@` -o $$@ $$<
-
-$$(BUILD_INC)/decaf/point_$(3).%: src/per_curve/point.tmpl.% src/generator/* Makefile
- $(PYTHON) -B src/generator/template.py --per=curve --item=$(1) --guard=$$(@:$(BUILD_INC)/%=%) -o $$@ $$<
-
-$$(BUILD_INC)/decaf/ed$(3).%: src/per_curve/eddsa.tmpl.% src/generator/* Makefile
- $(PYTHON) -B src/generator/template.py --per=curve --item=$(1) --guard=$$(@:$(BUILD_INC)/%=%) -o $$@ $$<
-
-$$(BUILD_INC)/decaf/elligator_$(3).%: src/per_curve/elligator.tmpl.% src/generator/* Makefile
- $(PYTHON) -B src/generator/template.py --per=curve --item=$(1) --guard=$$(@:$(BUILD_INC)/%=%) -o $$@ $$<
-
-$$(BUILD_INC)/decaf/scalar_$(3).%: src/per_curve/scalar.tmpl.% src/generator/* Makefile
- $(PYTHON) -B src/generator/template.py --per=curve --item=$(1) --guard=$$(@:$(BUILD_INC)/%=%) -o $$@ $$<
-
-$$(BUILD_IBIN)/decaf_gen_tables_$(1): $$(BUILD_OBJ)/$(1)/decaf_gen_tables.o \
- $$(BUILD_OBJ)/$(1)/decaf.o $$(BUILD_OBJ)/$(1)/scalar.o $$(BUILD_OBJ)/utils.o \
- $$(COMPONENTS_OF_$(2))
- $$(LD) $$(LDFLAGS) -o $$@ $$^
-
-$$(BUILD_C)/$(1)/decaf_tables.c: $$(BUILD_IBIN)/decaf_gen_tables_$(1)
- ./$$< > $$@ || (rm $$@; exit 1)
-
-$$(BUILD_OBJ)/$(1)/%.o: $$(BUILD_C)/$(1)/%.c $$(HEADERS_OF_$(1))
- $$(CC) $$(CFLAGS) -c -o $$@ $$< \
- -I build/obj/curve_$(1)/ -I src/$(2) -I src/$(2)/$$(ARCH_FOR_$(2)) -I src/include/$$(ARCH_FOR_$(2)) \
- -I $(BUILD_H)/$(1) -I $(BUILD_H)/$(2) -I $(BUILD_H)/$(2)/$$(ARCH_FOR_$(2))
-
-$$(BUILD_OBJ)/decaf_gen_tables_$(1).o: src/decaf_gen_tables.c $$(HEADERS_OF_$(1))
- $$(CC) $$(CFLAGS) \
- -I build/obj/curve_$(1) -I src/$(2) -I src/$(2)/$$(ARCH_FOR_$(2)) -I src/include/$$(ARCH_FOR_$(2)) \
- -I $(BUILD_H)/$(1) -I $(BUILD_H)/$(2) -I $(BUILD_H)/$(2)/$$(ARCH_FOR_$(2)) \
- -c -o $$@ $$<
-endef
-
-################################################################
-# call code above to generate curves and fields
-$(eval $(call define_field,p25519,arch_x86_64))
-$(eval $(call define_curve,curve25519,p25519,255))
-$(eval $(call define_field,p448,arch_x86_64))
-$(eval $(call define_curve,ed448goldilocks,p448,448))
-
-# The shakesum utility is in the public bin directory.
-$(BUILD_BIN)/shakesum: $(BUILD_OBJ)/shakesum.o $(BUILD_OBJ)/shake.o $(BUILD_OBJ)/sha512.o $(BUILD_OBJ)/utils.o
- $(LD) $(LDFLAGS) -o $@ $^
-
-# The main decaf library, and its symlinks.
-lib: $(BUILD_LIB)/libdecaf.so
-
-$(BUILD_LIB)/libdecaf.so: $(BUILD_LIB)/libdecaf.so.1
- ln -sf `basename $^` $@
-
-$(BUILD_LIB)/libdecaf.so.1: $(LIBCOMPONENTS)
- rm -f $@
-ifeq ($(UNAME),Darwin)
- libtool -macosx_version_min $(MACOSX_VERSION_MIN) -dynamic -dead_strip -lc -x -o $@ \
- $(LIBCOMPONENTS)
-else ifeq ($(UNAME),SunOS)
- $(LD) $(LDFLAGS) -shared -Wl,-soname,`basename $@` -o $@ $(LIBCOMPONENTS)
- strip --discard-all $@
-else
- $(LD) $(LDFLAGS) -shared -Wl,-soname,`basename $@` -Wl,--gc-sections -o $@ $(LIBCOMPONENTS)
- strip --discard-all $@
-endif
-
-
-$(BUILD_OBJ)/%.o: src/%.c $(HEADERS)
- $(CC) $(CFLAGS) -c -o $@ $<
-
-$(BUILD_OBJ)/%.o: test/%.c $(HEADERS)
- $(CC) $(PUB_CFLAGS) -c -o $@ $<
-
-$(BUILD_OBJ)/%.o: test/%.cxx $(HEADERS)
- $(CXX) $(CXXFLAGS) -c -o $@ $<
-
-# The sage test scripts
-sage: $(BUILDPYS)
-
-sagetest: sage lib
- $(SAGE) $(BUILD_PY)/test_decaf.sage
-
-$(BUILDPYS): $(SAGES) $(BUILD_OBJ)/timestamp
- cp -f $(SAGES) $(BUILD_PY)/
- $(SAGE) --preparse $(SAGES:test/%.sage=$(BUILD_PY)/%.sage)
- # some sage versions compile to .sage.py
- for f in $(SAGES:test/%.sage=$(BUILD_PY)/%); do \
- if [ -e $$f.sage.py ]; then \
- mv $$f.sage.py $$f.py; \
- fi; \
- done
-
-# The documentation files
-$(BUILD_DOC)/timestamp:
- mkdir -p `dirname $@`
- touch $@
-#
-doc: Doxyfile $(BUILD_OBJ)/timestamp gen_code_static
- $(DOXYGEN) > /dev/null
-
-gen_code_static: $(GEN_CODE)
-gen_code: gen_code_static $(GEN_CODE_P2)
-
-# Finds todo items in .h and .c files
-TODO_TYPES ?= HACK TODO @todo FIXME BUG XXX PERF FUTURE REMOVE MAGIC UNIFY
-TODO_LOCATIONS ?= src/*.c src/include src/p* src/generator test Makefile Doxyfile
-todo::
- @(find $(TODO_LOCATIONS) -name '*.h' -or -name '*.c' -or -name '*.cxx' -or -name '*.hxx' -or -name '*.py') | xargs egrep --color=auto -w \
- `echo $(TODO_TYPES) | tr ' ' '|'`
- @echo '============================='
- @(for i in $(TODO_TYPES); do \
- (find $(TODO_LOCATIONS) -name '*.h' -or -name '*.c' -or -name '*.cxx' -or -name '*.hxx' -or -name '*.py') | xargs egrep -w $$i > /dev/null || continue; \
- /bin/echo -n $$i' ' | head -c 10; \
- (find $(TODO_LOCATIONS) -name '*.h' -or -name '*.c' -or -name '*.cxx' -or -name '*.hxx' -or -name '*.py') | xargs egrep -w $$i| wc -l; \
- done)
- @echo '============================='
- @echo -n 'Total '
- @(find $(TODO_LOCATIONS) -name '*.h' -or -name '*.c' -or -name '*.cxx' -or -name '*.hxx' -or -name '*.py') | xargs egrep -w \
- `echo $(TODO_TYPES) | tr ' ' '|'` | wc -l
-
-bench: $(BUILD_IBIN)/bench
- ./$<
-
-test: $(BUILD_IBIN)/test
- ./$<
-
-test_ct: $(BUILD_IBIN)/test_ct
- # NB: you must compile with XCFLAGS=-DNDEBUG or you will get lots of extra warnings due to assert(thing that is always true).
- valgrind ./$<
-
-microbench: $(BUILD_IBIN)/bench
- ./$< --micro
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.11
+# Default target executed when no arguments are given to make.
+default_target: all
+
+.PHONY : default_target
+
+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
+.NOTPARALLEL:
+
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/local/Cellar/cmake/3.11.3/bin/cmake
+
+# The command to remove a file.
+RM = /usr/local/Cellar/cmake/3.11.3/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /Users/mike/projects/ed448goldilocks-code
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /Users/mike/projects/ed448goldilocks-code
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target install/strip
+install/strip: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
+ /usr/local/Cellar/cmake/3.11.3/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
+.PHONY : install/strip
+
+# Special rule for the target install/strip
+install/strip/fast: preinstall/fast
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
+ /usr/local/Cellar/cmake/3.11.3/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
+.PHONY : install/strip/fast
+
+# Special rule for the target install
+install: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
+ /usr/local/Cellar/cmake/3.11.3/bin/cmake -P cmake_install.cmake
+.PHONY : install
+
+# Special rule for the target install
+install/fast: preinstall/fast
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
+ /usr/local/Cellar/cmake/3.11.3/bin/cmake -P cmake_install.cmake
+.PHONY : install/fast
+
+# Special rule for the target list_install_components
+list_install_components:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\""
+.PHONY : list_install_components
+
+# Special rule for the target list_install_components
+list_install_components/fast: list_install_components
+
+.PHONY : list_install_components/fast
+
+# Special rule for the target install/local
+install/local: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
+ /usr/local/Cellar/cmake/3.11.3/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
+.PHONY : install/local
+
+# Special rule for the target install/local
+install/local/fast: preinstall/fast
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
+ /usr/local/Cellar/cmake/3.11.3/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
+.PHONY : install/local/fast
+
+# Special rule for the target test
+test:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..."
+ /usr/local/Cellar/cmake/3.11.3/bin/ctest --force-new-ctest-process $(ARGS)
+.PHONY : test
+
+# Special rule for the target test
+test/fast: test
+
+.PHONY : test/fast
+
+# Special rule for the target edit_cache
+edit_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..."
+ /usr/local/Cellar/cmake/3.11.3/bin/ccmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+
+.PHONY : edit_cache/fast
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
+ /usr/local/Cellar/cmake/3.11.3/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+
+.PHONY : rebuild_cache/fast
+
+# Special rule for the target package_source
+package_source:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool for source..."
+ /usr/local/Cellar/cmake/3.11.3/bin/cpack --config ./CPackSourceConfig.cmake /Users/mike/projects/ed448goldilocks-code/CPackSourceConfig.cmake
+.PHONY : package_source
+
+# Special rule for the target package_source
+package_source/fast: package_source
+
+.PHONY : package_source/fast
+
+# Special rule for the target package
+package: preinstall
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Run CPack packaging tool..."
+ /usr/local/Cellar/cmake/3.11.3/bin/cpack --config ./CPackConfig.cmake
+.PHONY : package
+
+# Special rule for the target package
+package/fast: package
+
+.PHONY : package/fast
+
+# The main all target
+all: cmake_check_build_system
+ $(CMAKE_COMMAND) -E cmake_progress_start /Users/mike/projects/ed448goldilocks-code/CMakeFiles /Users/mike/projects/ed448goldilocks-code/CMakeFiles/progress.marks
+ $(MAKE) -f CMakeFiles/Makefile2 all
+ $(CMAKE_COMMAND) -E cmake_progress_start /Users/mike/projects/ed448goldilocks-code/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
clean:
- rm -fr build
+ $(MAKE) -f CMakeFiles/Makefile2 clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+ $(MAKE) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+ $(MAKE) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+ $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+#=============================================================================
+# Target rules for targets named doc
+
+# Build rule for target.
+doc: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 doc
+.PHONY : doc
+
+# fast build rule for target.
+doc/fast:
+ $(MAKE) -f CMakeFiles/doc.dir/build.make CMakeFiles/doc.dir/build
+.PHONY : doc/fast
+
+#=============================================================================
+# Target rules for targets named decaf
+
+# Build rule for target.
+decaf: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 decaf
+.PHONY : decaf
+
+# fast build rule for target.
+decaf/fast:
+ $(MAKE) -f src/CMakeFiles/decaf.dir/build.make src/CMakeFiles/decaf.dir/build
+.PHONY : decaf/fast
+
+#=============================================================================
+# Target rules for targets named decaf-static
+
+# Build rule for target.
+decaf-static: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 decaf-static
+.PHONY : decaf-static
+
+# fast build rule for target.
+decaf-static/fast:
+ $(MAKE) -f src/CMakeFiles/decaf-static.dir/build.make src/CMakeFiles/decaf-static.dir/build
+.PHONY : decaf-static/fast
+
+#=============================================================================
+# Target rules for targets named CURVE25519
+
+# Build rule for target.
+CURVE25519: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 CURVE25519
+.PHONY : CURVE25519
+
+# fast build rule for target.
+CURVE25519/fast:
+ $(MAKE) -f src/curve25519/CMakeFiles/CURVE25519.dir/build.make src/curve25519/CMakeFiles/CURVE25519.dir/build
+.PHONY : CURVE25519/fast
+
+#=============================================================================
+# Target rules for targets named CURVE448
+
+# Build rule for target.
+CURVE448: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 CURVE448
+.PHONY : CURVE448
+
+# fast build rule for target.
+CURVE448/fast:
+ $(MAKE) -f src/ed448goldilocks/CMakeFiles/CURVE448.dir/build.make src/ed448goldilocks/CMakeFiles/CURVE448.dir/build
+.PHONY : CURVE448/fast
+
+#=============================================================================
+# Target rules for targets named p25519
+
+# Build rule for target.
+p25519: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 p25519
+.PHONY : p25519
+
+# fast build rule for target.
+p25519/fast:
+ $(MAKE) -f src/p25519/CMakeFiles/p25519.dir/build.make src/p25519/CMakeFiles/p25519.dir/build
+.PHONY : p25519/fast
+
+#=============================================================================
+# Target rules for targets named p448
+
+# Build rule for target.
+p448: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 p448
+.PHONY : p448
+
+# fast build rule for target.
+p448/fast:
+ $(MAKE) -f src/p448/CMakeFiles/p448.dir/build.make src/p448/CMakeFiles/p448.dir/build
+.PHONY : p448/fast
+
+#=============================================================================
+# Target rules for targets named generatedCode
+
+# Build rule for target.
+generatedCode: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 generatedCode
+.PHONY : generatedCode
+
+# fast build rule for target.
+generatedCode/fast:
+ $(MAKE) -f src/generator/CMakeFiles/generatedCode.dir/build.make src/generator/CMakeFiles/generatedCode.dir/build
+.PHONY : generatedCode/fast
+
+#=============================================================================
+# Target rules for targets named decaf_tables
+
+# Build rule for target.
+decaf_tables: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 decaf_tables
+.PHONY : decaf_tables
+
+# fast build rule for target.
+decaf_tables/fast:
+ $(MAKE) -f src/generator/CMakeFiles/decaf_tables.dir/build.make src/generator/CMakeFiles/decaf_tables.dir/build
+.PHONY : decaf_tables/fast
+
+#=============================================================================
+# Target rules for targets named generatorCommonCode
+
+# Build rule for target.
+generatorCommonCode: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 generatorCommonCode
+.PHONY : generatorCommonCode
+
+# fast build rule for target.
+generatorCommonCode/fast:
+ $(MAKE) -f src/generator/CMakeFiles/generatorCommonCode.dir/build.make src/generator/CMakeFiles/generatorCommonCode.dir/build
+.PHONY : generatorCommonCode/fast
+
+#=============================================================================
+# Target rules for targets named decaf_gen_tables_curve25519
+
+# Build rule for target.
+decaf_gen_tables_curve25519: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 decaf_gen_tables_curve25519
+.PHONY : decaf_gen_tables_curve25519
+
+# fast build rule for target.
+decaf_gen_tables_curve25519/fast:
+ $(MAKE) -f src/generator/curve25519/CMakeFiles/decaf_gen_tables_curve25519.dir/build.make src/generator/curve25519/CMakeFiles/decaf_gen_tables_curve25519.dir/build
+.PHONY : decaf_gen_tables_curve25519/fast
+
+#=============================================================================
+# Target rules for targets named generatorP25519
+
+# Build rule for target.
+generatorP25519: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 generatorP25519
+.PHONY : generatorP25519
+
+# fast build rule for target.
+generatorP25519/fast:
+ $(MAKE) -f src/generator/curve25519/CMakeFiles/generatorP25519.dir/build.make src/generator/curve25519/CMakeFiles/generatorP25519.dir/build
+.PHONY : generatorP25519/fast
+
+#=============================================================================
+# Target rules for targets named decaf_tables_curve25519
+
+# Build rule for target.
+decaf_tables_curve25519: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 decaf_tables_curve25519
+.PHONY : decaf_tables_curve25519
+
+# fast build rule for target.
+decaf_tables_curve25519/fast:
+ $(MAKE) -f src/generator/curve25519/CMakeFiles/decaf_tables_curve25519.dir/build.make src/generator/curve25519/CMakeFiles/decaf_tables_curve25519.dir/build
+.PHONY : decaf_tables_curve25519/fast
+
+#=============================================================================
+# Target rules for targets named generatorCurve25519
+
+# Build rule for target.
+generatorCurve25519: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 generatorCurve25519
+.PHONY : generatorCurve25519
+
+# fast build rule for target.
+generatorCurve25519/fast:
+ $(MAKE) -f src/generator/curve25519/CMakeFiles/generatorCurve25519.dir/build.make src/generator/curve25519/CMakeFiles/generatorCurve25519.dir/build
+.PHONY : generatorCurve25519/fast
+
+#=============================================================================
+# Target rules for targets named decaf_tables_ed448goldilocks
+
+# Build rule for target.
+decaf_tables_ed448goldilocks: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 decaf_tables_ed448goldilocks
+.PHONY : decaf_tables_ed448goldilocks
+
+# fast build rule for target.
+decaf_tables_ed448goldilocks/fast:
+ $(MAKE) -f src/generator/ed448goldilocks/CMakeFiles/decaf_tables_ed448goldilocks.dir/build.make src/generator/ed448goldilocks/CMakeFiles/decaf_tables_ed448goldilocks.dir/build
+.PHONY : decaf_tables_ed448goldilocks/fast
+
+#=============================================================================
+# Target rules for targets named generatorEd448goldilocks
+
+# Build rule for target.
+generatorEd448goldilocks: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 generatorEd448goldilocks
+.PHONY : generatorEd448goldilocks
+
+# fast build rule for target.
+generatorEd448goldilocks/fast:
+ $(MAKE) -f src/generator/ed448goldilocks/CMakeFiles/generatorEd448goldilocks.dir/build.make src/generator/ed448goldilocks/CMakeFiles/generatorEd448goldilocks.dir/build
+.PHONY : generatorEd448goldilocks/fast
+
+#=============================================================================
+# Target rules for targets named decaf_gen_tables_ed448goldilocks
+
+# Build rule for target.
+decaf_gen_tables_ed448goldilocks: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 decaf_gen_tables_ed448goldilocks
+.PHONY : decaf_gen_tables_ed448goldilocks
+
+# fast build rule for target.
+decaf_gen_tables_ed448goldilocks/fast:
+ $(MAKE) -f src/generator/ed448goldilocks/CMakeFiles/decaf_gen_tables_ed448goldilocks.dir/build.make src/generator/ed448goldilocks/CMakeFiles/decaf_gen_tables_ed448goldilocks.dir/build
+.PHONY : decaf_gen_tables_ed448goldilocks/fast
+
+#=============================================================================
+# Target rules for targets named generatorP448
+
+# Build rule for target.
+generatorP448: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 generatorP448
+.PHONY : generatorP448
+
+# fast build rule for target.
+generatorP448/fast:
+ $(MAKE) -f src/generator/ed448goldilocks/CMakeFiles/generatorP448.dir/build.make src/generator/ed448goldilocks/CMakeFiles/generatorP448.dir/build
+.PHONY : generatorP448/fast
+
+#=============================================================================
+# Target rules for targets named shakesum_tester
+
+# Build rule for target.
+shakesum_tester: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 shakesum_tester
+.PHONY : shakesum_tester
+
+# fast build rule for target.
+shakesum_tester/fast:
+ $(MAKE) -f test/CMakeFiles/shakesum_tester.dir/build.make test/CMakeFiles/shakesum_tester.dir/build
+.PHONY : shakesum_tester/fast
+
+#=============================================================================
+# Target rules for targets named bench
+
+# Build rule for target.
+bench: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 bench
+.PHONY : bench
+
+# fast build rule for target.
+bench/fast:
+ $(MAKE) -f test/CMakeFiles/bench.dir/build.make test/CMakeFiles/bench.dir/build
+.PHONY : bench/fast
+
+#=============================================================================
+# Target rules for targets named ristretto_tester
+
+# Build rule for target.
+ristretto_tester: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 ristretto_tester
+.PHONY : ristretto_tester
+
+# fast build rule for target.
+ristretto_tester/fast:
+ $(MAKE) -f test/CMakeFiles/ristretto_tester.dir/build.make test/CMakeFiles/ristretto_tester.dir/build
+.PHONY : ristretto_tester/fast
+
+#=============================================================================
+# Target rules for targets named decaf_tester
+
+# Build rule for target.
+decaf_tester: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 decaf_tester
+.PHONY : decaf_tester
+
+# fast build rule for target.
+decaf_tester/fast:
+ $(MAKE) -f test/CMakeFiles/decaf_tester.dir/build.make test/CMakeFiles/decaf_tester.dir/build
+.PHONY : decaf_tester/fast
+
+# Help Target
+help:
+ @echo "The following are some of the valid targets for this Makefile:"
+ @echo "... all (the default if no target is provided)"
+ @echo "... clean"
+ @echo "... depend"
+ @echo "... install/strip"
+ @echo "... install"
+ @echo "... list_install_components"
+ @echo "... install/local"
+ @echo "... doc"
+ @echo "... test"
+ @echo "... edit_cache"
+ @echo "... rebuild_cache"
+ @echo "... package_source"
+ @echo "... package"
+ @echo "... decaf"
+ @echo "... decaf-static"
+ @echo "... CURVE25519"
+ @echo "... CURVE448"
+ @echo "... p25519"
+ @echo "... p448"
+ @echo "... generatedCode"
+ @echo "... decaf_tables"
+ @echo "... generatorCommonCode"
+ @echo "... decaf_gen_tables_curve25519"
+ @echo "... generatorP25519"
+ @echo "... decaf_tables_curve25519"
+ @echo "... generatorCurve25519"
+ @echo "... decaf_tables_ed448goldilocks"
+ @echo "... generatorEd448goldilocks"
+ @echo "... decaf_gen_tables_ed448goldilocks"
+ @echo "... generatorP448"
+ @echo "... shakesum_tester"
+ @echo "... bench"
+ @echo "... ristretto_tester"
+ @echo "... decaf_tester"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+ $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
-clean_generated: clean
- rm -fr $(BUILD_C)/* $(BUILD_H)/* $(BUILD_INC)/*