# Copyright (c) 2015-2016, NORDUnet A/S # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # - Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # - Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # - Neither the name of the NORDUnet nor the names of its contributors may # be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Number of static hash and HMAC state blocks to allocate. # Numbers pulled out of a hat, just testing. STATIC_HASH_STATE_BLOCKS = 10 STATIC_HMAC_STATE_BLOCKS = 4 STATIC_PKEY_STATE_BLOCKS = 6 INC = hal.h hal_internal.h LIB = libhal.a # Error checking on known control options, some of which allow the user entirely too much rope. USAGE := "usage: ${MAKE} [IO_BUS=eim|i2c|fmc] [RPC_CLIENT=none|local|remote|mixed] [RPC_SERVER=no|yes] [KS=volatile|mmap|flash] [RPC_TRANSPORT=none|loopback|serial|daemon] [MODEXP_CORE=no|yes]" IO_BUS ?= eim KS ?= mmap RPC_CLIENT ?= none RPC_SERVER ?= $(if $(filter local,${RPC_CLIENT}),yes,no) RPC_TRANSPORT ?= daemon MODEXP_CORE ?= no ifeq (,$(and \ $(filter none eim i2c fmc ,${IO_BUS}),\ $(filter none local remote mixed ,${RPC_CLIENT}),\ $(filter no yes ,${RPC_SERVER}),\ $(filter volatile mmap flash ,${KS}),\ $(filter none loopback serial daemon ,${RPC_TRANSPORT}),\ $(filter no yes ,${MODEXP_CORE}))) $(error ${USAGE}) endif ifneq (${RPC_SERVER},$(if $(filter local,${RPC_CLIENT}),yes,no)) $(error RPC_SERVER=yes is probably only useful with RPC_CLIENT=local) endif # Whether the RSA code should use the ModExp | ModExpS6 | ModExpA7 core. ifeq (${MODEXP_CORE},yes) RSA_USE_MODEXP_CORE := 1 else RSA_USE_MODEXP_CORE := 0 endif # Object files to build, initialized with ones we always want. # There's a balance here between skipping files we don't strictly # need and reducing the number of unnecessary conditionals in this # makefile, so the working definition of "always want" is sometimes # just "building this is harmless even if we don't use it." OBJ = errorstrings.o hash.o asn1.o ecdsa.o rsa.o ${KS_OBJ} # Object files to build when we're on a platform with direct access # to our hardware (Verilog) cores. CORE_OBJ = core.o csprng.o pbkdf2.o aes_keywrap.o modexp.o mkmif.o ${IO_OBJ} # I/O bus to the FPGA # # IO_BUS = none | eim | i2c | fmc # none: no FPGA I/O bus # eim: EIM bus from Novena # i2c: older I2C bus from Novena # fmc: FMC bus from dev-bridge and alpha boards ifeq (${IO_BUS},eim) IO_OBJ = hal_io_eim.o novena-eim.o else ifeq (${IO_BUS},i2c) IO_OBJ = hal_io_i2c.o else ifeq (${IO_BUS},fmc) IO_OBJ = hal_io_fmc.o endif # If we're building for STM32, position-independent code leads to some # hard-to-debug function pointer errors. OTOH, if we're building for Linux # (even on the Novena), we want to make it possible to build a shared library. ifneq (${IO_BUS},fmc) CFLAGS += -fPIC endif # The mmap and flash keystore implementations
*.[ao]
*~
Makefile
TAGS
cryptech_rpcd
tests/test-aes-key-wrap
tests/test-bus
tests/test-ecdsa
tests/test-ecdsa-*.der
tests/test-hash
tests/test-mkmif
tests/test-pbkdf2
tests/test-rpc_bighash
tests/test-rpc_get_random
tests/test-rpc_get_version
tests/test-rpc_hash
tests/test-rpc_login
tests/test-rpc_pkey
tests/test-rpc_server
tests/test-rsa
tests/test-rsa-*.der
tests/test-trng
utils/cores
utils/eim_peek_poke