diff --git a/src/tomahawk/TomahawkApp.cpp b/src/tomahawk/TomahawkApp.cpp index 60766fdf8..7955fb01b 100644 --- a/src/tomahawk/TomahawkApp.cpp +++ b/src/tomahawk/TomahawkApp.cpp @@ -114,6 +114,11 @@ #include #include #include +#include + +#include +#include +#include #include @@ -536,7 +541,7 @@ TomahawkApp::initHTTP() else { m_httpv2_session = QPointer< QxtHttpSessionManager >( new QxtHttpSessionManager() ); - m_httpv2_connector = QPointer< QxtHttpServerConnector >( new QxtHttpServerConnector ); + m_httpv2_connector = QPointer< QxtHttpsServerConnector >( new QxtHttpsServerConnector ); if ( m_httpv2_session.isNull() || m_httpv2_connector.isNull() ) { if ( !m_httpv2_session.isNull() ) @@ -558,6 +563,24 @@ TomahawkApp::initHTTP() Api_v2* api = new Api_v2( m_httpv2_session.data() ); m_httpv2_session->setStaticContentService( api ); + QCA::KeyGenerator generator; + QCA::PrivateKey key = generator.createRSA( 4096 ); + // TODO: Store and load this key with qtkeychain + QCA::CertificateOptions certOpts; + QCA::CertificateInfo certInfo; + certInfo.insert( QCA::CommonName, QString( "tomahawk-%1" ).arg( Database::instance()->impl()->dbid() ) ); + certInfo.insert( QCA::Organization, "Tomahawk Player" ); + certInfo.insert( QCA::OrganizationalUnit, "HTTP API" ); + certOpts.setInfo( certInfo ); + certOpts.setSerialNumber( QCA::BigInteger( QCA::SecureArray( QUuid::createUuid().toByteArray() ) ) ); + // TODO: Check for validity of ceritifcate and renew if needed + certOpts.setValidityPeriod( QDateTime::currentDateTime(), QDateTime::currentDateTime().addYears( 3 ) ); + QCA::Certificate cert( certOpts, key ); + QSslCertificate qcert( cert.toDER(), QSsl::Der); + QSslKey qkey( key.toDER().toByteArray(), QSsl::Rsa, QSsl::Der ); + QxtSslServer* sslServer = m_httpv2_connector->tcpServer(); + sslServer->setPrivateKey(qkey); + sslServer->setLocalCertificate(qcert); tLog() << "Starting HTTPd for API v2.0 on" << m_httpv2_session->listenInterface().toString() << m_httpv2_session->port(); if ( !m_httpv2_session->start() ) diff --git a/src/tomahawk/TomahawkApp.h b/src/tomahawk/TomahawkApp.h index 2bfc5f38b..ca59669d8 100644 --- a/src/tomahawk/TomahawkApp.h +++ b/src/tomahawk/TomahawkApp.h @@ -150,7 +150,7 @@ private: QPointer< QxtHttpServerConnector > m_httpv1_connector; QPointer< QxtHttpSessionManager > m_httpv1_session; - QPointer< QxtHttpServerConnector > m_httpv2_connector; + QPointer< QxtHttpsServerConnector > m_httpv2_connector; QPointer< QxtHttpSessionManager > m_httpv2_session; };