00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#include <ksslcertificatehome.h>
00022
#include <ksslcertificate.h>
00023
#include <ksslpkcs12.h>
00024
00025
#include <ksimpleconfig.h>
00026
00027
00028
QStringList KSSLCertificateHome::getCertificateList() {
00029
KSimpleConfig cfg(
"ksslcertificates",
false);
00030
QStringList list = cfg.
groupList();
00031
QString defaultstr(
"<default>");
00032
QString blankstr(
"");
00033
00034 list.remove(defaultstr);
00035 list.remove(blankstr);
00036
00037
return list;
00038 }
00039
00040
00041
00042
void KSSLCertificateHome::setDefaultCertificate(
QString name,
QString host,
bool send,
bool prompt) {
00043
KSimpleConfig cfg(
"ksslauthmap",
false);
00044
00045 cfg.
setGroup(host);
00046 cfg.
writeEntry(
"certificate", name);
00047 cfg.
writeEntry(
"send", send);
00048 cfg.
writeEntry(
"prompt", prompt);
00049 cfg.
sync();
00050 }
00051
00052
00053
00054
void KSSLCertificateHome::setDefaultCertificate(
KSSLPKCS12 *cert,
QString host,
bool send,
bool prompt) {
00055
if (cert)
00056 KSSLCertificateHome::setDefaultCertificate(cert->
name(), host, send, prompt);
00057 }
00058
00059
00060
00061
bool KSSLCertificateHome::addCertificate(
QString filename,
QString password,
bool storePass) {
00062
KSSLPKCS12 *pkcs =
KSSLPKCS12::loadCertFile(filename, password);
00063
00064
if (!pkcs)
return false;
00065
00066 KSSLCertificateHome::addCertificate(pkcs, storePass?password:QString(
""));
00067
delete pkcs;
00068
00069
return true;
00070 }
00071
00072
00073
00074
bool KSSLCertificateHome::addCertificate(
KSSLPKCS12 *cert,
QString passToStore) {
00075
if (!cert)
return false;
00076
00077
KSimpleConfig cfg(
"ksslcertificates",
false);
00078
00079 cfg.
setGroup(cert->
name());
00080 cfg.
writeEntry(
"PKCS12Base64", cert->
toString());
00081 cfg.
writeEntry(
"Password", passToStore);
00082 cfg.
sync();
00083
return true;
00084 }
00085
00086
bool KSSLCertificateHome::deleteCertificate(
const QString &filename,
const QString &password) {
00087
KSSLPKCS12 *pkcs =
KSSLPKCS12::loadCertFile(filename, password);
00088
00089
if (!pkcs)
return false;
00090
00091
bool ok = deleteCertificate(pkcs);
00092
delete pkcs;
00093
00094
return ok;
00095 }
00096
00097
bool KSSLCertificateHome::deleteCertificate(
KSSLPKCS12 *cert) {
00098
if (!cert)
return false;
00099
00100
return deleteCertificateByName(cert->
name());
00101 }
00102
00103
bool KSSLCertificateHome::deleteCertificateByName(
const QString &name) {
00104
if (
name.isEmpty())
return false;
00105
00106
KSimpleConfig cfg(
"ksslcertificates",
false);
00107
00108
bool ok = cfg.
deleteGroup(name);
00109 cfg.
sync();
00110
00111
return ok;
00112 }
00113
00114
00115
KSSLPKCS12* KSSLCertificateHome::getCertificateByName(
QString name,
QString password) {
00116
KSimpleConfig cfg(
"ksslcertificates",
false);
00117
if (!cfg.
hasGroup(name))
return NULL;
00118
00119 cfg.
setGroup(name);
00120
00121
return KSSLPKCS12::fromString(cfg.
readEntry(
"PKCS12Base64",
""), password);
00122 }
00123
00124
00125
00126
KSSLPKCS12* KSSLCertificateHome::getCertificateByName(
QString name) {
00127
KSimpleConfig cfg(
"ksslcertificates",
false);
00128
if (!cfg.
hasGroup(name))
return NULL;
00129
00130 cfg.
setGroup(name);
00131
00132
return KSSLPKCS12::fromString(cfg.
readEntry(
"PKCS12Base64",
""), cfg.
readEntry(
"Password",
""));
00133 }
00134
00135
00136
00137
bool KSSLCertificateHome::hasCertificateByName(
QString name) {
00138
KSimpleConfig cfg(
"ksslcertificates",
false);
00139
if (!cfg.
hasGroup(name))
return false;
00140
return true;
00141 }
00142
00143
00144
KSSLPKCS12* KSSLCertificateHome::getCertificateByHost(
QString host,
QString password, KSSLAuthAction *aa) {
00145
return KSSLCertificateHome::getCertificateByName(KSSLCertificateHome::getDefaultCertificateName(host, aa), password);
00146 }
00147
00148
00149
00150
QString KSSLCertificateHome::getDefaultCertificateName(
QString host, KSSLAuthAction *aa) {
00151
KSimpleConfig cfg(
"ksslauthmap",
false);
00152
00153
if (!cfg.
hasGroup(host)) {
00154
if (aa) *aa = AuthNone;
00155
return QString::null;
00156 }
else {
00157 cfg.
setGroup(host);
00158
if (aa) {
00159
bool tmp = cfg.
readBoolEntry(
"send",
false);
00160 *aa = AuthSend;
00161
if (!tmp) {
00162 tmp = cfg.
readBoolEntry(
"prompt",
false);
00163 *aa = AuthPrompt;
00164
if (!tmp) {
00165 *aa = AuthDont;
00166 }
00167 }
00168 }
00169
return cfg.
readEntry(
"certificate",
"");
00170 }
00171 }
00172
00173
00174
QString KSSLCertificateHome::getDefaultCertificateName(KSSLAuthAction *aa) {
00175
KConfig cfg(
"cryptodefaults",
false);
00176
00177 cfg.
setGroup(
"Auth");
00178
if (aa) {
00179
QString am = cfg.
readEntry(
"AuthMethod",
"");
00180
if (am ==
"send")
00181 *aa = AuthSend;
00182
else if (am ==
"prompt")
00183 *aa = AuthPrompt;
00184
else
00185 *aa = AuthDont;
00186 }
00187
00188
return cfg.
readEntry(
"DefaultCert",
"");
00189 }
00190
00191
00192
00193
KSSLPKCS12* KSSLCertificateHome::getDefaultCertificate(
QString password, KSSLAuthAction *aa) {
00194
QString name = KSSLCertificateHome::getDefaultCertificateName(aa);
00195
KSimpleConfig cfg(
"ksslcertificates",
false);
00196
00197
if (
name.isEmpty())
return NULL;
00198
00199 cfg.
setGroup(name);
00200
return KSSLPKCS12::fromString(cfg.
readEntry(
"PKCS12Base64",
""), password);
00201 }
00202
00203
00204
00205
KSSLPKCS12* KSSLCertificateHome::getDefaultCertificate(KSSLAuthAction *aa) {
00206
QString name = KSSLCertificateHome::getDefaultCertificateName(aa);
00207
KSimpleConfig cfg(
"ksslcertificates",
false);
00208
00209
if (
name.isEmpty())
return NULL;
00210
00211 cfg.
setGroup(name);
00212
return KSSLPKCS12::fromString(cfg.
readEntry(
"PKCS12Base64",
""),
00213 cfg.
readEntry(
"Password",
""));
00214 }
00215
00216
00217
00218
void KSSLCertificateHome::setDefaultCertificate(
QString name,
bool send,
bool prompt) {
00219
KSimpleConfig cfg(
"ksslauthmap",
false);
00220
00221 cfg.
setGroup(
"<default>");
00222 cfg.
writeEntry(
"defaultCertificate", name);
00223 cfg.
writeEntry(
"send", send);
00224 cfg.
writeEntry(
"prompt", prompt);
00225 }
00226
00227
00228
void KSSLCertificateHome::setDefaultCertificate(
KSSLPKCS12 *cert,
bool send,
bool prompt) {
00229
if (cert)
00230 KSSLCertificateHome::setDefaultCertificate(cert->
name(), send, prompt);
00231 }
00232
00233
00234
00235
00236