ksslcertificate.h
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 #ifndef _KSSLCERTIFICATE_H
00022 #define _KSSLCERTIFICATE_H
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
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 "ksslconfig.h"
00051 
00052 #ifdef KSSL_HAVE_SSL
00053 typedef struct x509_st X509;
00054 #else
00055 class X509;
00056 #endif
00057 
00069 class KSSLCertificate {
00070 friend class KSSL;
00071 friend class KSSLCertificateHome;
00072 friend class KSSLCertificateFactory;
00073 friend class KSSLCertificateCache;
00074 friend class KSSLCertChain;
00075 friend class KSSLPeerInfo;
00076 friend class KSSLPKCS12;
00077 friend class KSSLD;
00078 friend class KSMIMECryptoPrivate;
00079 
00080 
00081 public:
00085     ~KSSLCertificate();
00086 
00092     static KSSLCertificate *fromString(QCString cert);
00093 
00101     static KSSLCertificate *fromX509(X509 *x5);
00102 
00103     enum KSSLValidation {   Unknown, Ok, NoCARoot, InvalidPurpose,
00104                 PathLengthExceeded, InvalidCA, Expired,
00105                 SelfSigned, ErrorReadingRoot, NoSSL,
00106                 Revoked, Untrusted, SignatureFailed,
00107                 Rejected, PrivateKeyFailed, InvalidHost };
00108 
00109     enum KSSLPurpose {      None=0, SSLServer=1, SSLClient=2, 
00110                 SMIMESign=3, SMIMEEncrypt=4, Any=5 };
00111 
00112         typedef QValueList<KSSLValidation> KSSLValidationList;
00113 
00118     QString toString();
00119 
00124     QString getSubject() const;
00125 
00130     QString getIssuer() const;
00131 
00136     QString getNotBefore() const;
00137 
00142     QString getNotAfter() const;
00143 
00148     QDateTime getQDTNotBefore() const;
00149 
00154     QDateTime getQDTNotAfter() const;
00155 
00160     QByteArray toDer();
00161 
00166     QByteArray toPem();
00167 
00172     QByteArray toNetscape();
00173 
00178     QString toText();
00179 
00184     QString getSerialNumber() const;
00185 
00190     QString getKeyType() const;
00191 
00196     QString getPublicKeyText() const;
00197 
00202     QString getMD5DigestText() const;
00203 
00208     QString getSignatureText() const;
00209 
00214     bool isValid();
00215 
00221     bool isValid(KSSLPurpose p);
00222 
00227     KSSLValidation validate();
00228 
00234     KSSLValidation validate(KSSLPurpose p);
00235 
00241     KSSLValidationList validateVerbose(KSSLPurpose p);
00242 
00247     KSSLValidation revalidate();
00248 
00254     KSSLValidation revalidate(KSSLPurpose p);
00255 
00260     KSSLCertChain& chain();
00261 
00267     static QString verifyText(KSSLValidation x);
00268 
00273     KSSLCertificate *replicate();
00274 
00279     KSSLCertificate(const KSSLCertificate& x); 
00280 
00284     friend int operator==(KSSLCertificate& x, KSSLCertificate& y);
00285 
00289     inline friend int operator!=(KSSLCertificate& x, KSSLCertificate& y) 
00290                                                        { return !(x == y); }
00291 
00297     bool setCert(QString& cert);
00298 
00304     KSSLX509V3& x509V3Extensions();
00305 
00310     bool isSigner();
00311 
00315     void getEmails(QStringList& to) const;
00316 
00322     QString getKDEKey() const;
00323 
00327     static QString getMD5DigestFromKDEKey(const QString& k);
00328 
00329 private:
00330     KSSLCertificatePrivate *d;
00331     int purposeToOpenSSL(KSSLPurpose p) const; 
00332 
00333 protected:
00334     KSSLCertificate();
00335 
00336     void setCert(X509 *c);
00337     void setChain(void *c);
00338     X509 *getCert();
00339     KSSLValidation processError(int ec);
00340 };
00341 
00342 
00343 QDataStream& operator<<(QDataStream& s, const KSSLCertificate& r);
00344 QDataStream& operator>>(QDataStream& s, KSSLCertificate& r);
00345 
00346 #endif
00347 
 
This file is part of the documentation for kio Library Version 3.2.0.