summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaurav Shah <gauravsh@chromium.org>2010-03-31 13:26:55 -0700
committerGaurav Shah <gauravsh@chromium.org>2010-03-31 13:26:55 -0700
commitfc70d72aaab4d558e39ec43832375267603bfd93 (patch)
tree2b71e90cdb26c079a76ab82607e9bf7a7c97e6ff
parent5411c7a9f03f91bf2c1cd1cf852db9d4585a05c9 (diff)
downloadvboot-fc70d72aaab4d558e39ec43832375267603bfd93.tar.gz
VBoot Reference: Refactoring Part 3
Refactor and restructure reference code into individual self-contain modules. I have revamped the way the code is structured to make it easy to determine which parts belong in the firmware and which are used by userland tools. common/ - common utilities and stub functions (Firmware) cryptolib/ - crypto library (Firmware) misclibs/ - miscellaneous userland libraries (Userland) sctips/ - Miscellaenous scripts (Userland) tests/ - Tests (Userland) vfirmware/ - Verified Firmware Implementation vfirmware/firmware_image_fw.c (Firmware) vfirmware/firmware_image.c (Userland) vkernel/ - Verified Kernel Implementation vkernel/kernel_image_fw.c (Firmware) vkernel/kernel_image.c (Userland) Review URL: http://codereview.chromium.org/1581005
-rw-r--r--Makefile8
-rw-r--r--README2
-rw-r--r--common/Makefile3
-rw-r--r--common/include/rollback_index.h (renamed from include/rollback_index.h)0
-rw-r--r--common/include/tlcl.h (renamed from include/tlcl.h)0
-rw-r--r--common/include/utility.h (renamed from include/utility.h)0
-rw-r--r--common/rollback_index.c (renamed from utils/rollback_index.c)0
-rw-r--r--cryptolib/Makefile (renamed from crypto/Makefile)6
-rw-r--r--cryptolib/include/cryptolib.h (renamed from include/cryptolib.h)0
-rw-r--r--cryptolib/include/padding.h (renamed from include/padding.h)0
-rw-r--r--cryptolib/include/rsa.h (renamed from include/rsa.h)0
-rw-r--r--cryptolib/include/sha.h (renamed from include/sha.h)0
-rw-r--r--cryptolib/padding.c (renamed from crypto/padding.c)0
-rw-r--r--cryptolib/rsa.c (renamed from crypto/rsa.c)0
-rw-r--r--cryptolib/rsa_utility.c (renamed from crypto/rsa_utility.c)0
-rw-r--r--cryptolib/sha1.c (renamed from crypto/sha1.c)0
-rw-r--r--cryptolib/sha2.c (renamed from crypto/sha2.c)0
-rw-r--r--cryptolib/sha_utility.c (renamed from crypto/sha_utility.c)0
-rw-r--r--misclibs/Makefile24
-rw-r--r--misclibs/file_keys.c (renamed from utils/file_keys.c)0
-rw-r--r--misclibs/include/file_keys.h (renamed from include/file_keys.h)0
-rw-r--r--misclibs/include/signature_digest.h (renamed from include/signature_digest.h)0
-rw-r--r--misclibs/signature_digest.c (renamed from utils/signature_digest.c)0
-rwxr-xr-xscripts/genpadding.sh (renamed from crypto/genpadding.sh)0
-rwxr-xr-xscripts/sign_data.sh (renamed from utils/sign_data.sh)0
-rw-r--r--tests/Makefile21
-rwxr-xr-xtests/common.sh2
-rw-r--r--utility/Makefile (renamed from utils/Makefile)46
-rw-r--r--utility/dumpRSAPublicKey.c (renamed from utils/dumpRSAPublicKey.c)0
-rw-r--r--utility/firmware_utility.cc (renamed from utils/firmware_utility.cc)0
-rw-r--r--utility/include/firmware_utility.h (renamed from include/firmware_utility.h)0
-rw-r--r--utility/include/kernel_utility.h (renamed from include/kernel_utility.h)0
-rw-r--r--utility/include/verify_data.h (renamed from include/verify_data.h)0
-rw-r--r--utility/kernel_utility.cc (renamed from utils/kernel_utility.cc)0
-rw-r--r--utility/signature_digest_utility.c (renamed from utils/signature_digest_utility.c)0
-rw-r--r--utility/verify_data.c (renamed from utils/verify_data.c)2
-rw-r--r--vfirmware/Makefile19
-rw-r--r--vfirmware/firmware_image.c (renamed from utils/firmware_image.c)0
-rw-r--r--vfirmware/firmware_image_fw.c (renamed from utils/firmware_image_fw.c)0
-rw-r--r--vfirmware/include/firmware_image.h (renamed from include/firmware_image.h)0
-rw-r--r--vfirmware/include/firmware_image_fw.h (renamed from include/firmware_image_fw.h)0
-rw-r--r--vkernel/Makefile19
-rw-r--r--vkernel/include/kernel_image.h (renamed from include/kernel_image.h)0
-rw-r--r--vkernel/include/kernel_image_fw.h (renamed from include/kernel_image_fw.h)0
-rw-r--r--vkernel/kernel_image.c (renamed from utils/kernel_image.c)0
-rw-r--r--vkernel/kernel_image_fw.c (renamed from utils/kernel_image_fw.c)0
46 files changed, 107 insertions, 45 deletions
diff --git a/Makefile b/Makefile
index 9d80a43d..4db96fae 100644
--- a/Makefile
+++ b/Makefile
@@ -5,10 +5,12 @@
export CC ?= gcc
export CFLAGS = -Wall -DNDEBUG -O3 -Werror
export TOP = $(shell pwd)
-export INCLUDEDIR = $(TOP)/include
-export INCLUDES = -I$(INCLUDEDIR)
+export INCLUDES = \
+ -I$(TOP)/common/include \
+ -I$(TOP)/cryptolib/include \
+ -I$(TOP)/misclibs/include
-SUBDIRS=common crypto utils tests
+SUBDIRS=common cryptolib misclibs vfirmware vkernel utility tests
all:
for i in $(SUBDIRS); do \
diff --git a/README b/README
index 94d6b2ed..cfe461d0 100644
--- a/README
+++ b/README
@@ -9,7 +9,7 @@ include/ - Contains all the code headers. firmware_image.h and
kernel_image.h contains the structures that represent a verified boot
firmware and kernel image. Note that the
-crypto/ - Contains the implementation for the crypto library. This
+cryptolib/ - Contains the implementation for the crypto library. This
includes implementations for SHA1, SHA256, SHA512, and RSA signature
verification (for PKCS #1 v1.5 signatures).
diff --git a/common/Makefile b/common/Makefile
index b9b4a512..c3cd857d 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -2,8 +2,9 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-SRCS = utility_stub.c tlcl_stub.c
+SRCS = rollback_index.c tlcl_stub.c utility_stub.c
OBJS = $(SRCS:.c=.o)
+INCLUDES += -I./include/
all: libcommon.a
diff --git a/include/rollback_index.h b/common/include/rollback_index.h
index d4e47ac8..d4e47ac8 100644
--- a/include/rollback_index.h
+++ b/common/include/rollback_index.h
diff --git a/include/tlcl.h b/common/include/tlcl.h
index 2e6d3fd8..2e6d3fd8 100644
--- a/include/tlcl.h
+++ b/common/include/tlcl.h
diff --git a/include/utility.h b/common/include/utility.h
index 8619cd21..8619cd21 100644
--- a/include/utility.h
+++ b/common/include/utility.h
diff --git a/utils/rollback_index.c b/common/rollback_index.c
index c107f8e7..c107f8e7 100644
--- a/utils/rollback_index.c
+++ b/common/rollback_index.c
diff --git a/crypto/Makefile b/cryptolib/Makefile
index bd2eabd3..6fe364ab 100644
--- a/crypto/Makefile
+++ b/cryptolib/Makefile
@@ -2,17 +2,19 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+TOP ?= ../
SRCS = rsa.c sha1.c sha2.c padding.c rsa_utility.c sha_utility.c
OBJS = $(SRCS:.c=.o)
CFLAGS += -DUNROLL_LOOPS -DHAVE_ENDIAN_H -DHAVE_LITTLE_ENDIAN
+INCLUDES += -I./include/ -I$(TOP)/common/include/
all: libcrypto.a
libcrypto.a: $(OBJS)
ar rs libcrypto.a $(OBJS)
-padding.c: genpadding.sh
- ./genpadding.sh >$@
+padding.c: $(TOP)/scripts/genpadding.sh
+ $(TOP)/scripts/genpadding.sh >$@
.c.o: $(OBJS)
$(CC) $(CFLAGS) -ansi $(INCLUDES) -c $< -o $@
diff --git a/include/cryptolib.h b/cryptolib/include/cryptolib.h
index b65a71db..b65a71db 100644
--- a/include/cryptolib.h
+++ b/cryptolib/include/cryptolib.h
diff --git a/include/padding.h b/cryptolib/include/padding.h
index 8d8fc95f..8d8fc95f 100644
--- a/include/padding.h
+++ b/cryptolib/include/padding.h
diff --git a/include/rsa.h b/cryptolib/include/rsa.h
index 1a458037..1a458037 100644
--- a/include/rsa.h
+++ b/cryptolib/include/rsa.h
diff --git a/include/sha.h b/cryptolib/include/sha.h
index 16868942..16868942 100644
--- a/include/sha.h
+++ b/cryptolib/include/sha.h
diff --git a/crypto/padding.c b/cryptolib/padding.c
index 14d94458..14d94458 100644
--- a/crypto/padding.c
+++ b/cryptolib/padding.c
diff --git a/crypto/rsa.c b/cryptolib/rsa.c
index bfc64469..bfc64469 100644
--- a/crypto/rsa.c
+++ b/cryptolib/rsa.c
diff --git a/crypto/rsa_utility.c b/cryptolib/rsa_utility.c
index bf322844..bf322844 100644
--- a/crypto/rsa_utility.c
+++ b/cryptolib/rsa_utility.c
diff --git a/crypto/sha1.c b/cryptolib/sha1.c
index 41b729b1..41b729b1 100644
--- a/crypto/sha1.c
+++ b/cryptolib/sha1.c
diff --git a/crypto/sha2.c b/cryptolib/sha2.c
index 7f476567..7f476567 100644
--- a/crypto/sha2.c
+++ b/cryptolib/sha2.c
diff --git a/crypto/sha_utility.c b/cryptolib/sha_utility.c
index 4e266f7c..4e266f7c 100644
--- a/crypto/sha_utility.c
+++ b/cryptolib/sha_utility.c
diff --git a/misclibs/Makefile b/misclibs/Makefile
new file mode 100644
index 00000000..5aba67e8
--- /dev/null
+++ b/misclibs/Makefile
@@ -0,0 +1,24 @@
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+TOP ?= ../
+CC ?= gcc
+INCLUDES += -I./include \
+ -I$(TOP)/common/include \
+ -I$(TOP)/cryptolib/include \
+ -I$(TOP)/vfirmware/include \
+ -I$(TOP)/vkernel/include
+
+CFLAGS ?= -Wall -DNDEBUG -O3 -Werror $(INCLUDES)
+TOP ?= ../
+
+MISCLIB_OUT = file_keys.o signature_digest.o
+
+all: $(MISCLIB_OUT)
+
+.c.o:
+ $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
+
+clean:
+ rm -f $(MISCLIB_OUT)
diff --git a/utils/file_keys.c b/misclibs/file_keys.c
index 275ca6b7..275ca6b7 100644
--- a/utils/file_keys.c
+++ b/misclibs/file_keys.c
diff --git a/include/file_keys.h b/misclibs/include/file_keys.h
index eac4df0e..eac4df0e 100644
--- a/include/file_keys.h
+++ b/misclibs/include/file_keys.h
diff --git a/include/signature_digest.h b/misclibs/include/signature_digest.h
index 2376b972..2376b972 100644
--- a/include/signature_digest.h
+++ b/misclibs/include/signature_digest.h
diff --git a/utils/signature_digest.c b/misclibs/signature_digest.c
index d8d425ba..d8d425ba 100644
--- a/utils/signature_digest.c
+++ b/misclibs/signature_digest.c
diff --git a/crypto/genpadding.sh b/scripts/genpadding.sh
index baac71bd..baac71bd 100755
--- a/crypto/genpadding.sh
+++ b/scripts/genpadding.sh
diff --git a/utils/sign_data.sh b/scripts/sign_data.sh
index bd9e1be2..bd9e1be2 100755
--- a/utils/sign_data.sh
+++ b/scripts/sign_data.sh
diff --git a/tests/Makefile b/tests/Makefile
index 99e2d3a4..b14f74f6 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -4,15 +4,18 @@
CC ?= gcc
CFLAGS ?= -Wall -DNDEBUG -O3 -Werror
-INCLUDES ?= -I../include/
-TOP ?= ../
-
-BASE_LIBS = $(TOP)/crypto/libcrypto.a $(TOP)/common/libcommon.a
-IMAGE_LIBS = $(TOP)/utils/firmware_image.o \
- $(TOP)/utils/firmware_image_fw.o \
- $(TOP)/utils/kernel_image.o \
- $(TOP)/utils/kernel_image_fw.o
-UTIL_LIBS = $(TOP)/utils/file_keys.o $(TOP)/utils/signature_digest.o
+INCLUDES += -I./include \
+ -I../cryptolib/include \
+ -I../common/include \
+ -I../misclibs/include \
+ -I../vfirmware/include\
+ -I../vkernel/include
+BASE_LIBS = $(TOP)/cryptolib/libcrypto.a $(TOP)/common/libcommon.a
+IMAGE_LIBS = $(TOP)/vfirmware/firmware_image.o \
+ $(TOP)/vfirmware/firmware_image_fw.o \
+ $(TOP)/vkernel/kernel_image.o \
+ $(TOP)/vkernel/kernel_image_fw.o
+UTIL_LIBS = $(TOP)/misclibs/file_keys.o $(TOP)/misclibs/signature_digest.o
LIBS = $(IMAGE_LIBS) $(UTIL_LIBS) -lcrypto $(BASE_LIBS)
TEST_BINS = big_firmware_tests \
diff --git a/tests/common.sh b/tests/common.sh
index 82fdb850..421f6290 100755
--- a/tests/common.sh
+++ b/tests/common.sh
@@ -15,7 +15,7 @@ else
SCRIPT_DIR="`pwd`"/"`dirname $0`"
fi
-UTIL_DIR=`dirname ${SCRIPT_DIR}`/utils
+UTIL_DIR=`dirname ${SCRIPT_DIR}`/utility
TEST_DIR=${SCRIPT_DIR}
TESTKEY_DIR=${SCRIPT_DIR}/testkeys
TESTCASE_DIR=${SCRIPT_DIR}/testcases
diff --git a/utils/Makefile b/utility/Makefile
index 81de74f1..a5f6f584 100644
--- a/utils/Makefile
+++ b/utility/Makefile
@@ -2,24 +2,25 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+TOP ?= ../
CC ?= gcc
CXX ?= g++
-CFLAGS ?= -Wall -DNDEBUG -O3 -Werror
-INCLUDES ?= -I../include/
-TOP ?= ../
-
-LIBS = file_keys.o \
- firmware_image.o \
- firmware_image_fw.o \
- kernel_image.o \
- kernel_image_fw.o \
- rollback_index.o \
- signature_digest.o
-
-FIRMWARELIBS = $(TOP)/crypto/libcrypto.a $(TOP)/common/libcommon.a
-
-TARGET_BINS = $(LIBS) \
- dumpRSAPublicKey \
+INCLUDES += -I./include \
+ -I../cryptolib/include \
+ -I../common/include \
+ -I../misclibs/include \
+ -I../vfirmware/include\
+ -I../vkernel/include
+CFLAGS ?= -Wall -DNDEBUG -O3 -Werror $(INCLUDES)
+LIBS = $(TOP)/misclibs/file_keys.o \
+ $(TOP)/misclibs/signature_digest.o \
+ $(TOP)/vfirmware/firmware_image.o \
+ $(TOP)/vfirmware/firmware_image_fw.o \
+ $(TOP)/vkernel/kernel_image.o \
+ $(TOP)/vkernel/kernel_image_fw.o
+FIRMWARELIBS = $(TOP)/cryptolib/libcrypto.a $(TOP)/common/libcommon.a
+
+TARGET_BINS = dumpRSAPublicKey \
firmware_utility \
kernel_utility \
signature_digest_utility \
@@ -27,23 +28,14 @@ TARGET_BINS = $(LIBS) \
all: $(TARGET_BINS)
-.c.o:
- $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
-
dumpRSAPublicKey: dumpRSAPublicKey.c
- $(CC) $(CFLAGS) $< -o $@ -lcrypto
-
-firmware_image_fw.o: firmware_image_fw.c
- $(CC) $(CFLAGS) -ansi $(INCLUDES) -c $^ -o $@
+ $(CC) $(CFLAGS) $(INCLUDES) $< -o $@ -lcrypto
firmware_utility: firmware_utility.cc $(LIBS) $(FIRMWARELIBS)
$(CXX) $(CFLAGS) $(INCLUDES) -ggdb -D__STDC_LIMIT_MACROS $< \
-o $@ $(FIRMWARELIBS) $(LIBS) $(TOP)/common/libcommon.a \
-lcrypto
-kernel_image_fw.o: kernel_image_fw.c
- $(CC) $(CFLAGS) -ansi $(INCLUDES) -c $< -o $@
-
kernel_utility: kernel_utility.cc $(LIBS) $(FIRMWARELIBS)
$(CXX) $(CFLAGS) $(INCLUDES) -ggdb -D__STDC_LIMIT_MACROS $< \
-o $@ $(FIRMWARELIBS) $(LIBS) $(TOP)/common/libcommon.a \
@@ -56,5 +48,5 @@ verify_data: verify_data.c $(LIBS) $(FIRMWARELIBS)
$(CC) $(CFLAGS) $(INCLUDES) $< -o $@ $(LIBS) $(FIRMWARELIBS) -lcrypto
clean:
- rm -f $(TARGET_BINS) $(LIBS)
+ rm -f $(TARGET_BINS)
diff --git a/utils/dumpRSAPublicKey.c b/utility/dumpRSAPublicKey.c
index 837303cb..837303cb 100644
--- a/utils/dumpRSAPublicKey.c
+++ b/utility/dumpRSAPublicKey.c
diff --git a/utils/firmware_utility.cc b/utility/firmware_utility.cc
index 85275e73..85275e73 100644
--- a/utils/firmware_utility.cc
+++ b/utility/firmware_utility.cc
diff --git a/include/firmware_utility.h b/utility/include/firmware_utility.h
index 6c2b735a..6c2b735a 100644
--- a/include/firmware_utility.h
+++ b/utility/include/firmware_utility.h
diff --git a/include/kernel_utility.h b/utility/include/kernel_utility.h
index 1cb7f1ae..1cb7f1ae 100644
--- a/include/kernel_utility.h
+++ b/utility/include/kernel_utility.h
diff --git a/include/verify_data.h b/utility/include/verify_data.h
index 51b9fd6d..51b9fd6d 100644
--- a/include/verify_data.h
+++ b/utility/include/verify_data.h
diff --git a/utils/kernel_utility.cc b/utility/kernel_utility.cc
index 9fedeb5f..9fedeb5f 100644
--- a/utils/kernel_utility.cc
+++ b/utility/kernel_utility.cc
diff --git a/utils/signature_digest_utility.c b/utility/signature_digest_utility.c
index 6c8891b9..6c8891b9 100644
--- a/utils/signature_digest_utility.c
+++ b/utility/signature_digest_utility.c
diff --git a/utils/verify_data.c b/utility/verify_data.c
index e6cc8529..c9da2401 100644
--- a/utils/verify_data.c
+++ b/utility/verify_data.c
@@ -21,7 +21,7 @@
/* ANSI Color coding sequences. */
#define COL_GREEN "\e[1;32m"
-#define COL_RED "\e[0;31m]"
+#define COL_RED "\e[0;31m"
#define COL_STOP "\e[m"
uint8_t* read_signature(char* input_file, int len) {
diff --git a/vfirmware/Makefile b/vfirmware/Makefile
new file mode 100644
index 00000000..a915c316
--- /dev/null
+++ b/vfirmware/Makefile
@@ -0,0 +1,19 @@
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+CC ?= gcc
+INCLUDES += -I./include \
+ -I../cryptolib/include \
+ -I../common/include \
+ -I../misclibs/include
+CFLAGS ?= -Wall -DNDEBUG -O3 -Werror
+FIRMWARE_OUT = firmware_image_fw.o firmware_image.o
+
+all: $(FIRMWARE_OUT)
+
+.c.o:
+ $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
+
+clean:
+ rm -f $(FIRMWARE_OUT)
diff --git a/utils/firmware_image.c b/vfirmware/firmware_image.c
index b633d1a7..b633d1a7 100644
--- a/utils/firmware_image.c
+++ b/vfirmware/firmware_image.c
diff --git a/utils/firmware_image_fw.c b/vfirmware/firmware_image_fw.c
index 5387d95b..5387d95b 100644
--- a/utils/firmware_image_fw.c
+++ b/vfirmware/firmware_image_fw.c
diff --git a/include/firmware_image.h b/vfirmware/include/firmware_image.h
index 19a87d9b..19a87d9b 100644
--- a/include/firmware_image.h
+++ b/vfirmware/include/firmware_image.h
diff --git a/include/firmware_image_fw.h b/vfirmware/include/firmware_image_fw.h
index dc6db90d..dc6db90d 100644
--- a/include/firmware_image_fw.h
+++ b/vfirmware/include/firmware_image_fw.h
diff --git a/vkernel/Makefile b/vkernel/Makefile
new file mode 100644
index 00000000..fa69fc9e
--- /dev/null
+++ b/vkernel/Makefile
@@ -0,0 +1,19 @@
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+CC ?= gcc
+INCLUDES += -I./include \
+ -I../cryptolib/include \
+ -I../common/include \
+ -I../misclibs/include
+CFLAGS ?= -Wall -DNDEBUG -O3 -Werror
+KERNEL_OUT = kernel_image_fw.o kernel_image.o
+
+all: $(KERNEL_OUT)
+
+.c.o:
+ $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
+
+clean:
+ rm -f $(KERNEL_OUT)
diff --git a/include/kernel_image.h b/vkernel/include/kernel_image.h
index 0ea8adb3..0ea8adb3 100644
--- a/include/kernel_image.h
+++ b/vkernel/include/kernel_image.h
diff --git a/include/kernel_image_fw.h b/vkernel/include/kernel_image_fw.h
index 6446e8c1..6446e8c1 100644
--- a/include/kernel_image_fw.h
+++ b/vkernel/include/kernel_image_fw.h
diff --git a/utils/kernel_image.c b/vkernel/kernel_image.c
index 8c8c0922..8c8c0922 100644
--- a/utils/kernel_image.c
+++ b/vkernel/kernel_image.c
diff --git a/utils/kernel_image_fw.c b/vkernel/kernel_image_fw.c
index 734111c6..734111c6 100644
--- a/utils/kernel_image_fw.c
+++ b/vkernel/kernel_image_fw.c