#include "registeraccountdialog.h" #include "../globals.h" #include #include #include RegisterAccountDialog::RegisterAccountDialog(QWidget *parent) : QDialog(parent) { QVBoxLayout *layout = new QVBoxLayout(this); QLabel *lbNickname = new QLabel(tr("Name:")); QLabel *lbPassword = new QLabel(tr("Password:")); QLabel *lbRepeatPassword = new QLabel(tr("Repeat password:")); nickname = new QLineEdit(); btRegister = new QPushButton(tr("Create")); cbSetPassword = new QCheckBox(tr("Set password for secret key")); password = new QLineEdit(); repeatPassword = new QLineEdit(); lbStatus = new QLabel(tr("Enter your name and press\n \"Create\" to create new Pica Pica certificate")); //btOK = new QPushButton(tr("OK")); password->setEchoMode(QLineEdit::Password); repeatPassword->setEchoMode(QLineEdit::Password); { QFont f; f= lbStatus->font(); f.setBold(true); lbStatus->setFont(f); } layout->addWidget(lbNickname); layout->addWidget(nickname); layout->addWidget(cbSetPassword); layout->addWidget(lbPassword); layout->addWidget(password); layout->addWidget(lbRepeatPassword); layout->addWidget(repeatPassword); layout->addWidget(btRegister); layout->addWidget(lbStatus); //layout->addWidget(btOK); setLayout(layout); vld = new QRegExpValidator(QRegExp("[^\\#\\$&\"\'=\\(\\)\\\\/\\|`!<>\\{\\}\\[\\]\\+]+"), this); nickname->setValidator(vld); //connect(btOK, SIGNAL(clicked()), this, SLOT(OK())); connect(btRegister, SIGNAL(clicked()), this, SLOT(Register())); connect(cbSetPassword, SIGNAL(clicked()), this, SLOT(setPasswordClick())); setPasswordClick(); } void RegisterAccountDialog::setPasswordClick() { if (cbSetPassword->isChecked()) { password -> setDisabled(false); repeatPassword -> setDisabled(false); password->show(); repeatPassword->show(); layout()->itemAt(3)->widget()->show(); layout()->itemAt(5)->widget()->show(); } else { password -> setDisabled(true); repeatPassword -> setDisabled(true); password->setHidden(true); repeatPassword->setHidden(true); layout()->itemAt(3)->widget()->hide(); layout()->itemAt(5)->widget()->hide(); } } //void RegisterAccountDialog::OK() //{ // done(0); //} void RegisterAccountDialog::Register() { //check name QString name = nickname->text(); if (name.toUtf8().size() > 63) //64 bytes - CN length in X509 certificate { QMessageBox mbx; mbx.setText(tr("Name is too long")); mbx.exec(); return; } if (name.isEmpty()) { QMessageBox mbx; mbx.setText(tr("You must enter name for account")); mbx.exec(); return; } if (cbSetPassword->isChecked()) { if (password->text() != repeatPassword->text()) { QMessageBox mbx; mbx.setText(tr("Passwords do not match")); mbx.exec(); return; } } //1 lbStatus->setText(tr("1) generating RSA keypair...")); nickname->setEnabled(false); btRegister->setEnabled(false); ost.GenRSAKeySignal(4096, config_dir + QDir::separator() + "privkey.pem", cbSetPassword->isChecked(), password->text(), this, SLOT(stageSignCert(int,QProcess::ExitStatus))); } void RegisterAccountDialog::stageSignCert(int retval,QProcess::ExitStatus) { if (retval != 0) { lbStatus->setText(tr("Error:\n") + ost.ReadStdErr()); return; } lbStatus->setText(tr("2) Signing certificate...")); ost.GenCertSignal(config_dir + QDir::separator() + "cert.pem", config_dir + QDir::separator() + "privkey.pem", password->text(),nickname->text(), this,SLOT(stageFinished(int,QProcess::ExitStatus))); } void RegisterAccountDialog::stageFinished(int retval, QProcess::ExitStatus) { if (retval != 0) { lbStatus->setText(tr("Error:\n") + ost.ReadStdErr()); return; } CertFilename_ = config_dir + QDir::separator() + "cert.pem"; PkeyFilename_ = config_dir + QDir::separator() + "privkey.pem"; done(1); } QString RegisterAccountDialog::GetCertFilename() { return CertFilename_; } QString RegisterAccountDialog::GetPkeyFilename() { return PkeyFilename_; }