From cbc44c591d7175800a5ab122462c7569098320e5 Mon Sep 17 00:00:00 2001 From: chris2511 Date: Thu, 17 Jul 2003 22:24:07 +0000 Subject: [PATCH] started to export and import templates --- lib/pki_crl.cpp | 1 + lib/pki_temp.cpp | 63 ++++++++++++++++++++++++++++++++++++++++++ lib/pki_temp.h | 2 ++ lib/x509name.cpp | 18 ++++++++++++ lib/x509name.h | 3 ++ ui/MainWindow.ui | 24 +++++++++++++++- view/TempView.cpp | 51 +++++++++++++++++++++++++++++++++- view/TempView.h | 3 ++ widgets/MainWindow.cpp | 2 ++ 9 files changed, 165 insertions(+), 2 deletions(-) diff --git a/lib/pki_crl.cpp b/lib/pki_crl.cpp index 67850764..d93bfa25 100644 --- a/lib/pki_crl.cpp +++ b/lib/pki_crl.cpp @@ -1,3 +1,4 @@ +/* vi: set sw=4 ts=4: */ /* * Copyright (C) 2001 Christian Hohnstaedt. * diff --git a/lib/pki_temp.cpp b/lib/pki_temp.cpp index 861cbbc8..5d57a1f4 100644 --- a/lib/pki_temp.cpp +++ b/lib/pki_temp.cpp @@ -243,7 +243,70 @@ unsigned char *pki_temp::toData(int *size) return p; } +void pki_temp::writeTemp(QString fname) +{ + FILE *fp = fopen(fname,"w"); + if (fp == NULL) { + fopen_error(fname); + return; + } + fprintf(fp, "version=%d\ntype=%d\n", version, type); + fprintf(fp, "Bool=%d,%d,%d,%d,%d,%d,%d\n", bcCrit, keyUseCrit, eKeyUseCrit, + subKey, authKey, subAltCp, issAltCp); + fprintf(fp, "Int=%d,%d,%d,%d,%d,%d,%d\n", ca, pathLen, validN, validM, + keyUse, eKeyUse, nsCertType); + fprintf(fp, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n", subAltName.latin1(), + issAltName.latin1(), crlDist.latin1(), nsComment.latin1(), + nsBaseUrl.latin1(), nsRevocationUrl.latin1(), + nsCARevocationUrl.latin1(), nsRenewalUrl.latin1(), + nsCaPolicyUrl.latin1(), nsSslServerName.latin1()); + + xname.write_fp(fp); + fclose(fp); +} +void pki_temp::loadTemp(QString fname) +{ + char buf[180]; + int i[7]; + FILE *fp = fopen(fname,"r"); + if (fp == NULL) { + fopen_error(fname); + return; + } + + fscanf(fp, " version=%d\ntype=%d ", &version, &type); + if (version != 2 || type<0 || type>3) { + openssl_error("Template version or type error"); + return; + } + + fscanf(fp, "Bool = %d , %d , %d , %d , %d , %d , %d ", &bcCrit, &keyUseCrit, + &eKeyUseCrit, &subKey, &authKey, &subAltCp, &issAltCp); + fscanf(fp, "Int = %d , %d , %d , %d , %d , %d , %d\n", &ca, &pathLen, &validN, &validM, + &keyUse, &eKeyUse, &nsCertType); +#define LONG_ERR openssl_error("String too long error") + QString subAltName = fgets(buf, 180, fp); + QString issAltName = fgets(buf, 180, fp); + QString crlDist = fgets(buf, 180, fp); + QString nsComment = fgets(buf, 180, fp); + QString nsBaseUrl = fgets(buf, 180, fp); + QString nsRevocationUrl = fgets(buf, 180, fp); + QString nsCARevocationUrl = fgets(buf, 180, fp); + QString nsRenewalUrl = fgets(buf, 180, fp); + QString nsCaPolicyUrl = fgets(buf, 180, fp); + QString nsSslServerName = fgets(buf, 180, fp); + if (subAltName.length() >= 179) LONG_ERR; + if (issAltName.length() >= 179) LONG_ERR; + if (crlDist.length() >= 179) LONG_ERR; + if (nsComment.length() >= 179) LONG_ERR; + if (nsBaseUrl.length() >= 179) LONG_ERR; + if (nsRevocationUrl.length() >= 179) LONG_ERR; + if (nsCARevocationUrl.length() >= 179) LONG_ERR; + if (nsRenewalUrl.length() >= 179) LONG_ERR; + if (nsCaPolicyUrl.length() >= 179) LONG_ERR; + if (nsSslServerName.length() >= 179) LONG_ERR; +} pki_temp::~pki_temp() { diff --git a/lib/pki_temp.h b/lib/pki_temp.h index ee519520..55244e1d 100644 --- a/lib/pki_temp.h +++ b/lib/pki_temp.h @@ -75,6 +75,7 @@ class pki_temp: public pki_base pki_temp(const pki_temp *pk); pki_temp(const QString d, int atype=0); + void loadTemp(const QString fname); /* destructor */ ~pki_temp(); void fromData(unsigned char *p, int size); @@ -82,6 +83,7 @@ class pki_temp: public pki_base bool compare(pki_base *ref); int dataSize(); void updateView(); + void writeTemp(QString fname); }; #endif diff --git a/lib/x509name.cpp b/lib/x509name.cpp index 5b7a6b87..34bf699a 100644 --- a/lib/x509name.cpp +++ b/lib/x509name.cpp @@ -188,3 +188,21 @@ int x509name::derSize() const { return i2d_X509_NAME(xn, NULL); } + +void x509name::write_fp(FILE *fp) const +{ + int cnt = entryCount(); + for (int i=0; i