Separate UI to new file, still not quite complete.

Also fixed code style in files, and settings used by CLion.
This commit is contained in:
Darren VanBuren 2017-07-09 15:17:24 -07:00
parent 4d6ff1e9f8
commit 851c2f79e3
6 changed files with 184 additions and 105 deletions

177
main.cpp
View file

@ -1,10 +1,12 @@
#include <iostream>
#include "dns.h"
// NSPR include files
#include <prerror.h>
#include <prinit.h>
#include <prnetdb.h>
#include <prthread.h>
#include <nspr.h>
// NSS include files
@ -15,125 +17,108 @@
#include <sslproto.h>
#include <prio.h>
// Qt Include Files, should come after NSPR / NSS
#include <QtWidgets>
#include <QPlainTextEdit>
// Qt-dependent Include Files, should come after NSPR / NSS
#include "ui.h"
NSSInitContext *nssContext;
SECMODModule *builtInRootsMod;
// PK11 Password Function typedef
typedef char *(*PK11PasswordFunc)(
PK11SlotInfo *slot,
PRBool retry,
void *arg);
PK11SlotInfo *slot,
PRBool retry,
void *arg);
void init() {
// NSPR Init
PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 0);
// NSPR Init
PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 0);
// NSS Init
nssContext =
NSS_InitContext("sql:/etc/pki/nssdb", "", "", "", NULL, NSS_INIT_READONLY | NSS_INIT_PK11RELOAD);
// NSS Init
nssContext =
NSS_InitContext("sql:/etc/pki/nssdb", "", "", "", NULL, NSS_INIT_READONLY | NSS_INIT_PK11RELOAD);
if(nssContext == NULL) {
const PRErrorCode err = PR_GetError();
fprintf(stderr, "NSSInitContext failed: Error code %d: %s\n", err, PR_ErrorToName(err));
exit(1);
}
if (nssContext == NULL) {
const PRErrorCode err = PR_GetError();
fprintf(stderr, "NSSInitContext failed: Error code %d: %s\n", err, PR_ErrorToName(err));
exit(1);
}
// Ciphers to enable
static const PRUint16 goodCiphers[] = {
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
SSL_NULL_WITH_NULL_NULL // Sentinel value
};
// Ciphers to enable
static const PRUint16 goodCiphers[] = {
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
SSL_NULL_WITH_NULL_NULL // Sentinel value
};
PRBool foundGoodCipher = PR_FALSE;
for(const PRUint16 *p = goodCiphers; *p != SSL_NULL_WITH_NULL_NULL; ++p) {
PRInt32 policy;
if(SSL_CipherPolicyGet(*p, &policy) != SECSuccess) {
const PRErrorCode err = PR_GetError();
fprintf(stderr, "Error: Policy for cipher %u: error %d: %s\n",
(unsigned)*p, err, PR_ErrorToName(err));
exit(1);
}
if(policy == SSL_ALLOWED) {
// Policy allowed this cipher choice
fprintf(stderr, "Info: found cipher %x\n", (unsigned) *p);
foundGoodCipher = PR_TRUE;
break;
}
}
PRBool foundGoodCipher = PR_FALSE;
for (const PRUint16 *p = goodCiphers; *p != SSL_NULL_WITH_NULL_NULL; ++p) {
PRInt32 policy;
if (SSL_CipherPolicyGet(*p, &policy) != SECSuccess) {
const PRErrorCode err = PR_GetError();
fprintf(stderr, "Error: Policy for cipher %u: error %d: %s\n",
(unsigned) *p, err, PR_ErrorToName(err));
exit(1);
}
if (policy == SSL_ALLOWED) {
// Policy allowed this cipher choice
fprintf(stderr, "Info: found cipher %x\n", (unsigned) *p);
foundGoodCipher = PR_TRUE;
break;
}
}
if(!foundGoodCipher) {
if(NSS_SetDomesticPolicy() != SECSuccess) {
const PRErrorCode err = PR_GetError();
fprintf(stderr, "Error: NSS_SetDomesticPolicy: error %d: %s\n",
err, PR_ErrorToName(err));
exit(1);
}
}
if (!foundGoodCipher) {
if (NSS_SetDomesticPolicy() != SECSuccess) {
const PRErrorCode err = PR_GetError();
fprintf(stderr, "Error: NSS_SetDomesticPolicy: error %d: %s\n",
err, PR_ErrorToName(err));
exit(1);
}
}
// Initialize trusted certificate store
char module_name[] = "library=libnssckbi.so name=\"Root Certs\"";
builtInRootsMod = SECMOD_LoadUserModule(module_name, NULL, PR_FALSE);
if(builtInRootsMod == NULL || !builtInRootsMod->loaded) {
const PRErrorCode err = PR_GetError();
fprintf(stderr, "Error: Loading built in roots module failed, code %d: %s\n",
err, PR_ErrorToName(err));
exit(1);
}
// Initialize trusted certificate store
char module_name[] = "library=libnssckbi.so name=\"Root Certs\"";
builtInRootsMod = SECMOD_LoadUserModule(module_name, NULL, PR_FALSE);
if (builtInRootsMod == NULL || !builtInRootsMod->loaded) {
const PRErrorCode err = PR_GetError();
fprintf(stderr, "Error: Loading built in roots module failed, code %d: %s\n",
err, PR_ErrorToName(err));
exit(1);
}
}
int main(int argc, char* argv[]) {
init();
PRNetAddr theAddr;
LookupName((char *)"buyvm.theoks.net", &theAddr);
int main(int argc, char *argv[]) {
init();
char ipString[80];
PRStatus status = PR_NetAddrToString(&theAddr, ipString, 75);
if(status == PR_FAILURE) {
const PRErrorCode err = PR_GetError();
fprintf(stderr, "Error: Converting PRNetAddr to string %d: %s\n",
err, PR_ErrorToName(err));
exit(1);
}
PRNetAddr theAddr;
LookupName((char *) "buyvm.theoks.net", &theAddr);
char ipString[80];
PRStatus status = PR_NetAddrToString(&theAddr, ipString, 75);
if (status == PR_FAILURE) {
const PRErrorCode err = PR_GetError();
fprintf(stderr, "Error: Converting PRNetAddr to string %d: %s\n",
err, PR_ErrorToName(err));
exit(1);
}
PRFileDesc *tcpSocket = PR_NewTCPSocket();
theAddr.inet.port = 443;
PRFileDesc *nssSocket;
SSL_ImportFD(NULL, tcpSocket);
PRFileDesc *tcpSocket = PR_NewTCPSocket();
theAddr.inet.port = 443;
PRFileDesc *nssSocket;
SSL_ImportFD(NULL, tcpSocket);
QApplication app(argc, argv);
QWidget mainWindow;
mainWindow.resize(1280, 720);
mainWindow.setWindowTitle("oksirc - early Qt test");
QPlainTextEdit *mainLog = new QPlainTextEdit();
mainLog->setReadOnly(true);
QLineEdit *textEntry = new QLineEdit();
QPushButton *sendButton = new QPushButton(QApplication::translate("send", "Send"));
QHBoxLayout *entryLineLayout = new QHBoxLayout();
entryLineLayout->addWidget(textEntry);
entryLineLayout->addWidget(sendButton);
ui *uiInstance = new ui(argc, argv);
int qAppRetCode = uiInstance->exec();
QVBoxLayout *mainLogAndLineLayout = new QVBoxLayout();
mainLogAndLineLayout->addWidget(mainLog);
mainLogAndLineLayout->addLayout(entryLineLayout);
mainWindow.setLayout(mainLogAndLineLayout);
mainWindow.show();
textEntry->setFocus();
char messageBuf[1024];
sprintf(messageBuf, "Found IP Address: %s", ipString);
uiInstance->mainLog->appendPlainText(messageBuf);
SECMOD_DestroyModule(builtInRootsMod);
NSS_ShutdownContext(nssContext);
char messageBuf[1024];
sprintf(messageBuf, "Found IP Address: %s", ipString);
mainLog->appendPlainText(messageBuf);
SECMOD_DestroyModule(builtInRootsMod);
NSS_ShutdownContext(nssContext);
return app.exec();
return qAppRetCode;
}