diff --git a/reaction-mailcreate/createMails.py b/reaction-mailcreate/createMails.py index f1348fe32a6c248b4944baeabf606d2b88dd12bd..0ddfe6c4d08a792f048e496dc5769231ba76fed7 100755 --- a/reaction-mailcreate/createMails.py +++ b/reaction-mailcreate/createMails.py @@ -63,6 +63,7 @@ parser.add_argument('-o', '--output', dest='output', default='{based 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='', type=str.lower, choices=['', 'gpg', 'gpgsm'], help='signature method (default: ""); one of "", "gpg"') +parser.add_argument( '--signpass', dest='signpass', default=None, help='Password for the signature key (default: none); will be queried interactively if set to "-"') 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( '--sign-init-arg', dest='signinitarg', default={}, nargs=1, action='keyvalue', help='additional arguments to be passed to the signature-mechanism init 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}")') @@ -95,7 +96,7 @@ if (args.sender == 'Nobody <nobody@example.com>') or \ if not args.dryrun: import smtplib # Import dependencies for HTTTP interaction if necessary - if not args.webserver: + if args.webserver: import requests # Import dependencies for attachment file-magic if necessary @@ -137,6 +138,11 @@ if args.smtppass and not args.smtpuser: if args.smtppass == '-': args.smtppass = getpass.getpass('SMTP authentication password: ') +if args.signpass == '-': + args.signpass = getpass.getpass('Signature key password: ') +if args.signpass: + args.signarg['passphrase']: args.signpass + if args.sign and 'keyid' not in args.signarg: args.signarg['keyid'] = args.sender @@ -173,6 +179,8 @@ if args.verbose: print(f'Using "{args.sign}" as signature method.') if args.signarg: print(f'Using "{str(args.signarg)}" as signing argument(s).') + if args.signpass: + print('Using "{args.signpass}" as password for signature key.') else: print(f'Using no signature method.') print(f'Using "{args.subject.format_map(SafeDict(basedir=args.basedir, campaign=args.campaign, infix=args.infix, webserver=args.webserver, salt=args.salt))}" as mail subject.')