Merge pull request #59 from d3zd3z/pr/py-nosign

Add support for "signing" without a signature
diff --git a/scripts/imgtool.py b/scripts/imgtool.py
index fb09f96..e0a8106 100755
--- a/scripts/imgtool.py
+++ b/scripts/imgtool.py
@@ -35,7 +35,7 @@
     img = image.Image.load(args.infile, version=args.version,
             header_size=args.header_size,
             pad=args.pad)
-    key = keys.load(args.key)
+    key = keys.load(args.key) if args.key else None
     img.sign(key)
 
     if args.pad:
@@ -75,7 +75,7 @@
     getpub.add_argument('-k', '--key', metavar='filename', required=True)
 
     sign = subs.add_parser('sign', help='Sign an image with a private key')
-    sign.add_argument('-k', '--key', metavar='filename', required=True)
+    sign.add_argument('-k', '--key', metavar='filename')
     sign.add_argument("--align", type=alignment_value, required=True)
     sign.add_argument("-v", "--version", type=version.decode_version, required=True)
     sign.add_argument("-H", "--header-size", type=intparse, required=True)
diff --git a/scripts/imgtool/image.py b/scripts/imgtool/image.py
index c4bedfe..f270268 100644
--- a/scripts/imgtool/image.py
+++ b/scripts/imgtool/image.py
@@ -101,8 +101,9 @@
 
         tlv.add('SHA256', digest)
 
-        sig = key.sign(self.payload)
-        tlv.add(key.sig_tlv(), sig)
+        if key is not None:
+            sig = key.sign(self.payload)
+            tlv.add(key.sig_tlv(), sig)
 
         self.payload += tlv.get()
 
@@ -112,9 +113,11 @@
         The key is needed to know the type of signature, and
         approximate the size of the signature."""
 
-        flags = IMAGE_F[key.sig_type()]
+        flags = 0
         tlvsz = 0
-        tlvsz += TLV_HEADER_SIZE + key.sig_len()
+        if key is not None:
+            flags |= IMAGE_F[key.sig_type()]
+            tlvsz += TLV_HEADER_SIZE + key.sig_len()
 
         flags |= IMAGE_F['SHA256']
         tlvsz += 4 + hashlib.sha256().digest_size