kio Library: ksslcertificate.h Source File (kio Library)

| # kio Library API Documentation
Overview | Class Hierarchy | Classes | Classes (annotated) | Members | Namespaces | Source Files

# ksslcertificate.h

    00001 /* This file is part of the KDE project
    00002  *
    00003  * Copyright (C) 2000-2003 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., 59 Temple Place - Suite 330,
    00018  * Boston, MA 02111-1307, USA.
    00019  */
    00020
    00021 #ifndef _KSSLCERTIFICATE_H
    00022 #define _KSSLCERTIFICATE_H
    00023
    00024
    00025 // UPDATE: I like the structure of this class less and less every time I look
    00026 //         at it.  I think it needs to change.
    00027 //
    00028 //
    00029 //  The biggest reason for making everything protected here is so that
    00030 //  the class can have all it's methods available even if openssl is not
    00031 //  available.  Also, to create a new certificate you should use the
    00032 //  KSSLCertificateFactory, and to manage the user's database of certificates,
    00033 //  you should go through the KSSLCertificateHome.
    00034 //
    00035 //  There should be no reason to touch the X509 stuff directly.
    00036 //
    00037
    00038 #include <qcstring.h>
    00039 #include <qvaluelist.h>
    00040
    00041 class QString;
    00042 class QStringList;
    00043 class QCString;
    00044 class KSSL;
    00045 class KSSLCertificatePrivate;
    00046 class QDateTime;
    00047 class KSSLCertChain;
    00048 class KSSLX509V3;
    00049
    00050 #include <kdelibs_export.h>
    00051
    00052 #ifdef Q_WS_WIN
    00053 #include "ksslconfig_win.h"
    00054 #else
    00055 #include "ksslconfig.h"
    00056 #endif
    00057
    00058 #ifdef KSSL_HAVE_SSL
    00059 typedef struct x509_st X509;
    00060 #else
    00061 class X509;
    00062 #endif
    00063
    00075 class KIO_EXPORT KSSLCertificate {
    00076 friend class KSSL;
    00077 friend class KSSLCertificateHome;
    00078 friend class KSSLCertificateFactory;
    00079 friend class KSSLCertificateCache;
    00080 friend class KSSLCertChain;
    00081 friend class KSSLPeerInfo;
    00082 friend class KSSLPKCS12;
    00083 friend class KSSLD;
    00084 friend class KSMIMECryptoPrivate;
    00085
    00086
    00087 public:
    00091     ~KSSLCertificate();
    00092
    00098     static KSSLCertificate *fromString(QCString cert);
    00099
    00107     static KSSLCertificate *fromX509(X509 *x5);
    00108
    00113     enum KSSLValidation {   Unknown, Ok, NoCARoot, InvalidPurpose,
    00114                 PathLengthExceeded, InvalidCA, Expired,
    00115                 SelfSigned, ErrorReadingRoot, NoSSL,
    00116                 Revoked, Untrusted, SignatureFailed,
    00117                 Rejected, PrivateKeyFailed, InvalidHost,
    00118                 Irrelevant, SelfSignedChain
    00119                 };
    00120
    00121     enum KSSLPurpose {      None=0, SSLServer=1, SSLClient=2,
    00122                 SMIMESign=3, SMIMEEncrypt=4, Any=5 };
    00123
    00124         typedef QValueList<KSSLValidation> KSSLValidationList;
    00125
    00130     QString toString();
    00131
    00136     QString getSubject() const;
    00137
    00142     QString getIssuer() const;
    00143
    00148     QString getNotBefore() const;
    00149
    00154     QString getNotAfter() const;
    00155
    00160     QDateTime getQDTNotBefore() const;
    00161
    00166     QDateTime getQDTNotAfter() const;
    00167
    00172     QByteArray toDer();
    00173
    00178     QByteArray toPem();
    00179
    00184     QByteArray toNetscape();
    00185
    00190     QString toText();
    00191
    00196     QString getSerialNumber() const;
    00197
    00202     QString getKeyType() const;
    00203
    00208     QString getPublicKeyText() const;
    00209
    00215     QString getMD5DigestText() const;
    00216
    00221     QString getMD5Digest() const;
    00222
    00227     QString getSignatureText() const;
    00228
    00233     bool isValid();
    00234
    00240     bool isValid(KSSLPurpose p);
    00241
    00246     QStringList subjAltNames() const;
    00247
    00252     KSSLValidation validate();
    00253
    00259     KSSLValidation validate(KSSLPurpose p);
    00260
    00266     KSSLValidationList validateVerbose(KSSLPurpose p);
    00267
    00274     KSSLValidationList validateVerbose(KSSLPurpose p, KSSLCertificate *ca);
    00275
    00280     KSSLValidation revalidate();
    00281
    00287     KSSLValidation revalidate(KSSLPurpose p);
    00288
    00293     KSSLCertChain& chain();
    00294
    00300     static QString verifyText(KSSLValidation x);
    00301
    00306     KSSLCertificate *replicate();
    00307
    00312     KSSLCertificate(const KSSLCertificate& x); // copy constructor
    00313
    00319     bool setCert(QString& cert);
    00320
    00326     KSSLX509V3& x509V3Extensions();
    00327
    00332     bool isSigner();
    00333
    00337     void getEmails(QStringList& to) const;
    00338
    00344     QString getKDEKey() const;
    00345
    00349     static QString getMD5DigestFromKDEKey(const QString& k);
    00350
    00351 private:
    00352     KIO_EXPORT friend int operator!=(KSSLCertificate& x, KSSLCertificate& y);
    00353     KIO_EXPORT friend int operator==(KSSLCertificate& x, KSSLCertificate& y);
    00354
    00355     KSSLCertificatePrivate *d;
    00356     int purposeToOpenSSL(KSSLPurpose p) const;
    00357
    00358 protected:
    00359     KSSLCertificate();
    00360
    00361     void setCert(X509 *c);
    00362     void setChain(void *c);
    00363     X509 *getCert();
    00364     KSSLValidation processError(int ec);
    00365 };
    00366
    00367 KIO_EXPORT QDataStream& operator<<(QDataStream& s, const KSSLCertificate& r);
    00368 KIO_EXPORT QDataStream& operator>>(QDataStream& s, KSSLCertificate& r);
    00369
    00370 KIO_EXPORT int operator==(KSSLCertificate& x, KSSLCertificate& y);
    00371 KIO_EXPORT inline int operator!=(KSSLCertificate& x, KSSLCertificate& y)
    00372 { return !(x == y); }
    00373
    00374 #endif
    00375

This file is part of the documentation for kio Library Version 3.4.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat Jun 11 20:24:04 2005 by doxygen 1.4.1 written by Dimitri van Heesch, © 1997-2003