diff --git a/ExportCert_UI.ui b/ExportCert_UI.ui index ce9acfd5..74909c29 100644 --- a/ExportCert_UI.ui +++ b/ExportCert_UI.ui @@ -238,7 +238,7 @@ text DER is a binary format of the Certificate PEM is a base64 encoded Certificate -PKCS#7 is an official Certificate exchange format +PKCS#7 is an official Certificate exchange format PKCS#12 is an encrypted official Key-Certificate exchange format diff --git a/MainWindow.cpp b/MainWindow.cpp index 4c4a168c..7389d95c 100644 --- a/MainWindow.cpp +++ b/MainWindow.cpp @@ -73,10 +73,22 @@ MainWindow::MainWindow(QWidget *parent, const char *name ) temps = NULL; dbenv = NULL; global_tid = NULL; + + #ifdef WIN32 - baseDir = ""; + char buf[255] = ""; + DWORD ret_val; + ret_val = ExpandEnvironmentStrings("%USERPROFILE%", buf, 255); + baseDir = buf; + if (ret_val == 0) baseDir = "C:"; + if (ret_val > 255) { + QMessageBox::warning(this,tr(XCA_TITLE), "Your %USERPROFILE% is too long"); + qFatal( "Couldnt create: " + baseDir ); + } + #else baseDir = QDir::homeDirPath(); +#endif baseDir += QDir::separator(); baseDir += BASE_DIR; @@ -85,8 +97,7 @@ MainWindow::MainWindow(QWidget *parent, const char *name ) if (!d.mkdir(baseDir)) qFatal( "Couldnt create: " + baseDir ); } - -#endif + #ifdef qt3 connect( keyList, SIGNAL(itemRenamed(QListViewItem *, int, const QString &)), @@ -286,6 +297,9 @@ void MainWindow::initPass() PASS_INFO p; string passHash = settings->getString("pwhash"); if (passHash == "") { +#ifdef WIN32 + QMessageBox::warning(this,tr(XCA_TITLE), tr("WARNING: If you have updated your 'xca' application you have to copy your 'xca.db' from 'C:\\PROGAM FILES\\XCA\\' to 'C:\\DOCUMENTS AND SETTINGS\\xca\\ ( %USERPROFILE% )")); +#endif string title=tr("New Password").latin1(); string description=tr("Please enter a password, that will be used to encrypt your private keys in the database-file").latin1(); p.title = &title; @@ -463,12 +477,12 @@ void MainWindow::newPath(QString str) bool MainWindow::mkDir(QString dir) { -#ifdef WIN32 - int ret = mkdir(dir.latin1()); - // in direct.h declare _CRTIMP int __cdecl mkdir(const char *); -#else +#ifdef WIN32 + int ret = mkdir(dir.latin1()); + // in direct.h declare _CRTIMP int __cdecl mkdir(const char *); +#else int ret = mkdir(dir.latin1(), S_IRUSR | S_IWUSR | S_IXUSR); -#endif +#endif if (ret) { QString desc = " ("; desc += strerror(ret); @@ -478,6 +492,6 @@ bool MainWindow::mkDir(QString dir) return false; } return true; - + } diff --git a/MainWindow.h b/MainWindow.h index 9d6b7987..c4656a4f 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -104,8 +104,10 @@ #include "lib/db_crl.h" #include #include + #ifdef WIN32 #include // to define mkdir function +#include // to define mkdir function #else #include #endif @@ -119,7 +121,8 @@ class MainWindow: public MainWindow_UI { - Q_OBJECT + Q_OBJECT + protected: void addStr(string &str, const char *add); void init_images(); diff --git a/lib/base.h.win b/lib/base.h.win index ceaddfdf..853587d1 100644 --- a/lib/base.h.win +++ b/lib/base.h.win @@ -6,5 +6,5 @@ #define DBEX(x) #define CERR(x) -#define PREFIX "" + #define XCA_TITLE "X Certifikate and Key management" diff --git a/lib/db_base.cpp b/lib/db_base.cpp index 5a87c66a..8ff5060f 100644 --- a/lib/db_base.cpp +++ b/lib/db_base.cpp @@ -51,7 +51,6 @@ #include "db_base.h" - db_base::db_base(DbEnv *dbe, string DBfile, string DB, DbTxn *global_tid) { dbenv = dbe; @@ -443,14 +442,31 @@ pki_base *db_base::findPKI(pki_base *refpki) QPixmap *db_base::loadImg(const char *name ) { - QString path =""; #ifdef WIN32 - path = "."; -#else - path = PREFIX ; -#endif - path += QDir::separator(); - return new QPixmap(path + name); + unsigned char PREFIX[100]; + LONG lRc; + HKEY hKey; + lRc=RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\xca",0,KEY_READ, &hKey); + if(lRc!= ERROR_SUCCESS){ + // No key error + QMessageBox::warning(NULL,tr(XCA_TITLE), "Registry Key: 'HKEY_LOCAL_MACHINE->Software->xca' not found"); + PREFIX[0] = '\0'; + } + else { + ULONG dwLength = 100; + lRc=RegQueryValueEx(hKey,"Install_Dir",NULL,NULL, PREFIX, &dwLength); + if(lRc!= ERROR_SUCCESS){ + // No key error + QMessageBox::warning(NULL,tr(XCA_TITLE), "Registry Key: 'HKEY_LOCAL_MACHINE->Software->xca->Install_Dir' not found"); + PREFIX[0] = '\0'; + } + } + lRc=RegCloseKey(hKey); +#endif + + QString path = (char *)PREFIX; + path += QDir::separator(); + return new QPixmap(path + name); } void db_base::updateViewPKI(pki_base *pki) diff --git a/lib/db_base.h b/lib/db_base.h index 51ca0872..0351b2cf 100644 --- a/lib/db_base.h +++ b/lib/db_base.h @@ -49,6 +49,7 @@ */ #include + #ifdef HAVE_CONFIG_H #include "../config.h" @@ -68,7 +69,9 @@ #else // HAVE_CONFIG_H #define WIN32 1 -#include +#include +#include + #endif // HAVE_CONFIG_H #include diff --git a/xca.dsp b/xca.dsp index 1f93d20c..053bc26d 100644 --- a/xca.dsp +++ b/xca.dsp @@ -65,7 +65,7 @@ LINK32=link.exe # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" -# ADD CPP /nologo /MD /W3 /Gm /Zi /Od /I "$(QTDIR)\include" /I "$(QTDIR)\mkspecs\win32-msvc" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "UNICODE" /D "QT_DLL" /D "QT_THREAD_SUPPORT" /FD /GZ -Zm200 /c +# ADD CPP /nologo /MD /W3 /Gm /GX /Zi /Od /I "$(QTDIR)\include" /I "$(QTDIR)\mkspecs\win32-msvc" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "QT_DLL" /D "QT_THREAD_SUPPORT" /FD /D /GZ -Zm200 "UNICODE" /c # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x407 # ADD RSC /l 0x409 /d "_DEBUG" @@ -208,6 +208,14 @@ InputPath=.\lib\db_crl.h !ELSEIF "$(CFG)" == "xca - Win32 Debug" +# Begin Custom Build +InputPath=.\lib\db_crl.h + +"lib\moc_db_crl.cpp" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + $(QTDIR)\bin\moc lib\db_crl.h -o lib\moc_db_crl.cpp + +# End Custom Build + !ENDIF # End Source File diff --git a/xca.dsw b/xca.dsw index ba7f7136..b31f1ef2 100644 --- a/xca.dsw +++ b/xca.dsw @@ -1,29 +1,29 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! - -############################################################################### - -Project: "xca"=.\xca.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! + +############################################################################### + +Project: "xca"=".\xca.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/xca.nsi b/xca.nsi index 173f9a89..ba7fd86c 100755 --- a/xca.nsi +++ b/xca.nsi @@ -1,110 +1,94 @@ -; xca.nsi -; -; This is the .nsi script for creating the nullsoft windows installer - -; The name of the installer -Name "X CA" -Caption "X Certification Authority" - -; The licenseagreement -LicenseText "You must accept the following BSD like license to continue." -LicenseData COPYRIGHT - -; The file to write -OutFile "xca.exe" - -; The default installation directory -InstallDir $PROGRAMFILES\xca -; Registry key to check for directory (so if you install again, it will -; overwrite the old one automatically) -InstallDirRegKey HKLM SOFTWARE\xca "Install_Dir" - -; The text to prompt the user to enter a directory -ComponentText "This will install the X Certification Authority (c) 2002 by Christian@Hohnstaedt.de" -; The text to prompt the user to enter a directory -DirText "Choose a directory to install in to:" - -; The stuff to install -Section "xca (required)" - ; Set output path to the installation directory. - SetOutPath $INSTDIR - ; Put file there - File "Release\xca.exe" - File "img\bigcert.png" - File "img\bigcsr.png" - File "img\bigkey.png" - File "img\bigtemp.png" - File "img\halfkey.png" - File "img\invalidcert.png" - File "img\invalidcertkey.png" - File "img\key.png" - File "img\req.png" - File "img\reqkey.png" - File "img\template.png" - File "img\validcert.png" - File "img\validcertkey.png" - File "c:\devel\db-4.0.14\build_win32\Release\libdb40.dll" - File "c:\devel\openssl-0.9.6g\out32dll\Release\SSLeay32.dll" - File "c:\devel\openssl-0.9.6g\out32dll\Release\libeay32.dll" - File "e:\win\qt2\bin\msvcrt.dll" - File "c:\windows\system\msvcp60.dll" - File "e:\win\qt2\bin\qt-mt230nc.dll" - ; Write the installation path into the registry - WriteRegStr HKLM SOFTWARE\xca "Install_Dir" "$INSTDIR" - - ; Write the uninstall keys for Windows - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\xca" "DisplayName" "X CA (remove only)" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\xca" "UninstallString" '"$INSTDIR\uninstall.exe"' - WriteUninstaller "uninstall.exe" -SectionEnd - -; optional section -Section "Start Menu Shortcuts" - CreateDirectory "$SMPROGRAMS\xca" - CreateShortCut "$SMPROGRAMS\xca\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 - CreateShortCut "$SMPROGRAMS\xca\xca xca.lnk" "$INSTDIR\xca.exe" "" "$INSTDIR\xca.exe" 0 -SectionEnd - -; uninstall stuff - -UninstallText "This will uninstall xca. Hit next to continue." - -; special uninstall section. -Section "Uninstall" - ; remove registry keys - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\xca" - DeleteRegKey HKLM SOFTWARE\xca - ; remove files - Delete $INSTDIR\xca.exe - ; MUST REMOVE UNINSTALLER, too - Delete $INSTDIR\uninstall.exe - ; remove shortcuts, if any. - Delete "$SMPROGRAMS\xca\*.*" - ; remove directories used. - RMDir "$SMPROGRAMS\xca" - - ;RMDir "$INSTDIR" NO, we keep the databasefiles xca.db - Delete "$INSTDIR\xca\*.png" - Delete "$INSTDIR\xca\*.dll" - Delete "$INSTDIR\bigcert.png" - Delete "$INSTDIR\bigcsr.png" - Delete "$INSTDIR\bigkey.png" - Delete "$INSTDIR\bigtemp.png" - Delete "$INSTDIR\halfkey.png" - Delete "$INSTDIR\invalidcert.png" - Delete "$INSTDIR\invalidcertkey.png" - Delete "$INSTDIR\key.png" - Delete "$INSTDIR\req.png" - Delete "$INSTDIR\reqkey.png" - Delete "$INSTDIR\template.png" - Delete "$INSTDIR\validcert.png" - Delete "$INSTDIR\validcertkey.png" - Delete "$INSTDIR\libdb40.dll" - Delete "$INSTDIR\SSLeay32.dll" - Delete "$INSTDIR\libeay32.dll" - Delete "$INSTDIR\msvcrt.dll" - Delete "$INSTDIR\msvcp60.dll" - Delete "$INSTDIR\qt-mt230nc.dll" -SectionEnd - -; eof +; xca.nsi +; +; This is the .nsi script for creating the nullsoft windows installer + +; The name of the installer +Name "X CA" +Caption "X Certification Authority" + +; The licenseagreement +LicenseText "You must accept the following BSD like license to continue." +LicenseData COPYRIGHT + +; The file to write +OutFile "xca.exe" + +; The default installation directory +InstallDir $PROGRAMFILES\xca +; Registry key to check for directory (so if you install again, it will +; overwrite the old one automatically) +InstallDirRegKey HKLM SOFTWARE\xca "Install_Dir" + +; The text to prompt the user to enter a directory +ComponentText "This will install the X Certification Authority (c) 2002 by Christian@Hohnstaedt.de" +; The text to prompt the user to enter a directory +DirText "Choose a directory to install in to:" + +; The stuff to install +Section "xca (required)" + ; Set output path to the installation directory. + SetOutPath $INSTDIR + ; Put file there + File "Release\xca.exe" + File "img\bigcert.png" + File "img\bigcrl.png" + File "img\bigcsr.png" + File "img\bigkey.png" + File "img\bigtemp.png" + File "img\halfkey.png" + File "img\invalidcert.png" + File "img\invalidcertkey.png" + File "img\key.png" + File "img\key.ico" + File "img\key.xpm" + File "img\netscape.png" + File "img\req.png" + File "img\reqkey.png" + File "img\revoked.png" + File "img\template.png" + File "img\validcert.png" + File "img\validcertkey.png" + File "Release\libdb41.dll" + File "Release\SSLeay32.dll" + File "Release\libeay32.dll" + File "Release\msvcrt.dll" + File "Release\msvcp60.dll" + File "Release\qt-mt230nc.dll" + ; Write the installation path into the registry + WriteRegStr HKLM SOFTWARE\xca "Install_Dir" "$INSTDIR" + + ; Write the uninstall keys for Windows + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\xca" "DisplayName" "X CA (remove only)" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\xca" "UninstallString" '"$INSTDIR\uninstall.exe"' + WriteUninstaller "uninstall.exe" +SectionEnd + +; optional section +Section "Start Menu Shortcuts" + CreateDirectory "$SMPROGRAMS\xca" + CreateShortCut "$SMPROGRAMS\xca\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 + CreateShortCut "$SMPROGRAMS\xca\xca.lnk" "$INSTDIR\xca.exe" "" "$INSTDIR\xca.exe" 0 +SectionEnd + +; uninstall stuff + +UninstallText "This will uninstall xca. Hit next to continue." + +; special uninstall section. +Section "Uninstall" + ; remove registry keys + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\xca" + DeleteRegKey HKLM SOFTWARE\xca + ; remove files + Delete $INSTDIR\xca.exe + ; MUST REMOVE UNINSTALLER, too + Delete $INSTDIR\uninstall.exe + ; remove shortcuts, if any. + Delete "$SMPROGRAMS\xca\*.*" + ; remove directories used. + RMDir "$SMPROGRAMS\xca" + + RMDir "$INSTDIR" +SectionEnd + +; eof