libkdenetwork Library API Documentation

key.h

00001 /* key.h - wraps a gpgme key
00002    Copyright (C) 2003 Klarälvdalens Datakonsult AB
00003 
00004    This file is part of GPGME++.
00005  
00006    GPGME++ is free software; you can redistribute it and/or modify it
00007    under the terms of the GNU General Public License as published by
00008    the Free Software Foundation; either version 2 of the License, or
00009    (at your option) any later version.
00010  
00011    GPGME++ is distributed in the hope that it will be useful, but
00012    WITHOUT ANY WARRANTY; without even the implied warranty of
00013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014    General Public License for more details.
00015 
00016    You should have received a copy of the GNU General Public License
00017    along with GPGME; if not, write to the Free Software Foundation,
00018    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA.  */
00019 
00020 // -*- c++ -*-
00021 #ifndef __GPGMEPP_KEY_H__
00022 #define __GPGMEPP_KEY_H__
00023 
00024 #include <gpgmepp/gpgmefw.h>
00025 #include <gpgmepp/context.h>
00026 
00027 #include <sys/time.h>
00028 
00029 #include <vector>
00030 
00031 namespace GpgME {
00032 
00033   class Subkey;
00034   class UserID;
00035 
00036   //
00037   // class Key
00038   //
00039 
00040   class Key {
00041     friend class Context;
00042   public:
00043     Key();
00044     Key( gpgme_key_t key, bool acquireRef, unsigned int keyListMode=0 );
00045     Key( const Key & key );
00046     ~Key();
00047 
00048     static Key null;
00049 
00050     const Key & operator=( const Key & other );
00051 
00052     bool isNull() const;
00053 
00054     UserID userID( unsigned int index ) const;
00055     Subkey subkey( unsigned int index ) const;
00056 
00057     unsigned int numUserIDs() const;
00058     unsigned int numSubkeys() const;
00059 
00060     std::vector<UserID> userIDs() const;
00061     std::vector<Subkey> subkeys() const;
00062 
00063     bool isRevoked() const;
00064     bool isExpired() const;
00065     bool isDisabled() const;
00066     bool isInvalid() const;
00067 
00068     bool canEncrypt() const;
00069     bool canSign() const;
00070     bool canCertify() const;
00071     bool canAuthenticate() const;
00072 
00073     bool hasSecret() const;
00074     bool isSecret() const { return hasSecret(); }
00075 
00081     bool isRoot() const;
00082 
00083     enum OwnerTrust { Unknown=0, Undefined=1, Never=2,
00084             Marginal=3, Full=4, Ultimate=5 };
00085 
00086     OwnerTrust ownerTrust() const;
00087     char ownerTrustAsString() const;
00088 
00089     typedef Context::Protocol Protocol;
00090     Protocol protocol() const;
00091     const char * protocolAsString() const;
00092 
00093     const char * issuerSerial() const;
00094     const char * issuerName() const;
00095     const char * chainID() const;
00096 
00097     const char * keyID() const;
00098     const char * shortKeyID() const;
00099     const char * primaryFingerprint() const;
00100 
00101     typedef Context::KeyListMode KeyListMode;
00102     unsigned int keyListMode() const;
00103 
00104   private:
00105     gpgme_key_t impl() const;
00106     class Private;
00107     Private * d;
00108   };
00109 
00110   //
00111   // class Subkey
00112   //
00113 
00114   class Subkey {
00115   public:
00116     Subkey( gpgme_key_t key=0, gpgme_sub_key_t subkey=0 );
00117     Subkey( gpgme_key_t key, unsigned int idx );
00118     Subkey( const Subkey & other );
00119     ~Subkey();
00120 
00121     const Subkey & operator=( const Subkey & other );
00122 
00123     bool isNull() const;
00124 
00125     Key parent() const;
00126 
00127     const char * keyID() const;
00128     const char * fingerprint() const;
00129 
00130     time_t creationTime() const;
00131     time_t expirationTime() const;
00132     bool neverExpires() const;
00133 
00134     bool isRevoked() const;
00135     bool isExpired() const;
00136     bool isInvalid() const;
00137     bool isDisabled() const;
00138 
00139     bool canEncrypt() const;
00140     bool canSign() const;
00141     bool canCertify() const;
00142     bool canAuthenticate() const;
00143 
00144     bool isSecred() const;
00145 
00146     unsigned int publicKeyAlgorithm() const;
00147     const char * publicKeyAlgorithmAsString() const;
00148 
00149     unsigned int length() const;
00150 
00151   private:
00152     class Private;
00153     Private * d;
00154   };
00155 
00156   //
00157   // class UserID
00158   //
00159 
00160   class UserID {
00161   public:
00162     class Signature;
00163 
00164     UserID( gpgme_key_t key=0, gpgme_user_id_t uid=0 );
00165     UserID( gpgme_key_t key, unsigned int idx );
00166     UserID( const UserID & other );
00167     ~UserID();
00168 
00169     const UserID & operator=( const UserID & other );
00170 
00171     bool isNull() const;
00172 
00173     Key parent() const;
00174 
00175     unsigned int numSignatures() const;
00176     Signature signature( unsigned int index ) const;
00177     std::vector<Signature> signatures() const;
00178 
00179     const char * id() const;
00180     const char * name() const;
00181     const char * email() const;
00182     const char * comment() const;
00183 
00184     enum Validity { Unknown=0, Undefined=1, Never=2,
00185             Marginal=3, Full=4, Ultimate=5 };
00186 
00187     Validity validity() const;
00188     char validityAsString() const;
00189 
00190     bool isRevoked() const;
00191     bool isInvalid() const;
00192 
00193   private:
00194     class Private;
00195     Private * d;
00196   };
00197 
00198   //
00199   // class UserID::Signature
00200   //
00201 
00202   class UserID::Signature {
00203   public:
00204     class Notation;
00205 
00206     Signature( gpgme_key_t key=0, gpgme_user_id_t uid=0, gpgme_key_sig_t sig=0 );
00207     Signature( gpgme_key_t key, gpgme_user_id_t uid, unsigned int idx );
00208     Signature( const Signature & other );
00209     ~Signature();
00210 
00211     const Signature & operator=( const Signature & other );
00212 
00213     bool isNull() const;
00214 
00215     UserID parent() const;
00216 
00217     const char * signerKeyID() const;
00218 
00219     const char * algorithmAsString() const;
00220     unsigned int algorithm() const;
00221     time_t creationTime() const;
00222     time_t expirationTime() const;
00223     bool neverExpires() const;
00224 
00225     bool isRevokation() const;
00226     bool isInvalid() const;
00227     bool isExpired() const;
00228     bool isExportable() const;
00229 
00230     const char * signerUserID() const;
00231     const char * signerName() const;
00232     const char * signerEmail() const;
00233     const char * signerComment() const;
00234 
00235     unsigned int certClass() const;
00236 
00237     enum Status { NoError = 0, SigExpired, KeyExpired,
00238           BadSignature, NoPublicKey, GeneralError };
00239     Status status() const;
00240     const char * statusAsString() const;
00241 
00242     const char * policyURL() const;
00243 
00244     unsigned int numNotations() const;
00245     Notation notation( unsigned int idx ) const;
00246     std::vector<Notation> notations() const;
00247 
00248   private:
00249     class Private;
00250     Private * d;
00251   };
00252 
00253   //
00254   //
00255   // class UserID::Signature::Notation
00256   //
00257   //
00258 
00259   class UserID::Signature::Notation {
00260   public:
00261     Notation( gpgme_key_t key=0, gpgme_user_id_t uid=0,
00262           gpgme_key_sig_t sig=0, gpgme_sig_notation_t nota=0 );
00263     Notation( gpgme_key_t key, gpgme_user_id_t uid,
00264           gpgme_key_sig_t sig, unsigned int idx );
00265     Notation( const Notation & other );
00266     ~Notation();
00267 
00268     const Notation & operator=( const Notation & other );
00269 
00270     bool isNull() const;
00271 
00272     Signature parent() const;
00273 
00274     const char * name() const;
00275     const char * value() const;
00276 
00277   private:
00278     class Private;
00279     Private * d;
00280   };
00281 
00282 } // namespace GpgME
00283 
00284 #endif // __GPGMEPP_KEY_H__
KDE Logo
This file is part of the documentation for libkdenetwork Library Version 3.3.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Mon Apr 4 04:44:05 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003