Add signature support

Change-Id: Idf5b6144b78e156e6c77e656cfe14097750259e5
diff --git a/dtbhtool/mkbootimg.c b/dtbhtool/mkbootimg.c
index 06fc95b..09e2e78 100644
--- a/dtbhtool/mkbootimg.c
+++ b/dtbhtool/mkbootimg.c
@@ -67,6 +67,7 @@
             "       [ --pagesize <pagesize> ]\n"
             "       [ --ramdisk_offset <address> ]\n"
             "       [ --dt <filename> ]\n"
+            "       [ --signature <filename> ]\n"
             "       -o|--output <filename>\n"
             );
     return 1;
@@ -109,6 +110,8 @@
     char *board = "";
     char *dt_fn = 0;
     void *dt_data = 0;
+    char *sig_fn = 0;
+    void *sig_data = 0;
     unsigned pagesize = 2048;
     int fd;
     SHA_CTX ctx;
@@ -162,6 +165,8 @@
             }
         } else if(!strcmp(arg, "--dt")) {
             dt_fn = val;
+        } else if(!strcmp(arg, "--signature")) {
+            sig_fn = val;
         } else {
             return usage();
         }
@@ -236,6 +241,14 @@
         }
     }
 
+    if(sig_fn) {
+        sig_data = load_file(sig_fn, 0);
+        if (sig_data == 0) {
+            fprintf(stderr,"error: could not load signature '%s'\n", sig_fn);
+            return 1;
+        }
+    }
+
     /* put a hash of the contents in the header so boot images can be
      * differentiated based on their first 2k.
      */
@@ -278,6 +291,11 @@
         if(write(fd, dt_data, hdr.dt_size) != hdr.dt_size) goto fail;
         if(write_padding(fd, pagesize, hdr.dt_size)) goto fail;
     }
+
+    if(sig_data) {
+        if(write(fd, sig_data, 256) != 256) goto fail;
+    }
+
     return 0;
 
 fail: