Browse Source

update HISTORY to mention the malleability flaw

master
Mike Hamburg 4 years ago
parent
commit
a5c33de79b
2 changed files with 539 additions and 342 deletions
  1. +14
    -0
      HISTORY.txt
  2. +525
    -342
      Makefile

+ 14
- 0
HISTORY.txt View File

@@ -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.



+ 525
- 342
Makefile View File

@@ -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)/*

Loading…
Cancel
Save