mirror of
https://github.com/chris2511/xca.git
synced 2026-09-12 19:51:05 +05:00
209 lines
4.8 KiB
C++
209 lines
4.8 KiB
C++
/* vi: set sw=4 ts=4:
|
|
*
|
|
* Copyright (C) 2001 - 2020 Christian Hohnstaedt.
|
|
*
|
|
* All rights reserved.
|
|
*/
|
|
|
|
#ifndef __PKI_BASE_H
|
|
#define __PKI_BASE_H
|
|
|
|
#include <openssl/err.h>
|
|
#include <QString>
|
|
#include <QRegExp>
|
|
#include <QVariant>
|
|
#include <QByteArray>
|
|
#include "asn1time.h"
|
|
#include "pkcs11_lib.h"
|
|
#include "base.h"
|
|
#include "db.h"
|
|
#include "headerlist.h"
|
|
#include "settings.h"
|
|
#include "sql.h"
|
|
#include "xfile.h"
|
|
|
|
#define __ME QString("(%1[%2]:%3)") \
|
|
.arg(getClassName()) \
|
|
.arg(getSqlItemId().toString()) \
|
|
.arg(getIntName())
|
|
#define pki_openssl_error() _openssl_error(__ME, C_FILE, __LINE__)
|
|
#define pki_ign_openssl_error() _ign_openssl_error(__ME, C_FILE, __LINE__)
|
|
|
|
enum pki_source {
|
|
unknown,
|
|
imported,
|
|
generated,
|
|
transformed,
|
|
token,
|
|
legacy_db,
|
|
renewed
|
|
};
|
|
|
|
#define VIEW_item_id 0
|
|
#define VIEW_item_name 1
|
|
#define VIEW_item_type 2
|
|
#define VIEW_item_date 3
|
|
#define VIEW_item_source 4
|
|
#define VIEW_item_comment 5
|
|
|
|
class pki_base : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public: /* static */
|
|
static QRegExp limitPattern;
|
|
static QString rmslashdot(const QString &fname);
|
|
static unsigned hash(const QByteArray &ba);
|
|
static bool pem_comment;
|
|
static int count;
|
|
static QList<pki_base*> allitems;
|
|
|
|
protected:
|
|
QVariant sqlItemId;
|
|
QString desc, comment;
|
|
a1time insertion_date;
|
|
enum pki_type pkiType;
|
|
/* model data */
|
|
pki_base *parent;
|
|
void my_error(const QString &error) const;
|
|
QString filename;
|
|
virtual void PEM_file_comment(XFile &file) const;
|
|
virtual void collect_properties(QMap<QString, QString> &) const;
|
|
|
|
public:
|
|
enum msg_type {
|
|
msg_import,
|
|
msg_delete,
|
|
msg_delete_multi,
|
|
msg_create,
|
|
};
|
|
enum print_opt {
|
|
print_openssl_txt,
|
|
print_pem,
|
|
print_coloured,
|
|
};
|
|
enum pki_source pkiSource;
|
|
|
|
pki_base(const QString &d = QString(), pki_base *p = NULL);
|
|
pki_base(const pki_base *p);
|
|
virtual ~pki_base();
|
|
|
|
QList<pki_base*> childItems;
|
|
QString getIntName() const
|
|
{
|
|
return desc;
|
|
}
|
|
void setFilename(const QString &s)
|
|
{
|
|
filename = s;
|
|
}
|
|
QString getFilename() const
|
|
{
|
|
return filename;
|
|
}
|
|
void inheritFilename(pki_base *pki) const
|
|
{
|
|
pki->setFilename(getFilename());
|
|
}
|
|
virtual QString comboText() const;
|
|
virtual void print(FILE *fp, enum print_opt opt) const;
|
|
QString getUnderlinedName() const;
|
|
void setIntName(const QString &d)
|
|
{
|
|
desc = d;
|
|
}
|
|
virtual void autoIntName(const QString &file);
|
|
QString getComment() const
|
|
{
|
|
return comment;
|
|
}
|
|
void setComment(const QString &c)
|
|
{
|
|
comment = c;
|
|
}
|
|
QVariant getSqlItemId() const
|
|
{
|
|
return sqlItemId;
|
|
}
|
|
enum pki_type getType() const
|
|
{
|
|
return pkiType;
|
|
}
|
|
QString i2d_b64() const
|
|
{
|
|
return QString::fromLatin1(i2d().toBase64());
|
|
}
|
|
a1time getInsertionDate() const
|
|
{
|
|
return insertion_date;
|
|
}
|
|
virtual QByteArray i2d() const;
|
|
virtual bool compare(const pki_base *) const;
|
|
virtual QString getMsg(msg_type msg) const;
|
|
virtual const char *getClassName() const;
|
|
|
|
/* Tree View management */
|
|
void setParent(pki_base *p);
|
|
virtual pki_base *getParent();
|
|
pki_base *child(int row);
|
|
void append(pki_base *item);
|
|
void insert(int row, pki_base *item);
|
|
int childCount() const;
|
|
pki_base *iterate(pki_base *pki = NULL);
|
|
void takeChild(pki_base *pki);
|
|
pki_base *takeFirst();
|
|
|
|
/* Token handling */
|
|
virtual void deleteFromToken();
|
|
virtual void deleteFromToken(slotid);
|
|
virtual int renameOnToken(slotid, QString);
|
|
|
|
/* Import / Export management */
|
|
virtual BIO *pem(BIO *, int format=0);
|
|
virtual void fromPEM_BIO(BIO *, const QString &);
|
|
virtual void fromPEMbyteArray(const QByteArray &, const QString &);
|
|
virtual void fload(const QString &);
|
|
virtual void writeDefault(const QString&) const;
|
|
|
|
/* Old database management methods */
|
|
virtual void fromData(const unsigned char *, db_header_t *) {};
|
|
/* Qt Model-View methods */
|
|
virtual QVariant bg_color(const dbheader *hd) const
|
|
{
|
|
(void)hd;
|
|
return QVariant();
|
|
}
|
|
int row() const;
|
|
virtual QVariant column_data(const dbheader *hd) const;
|
|
virtual QVariant getIcon(const dbheader *hd) const;
|
|
virtual QVariant column_tooltip(const dbheader *hd) const;
|
|
virtual a1time column_a1time(const dbheader *hd) const;
|
|
virtual bool visible() const;
|
|
int isVisible();
|
|
bool childVisible() const;
|
|
|
|
/* SQL management methods */
|
|
QSqlError insertSql();
|
|
virtual QSqlError insertSqlData()
|
|
{
|
|
return QSqlError();
|
|
}
|
|
QSqlError deleteSql();
|
|
virtual QSqlError deleteSqlData()
|
|
{
|
|
return QSqlError();
|
|
}
|
|
virtual void restoreSql(const QSqlRecord &rec);
|
|
QSqlError sqlItemNotFound(QVariant sqlId) const;
|
|
unsigned hash() const;
|
|
QString pki_source_name() const;
|
|
QString get_dump_filename(const QString &dirname,
|
|
const QString &ext) const;
|
|
void selfComment(QString msg);
|
|
QStringList icsVEVENT(const a1time &expires,
|
|
const QString &summary, const QString &description) const;
|
|
};
|
|
|
|
Q_DECLARE_METATYPE(pki_base *);
|
|
#endif
|