VBoot Reference: Refactor Part 2 - Crypto Libraries
Removing multiple top level includes - now padding.h, rsa.h and sha.h are used internally and cryptolib.h must be used instead for all modules that wish to use crypto functions.
I am trying to separate refactors involving code movement from one file to another, and the movement of files themselves into separate CLs so that it's clear what changed.
Review URL: http://codereview.chromium.org/1574005
diff --git a/utils/file_keys.c b/utils/file_keys.c
index 8438351..275ca6b 100644
--- a/utils/file_keys.c
+++ b/utils/file_keys.c
@@ -15,8 +15,7 @@
#include <sys/types.h>
#include <unistd.h>
-#include "padding.h"
-#include "rsa_utility.h"
+#include "cryptolib.h"
#include "signature_digest.h"
#include "utility.h"
@@ -60,6 +59,27 @@
return key;
}
+uint8_t* DigestFile(char* input_file, int sig_algorithm) {
+ int input_fd, len;
+ uint8_t data[SHA1_BLOCK_SIZE];
+ uint8_t* digest = NULL;
+ DigestContext ctx;
+
+ if( (input_fd = open(input_file, O_RDONLY)) == -1 ) {
+ debug("Couldn't open input file.\n");
+ return NULL;
+ }
+ DigestInit(&ctx, sig_algorithm);
+ while ( (len = read(input_fd, data, SHA1_BLOCK_SIZE)) ==
+ SHA1_BLOCK_SIZE)
+ DigestUpdate(&ctx, data, len);
+ if (len != -1)
+ DigestUpdate(&ctx, data, len);
+ digest = DigestFinal(&ctx);
+ close(input_fd);
+ return digest;
+}
+
uint8_t* SignatureFile(const char* input_file, const char* key_file,
int algorithm) {
char* sign_utility = "./sign_data.sh";
diff --git a/utils/firmware_image.c b/utils/firmware_image.c
index 803ef89..b633d1a 100644
--- a/utils/firmware_image.c
+++ b/utils/firmware_image.c
@@ -7,16 +7,13 @@
#include "firmware_image.h"
-#include <fcntl.h>
-#include <limits.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <fcntl.h>
#include <unistd.h>
+#include "cryptolib.h"
#include "file_keys.h"
-#include "padding.h"
-#include "rsa_utility.h"
-#include "sha_utility.h"
#include "signature_digest.h"
#include "utility.h"
diff --git a/utils/firmware_image_fw.c b/utils/firmware_image_fw.c
index f5c7d89..5387d95 100644
--- a/utils/firmware_image_fw.c
+++ b/utils/firmware_image_fw.c
@@ -8,10 +8,8 @@
#include "firmware_image_fw.h"
-#include "padding.h"
+#include "cryptolib.h"
#include "rollback_index.h"
-#include "rsa_utility.h"
-#include "sha_utility.h"
#include "utility.h"
/* Macro to determine the size of a field structure in the FirmwareImage
diff --git a/utils/firmware_utility.cc b/utils/firmware_utility.cc
index 6b543f5..85275e7 100644
--- a/utils/firmware_utility.cc
+++ b/utils/firmware_utility.cc
@@ -17,11 +17,9 @@
#include <iostream>
extern "C" {
+#include "cryptolib.h"
#include "file_keys.h"
#include "firmware_image.h"
-#include "padding.h"
-#include "rsa_utility.h"
-#include "sha_utility.h"
#include "utility.h"
}
diff --git a/utils/kernel_image.c b/utils/kernel_image.c
index e66ce38..8c8c092 100644
--- a/utils/kernel_image.c
+++ b/utils/kernel_image.c
@@ -14,11 +14,9 @@
#include <sys/stat.h>
#include <unistd.h>
+#include "cryptolib.h"
#include "file_keys.h"
-#include "padding.h"
#include "rollback_index.h"
-#include "rsa_utility.h"
-#include "sha_utility.h"
#include "signature_digest.h"
#include "utility.h"
diff --git a/utils/kernel_image_fw.c b/utils/kernel_image_fw.c
index 466d34a..734111c 100644
--- a/utils/kernel_image_fw.c
+++ b/utils/kernel_image_fw.c
@@ -8,10 +8,8 @@
#include "kernel_image_fw.h"
-#include "padding.h"
+#include "cryptolib.h"
#include "rollback_index.h"
-#include "rsa_utility.h"
-#include "sha_utility.h"
#include "utility.h"
/* Macro to determine the size of a field structure in the KernelImage
diff --git a/utils/kernel_utility.cc b/utils/kernel_utility.cc
index 9a4f34b..9fedeb5 100644
--- a/utils/kernel_utility.cc
+++ b/utils/kernel_utility.cc
@@ -17,11 +17,9 @@
#include <iostream>
extern "C" {
+#include "cryptolib.h"
#include "file_keys.h"
#include "kernel_image.h"
-#include "padding.h"
-#include "rsa_utility.h"
-#include "sha_utility.h"
#include "utility.h"
}
diff --git a/utils/signature_digest.c b/utils/signature_digest.c
index 8f4c238..d8d425b 100644
--- a/utils/signature_digest.c
+++ b/utils/signature_digest.c
@@ -13,9 +13,7 @@
#include <stdlib.h>
#include <unistd.h>
-#include "padding.h"
-#include "sha.h"
-#include "sha_utility.h"
+#include "cryptolib.h"
#include "utility.h"
uint8_t* PrependDigestInfo(int algorithm, uint8_t* digest) {
diff --git a/utils/verify_data.c b/utils/verify_data.c
index 4b0b785..e6cc852 100644
--- a/utils/verify_data.c
+++ b/utils/verify_data.c
@@ -15,11 +15,8 @@
#include <sys/types.h>
#include <unistd.h>
+#include "cryptolib.h"
#include "file_keys.h"
-#include "sha_utility.h"
-#include "padding.h"
-#include "rsa.h"
-#include "rsa_utility.h"
#include "verify_data.h"
/* ANSI Color coding sequences. */