view ui/createcertlistdialog.h @ 1306:845048d4a69f

(issue159) Use user specific appdata directory for nss list with simple rights. Using the ProgramData folder with resticted access rights failed in case the process was not elevated.
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 13 Oct 2014 12:31:37 +0200
parents 2a1aa9df8f11
children d009da9cfa10
line wrap: on
line source
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU GPL (v>=2)
 * and comes with ABSOLUTELY NO WARRANTY!
 * See LICENSE.txt for details.
 */
#ifndef CREATECERTLISTDIALOG_H
#define CREATECERTLISTDIALOG_H

#include <QDialog>
#include <QMainWindow>
#include <QLineEdit>

#include "certificate.h"

#include <polarssl/pk.h>
/**
 * @file createinstallerdialog.h
 * @brief The dialog to select the signing certificate and create a certificate list.
 */

class QListWidget;
class AdministratorWindow;

/** @brief The dialog to select the signing certificate and create a certificate list.*/
class CreateCertListDialog : public QDialog
{
    Q_OBJECT
public:
    /** @brief Create a dialog showing settings for the create certificate list
     * process
     * */
    CreateCertListDialog(AdministratorWindow *parent);
    ~CreateCertListDialog();

    /** @brief write a signed certificate list.
     *
     * @param [in] certs The certificates to include in the list
     * @param [in] filePath The path where the list should be written to
     * @param [in] listDate The date to write in the list
     * @param [in] pk The private key to sign with.
     *
     * @returns true on success false on error.
     */
    static bool writeList(const QList<Certificate>& certs,
            const QString& filePath, const QDateTime& listDate, pk_context *pk);


private:
    void setupGUI();

    QLineEdit *mKeyFile;
    QLineEdit *mSaveDir;
    AdministratorWindow *mAdminWindow;

    pk_context *mPk;

    /** @brief show an error message with QMessageBox
     *
     * @param [in] msg The message to show
     */
    void showErrorMessage(const QString &msg);

    /** @brief load a file into mPk
     *
     * If the file is not a valid key or an error
     * occurs mPk will be NULL after a call to this function.
     *
     * @param [in] fileName the file to load
     */
    void loadKeyFile(const QString& fileName);

private slots:
    /** @brief Open the certificate selection dialog and parse the certificate
     *
     * If the certificate can be parsed mPk is replaced by the new key
     * otherwise an error message is shown to the user.
     */
    void openCertificateSelect();
    void openSaveLocation();
    /** @brief create a valid certificate list file
     *
     * The contents of the certificate list are the certificates
     * shown in the adminWindow. It is signed with the currently
     * loaded certificate in mPk. On errors the user is
     * informed with showErrorMessage */
    void createList();
};

#endif // CREATECERTLISTDIALOG_H

http://wald.intevation.org/projects/trustbridge/