Eneboo - Documentación para desarrolladores
|
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