52
61
BlackBerrySigningUtils::BlackBerrySigningUtils(QObject *parent) :
54
m_defaultCertificate(0)
63
m_defaultCertificate(0),
64
m_defaultCertificateStatus(NotOpened)
58
69
bool BlackBerrySigningUtils::hasRegisteredKeys()
60
BlackBerryConfigurationManager &configuration = BlackBerryConfigurationManager::instance();
62
QFileInfo cskFile(configuration.idTokenPath());
71
QFileInfo cskFile(BlackBerryConfigurationManager::instance()->idTokenPath());
64
73
return cskFile.exists();
67
76
bool BlackBerrySigningUtils::hasLegacyKeys()
69
BlackBerryConfigurationManager &configuration = BlackBerryConfigurationManager::instance();
71
QFileInfo cskFile(configuration.barsignerCskPath());
78
QFileInfo cskFile(BlackBerryConfigurationManager::instance()->barsignerCskPath());
73
80
return cskFile.exists();
76
83
bool BlackBerrySigningUtils::hasDefaultCertificate()
78
BlackBerryConfigurationManager &configuration = BlackBerryConfigurationManager::instance();
80
QFileInfo keystore(configuration.defaultKeystorePath());
85
QFileInfo keystore(BlackBerryConfigurationManager::instance()->defaultKeystorePath());
82
87
return keystore.exists();
85
QString BlackBerrySigningUtils::cskPassword()
90
QString BlackBerrySigningUtils::cskPassword(QWidget *passwordPromptParent, bool *ok)
87
92
if (m_cskPassword.isEmpty())
88
m_cskPassword = promptPassword(tr("Please provide your bbidtoken.csk PIN."));
93
m_cskPassword = promptPassword(tr("Please provide your BlackBerry ID Token PIN."), passwordPromptParent, ok);
90
97
return m_cskPassword;
93
QString BlackBerrySigningUtils::certificatePassword()
100
QString BlackBerrySigningUtils::certificatePassword(QWidget *passwordPromptParent, bool *ok)
95
if (m_certificatePassword.isEmpty())
96
m_certificatePassword = promptPassword(tr("Please enter your certificate password."));
102
if (m_certificatePassword.isEmpty()) {
103
m_certificatePassword =
104
promptPassword(tr("Please enter your certificate password."), passwordPromptParent, ok);
98
109
return m_certificatePassword;
103
114
return m_defaultCertificate;
106
void BlackBerrySigningUtils::openDefaultCertificate()
108
if (m_defaultCertificate) {
117
BlackBerrySigningUtils::Status BlackBerrySigningUtils::defaultCertificateOpeningStatus() const
119
return m_defaultCertificateStatus;
122
void BlackBerrySigningUtils::openDefaultCertificate(QWidget *passwordPromptParent)
124
switch (m_defaultCertificateStatus) {
109
128
emit defaultCertificateLoaded(BlackBerryCertificate::Success);
113
const QString password = certificatePassword();
115
BlackBerryConfigurationManager &configManager = BlackBerryConfigurationManager::instance();
117
m_defaultCertificate = new BlackBerryCertificate(configManager.defaultKeystorePath(),
131
m_defaultCertificateStatus = Opening;
135
const QString password = certificatePassword(passwordPromptParent, &ok);
137
// action has been canceled
139
m_defaultCertificateStatus = NotOpened;
143
if (m_defaultCertificate)
144
m_defaultCertificate->deleteLater();
146
m_defaultCertificate = new BlackBerryCertificate(BlackBerryConfigurationManager::instance()->defaultKeystorePath(),
118
147
QString(), password, this);
120
149
connect(m_defaultCertificate, SIGNAL(finished(int)), this, SLOT(certificateLoaded(int)));
146
176
clearCertificatePassword();
147
177
m_defaultCertificate->deleteLater();
148
178
m_defaultCertificate = 0;
150
BlackBerryConfigurationManager &configuration = BlackBerryConfigurationManager::instance();
152
QFile::remove(configuration.defaultKeystorePath());
179
m_defaultCertificateStatus = NotOpened;
181
QFile::remove(BlackBerryConfigurationManager::instance()->defaultKeystorePath());
184
QStringList BlackBerrySigningUtils::debugTokens() const
186
return m_debugTokens;
189
void BlackBerrySigningUtils::addDebugToken(const QString &dt)
191
if (m_debugTokens.contains(dt) || !QFileInfo(dt).exists())
195
emit debugTokenListChanged();
198
void BlackBerrySigningUtils::removeDebugToken(const QString &dt)
200
m_debugTokens.removeOne(dt);
201
emit debugTokenListChanged();
204
bool BlackBerrySigningUtils::createCertificate()
206
BlackBerryCreateCertificateDialog dialog;
208
const int result = dialog.exec();
210
if (result == QDialog::Rejected)
213
BlackBerryCertificate *certificate = dialog.certificate();
216
setDefaultCertificate(certificate);
155
221
void BlackBerrySigningUtils::certificateLoaded(int status)
157
223
if (status != BlackBerryCertificate::Success) {
224
m_defaultCertificateStatus = NotOpened;
158
225
m_defaultCertificate->deleteLater();
159
226
m_defaultCertificate = 0;
161
if (status == BlackBerryCertificate::WrongPassword)
162
clearCertificatePassword();
228
// we have clear the password under any error since we are not able to distinquish
229
// if password is correct or not in case BlackBerryCertificate::Error status happens
230
clearCertificatePassword();
232
m_defaultCertificateStatus = Opened;
165
235
emit defaultCertificateLoaded(status);
168
QString BlackBerrySigningUtils::promptPassword(const QString &message) const
238
void BlackBerrySigningUtils::saveDebugTokens()
240
if (m_debugTokens.isEmpty())
243
QSettings *settings = Core::ICore::settings();
244
settings->beginGroup(DebugTokensGroup);
247
foreach (QString dt, m_debugTokens) {
248
settings->beginGroup(QString::fromLatin1("debugToken_%1").arg(++count));
249
settings->setValue(DebugTokensPath, dt);
250
settings->endGroup();
253
settings->endGroup();
256
void BlackBerrySigningUtils::loadDebugTokens()
258
QSettings *settings = Core::ICore::settings();
259
settings->beginGroup(DebugTokensGroup);
261
foreach (const QString &dt, settings->childGroups()) {
262
settings->beginGroup(dt);
263
m_debugTokens << settings->value(DebugTokensPath).toString();
264
settings->endGroup();
267
settings->endGroup();
270
QString BlackBerrySigningUtils::promptPassword(const QString &message,
271
QWidget *dialogParent, bool *ok) const
273
QInputDialog dialog(dialogParent);
171
274
dialog.setWindowTitle(tr("Qt Creator"));
172
275
dialog.setInputMode(QInputDialog::TextInput);
173
276
dialog.setLabelText(message);
174
277
dialog.setTextEchoMode(QLineEdit::Password);
176
if (dialog.exec() == QDialog::Rejected)
279
if (dialog.exec() == QDialog::Rejected) {
177
283
return QString();
179
289
return dialog.textValue();