Merge pull request #99 from ARMmbed/dev/Patater/exporter
exporter: Prepare a potentially releasable distribution tarball of Mbed Crypto
This commit is contained in:
commit
0d7a4f91c5
7 changed files with 468 additions and 0 deletions
13
.gitignore
vendored
13
.gitignore
vendored
|
@ -26,3 +26,16 @@ massif-*
|
||||||
|
|
||||||
# CMake generates *.dir/ folders for in-tree builds (used by MSVC projects), ignore all of those:
|
# CMake generates *.dir/ folders for in-tree builds (used by MSVC projects), ignore all of those:
|
||||||
*.dir/
|
*.dir/
|
||||||
|
|
||||||
|
# Exported Mbed Crypto files
|
||||||
|
crypto/LICENSE
|
||||||
|
crypto/VERSION.txt
|
||||||
|
crypto/include
|
||||||
|
crypto/library/*.c
|
||||||
|
crypto/library/libmbedcrypto*
|
||||||
|
crypto/scripts
|
||||||
|
crypto/tests/scripts
|
||||||
|
crypto/tests/suites
|
||||||
|
crypto/tests/test_suite*
|
||||||
|
crypto/programs/psa
|
||||||
|
mbedcrypto.tar.gz
|
||||||
|
|
20
crypto/Makefile
Normal file
20
crypto/Makefile
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
.PHONY: all lib programs tests clean test
|
||||||
|
|
||||||
|
all: programs tests
|
||||||
|
|
||||||
|
lib:
|
||||||
|
$(MAKE) -C library
|
||||||
|
|
||||||
|
programs: lib
|
||||||
|
$(MAKE) -C programs
|
||||||
|
|
||||||
|
tests: lib
|
||||||
|
$(MAKE) -C tests
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(MAKE) -C library clean
|
||||||
|
$(MAKE) -C programs clean
|
||||||
|
$(MAKE) -C tests clean
|
||||||
|
|
||||||
|
test: lib tests
|
||||||
|
$(MAKE) -C tests test
|
76
crypto/library/Makefile
Normal file
76
crypto/library/Makefile
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
CFLAGS ?= -O2 -I../include
|
||||||
|
WARNING_CFLAGS ?= \
|
||||||
|
-Werror -Wall -Wextra \
|
||||||
|
-Wno-unused-function \
|
||||||
|
-Wno-overlength-strings \
|
||||||
|
-Wdeclaration-after-statement \
|
||||||
|
# Don't delete this line.
|
||||||
|
|
||||||
|
OBJS_CRYPTO := \
|
||||||
|
aes.o \
|
||||||
|
aesni.o \
|
||||||
|
arc4.o \
|
||||||
|
asn1parse.o \
|
||||||
|
asn1write.o \
|
||||||
|
base64.o \
|
||||||
|
bignum.o \
|
||||||
|
blowfish.o \
|
||||||
|
camellia.o \
|
||||||
|
ccm.o \
|
||||||
|
cipher.o \
|
||||||
|
cipher_wrap.o \
|
||||||
|
cmac.o \
|
||||||
|
ctr_drbg.o \
|
||||||
|
des.o \
|
||||||
|
ecdsa.o \
|
||||||
|
ecp.o \
|
||||||
|
ecp_curves.o \
|
||||||
|
entropy.o \
|
||||||
|
entropy_poll.o \
|
||||||
|
gcm.o \
|
||||||
|
hmac_drbg.o \
|
||||||
|
md.o \
|
||||||
|
md2.o \
|
||||||
|
md4.o \
|
||||||
|
md5.o \
|
||||||
|
md_wrap.o \
|
||||||
|
oid.o \
|
||||||
|
pem.o \
|
||||||
|
pk.o \
|
||||||
|
pk_wrap.o \
|
||||||
|
pkcs12.o \
|
||||||
|
pkcs5.o \
|
||||||
|
pkparse.o \
|
||||||
|
pkwrite.o \
|
||||||
|
platform.o \
|
||||||
|
platform_util.o \
|
||||||
|
psa_crypto.o \
|
||||||
|
ripemd160.o \
|
||||||
|
rsa_internal.o \
|
||||||
|
rsa.o \
|
||||||
|
sha1.o \
|
||||||
|
sha256.o \
|
||||||
|
sha512.o \
|
||||||
|
xtea.o \
|
||||||
|
# Don't delete this line.
|
||||||
|
|
||||||
|
.SILENT:
|
||||||
|
|
||||||
|
.PHONY: all static clean
|
||||||
|
|
||||||
|
all: static
|
||||||
|
|
||||||
|
static: libmbedcrypto.a
|
||||||
|
|
||||||
|
libmbedcrypto.a: $(OBJS_CRYPTO)
|
||||||
|
echo " AR $@"
|
||||||
|
$(AR) -rc $@ $(OBJS_CRYPTO)
|
||||||
|
echo " RL $@"
|
||||||
|
$(AR) -s $@
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
echo " CC $<"
|
||||||
|
$(CC) $(CFLAGS) $(WARNING_CFLAGS) -c $<
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.o libmbedcrypto.a
|
51
crypto/programs/Makefile
Normal file
51
crypto/programs/Makefile
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
CFLAGS ?= -O2 -I../include
|
||||||
|
WARNING_CFLAGS ?= \
|
||||||
|
-Werror -Wall -Wextra \
|
||||||
|
-Wno-unused-function \
|
||||||
|
-Wno-overlength-strings \
|
||||||
|
-Wdeclaration-after-statement \
|
||||||
|
# Don't delete this line.
|
||||||
|
|
||||||
|
LDFLAGS ?= -L../library -lmbedcrypto
|
||||||
|
|
||||||
|
DEP := ../library/libmbedcrypto.a
|
||||||
|
|
||||||
|
APPS := \
|
||||||
|
psa/crypto_examples \
|
||||||
|
psa/key_ladder_demo \
|
||||||
|
psa/psa_constant_names \
|
||||||
|
# Don't delete this line.
|
||||||
|
|
||||||
|
EXTRA_GENERATED := \
|
||||||
|
psa/psa_constant_names_generated.c \
|
||||||
|
# Don't delete this line.
|
||||||
|
|
||||||
|
.SILENT:
|
||||||
|
|
||||||
|
.PHONY: all clean list
|
||||||
|
|
||||||
|
all: $(APPS)
|
||||||
|
|
||||||
|
$(DEP):
|
||||||
|
$(MAKE) -C ../library
|
||||||
|
|
||||||
|
psa/crypto_examples: psa/crypto_examples.c $(DEP)
|
||||||
|
echo " CC psa/crypto_examples.c"
|
||||||
|
$(CC) $(LOCAL_CFLAGS) $(CFLAGS) psa/crypto_examples.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
psa/key_ladder_demo: psa/key_ladder_demo.c $(DEP)
|
||||||
|
echo " CC psa/key_ladder_demo.c"
|
||||||
|
$(CC) $(LOCAL_CFLAGS) $(CFLAGS) psa/key_ladder_demo.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
psa/psa_constant_names_generated.c: ../scripts/generate_psa_constants.py ../include/psa/crypto.h
|
||||||
|
../scripts/generate_psa_constants.py
|
||||||
|
|
||||||
|
psa/psa_constant_names: psa/psa_constant_names_generated.c psa/psa_constant_names.c $(DEP)
|
||||||
|
echo " CC psa/psa_constant_names.c"
|
||||||
|
$(CC) $(LOCAL_CFLAGS) $(CFLAGS) psa/psa_constant_names.c $(LOCAL_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(APPS) $(EXTRA_GENERATED)
|
||||||
|
|
||||||
|
list:
|
||||||
|
echo $(APPS)
|
73
crypto/tests/Makefile
Normal file
73
crypto/tests/Makefile
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
CFLAGS ?= -O2 -I../include
|
||||||
|
WARNING_CFLAGS ?= \
|
||||||
|
-Werror -Wall -Wextra \
|
||||||
|
-Wno-unused-function \
|
||||||
|
-Wno-overlength-strings \
|
||||||
|
-Wdeclaration-after-statement \
|
||||||
|
# Don't delete this line.
|
||||||
|
|
||||||
|
LDFLAGS ?= -L../library -lmbedcrypto
|
||||||
|
|
||||||
|
DEP := ../library/libmbedcrypto.a
|
||||||
|
|
||||||
|
# Python executable
|
||||||
|
PYTHON ?= python
|
||||||
|
|
||||||
|
APPS := \
|
||||||
|
test_suite_psa_crypto \
|
||||||
|
# Don't delete this line.
|
||||||
|
|
||||||
|
# Look up for associated function files
|
||||||
|
func.test_suite_psa_crypto := test_suite_psa_crypto
|
||||||
|
|
||||||
|
.SILENT:
|
||||||
|
|
||||||
|
.PHONY: all test clean
|
||||||
|
|
||||||
|
all: $(APPS)
|
||||||
|
|
||||||
|
$(DEP):
|
||||||
|
$(MAKE) -C ../library
|
||||||
|
|
||||||
|
C_FILES := $(addsuffix .c,$(APPS))
|
||||||
|
|
||||||
|
.SECONDEXPANSION:
|
||||||
|
$(C_FILES): %.c: suites/$$(func.$$*).function suites/%.data scripts/generate_test_code.py suites/helpers.function suites/main_test.function suites/host_test.function
|
||||||
|
echo " Gen $@"
|
||||||
|
$(PYTHON) scripts/generate_test_code.py -f suites/$(func.$*).function \
|
||||||
|
-d suites/$*.data \
|
||||||
|
-t suites/main_test.function \
|
||||||
|
-p suites/host_test.function \
|
||||||
|
-s suites \
|
||||||
|
--help-file suites/helpers.function \
|
||||||
|
-o .
|
||||||
|
|
||||||
|
|
||||||
|
$(APPS): %: %.c $(DEP)
|
||||||
|
echo " CC $<"
|
||||||
|
$(CC) $(CFLAGS) $(WARNING_CFLAGS) $< $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf $(APPS) *.c *.data TESTS
|
||||||
|
rm -rf data_files/ctr_drbg_seed data_files/hmac_drbg_seed data_files/mpi_write
|
||||||
|
|
||||||
|
test: $(APPS)
|
||||||
|
./test_suite_psa_crypto
|
||||||
|
|
||||||
|
# Create separate targets for generating embedded tests.
|
||||||
|
EMBEDDED_TESTS := $(addprefix embedded_,$(APPS))
|
||||||
|
|
||||||
|
# Generate test code for target.
|
||||||
|
|
||||||
|
.SECONDEXPANSION:
|
||||||
|
$(EMBEDDED_TESTS): embedded_%: suites/$$(func.$$*).function suites/%.data scripts/generate_test_code.py suites/helpers.function suites/main_test.function suites/target_test.function
|
||||||
|
echo " Gen ./TESTS/mbedcrypto/$*/$*.c"
|
||||||
|
$(PYTHON) scripts/generate_test_code.py -f suites/$(func.$*).function \
|
||||||
|
-d suites/$*.data \
|
||||||
|
-t suites/main_test.function \
|
||||||
|
-p suites/target_test.function \
|
||||||
|
-s suites \
|
||||||
|
--help-file suites/helpers.function \
|
||||||
|
-o ./TESTS/mbedcrypto/$*
|
||||||
|
|
||||||
|
gen-embedded-test: $(EMBEDDED_TESTS)
|
227
scripts/mbed_crypto.make
Normal file
227
scripts/mbed_crypto.make
Normal file
|
@ -0,0 +1,227 @@
|
||||||
|
###########################################################################
|
||||||
|
#
|
||||||
|
# Copyright (c) 2018, ARM Limited, All Rights Reserved
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
#
|
||||||
|
# Use this file to export an Mbed Crypto release tarball as follows, from the
|
||||||
|
# top level of the mbedtls repo:
|
||||||
|
#
|
||||||
|
# 1) make -f scripts/mbed_crypto.make
|
||||||
|
#
|
||||||
|
|
||||||
|
.PHONY: all clean FORCE
|
||||||
|
|
||||||
|
all: mbedcrypto.tar.gz
|
||||||
|
|
||||||
|
#
|
||||||
|
# Crypto-necessary library files
|
||||||
|
#
|
||||||
|
LIB_FILES := \
|
||||||
|
aes.c \
|
||||||
|
aesni.c \
|
||||||
|
arc4.c \
|
||||||
|
asn1parse.c \
|
||||||
|
asn1write.c \
|
||||||
|
base64.c \
|
||||||
|
bignum.c \
|
||||||
|
blowfish.c \
|
||||||
|
camellia.c \
|
||||||
|
ccm.c \
|
||||||
|
cipher.c \
|
||||||
|
cipher_wrap.c \
|
||||||
|
cmac.c \
|
||||||
|
ctr_drbg.c \
|
||||||
|
des.c \
|
||||||
|
ecdsa.c \
|
||||||
|
ecp.c \
|
||||||
|
ecp_curves.c \
|
||||||
|
entropy.c \
|
||||||
|
entropy_poll.c \
|
||||||
|
gcm.c \
|
||||||
|
hmac_drbg.c \
|
||||||
|
md.c \
|
||||||
|
md2.c \
|
||||||
|
md4.c \
|
||||||
|
md5.c \
|
||||||
|
md_wrap.c \
|
||||||
|
oid.c \
|
||||||
|
pem.c \
|
||||||
|
pk.c \
|
||||||
|
pk_wrap.c \
|
||||||
|
pkcs12.c \
|
||||||
|
pkcs5.c \
|
||||||
|
pkparse.c \
|
||||||
|
pkwrite.c \
|
||||||
|
platform.c \
|
||||||
|
platform_util.c \
|
||||||
|
psa_crypto.c \
|
||||||
|
ripemd160.c \
|
||||||
|
rsa_internal.c \
|
||||||
|
rsa.c \
|
||||||
|
sha1.c \
|
||||||
|
sha256.c \
|
||||||
|
sha512.c \
|
||||||
|
xtea.c \
|
||||||
|
# Don't delete this line.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Crypto-necessary include files
|
||||||
|
#
|
||||||
|
INC_FILES := \
|
||||||
|
mbedcrypto/aes.h \
|
||||||
|
mbedcrypto/aesni.h \
|
||||||
|
mbedcrypto/arc4.h \
|
||||||
|
mbedcrypto/asn1.h \
|
||||||
|
mbedcrypto/asn1write.h \
|
||||||
|
mbedcrypto/base64.h \
|
||||||
|
mbedcrypto/bignum.h \
|
||||||
|
mbedcrypto/blowfish.h \
|
||||||
|
mbedcrypto/bn_mul.h \
|
||||||
|
mbedcrypto/camellia.h \
|
||||||
|
mbedcrypto/ccm.h \
|
||||||
|
mbedcrypto/certs.h \
|
||||||
|
mbedcrypto/check_config.h \
|
||||||
|
mbedcrypto/cipher.h \
|
||||||
|
mbedcrypto/cipher_internal.h \
|
||||||
|
mbedcrypto/cmac.h \
|
||||||
|
mbedcrypto/config.h \
|
||||||
|
mbedcrypto/ctr_drbg.h \
|
||||||
|
mbedcrypto/des.h \
|
||||||
|
mbedcrypto/ecdsa.h \
|
||||||
|
mbedcrypto/ecp.h \
|
||||||
|
mbedcrypto/ecp_internal.h \
|
||||||
|
mbedcrypto/entropy.h \
|
||||||
|
mbedcrypto/entropy_poll.h \
|
||||||
|
mbedcrypto/error.h \
|
||||||
|
mbedcrypto/gcm.h \
|
||||||
|
mbedcrypto/hmac_drbg.h \
|
||||||
|
mbedcrypto/md.h \
|
||||||
|
mbedcrypto/md2.h \
|
||||||
|
mbedcrypto/md4.h \
|
||||||
|
mbedcrypto/md5.h \
|
||||||
|
mbedcrypto/md_internal.h \
|
||||||
|
mbedcrypto/oid.h \
|
||||||
|
mbedcrypto/pem.h \
|
||||||
|
mbedcrypto/pk.h \
|
||||||
|
mbedcrypto/pk_internal.h \
|
||||||
|
mbedcrypto/pkcs11.h \
|
||||||
|
mbedcrypto/pkcs12.h \
|
||||||
|
mbedcrypto/pkcs5.h \
|
||||||
|
mbedcrypto/platform.h \
|
||||||
|
mbedcrypto/platform_util.h \
|
||||||
|
mbedcrypto/ripemd160.h \
|
||||||
|
mbedcrypto/rsa.h \
|
||||||
|
mbedcrypto/rsa_internal.h \
|
||||||
|
mbedcrypto/sha1.h \
|
||||||
|
mbedcrypto/sha256.h \
|
||||||
|
mbedcrypto/sha512.h \
|
||||||
|
mbedcrypto/threading.h \
|
||||||
|
mbedcrypto/xtea.h \
|
||||||
|
psa/crypto.h \
|
||||||
|
psa/crypto_extra.h \
|
||||||
|
psa/crypto_platform.h \
|
||||||
|
psa/crypto_sizes.h \
|
||||||
|
psa/crypto_struct.h \
|
||||||
|
# Don't delete this line.
|
||||||
|
|
||||||
|
TEST_FILES := \
|
||||||
|
tests/scripts/generate_test_code.py \
|
||||||
|
tests/scripts/mbedtls_test.py \
|
||||||
|
tests/scripts/test_generate_test_code.py \
|
||||||
|
tests/scripts/run-test-suites.pl \
|
||||||
|
tests/suites/helpers.function \
|
||||||
|
tests/suites/host_test.function \
|
||||||
|
tests/suites/main_test.function \
|
||||||
|
tests/suites/target_test.function \
|
||||||
|
tests/suites/test_suite_psa_crypto.data \
|
||||||
|
tests/suites/test_suite_psa_crypto.function \
|
||||||
|
# Don't delete this line.
|
||||||
|
|
||||||
|
OTHER_FILES := \
|
||||||
|
LICENSE \
|
||||||
|
VERSION.txt \
|
||||||
|
programs/psa/crypto_examples.c \
|
||||||
|
programs/psa/key_ladder_demo.c \
|
||||||
|
programs/psa/key_ladder_demo.sh \
|
||||||
|
programs/psa/psa_constant_names.c \
|
||||||
|
scripts/config.pl \
|
||||||
|
scripts/generate_psa_constants.py \
|
||||||
|
# Don't delete this line.
|
||||||
|
|
||||||
|
# Prepend destination directory
|
||||||
|
LIB_FILES := $(addprefix crypto/library/,$(LIB_FILES))
|
||||||
|
INC_FILES := $(addprefix crypto/include/,$(INC_FILES))
|
||||||
|
TEST_FILES := $(addprefix crypto/,$(TEST_FILES))
|
||||||
|
OTHER_FILES := $(addprefix crypto/,$(OTHER_FILES))
|
||||||
|
|
||||||
|
define rename_mbedcrypto
|
||||||
|
@sed -i -e 's/Mbed TLS/Mbed Crypto/g' $(1)
|
||||||
|
@sed -i -e 's/mbed TLS/Mbed Crypto/g' $(1)
|
||||||
|
@sed -i -e 's/MBEDTLS_/MBEDCRYPTO_/g' $(1)
|
||||||
|
@sed -i -e 's/mbedtls/mbedcrypto/g' $(1)
|
||||||
|
@sed -i -e 's/MbedTls/MbedCrypto/g' $(1)
|
||||||
|
@sed -i -e 's/include\/mbedtls/include\/mbedcrypto/g' $(1)
|
||||||
|
endef
|
||||||
|
|
||||||
|
crypto/include/mbedcrypto/config.h: configs/config-psa-crypto.h
|
||||||
|
@echo $@
|
||||||
|
@mkdir -p $(dir $@)
|
||||||
|
@cp $< $@
|
||||||
|
@#Rename the file in the comments
|
||||||
|
@sed -i -e 's/config-psa-crypto.h/config.h/g' $@
|
||||||
|
$(call rename_mbedcrypto,$@)
|
||||||
|
|
||||||
|
crypto/tests/data_files/%: tests/data_files/%
|
||||||
|
@echo $@
|
||||||
|
@mkdir -p $(dir $@)
|
||||||
|
@cp $< $@
|
||||||
|
@#Don't rename things inside data files
|
||||||
|
|
||||||
|
crypto/include/mbedcrypto/%.h: include/mbedtls/%.h
|
||||||
|
@echo $@
|
||||||
|
@mkdir -p $(dir $@)
|
||||||
|
@cp $< $@
|
||||||
|
$(call rename_mbedcrypto,$@)
|
||||||
|
|
||||||
|
crypto/LICENSE: apache-2.0.txt
|
||||||
|
@echo $@
|
||||||
|
@mkdir -p $(dir $@)
|
||||||
|
@cp $< $@
|
||||||
|
@#Don't rename anything in the license
|
||||||
|
|
||||||
|
crypto/%: %
|
||||||
|
@echo $@
|
||||||
|
@mkdir -p $(dir $@)
|
||||||
|
@cp $< $@
|
||||||
|
$(call rename_mbedcrypto,$@)
|
||||||
|
|
||||||
|
crypto/VERSION.txt: FORCE
|
||||||
|
@git describe --tags --abbrev=12 --dirty > $@
|
||||||
|
|
||||||
|
mbedcrypto.tar.gz: $(LIB_FILES) $(INC_FILES) $(TEST_FILES) $(OTHER_FILES)
|
||||||
|
@echo $@
|
||||||
|
@tar czf mbedcrypto.tar.gz crypto
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@echo clean
|
||||||
|
@rm -rf mbedcrypto.tar.gz \
|
||||||
|
$(LIB_FILES) $(INC_FILES) $(TEST_FILES) $(OTHER_FILES)
|
||||||
|
|
||||||
|
FORCE:
|
||||||
|
|
||||||
|
# vi: ft=make
|
|
@ -456,6 +456,14 @@ msg "test: doxygen warnings" # ~ 3s
|
||||||
cleanup
|
cleanup
|
||||||
tests/scripts/doxygen.sh
|
tests/scripts/doxygen.sh
|
||||||
|
|
||||||
|
msg "test: Mbed Crypto exporter " # ~ 30s
|
||||||
|
cleanup
|
||||||
|
make -f scripts/mbed_crypto.make
|
||||||
|
cd crypto
|
||||||
|
make test
|
||||||
|
make clean
|
||||||
|
cd ..
|
||||||
|
make -f scripts/mbed_crypto.make clean
|
||||||
|
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
|
|
Loading…
Reference in a new issue