upgrade to CAM v2.0
[stack/cam.git] / cam / openssl_wrap.py
diff --git a/cam/openssl_wrap.py b/cam/openssl_wrap.py
new file mode 100644 (file)
index 0000000..db44f26
--- /dev/null
@@ -0,0 +1,26 @@
+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)