diff --git a/7-SGX_Hands-on/src/app/embedded_device.c b/7-SGX_Hands-on/src/app/embedded_device.c index c4782cd..390e0e2 100644 --- a/7-SGX_Hands-on/src/app/embedded_device.c +++ b/7-SGX_Hands-on/src/app/embedded_device.c @@ -1,6 +1,8 @@ #include #include #include +#include +#include "util.h" #include #include @@ -19,11 +21,6 @@ typedef struct { uint8_t *public_key_path; } embedded_device_args; -static void syntax_exit() { - fprintf(stderr, "syntax error!\n"); - exit(EXIT_FAILURE); -} - static EVP_PKEY *read_public_key(uint8_t *public_key_file, EVP_PKEY **key) { if(public_key_file == NULL) { fprintf(stderr, "public_key_file is a null pointer!\n"); @@ -63,16 +60,6 @@ static void hash_firmware(uint8_t *firmware_path, EVP_MD_CTX **ctx) { exit: fclose(fd); } -static void read_signature(uint8_t *signature, size_t *signature_size) { - FILE *fd = stdin; - if(fd == NULL) { - fprintf(stderr, "failed to stdin!\n"); - } - - // TODO: ersmal ne pause :) - -} - int main(int argc, char **argv) { embedded_device_args args = { .firmware_path = NULL, @@ -110,11 +97,15 @@ int main(int argc, char **argv) { goto clean; } - read_signature(NULL, NULL); - goto clean; + uint8_t signature[BUFSIZE] = {0}; + size_t signature_size = read(0, signature, BUFSIZE); + if(signature_size < 70) { + printf("failed to read firmware signature\n"); + goto clean; + } hash_firmware(args.firmware_path, &ctx); - if (EVP_DigestVerifyFinal(ctx, NULL, 0) != 1) { + if (EVP_DigestVerifyFinal(ctx, signature, signature_size) != 1) { printf("failed to verify firmware signature\n"); goto clean; }