pkiutilities/untrustedcertificatedialog/tsrc/dialoglauncher/dialoglauncher.cpp
branchRCL_3
changeset 22 03674e5abf46
parent 21 09b1ac925e3f
child 23 94da73d93b58
equal deleted inserted replaced
21:09b1ac925e3f 22:03674e5abf46
     1 /*
       
     2 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Test application for untrusted certificate dialog.
       
    15 *
       
    16 */
       
    17 
       
    18 #include "dialoglauncher.h"
       
    19 #include "../../inc/untrustedcertificatedefinitions.h"
       
    20 #include <hbmainwindow.h>
       
    21 #include <hbview.h>
       
    22 #include <hblabel.h>
       
    23 #include <hbcombobox.h>
       
    24 #include <hbtextedit.h>
       
    25 #include <hbpushbutton.h>
       
    26 #include <hbdevicedialog.h>
       
    27 #include <hbmessagebox.h>
       
    28 #include <QDir>
       
    29 #include <QBuffer>
       
    30 #include <QGraphicsLinearLayout>
       
    31 
       
    32 #ifdef Q_OS_SYMBIAN
       
    33 #include <securitydefs.h>       // EValidatedOK, ESignatureInvalid, EDateOutOfRange
       
    34 #endif
       
    35 
       
    36 const QString KTestCertDir = "c:/data/testCerts";
       
    37 
       
    38 
       
    39 UntrustedCertDialogLauncher::UntrustedCertDialogLauncher(int& argc, char* argv[])
       
    40     : HbApplication(argc, argv), mMainWindow(0), mMainView(0)
       
    41 {
       
    42     mMainWindow = new HbMainWindow();
       
    43     mMainView = new HbView();
       
    44     mMainView->setTitle(tr("UntrustedCertDlg"));
       
    45 
       
    46     QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
       
    47 
       
    48     HbLabel *certFile = new HbLabel(tr("Certificate file:"));
       
    49     layout->addItem(certFile);
       
    50 
       
    51     mFilesList = new HbComboBox;
       
    52     mFilesList->setEditable(false);
       
    53     QDir dir(KTestCertDir);
       
    54     if (dir.exists()) {
       
    55         QFileInfoList list = dir.entryInfoList(QDir::Files);
       
    56         QListIterator<QFileInfo> iter(list);
       
    57         while (iter.hasNext()) {
       
    58             const QFileInfo &info(iter.next());
       
    59             mFilesList->addItem(info.fileName());
       
    60         }
       
    61     }
       
    62     layout->addItem(mFilesList);
       
    63 
       
    64     mHostName = new HbTextEdit(tr("some.host.com"));
       
    65     layout->addItem(mHostName);
       
    66 
       
    67     HbPushButton *button = 0;
       
    68     button = new HbPushButton("Open (valid)");
       
    69     connect(button, SIGNAL(clicked()), this, SLOT(activateDialogDateValid()));
       
    70     layout->addItem(button);
       
    71 
       
    72     button = new HbPushButton("Open (out-of-date)");
       
    73     connect(button, SIGNAL(clicked()), this, SLOT(activateDialogOutOfDate()));
       
    74     layout->addItem(button);
       
    75 
       
    76     button = new HbPushButton("Open (untrusted)");
       
    77     connect(button, SIGNAL(clicked()), this, SLOT(activateDialogUntrusted()));
       
    78     layout->addItem(button);
       
    79 
       
    80     button = new HbPushButton("Open (invalid)");
       
    81     connect(button, SIGNAL(clicked()), this, SLOT(activateDialogInvalid()));
       
    82     layout->addItem(button);
       
    83 
       
    84     button = new HbPushButton("Exit");
       
    85     connect(button, SIGNAL(clicked()), qApp, SLOT(quit()));
       
    86     layout->addItem(button);
       
    87 
       
    88     mMainView->setLayout(layout);
       
    89     mMainWindow->addView(mMainView);
       
    90     mMainWindow->show();
       
    91 }
       
    92 
       
    93 UntrustedCertDialogLauncher::~UntrustedCertDialogLauncher()
       
    94 {
       
    95     delete mMainView;
       
    96     delete mMainWindow;
       
    97 }
       
    98 
       
    99 void UntrustedCertDialogLauncher::activateDialog(const QVariantMap &params)
       
   100 {
       
   101     HbDeviceDialog *deviceDialog = new HbDeviceDialog(HbDeviceDialog::NoFlags, this);
       
   102     connect(deviceDialog, SIGNAL(dataReceived(QVariantMap)),
       
   103         this, SLOT(dataReceived(QVariantMap)));
       
   104     connect(deviceDialog, SIGNAL(deviceDialogClosed()),
       
   105         this, SLOT(deviceDialogClosed()));
       
   106 
       
   107     if (!deviceDialog->show(KUntrustedCertificateDialog, params)) {
       
   108         HbMessageBox::warning(tr("Cannot open dialog"));
       
   109     }
       
   110 }
       
   111 
       
   112 QVariantMap UntrustedCertDialogLauncher::readParams()
       
   113 {
       
   114     QVariantMap params;
       
   115 
       
   116     QString fileName = mFilesList->currentText();
       
   117     QFile file;
       
   118     QDir::setCurrent(KTestCertDir);
       
   119     file.setFileName(fileName);
       
   120     file.open(QIODevice::ReadOnly);
       
   121     QByteArray fileContent = file.readAll();
       
   122     file.close();
       
   123 
       
   124     params.insert(KUntrustedCertEncodedCertificate, fileContent);
       
   125 
       
   126     QString serverName = mHostName->toPlainText();
       
   127     params.insert(KUntrustedCertServerName, serverName);
       
   128 
       
   129     return params;
       
   130 }
       
   131 
       
   132 void UntrustedCertDialogLauncher::activateDialogDateValid()
       
   133 {
       
   134     QVariantMap params = readParams();
       
   135 
       
   136     int validationError = EValidatedOK;
       
   137     params.insert(KUntrustedCertValidationError, validationError);
       
   138 
       
   139     activateDialog(params);
       
   140 }
       
   141 
       
   142 void UntrustedCertDialogLauncher::activateDialogOutOfDate()
       
   143 {
       
   144     QVariantMap params = readParams();
       
   145 
       
   146     int validationError = EDateOutOfRange;
       
   147     params.insert(KUntrustedCertValidationError, validationError);
       
   148 
       
   149     activateDialog(params);
       
   150 }
       
   151 
       
   152 void UntrustedCertDialogLauncher::activateDialogUntrusted()
       
   153 {
       
   154     QVariantMap params = readParams();
       
   155 
       
   156     int validationError = EChainHasNoRoot;
       
   157     params.insert(KUntrustedCertValidationError, validationError);
       
   158 
       
   159     activateDialog(params);
       
   160 }
       
   161 
       
   162 void UntrustedCertDialogLauncher::activateDialogInvalid()
       
   163 {
       
   164     QVariantMap params = readParams();
       
   165 
       
   166     int validationError = ECertificateRevoked;
       
   167     params.insert(KUntrustedCertValidationError, validationError);
       
   168 
       
   169     activateDialog(params);
       
   170 }
       
   171 
       
   172 void UntrustedCertDialogLauncher::dataReceived(QVariantMap data)
       
   173 {
       
   174     QString values;
       
   175     foreach(const QString key, data.keys()) {
       
   176         values.append(key);
       
   177         values.append(tr(" = "));
       
   178         values.append(data.value(key).toString());
       
   179         values.append(tr("\n"));
       
   180     }
       
   181 
       
   182     HbMessageBox::information(tr("dataReceived %1").arg(values));
       
   183 }
       
   184 
       
   185 void UntrustedCertDialogLauncher::deviceDialogClosed()
       
   186 {
       
   187     HbMessageBox::information(tr("deviceDialogClosed"));
       
   188 }
       
   189