From 3d82bfc698165bb20f3c38d42f2b77ab855c1edf Mon Sep 17 00:00:00 2001 From: Christian Klinger Date: Thu, 29 Sep 2016 15:40:18 +0200 Subject: astyle. --- src/server/net/certmanager.cpp | 184 ++++++++++++++++++++--------------------- 1 file changed, 90 insertions(+), 94 deletions(-) (limited to 'src/server/net/certmanager.cpp') diff --git a/src/server/net/certmanager.cpp b/src/server/net/certmanager.cpp index b85966a..e91fed3 100644 --- a/src/server/net/certmanager.cpp +++ b/src/server/net/certmanager.cpp @@ -1,94 +1,90 @@ -/* - # Copyright (c) 2009 - OpenSLX Project, Computer Center University of Freiburg - # - # This program is free software distributed under the GPL version 2. - # See http://openslx.org/COPYING - # - # If you have any feedback please consult http://openslx.org/feedback and - # send your suggestions, praise, or complaints to feedback@openslx.org - # - # General information about OpenSLX can be found at http://openslx.org/ - # ----------------------------------------------------------------------------- - # src/util/CertManager.cpp - # - Manage SSL certificates - # - provide access by name - # ----------------------------------------------------------------------------- - */ - -#include "certmanager.h" -#include "../util/util.h" -#include -#include -#include -#include -#include -#include - -namespace CertManager -{ -static QMap _certs; -static QMap _keys; - -static void generateFiles(QString& key, QString& cert); -static bool loadFiles(QString& keyFile, QString& certFile, QSslKey &key, QSslCertificate &cert); - -bool getPrivateKeyAndCert(const QString &name, QSslKey &key, QSslCertificate &cert) -{ - if (_keys.contains(name)) - { - key = _keys[name]; - cert = _certs[name]; - return true; - } - QString certFile = QDir::homePath().append("/").append(CERTSTORAGE).append(name); - QString keyFile = certFile; - keyFile.append(".rsa"); - certFile.append(".crt"); - // - if (!loadFiles(keyFile, certFile, key, cert)) - { - generateFiles(keyFile, certFile); - if (!loadFiles(keyFile, certFile, key, cert)) - qDebug() << "error while creating cert and key files\n"; - return false; - } - _certs.insert(name, cert); - _keys.insert(name, key); - return true; -} - -static bool loadFiles(QString& keyFile, QString& certFile, QSslKey &key, QSslCertificate &cert) -{ - QFileInfo keyInfo(keyFile); - QFileInfo certInfo(certFile); - if (keyInfo.exists() && certInfo.exists()) - { // Both files exist, see if they're valid and return - QFile kf(keyFile); - kf.open(QFile::ReadOnly); - key = QSslKey(&kf, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey); - QList certlist = QSslCertificate::fromPath(certFile); - if (!key.isNull() && !certlist.empty()) - { - cert = certlist.first(); - if (!cert.isNull()) - { - return true; - } - } - } - return false; -} - -static void generateFiles(QString& key, QString& cert) -{ - char tmp[1000]; - remove(key.toLocal8Bit().data()); - remove(cert.toLocal8Bit().data()); - snprintf(tmp, 1000, - "openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -subj '/C=DE/ST=BaWue/L=Freiburg/CN=openslx.org' -keyout \"%s\" -out \"%s\"", - key.toLocal8Bit().data(), cert.toLocal8Bit().data()); - system(tmp); - snprintf(tmp, 1000, "chmod 0600 \"%s\" \"%s\"", key.toLocal8Bit().data(), cert.toLocal8Bit().data()); - system(tmp); -} -} +/* + # Copyright (c) 2009 - OpenSLX Project, Computer Center University of Freiburg + # + # This program is free software distributed under the GPL version 2. + # See http://openslx.org/COPYING + # + # If you have any feedback please consult http://openslx.org/feedback and + # send your suggestions, praise, or complaints to feedback@openslx.org + # + # General information about OpenSLX can be found at http://openslx.org/ + # ----------------------------------------------------------------------------- + # src/util/CertManager.cpp + # - Manage SSL certificates + # - provide access by name + # ----------------------------------------------------------------------------- + */ + +#include "certmanager.h" +#include "../util/util.h" +#include +#include +#include +#include +#include +#include + +namespace CertManager +{ +static QMap _certs; +static QMap _keys; + +static void generateFiles(QString& key, QString& cert); +static bool loadFiles(QString& keyFile, QString& certFile, QSslKey &key, QSslCertificate &cert); + +bool getPrivateKeyAndCert(const QString &name, QSslKey &key, QSslCertificate &cert) +{ + if (_keys.contains(name)) { + key = _keys[name]; + cert = _certs[name]; + return true; + } + QString certFile = QDir::homePath().append("/").append(CERTSTORAGE).append(name); + QString keyFile = certFile; + keyFile.append(".rsa"); + certFile.append(".crt"); + // + if (!loadFiles(keyFile, certFile, key, cert)) { + generateFiles(keyFile, certFile); + if (!loadFiles(keyFile, certFile, key, cert)) + qDebug() << "error while creating cert and key files\n"; + return false; + } + _certs.insert(name, cert); + _keys.insert(name, key); + return true; +} + +static bool loadFiles(QString& keyFile, QString& certFile, QSslKey &key, QSslCertificate &cert) +{ + QFileInfo keyInfo(keyFile); + QFileInfo certInfo(certFile); + if (keyInfo.exists() && certInfo.exists()) { + // Both files exist, see if they're valid and return + QFile kf(keyFile); + kf.open(QFile::ReadOnly); + key = QSslKey(&kf, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey); + QList certlist = QSslCertificate::fromPath(certFile); + if (!key.isNull() && !certlist.empty()) { + cert = certlist.first(); + if (!cert.isNull()) { + return true; + } + } + } + return false; +} + +static void generateFiles(QString& key, QString& cert) +{ + char tmp[1000]; + remove(key.toLocal8Bit().data()); + remove(cert.toLocal8Bit().data()); + snprintf(tmp, 1000, + "openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -subj '/C=DE/ST=BaWue/L=Freiburg/CN=openslx.org' -keyout \"%s\" -out \"%s\"", + key.toLocal8Bit().data(), cert.toLocal8Bit().data()); + system(tmp); + snprintf(tmp, 1000, "chmod 0600 \"%s\" \"%s\"", key.toLocal8Bit().data(), cert.toLocal8Bit().data()); + system(tmp); +} +} -- cgit v1.2.3-55-g7522