ksslsigners.cc
00001 /* This file is part of the KDE project 00002 * 00003 * Copyright (C) 2001 George Staikos <staikos@kde.org> 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Library General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2 of the License, or (at your option) any later version. 00009 * 00010 * This library is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Library General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Library General Public License 00016 * along with this library; see the file COPYING.LIB. If not, write to 00017 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00018 * Boston, MA 02110-1301, USA. 00019 */ 00020 00021 00022 #include <tqstring.h> 00023 #include <tqstringlist.h> 00024 #include "ksslcertificate.h" 00025 #include "ksslsigners.h" 00026 #include <stdlib.h> 00027 #include <kdebug.h> 00028 #include <dcopclient.h> 00029 #include <kdatastream.h> 00030 00031 00032 KSSLSigners::KSSLSigners() { 00033 dcc = new DCOPClient; 00034 dcc->attach(); 00035 } 00036 00037 00038 KSSLSigners::~KSSLSigners() { 00039 delete dcc; 00040 } 00041 00042 bool KSSLSigners::addCA(KSSLCertificate& cert, 00043 bool ssl, 00044 bool email, 00045 bool code) { 00046 return addCA(cert.toString(), ssl, email, code); 00047 } 00048 00049 00050 bool KSSLSigners::addCA(TQString cert, 00051 bool ssl, 00052 bool email, 00053 bool code) { 00054 TQByteArray data, retval; 00055 TQCString rettype; 00056 TQDataStream arg(data, IO_WriteOnly); 00057 arg << cert; 00058 arg << ssl << email << code; 00059 bool rc = dcc->call("kded", "kssld", 00060 "caAdd(TQString,bool,bool,bool)", 00061 data, rettype, retval); 00062 00063 if (rc && rettype == "bool") { 00064 TQDataStream retStream(retval, IO_ReadOnly); 00065 bool drc; 00066 retStream >> drc; 00067 return drc; 00068 } 00069 00070 return false; 00071 } 00072 00073 00074 bool KSSLSigners::regenerate() { 00075 TQByteArray data, retval; 00076 TQCString rettype; 00077 TQDataStream arg(data, IO_WriteOnly); 00078 bool rc = dcc->call("kded", "kssld", 00079 "caRegenerate()", 00080 data, rettype, retval); 00081 00082 if (rc && rettype == "bool") { 00083 TQDataStream retStream(retval, IO_ReadOnly); 00084 bool drc; 00085 retStream >> drc; 00086 return drc; 00087 } 00088 00089 return false; 00090 } 00091 00092 00093 bool KSSLSigners::useForSSL(KSSLCertificate& cert) { 00094 return useForSSL(cert.getSubject()); 00095 } 00096 00097 00098 bool KSSLSigners::useForSSL(TQString subject) { 00099 TQByteArray data, retval; 00100 TQCString rettype; 00101 TQDataStream arg(data, IO_WriteOnly); 00102 arg << subject; 00103 bool rc = dcc->call("kded", "kssld", 00104 "caUseForSSL(TQString)", 00105 data, rettype, retval); 00106 00107 if (rc && rettype == "bool") { 00108 TQDataStream retStream(retval, IO_ReadOnly); 00109 bool drc; 00110 retStream >> drc; 00111 return drc; 00112 } 00113 00114 return false; 00115 } 00116 00117 00118 bool KSSLSigners::useForEmail(KSSLCertificate& cert) { 00119 return useForEmail(cert.getSubject()); 00120 } 00121 00122 00123 bool KSSLSigners::useForEmail(TQString subject) { 00124 TQByteArray data, retval; 00125 TQCString rettype; 00126 TQDataStream arg(data, IO_WriteOnly); 00127 arg << subject; 00128 bool rc = dcc->call("kded", "kssld", 00129 "caUseForEmail(TQString)", 00130 data, rettype, retval); 00131 00132 if (rc && rettype == "bool") { 00133 TQDataStream retStream(retval, IO_ReadOnly); 00134 bool drc; 00135 retStream >> drc; 00136 return drc; 00137 } 00138 00139 return false; 00140 } 00141 00142 00143 bool KSSLSigners::useForCode(KSSLCertificate& cert) { 00144 return useForCode(cert.getSubject()); 00145 } 00146 00147 00148 bool KSSLSigners::useForCode(TQString subject) { 00149 TQByteArray data, retval; 00150 TQCString rettype; 00151 TQDataStream arg(data, IO_WriteOnly); 00152 arg << subject; 00153 bool rc = dcc->call("kded", "kssld", 00154 "caUseForCode(TQString)", 00155 data, rettype, retval); 00156 00157 if (rc && rettype == "bool") { 00158 TQDataStream retStream(retval, IO_ReadOnly); 00159 bool drc; 00160 retStream >> drc; 00161 return drc; 00162 } 00163 00164 return false; 00165 } 00166 00167 00168 bool KSSLSigners::remove(KSSLCertificate& cert) { 00169 return remove(cert.getSubject()); 00170 } 00171 00172 00173 bool KSSLSigners::remove(TQString subject) { 00174 TQByteArray data, retval; 00175 TQCString rettype; 00176 TQDataStream arg(data, IO_WriteOnly); 00177 arg << subject; 00178 bool rc = dcc->call("kded", "kssld", 00179 "caRemove(TQString)", 00180 data, rettype, retval); 00181 00182 if (rc && rettype == "bool") { 00183 TQDataStream retStream(retval, IO_ReadOnly); 00184 bool drc; 00185 retStream >> drc; 00186 return drc; 00187 } 00188 00189 return false; 00190 } 00191 00192 00193 TQStringList KSSLSigners::list() { 00194 TQStringList drc; 00195 TQByteArray data, retval; 00196 TQCString rettype; 00197 TQDataStream arg(data, IO_WriteOnly); 00198 bool rc = dcc->call("kded", "kssld", 00199 "caList()", 00200 data, rettype, retval); 00201 00202 if (rc && rettype == TQSTRINGLIST_OBJECT_NAME_STRING) { 00203 TQDataStream retStream(retval, IO_ReadOnly); 00204 retStream >> drc; 00205 } 00206 00207 return drc; 00208 } 00209 00210 00211 TQString KSSLSigners::getCert(TQString subject) { 00212 TQString drc; 00213 TQByteArray data, retval; 00214 TQCString rettype; 00215 TQDataStream arg(data, IO_WriteOnly); 00216 arg << subject; 00217 bool rc = dcc->call("kded", "kssld", 00218 "caGetCert(TQString)", 00219 data, rettype, retval); 00220 00221 if (rc && rettype == TQSTRING_OBJECT_NAME_STRING) { 00222 TQDataStream retStream(retval, IO_ReadOnly); 00223 retStream >> drc; 00224 } 00225 00226 return drc; 00227 } 00228 00229 00230 bool KSSLSigners::setUse(TQString subject, bool ssl, bool email, bool code) { 00231 TQByteArray data, retval; 00232 TQCString rettype; 00233 TQDataStream arg(data, IO_WriteOnly); 00234 arg << subject << ssl << email << code; 00235 bool rc = dcc->call("kded", "kssld", 00236 "caSetUse(TQString,bool,bool,bool)", 00237 data, rettype, retval); 00238 00239 if (rc && rettype == "bool") { 00240 TQDataStream retStream(retval, IO_ReadOnly); 00241 bool drc; 00242 retStream >> drc; 00243 return drc; 00244 } 00245 00246 return false; 00247 } 00248 00249 00250 00251