Ignore:
Timestamp:
Dec 14, 2017, 12:16:04 PM (7 years ago)
Author:
pbuitrago@…>
Branches:
stretch
Children:
ecd8d2e
Parents:
9840ac5
Message:

HITO: funciona correctamente la llamada a murachi para realizar la firma electronica

File:
1 edited

Legend:

Unmodified
Added
Removed
  • terepaima-0.4.16/sources/mainwindow.cpp

    r9840ac5 r63dadfc  
    5050#include <QVBoxLayout>
    5151#include <QWidgetAction>
     52#include <QNetworkAccessManager>
     53#include <QNetworkRequest>
     54#include <QUrlQuery>
    5255
    5356#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
     
    115118#include <stdio.h>
    116119#include <QByteArray>
     120#include <QUrl>
     121#include <QNetworkReply>
     122
    117123
    118124#include "include/pkcs11.h"
     
    38553861void MainWindow::on_verify_signature() {
    38563862
     3863    qDebug("Entro en callMurachi()");
     3864    callMurachi();
     3865    qDebug("Salio en callMurachi()");
     3866
    38573867    qDebug("Entro a on_verify_signature()");
    38583868    verify_signature();
     
    39593969}
    39603970
     3971void MainWindow::callMurachi() {
     3972
     3973
     3974   // QString version = executeRest("https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/version","admin","admin");
     3975    QString fileid = "c73efabb-d771-4328-be4f-36b11c4add57";
     3976
     3977   QUrlQuery postData;
     3978    //postData.addQueryItem("fileId", fileid);
     3979    //postData.addQueryItem("certificate", certInHex);
     3980    //postData.addQueryItem("reason", "Certificado");
     3981    //postData.addQueryItem("location", "CENDITEL");
     3982    //postData.addQueryItem("contact", "582746574336");
     3983    //postData.addQueryItem("signatureVisible","true" );
     3984    //postData.addQueryItem("signaturePage","1" );
     3985    //postData.addQueryItem("xPos","10" );
     3986    //postData.addQueryItem("yPos","10" );
     3987    //postData.addQueryItem("lastSignature","false" );
     3988
     3989    QString parameters = QString("{\"fileId\":\"%1\",\"certificate\":\"%2\",\"reason\":\"Certificado\", \"location\":\"CENDITEL\", "
     3990                                 "\"contact\":\"582746574336\",\"signatureVisible\":\"true\","
     3991                                  "\"signaturePage\":\"1\",\"xPos\":\"10\",\"yPos\":\"10\",\"lastSignature\":\"false\" }")
     3992            .arg(fileid).arg(certInHex);
     3993
     3994    //postData.addQueryItem("", parameters);
     3995
     3996/*    QByteArray postData;
     3997    postData.append(QString("fileId=%1&").arg(fileid));
     3998    postData.append(QString("certificate=%1&").arg(certInHex));
     3999    postData.append(QString("reason=%1&").arg("Certificado"));
     4000    postData.append(QString("location=%1&").arg("CENDITEL"));
     4001    postData.append(QString("contact=%1&").arg("582746574336"));
     4002    postData.append(QString("signatureVisible=%1&").arg("true"));
     4003    postData.append(QString("signaturePage=%1&").arg("1"));
     4004    postData.append(QString("xPos=%1&").arg("10"));
     4005    postData.append(QString("yPos=%1&").arg("10"));
     4006    postData.append(QString("lastSignature=%1").arg("false"));
     4007
     4008*/
     4009
     4010    //parameters = "{}";
     4011
     4012    qDebug("Parameters: |%s|", qPrintable(parameters));
     4013
     4014   // qDebug("Verifying...... SIGNED...fileid |%s|", qPrintable(fileid));
     4015    //qDebug("certInHex: |%s|", qPrintable(certInHex));
     4016
     4017//    QString newverify  = privateExecuteRest("https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs",
     4018//                                         "admin","admin", "post",postData);
     4019
     4020 //   QString newverify  = privateExecuteRest("https://192.168.12.154:8443/Murachi/0.1/archivos/pdfs",
     4021//                                         "admin","admin", "post",postData);
     4022
     4023    //qDebug("Verifying...... SIGNED...hash |%s|", qPrintable(newverify));
     4024
     4025
     4026    //QUrlQuery postData1;
     4027
     4028    QString newverify =  executeRest("https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs","admin","admin"
     4029                                     ,parameters);
     4030
     4031    //QString verify  = privateExecuteRest("https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/aee1a794-5fc7-4008-ac6d-de2e79583074.pdf",
     4032    //                                     "admin","admin",method="post",postData);
     4033
     4034    qDebug(".....................*Verify: newverify %s", qPrintable(newverify));
     4035
     4036 //   qDebug("Version: %s", qPrintable(version));
     4037
     4038}
     4039
    39614040void MainWindow::on_signature() {
    39624041    qDebug("** on_signature **");
     4042
    39634043    on_windowCertificate();
    39644044}
     
    40394119}
    40404120
     4121
     4122
     4123void MainWindow::handleNetworkData(QNetworkReply *networkReply)
     4124{
     4125    qDebug("MainWindow::handleNetworkData....*1");
     4126
     4127    QUrl url = networkReply->url();
     4128
     4129    qDebug("MainWindow::handleNetworkData....*2");
     4130
     4131    if (!networkReply->error()) {
     4132
     4133        QString response(networkReply->readAll());
     4134        _currentrest = response;
     4135        qDebug("CALLING_REST_SERVICE....response: |%s|",qPrintable(response));
     4136
     4137
     4138     } else {
     4139     qDebug("handleNetworkData  OCURRED ERROR network error: |%s|",qPrintable(networkReply->errorString()));
     4140    }
     4141
     4142
     4143    networkReply->deleteLater();
     4144}
     4145
     4146
     4147void MainWindow::slotError(QNetworkReply::NetworkError e) {
     4148
     4149    QString currenterror = QString("Error ocurred: |%1|").arg(e);
     4150
     4151    qDebug("Error network.............1");
     4152    //SYD << currenterror;
     4153
     4154    _currentrest = currenterror;
     4155
     4156}
     4157
     4158
     4159
     4160QString MainWindow::privateExecuteRest(const QString &url, const QString &name,
     4161                                       const QString &pass,
     4162                                       QString method, const QUrlQuery& postData )
     4163{
     4164    _currentrest = "";
     4165
     4166    qDebug("Private Executing Rest...1");
     4167
     4168    QNetworkAccessManager *manager = new QNetworkAccessManager(this);
     4169
     4170  //  int nargs;
     4171  //  char** argv =NULL;
     4172  //  QCoreApplication myapp(nargs,argv);
     4173
     4174
     4175
     4176        QNetworkRequest request;
     4177        QSslConfiguration conf = request.sslConfiguration();
     4178        conf.setPeerVerifyMode(QSslSocket::VerifyNone);
     4179     //   conf.setProtocol(QSsl::TlsV1SslV3);
     4180        request.setSslConfiguration(conf);
     4181
     4182
     4183        qDebug("Executing Rest...4");
     4184
     4185     QUrl myurl(url);
     4186
     4187     //   myurl.setUserName(name);
     4188     //   myurl.setPassword(pass);
     4189        request.setUrl(myurl);
     4190        qDebug("Private Executing Rest...URL CALLING:|%s|", qPrintable(url));
     4191
     4192      qDebug("Private Executing Rest...4");
     4193
     4194      connect(manager, SIGNAL(finished(QNetworkReply*)),
     4195              this, SLOT(handleNetworkData(QNetworkReply*)));
     4196
     4197
     4198      qDebug("Private Executing Rest...5");
     4199      QNetworkReply *reply = NULL;
     4200      if (method == "post") {
     4201          qDebug("Private Executing Rest...**6");
     4202          qDebug("CALLING_REST_SERVICE... method IS POST");
     4203
     4204           request.setHeader(QNetworkRequest::ContentTypeHeader,
     4205              "application/json");
     4206           QString headerData = QString("Basic YWRtaW46YWRtaW4=");
     4207           request.setRawHeader("Authorization", headerData.toLocal8Bit());
     4208
     4209           //QNetworkReply *reply = manager->post(request, postData.encodedQuery());
     4210           qDebug("Private Executing Rest...7");
     4211
     4212           reply = manager->post(request,  postData.toString(QUrl::FullyEncoded).toUtf8());
     4213          // reply = manager->post(request,  postData);
     4214
     4215
     4216           connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),
     4217                     this, SLOT(slotError(QNetworkReply::NetworkError)));
     4218
     4219           qDebug("Private Executing Rest...8");
     4220
     4221
     4222      } else {
     4223            qDebug("CALLING_REST_SERVICE... method IS GET");
     4224            reply = manager->get(request);
     4225
     4226      }
     4227
     4228
     4229      qDebug("Private Executing Rest...9");
     4230      QEventLoop loop;
     4231      connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
     4232      loop.exec();
     4233
     4234
     4235      qDebug("Private Executing Rest...10");
     4236      QString result = _currentrest;
     4237      //QString result = "....test1";
     4238      return result;
     4239
     4240}
     4241
     4242
     4243
     4244QString MainWindow::executeRest(const QString &url, const QString &name, const QString &pass, const QString& postData) {
     4245    _currentrest = "";
     4246
     4247    qDebug("Executing Executing...Rest...1");
     4248
     4249    QNetworkAccessManager *manager = new QNetworkAccessManager(this);
     4250
     4251    qDebug("Executing Executing...Rest...2");
     4252
     4253    //int nargs;
     4254    //char** argv =NULL;
     4255    //QCoreApplication myapp(nargs,argv);
     4256
     4257    qDebug("Executing Rest...3");
     4258
     4259      QNetworkRequest request;
     4260    QSslConfiguration conf = request.sslConfiguration();
     4261    conf.setPeerVerifyMode(QSslSocket::VerifyNone);
     4262    //conf.setPeerVerifyMode(QSslSocket::AutoVerifyPeer);
     4263    //conf.setProtocol(QSsl::AnyProtocol);
     4264    request.setSslConfiguration(conf);
     4265
     4266    qDebug("Executing Rest...4");
     4267
     4268       QUrl myurl(url);
     4269
     4270      //myurl.setUserName(name);
     4271      //myurl.setPassword(pass);
     4272      request.setUrl(myurl);
     4273
     4274      qDebug("Executing Rest...5");
     4275
     4276      connect(manager, SIGNAL(finished(QNetworkReply*)),
     4277              this, SLOT(handleNetworkData(QNetworkReply*)));
     4278
     4279
     4280      qDebug("Executing Rest...6");
     4281
     4282      request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");
     4283      //QNetworkReply *reply = manager->get(QNetworkRequest(QUrl("http://127.0.0.1:8000")));
     4284      request.setHeader(QNetworkRequest::ContentTypeHeader,
     4285       //  "application/x-www-form-urlencoded");
     4286      "application/json");
     4287
     4288      //request.setAttribute(QNetworkRequest::ConnectionEncryptedAttribute,QVariant(true));
     4289
     4290      QString headerData = QString("Basic YWRtaW46YWRtaW4=");
     4291      request.setRawHeader("Authorization", headerData.toUtf8());
     4292
     4293      //QNetworkReply *reply = manager->post(request, postData.encodedQuery());
     4294      //QNetworkReply *reply = manager->get(request);
     4295
     4296      QNetworkReply *reply = manager->post(request, postData.toUtf8());
     4297      //QNetworkReply *reply = manager->post(request,postData.toString(QUrl::FullyEncoded).toUtf8());
     4298      qDebug("Executing Rest..............*7");
     4299
     4300      connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),
     4301                this, SLOT(slotError(QNetworkReply::NetworkError)));
     4302
     4303      QEventLoop loop;
     4304      connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
     4305      loop.exec();
     4306
     4307      connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),
     4308                this, SLOT(slotError(QNetworkReply::NetworkError)));
     4309
     4310      qDebug("Executing Rest...8");
     4311
     4312      QString result = _currentrest;
     4313      //QString result = "....test1";
     4314      return result;
     4315
     4316}
     4317
    40414318void MainWindow::on_windowCertificate() {
    40424319
     
    40584335    m_nct = new CryptoToken();
    40594336
     4337
     4338
     4339
    40604340    //Sección para verificar si hay dispositivo cryptografico conectado
    40614341    try {
    40624342        certificateInformationListN = m_nct->getDeviceCertificates(); //obtener los certificados disponible en el dispositivo
     4343
     4344        qDebug("******************* Certification Info **********************");
     4345        for(int i= 0; i < certificateInformationListN.size(); i++) {
     4346            for(int j= 0; j < certificateInformationListN[i].size(); j++) {
     4347                QString data = certificateInformationListN[i].at(j);
     4348                if (j == 3)  {
     4349                    certInHex = data;
     4350                }
     4351                qDebug(",,,,addngCERTIFICATION INFO %d %d: |%s|",i,j, qPrintable(data));
     4352
     4353            }
     4354            qDebug(".................");
     4355        }
    40634356    }catch(std::runtime_error e){
    40644357        ok = "falso";
     
    40704363        msgBox.exec();
    40714364     }
     4365
     4366
    40724367   
    40734368    //Si hay dispositivo conectado creo la ventana para mostrar los certificados si hay disponibles
Note: See TracChangeset for help on using the changeset viewer.