Branch: master

3b5b7d6a 2015-09-19 19:23:37 Timothy Pearson
Add autopin option to user configuration
M src/userconfigbase.ui
M src/userconfigdlg.cpp
diff --git a/src/userconfigbase.ui b/src/userconfigbase.ui
index 4439222..581d1c8 100644
--- a/src/userconfigbase.ui
+++ b/src/userconfigbase.ui
@@ -935,7 +935,21 @@
 								<number>17</number>
 							</property>
 						</widget>
-						<widget class="KPushButton" row="4" column="0" colspan="5">
+						<widget class="TQCheckBox" row="4" column="0" colspan="2">
+							<property name="name">
+								<cstring>enableAutoPIN</cstring>
+							</property>
+							<property name="text">
+								<cstring>Store PIN in certificate</cstring>
+							</property>
+						</widget>
+						<widget class="KPasswordEdit" row="4" column="2" colspan="3">
+							<property name="name">
+								<cstring>autoPIN</cstring>
+							</property>
+							
+						</widget>
+						<widget class="KPushButton" row="5" column="0" colspan="5">
 							<property name="name">
 								<cstring>createCertificate</cstring>
 							</property>
@@ -943,7 +957,7 @@
 								<string>Generate New PKI Certificate</string>
 							</property>
 						</widget>
-						<widget class="TQLayoutWidget" row="5" column="0" colspan="5">
+						<widget class="TQLayoutWidget" row="6" column="0" colspan="5">
 							<property name="name">
 								<cstring>unnamed_layoutwidget1</cstring>
 							</property>
diff --git a/src/userconfigdlg.cpp b/src/userconfigdlg.cpp
index 9e90065..13d4b26 100644
--- a/src/userconfigdlg.cpp
+++ b/src/userconfigdlg.cpp
@@ -81,6 +81,8 @@
 	connect(m_base->certGenPrivateKey, TQT_SIGNAL(clicked()), this, TQT_SLOT(processLockouts()));
 	connect(m_base->certPrivateKeyFileName, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(processLockouts()));
 	connect(m_base->certPublicCertFileName, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(processLockouts()));
+	connect(m_base->enableAutoPIN, TQT_SIGNAL(clicked()), this, TQT_SLOT(processLockouts()));
+	connect(m_base->autoPIN, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(processLockouts()));
 	connect(m_base->createCertificate, TQT_SIGNAL(clicked()), this, TQT_SLOT(createPKICertificate()));
 	connect(m_base->revokeCertificate, TQT_SIGNAL(clicked()), this, TQT_SLOT(revokePKICertificate()));
 	connect(m_base->downloadCertificate, TQT_SIGNAL(clicked()), this, TQT_SLOT(downloadPKICertificate()));
@@ -243,6 +245,13 @@
 		m_base->passwordMinAge->setEnabled(false);
 	}
 
+	if (m_base->enableAutoPIN->isChecked()) {
+		m_base->autoPIN->setEnabled(true);
+	}
+	else {
+		m_base->autoPIN->setEnabled(false);
+	}
+
 	// Disable the primary group checkbox in the group list
 	TQListViewItemIterator it(m_base->secondary_group_list);
 	while (it.current()) {
@@ -284,6 +293,11 @@
 	}
 	if (!m_base->certGenPrivateKey->isChecked()) {
 		if (!TQFile(m_base->certPrivateKeyFileName->url()).exists()) {
+			ok_enabled = false;
+		}
+	}
+	if (m_base->enableAutoPIN->isChecked()) {
+		if (m_base->autoPIN->text() == "") {
 			ok_enabled = false;
 		}
 	}
@@ -342,7 +356,12 @@
 	}
 	caPrivateKeyTempFile.sync();
 
-	ret = LDAPManager::generateClientCertificatePublicCertificate(expirydays, m_user, realms[m_ldapconfig->m_ldapmanager->realm()], caPrivateKeyTempFile.name(), m_base->certPrivateKeyFileName->url(), m_base->certPublicCertFileName->url());
+	if (m_base->enableAutoPIN->isChecked()) {
+		ret = LDAPManager::generateClientCertificatePublicCertificate(expirydays, m_user, realms[m_ldapconfig->m_ldapmanager->realm()], caPrivateKeyTempFile.name(), m_base->certPrivateKeyFileName->url(), m_base->certPublicCertFileName->url(), m_base->autoPIN->text());
+	}
+	else {
+		ret = LDAPManager::generateClientCertificatePublicCertificate(expirydays, m_user, realms[m_ldapconfig->m_ldapmanager->realm()], caPrivateKeyTempFile.name(), m_base->certPrivateKeyFileName->url(), m_base->certPublicCertFileName->url());
+	}
 
 	// Delete the private key as soon as possible after certificate signing
 	caPrivateKeyTempFile.unlink();