Eneboo - Documentación para desarrolladores
src/flbase/FLDigiDoc.h
Ir a la documentación de este archivo.
00001 /***************************************************************************
00002                                FLDigiDoc.h
00003                           -------------------
00004  begin                : lun dic 14 2009
00005  copyright            : (C) 2004-2009 by InfoSiAL, S.L.
00006  email                : mail@infosial.com
00007 ***************************************************************************/
00008 /***************************************************************************
00009  *   This program is free software; you can redistribute it and/or modify  *
00010  *   it under the terms of the GNU General Public License as published by  *
00011  *   the Free Software Foundation; version 2 of the License.               *
00012  ***************************************************************************/
00013 /***************************************************************************
00014    Este  programa es software libre. Puede redistribuirlo y/o modificarlo
00015    bajo  los  términos  de  la  Licencia  Pública General de GNU   en  su
00016    versión 2, publicada  por  la  Free  Software Foundation.
00017  ***************************************************************************/
00018 
00019 #ifndef FLDIGIDOC_H
00020 #define FLDIGIDOC_H
00021 
00022 #include <qobject.h>
00023 #include <qstring.h>
00024 
00025 #ifndef byte
00026 typedef unsigned char byte;
00027 #endif
00028 
00029 class FLDigiDoc
00030 {
00031 public:
00032 
00033   FLDigiDoc(const QString &configfile = QString::null);
00034 
00035   ~FLDigiDoc();
00036 
00037   int dataSignature(const QByteArray &data, QByteArray &signResult,
00038                     const QString &keyfile, const QString &passwd);
00039   int dataSignature(const QString &data, QByteArray &signResult,
00040                     const QString &keyfile, const QString &passwd);
00041   int fileSignature(const QString &fileName, QByteArray &signResult,
00042                     const QString &keyfile, const QString &passwd);
00043 
00044   int dataDigest(const QByteArray &data, QByteArray &digestResult);
00045   int dataDigest(const QString &data, QByteArray &digestResult);
00046   int fileDigest(const QString &fileName, QByteArray &digestResult);
00047 
00048   int verifySignatureFile(const QString &fileName, QByteArray &signResult,
00049                           const QString &certfile);
00050   int verifySignatureData(const QByteArray &data, QByteArray &signResult,
00051                           const QString &certfile);
00052   int verifyCertByOCSP(const QString &certfile);
00053 
00054   int certDigest(const QString &certfile, QByteArray &digestResult);
00055   int certIssuerDN(const QString &certfile, QString &issuerResult);
00056   int certSerialNumber(const QString &certfile, QByteArray &serialResult);
00057   int certRSAKeyValue(const QString &certfile, QByteArray &modResult,
00058                       QByteArray &expResult);
00059 
00060   QByteArray encodeBase64(const byte *data, int size) const;
00061   QByteArray encodeBase64(const QByteArray &data) const;
00062   QByteArray decodeBase64(const byte *data, int size) const;
00063   QByteArray decodeBase64(const QByteArray &data) const;
00064 };
00065 
00066 class FLDigiDocInterface : public QObject
00067 {
00068   Q_OBJECT
00069 
00070 public:
00071 
00075   FLDigiDocInterface(const QString &configfile = QString::null) : QObject(0) {
00076     obj_ = new FLDigiDoc(configfile);
00077   }
00078 
00082   ~FLDigiDocInterface() {
00083     if (obj_)
00084       delete obj_;
00085   }
00086 
00087 public slots:
00088 
00089   QString dataSignature(const QByteArray &data, const QString &keyfile, const QString &passwd) {
00090     QByteArray res;
00091     obj_->dataSignature(data, res, keyfile, passwd);
00092     return res;
00093   }
00094 
00095   QString dataSignature(const QString &data, const QString &keyfile, const QString &passwd) {
00096     QByteArray res;
00097     obj_->dataSignature(data, res, keyfile, passwd);
00098     return res;
00099   }
00100 
00101   QString fileSignature(const QString &fileName, const QString &keyfile, const QString &passwd) {
00102     QByteArray res;
00103     obj_->fileSignature(fileName, res, keyfile, passwd);
00104     return res;
00105   }
00106 
00107   QString dataDigest(const QByteArray &data) {
00108     QByteArray res;
00109     obj_->dataDigest(data, res);
00110     return res;
00111   }
00112 
00113   QString dataDigest(const QString &data) {
00114     QByteArray res;
00115     obj_->dataDigest(data, res);
00116     return res;
00117   }
00118 
00119   QString fileDigest(const QString &fileName) {
00120     QByteArray res;
00121     obj_->fileDigest(fileName, res);
00122     return res;
00123   }
00124 
00125   QString verifySignature(const QString &fileName, const QString &certfile) {
00126     QByteArray res;
00127     obj_->verifySignatureFile(fileName, res, certfile);
00128     return res;
00129   }
00130 
00131   int verifyCertByOCSP(const QString &certfile) {
00132     return obj_->verifyCertByOCSP(certfile);
00133   }
00134 
00135   QString certDigest(const QString &certfile) {
00136     QByteArray res;
00137     obj_->certDigest(certfile, res);
00138     return res;
00139   }
00140 
00141   QString certIssuerDN(const QString &certfile) {
00142     QString res;
00143     obj_->certIssuerDN(certfile, res);
00144     return res;
00145   }
00146 
00147   QString certSerialNumber(const QString &certfile) {
00148     QByteArray res;
00149     obj_->certSerialNumber(certfile, res);
00150     return res;
00151   }
00152 
00153   QString certRSAKeyValue(const QString &certfile) {
00154     QByteArray res1, res2;
00155     obj_->certRSAKeyValue(certfile, res1, res2);
00156     return QString(res1) + "@@@@" + QString(res2);
00157   }
00158 
00159 private:
00160 
00161   FLDigiDoc *obj_;
00162 };
00163 
00164 #endif
 Todo Clases Namespaces Archivos Funciones Variables 'typedefs' Enumeraciones Valores de enumeraciones Propiedades Amigas 'defines'