--- /dev/null
+import logging
+import subprocess
+
+log = logging.getLogger(__name__)
+
+
+class CommandError(Exception):
+ pass
+
+
+def run(*args):
+ cmd = ['openssl']
+ cmd.extend(args)
+ log.debug('executing "%s"' % ' '.join(cmd))
+ pipe = subprocess.Popen(cmd, stdout=subprocess.PIPE)
+ stdout, _ = pipe.communicate()
+ if pipe.returncode != 0:
+ raise CommandError('openssl exited with status %d' % (
+ pipe.returncode,))
+ return stdout
+
+
+def run_with_config(config_file, *args):
+ cmd = args[0]
+ args = args[1:]
+ return run(cmd, '-config', config_file, '-batch', *args)