summaryrefslogtreecommitdiffstats
path: root/kio/kssl/ksslsigners.h
blob: 3cabf639cf2f47f76dd4daecb4010597be603df6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/* This file is part of the KDE project
 *
 * Copyright (C) 2001-2003 George Staikos <staikos@kde.org>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public License
 * along with this library; see the file COPYING.LIB.  If not, write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 */


#ifndef _INCLUDE_KSSLSIGNERS_H
#define _INCLUDE_KSSLSIGNERS_H

class KSSLCertificate;
class DCOPClient;

#include <qstringlist.h>

#include <kdelibs_export.h>

// ### KDE4 - Fix constness
/**
 * KDE SSL Signer Database
 *
 * This class is used to manipulate the KDE SSL signer database.  It
 * communicates to the KDE SSL daemon via dcop for backend integration.
 *
 * @author George Staikos <staikos@kde.org>
 * @see KSSL, KSSLCertificate
 * @short KDE SSL Signer Database
 */
class KIO_EXPORT KSSLSigners {
public:
	/**
	 *  Construct a KSSLSigner object.
	 */
	KSSLSigners();

	/**
	 *  Destroy this KSSLSigner object.
	 */
	~KSSLSigners();

	/**
	 *  Add a signer to the database.
	 *
	 *  @param cert the signer's certificate
	 *  @param ssl allow it to sign for SSL
	 *  @param email allow it to sign for S/MIME
	 *  @param code allow it to sign for code signing
	 *  @return true on success
	 */
	bool addCA(KSSLCertificate& cert, bool ssl, bool email, bool code);

	/**
	 *  Add a signer to the database.
	 *
	 *  @param cert the signer's certificate in base64 form
	 *  @param ssl allow it to sign for SSL
	 *  @param email allow it to sign for S/MIME
	 *  @param code allow it to sign for code signing
	 *  @return true on success
	 */
	bool addCA(QString cert, bool ssl, bool email, bool code); 

	/**
	 *  Regenerate the signer-root file from the user's settings.
	 *  @return true on success
	 */
	bool regenerate();

	/**
	 *  Determine if a certificate can be used for SSL certificate signing
	 *  @param cert the certificate
	 *  @return true if it can be used for SSL
	 */
	bool useForSSL(KSSLCertificate& cert);

	/**
	 *  Determine if a certificate can be used for SSL certificate signing
	 *  @param subject the certificate subject
	 *  @return true if it can be used for SSL
	 */
	bool useForSSL(QString subject);

	/**
	 *  Determine if a certificate can be used for S/MIME certificate signing
	 *  @param cert the certificate
	 *  @return true if it can be used for S/MIME
	 */
	bool useForEmail(KSSLCertificate& cert);

	/**
	 *  Determine if a certificate can be used for S/MIME certificate signing
	 *  @param subject the certificate subject
	 *  @return true if it can be used for S/MIME
	 */
	bool useForEmail(QString subject);

	/**
	 *  Determine if a certificate can be used for code certificate signing
	 *  @param cert the certificate
	 *  @return true if it can be used for code
	 */
	bool useForCode(KSSLCertificate& cert);

	/**
	 *  Determine if a certificate can be used for code certificate signing
	 *  @param subject the certificate subject
	 *  @return true if it can be used for code
	 */
	bool useForCode(QString subject);

	/**
	 *  Remove a certificate signer from the database
	 *  @param cert the certificate to remove
	 *  @return true on success
	 */
	bool remove(KSSLCertificate& cert);

	/**
	 *  Remove a certificate signer from the database
	 *  @param subject the subject of the certificate to remove
	 *  @return true on success
	 */
	bool remove(QString subject);

	/**
	 *  List the signers in the database.
	 *  @return the list of subjects in the database
	 *  @see getCert
	 */
	QStringList list();

	/**
	 *  Get a signer certificate from the database.
	 *
	 *  @param subject the subject of the certificate desired
	 *  @return the base64 encoded certificate
	 */
	QString getCert(QString subject);

	/**
	 *  Set the use of a particular entry in the certificate signer database.
	 *  @param subject the subject of the certificate in question
	 *  @param ssl allow this for SSL certificate signing
	 *  @param email allow this for S/MIME certificate signing
	 *  @param code allow this for code certificate signing
	 *  @return true on success
	 */
	bool setUse(QString subject, bool ssl, bool email, bool code);

private:
	class KSSLSignersPrivate;
	KSSLSignersPrivate *d;

	DCOPClient *dcc;
};


#endif