1 /* vi: set sw=4 ts=4: 2 * 3 * Copyright (C) 2001 - 2020 Christian Hohnstaedt. 4 * 5 * All rights reserved. 6 */ 7 8 #ifndef __PKI_TEMP_H 9 #define __PKI_TEMP_H 10 11 #include "pki_base.h" 12 #include "x509name.h" 13 #include "asn1time.h" 14 #include "pki_x509super.h" 15 16 #define D5 "-----" 17 #define PEM_STRING_XCA_TEMPLATE "XCA TEMPLATE" 18 #define TMPL_VERSION 10 19 20 #define CHECK_TMPL_KEY if (!tmpl_keys.contains(key)) { qFatal("Unknown template key: %s(%s)", __func__, CCHAR(key)); } 21 22 #define VIEW_temp_version 6 23 #define VIEW_temp_template 7 24 25 class pki_temp: public pki_x509name 26 { 27 Q_OBJECT 28 protected: 29 static const QList<QString> tmpl_keys; 30 int dataSize(); 31 void try_fload(XFile &file); 32 bool pre_defined; 33 x509name xname; 34 QMap<QString, QString> settings; 35 QString adv_ext; 36 void fromExtList(extList *el, int nid, const char *item); 37 38 public: 39 pki_temp(const pki_temp *pk); 40 pki_temp(const QString &d = QString()); 41 ~pki_temp(); 42 getSetting(QString key)43 QString getSetting(QString key) 44 { 45 CHECK_TMPL_KEY 46 return settings[key]; 47 } getSettingInt(QString key)48 int getSettingInt(QString key) 49 { 50 CHECK_TMPL_KEY 51 return settings[key].toInt(); 52 } setSetting(QString key,QString value)53 void setSetting(QString key, QString value) 54 { 55 CHECK_TMPL_KEY 56 settings[key] = value; 57 } setSetting(QString key,int value)58 void setSetting(QString key, int value) 59 { 60 CHECK_TMPL_KEY 61 settings[key] = QString::number(value); 62 } 63 void fload(const QString &fname); 64 void writeDefault(const QString &dirname) const ; 65 void fromData(const unsigned char *p, int size, int version); 66 void old_fromData(const unsigned char *p, int size, int version); 67 void fromData(const unsigned char *p, db_header_t *head ); 68 void fromData(QByteArray &ba, int version); setAsPreDefined()69 void setAsPreDefined() 70 { 71 pre_defined = true; 72 } 73 QString comboText() const; 74 QByteArray toData() const; toB64Data()75 QString toB64Data() 76 { 77 return QString::fromLatin1(toData().toBase64()); 78 } 79 bool compare(const pki_base *ref) const; 80 void writeTemp(XFile &file) const; 81 QVariant getIcon(const dbheader *hd) const; 82 QString getMsg(msg_type msg) const; 83 x509name getSubject() const; setSubject(x509name n)84 void setSubject(x509name n) 85 { 86 xname = n; 87 } 88 bool pem(BioByteArray &, int); 89 QByteArray toExportData() const; 90 void fromPEM_BIO(BIO *, const QString &); 91 void fromExportData(QByteArray data); 92 extList fromCert(pki_x509super *cert_or_req); 93 QSqlError insertSqlData(); 94 QSqlError deleteSqlData(); 95 void restoreSql(const QSqlRecord &rec); 96 }; 97 98 Q_DECLARE_METATYPE(pki_temp *); 99 #endif 100