diff options
author | Simo Sorce <simo@redhat.com> | 2014-04-09 14:02:08 -0400 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2014-04-11 17:25:54 -0400 |
commit | 277ed07e8810dbd0adbbf213f56246394753f452 (patch) | |
tree | 49d71aeee0c62417212c72687c5a8afcaed7cf9a /ipsilon/tools/certs.py | |
parent | 904898b83d90d3d7f83c574b27a79b98a23e3734 (diff) | |
download | ipsilon-277ed07e8810dbd0adbbf213f56246394753f452.tar.gz ipsilon-277ed07e8810dbd0adbbf213f56246394753f452.tar.xz ipsilon-277ed07e8810dbd0adbbf213f56246394753f452.zip |
Move accessory functions to a generic tools module
This will allow to easly share the module with install tools, without the
need to install server side modules in clients
Signed-off-by: Simo Sorce <simo@redhat.com>
Diffstat (limited to 'ipsilon/tools/certs.py')
-rwxr-xr-x | ipsilon/tools/certs.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/ipsilon/tools/certs.py b/ipsilon/tools/certs.py new file mode 100755 index 0000000..dc08e08 --- /dev/null +++ b/ipsilon/tools/certs.py @@ -0,0 +1,57 @@ +#!/usr/bin/python +# +# Copyright (C) 2014 Simo Sorce <simo@redhat.com> +# +# see file 'COPYING' for use and warranty information +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +from subprocess import Popen +import os +import string + + +class Certificate(object): + + def __init__(self, path=None): + self.subject = None + self.path = path + self.key = None + self.cert = None + + def generate(self, prefix, subject): + self.key = '%s.key' % prefix + self.cert = '%s.pem' % prefix + self.subject = '/CN=%s' % subject + command = ['openssl', + 'req', '-x509', '-batch', '-days', '1825', + '-newkey', 'rsa:2048', '-nodes', '-subj', self.subject, + '-keyout', os.path.join(self.path, self.key), + '-out', os.path.join(self.path, self.cert)] + proc = Popen(command) + proc.wait() + + def get_cert(self): + if not self.cert: + raise NameError('Invalid certificate name: %s' % self.cert) + with open(os.path.join(self.path, self.cert), 'r') as f: + cert = f.readlines() + + #poor man stripping of BEGIN/END lines + if cert[0] == '-----BEGIN CERTIFICATE-----\n': + cert = cert[1:] + if cert[-1] == '-----END CERTIFICATE-----\n': + cert = cert[:-1] + + return string.join(cert) |