diff --git a/reaction-mailcreate/createMails.py b/reaction-mailcreate/createMails.py
index 1833f31e4cfc74a7ea50471f306a3e0c3022b1a8..c5a7b8033cbe9cc659fc388955d343f00c43ced0 100755
--- a/reaction-mailcreate/createMails.py
+++ b/reaction-mailcreate/createMails.py
@@ -41,6 +41,17 @@ if sys.version_info < (3, 8):
             setattr(namespace, self.dest, items)
     parser.register('action', 'extend', ExtendAction)
 
+class KeyValueAction(argparse.Action):
+    # Constructor calling
+    def __call__( self , parser, namespace,
+                 values, option_string = None):
+        for value in values:
+            # split it into key and value
+            key, value = value.split('=')
+            # assign into dictionary
+            getattr(namespace, self.dest)[key] = value
+parser.register('action', 'keyvalue', KeyValueAction)
+
 # Parse args
 parser.add_argument('-a', '--attach',     dest='attach',     default=[], nargs=1, action='extend', help='add attachment(s) to mail (default: None)')
 parser.add_argument('-b', '--basedir',    dest='basedir',    default='Mails', help='base directory for all output (default: "Mails")')
@@ -56,7 +67,7 @@ parser.add_argument('-o', '--output',     dest='output',     default='{basedir}/
 parser.add_argument('-R', '--reply-to',   dest='replyto',    default=None, help='reply-to mail address (default: None)')
 parser.add_argument(      '--salt',       dest='salt',       default=None, help='salt to use for hashing (default: random 8-byte hex string)')
 parser.add_argument(      '--sign',       dest='sign',       default='', choices=['', 'gpg'], help='signature method (default: ""); one of "", "gpg"')
-parser.add_argument(      '--sign-as',    dest='signas',     default=None, help='signature key to use (default: None meaning autoselect)')
+parser.add_argument(      '--sign-arg',   dest='signarg',    default={}, nargs=1, action='keyvalue', help='additional arguments to be passed to the signature call (default: None)')
 parser.add_argument('-s', '--subject',    dest='subject',    default='Security Challenge for {site} -- {campaign}{infix}', help='mail subject (default: "Security Challenge Message -- {campaign}{infix}")')
 parser.add_argument('-S', '--smtpserver', dest='smtpserver', default='localhost', help='SMTP server to use (default: "localhost"); port can be specified with "<host>:<port>" notation and takes precedence over implied ports and port specification')
 parser.add_argument(      '--smtpport',   dest='smtpport',   default=0, type=int, help='SMTP port to use (default: 25); takes precedence over implied ports')
@@ -73,6 +84,8 @@ parser.add_argument('-w', '--webserver',  dest='webserver',  default='https://ch
 parser.add_argument('infix',                                 default='', nargs='?', help='infix for ID purposes, default empty')
 args = parser.parse_args()
 
+print(args)
+
 class SafeDict(dict):
     def __missing__(self, key):
         return '{' + key + '}'