Commit Graph

1324 Commits

Author SHA1 Message Date
Christian Hohnstaedt
b96951fdfd Improve EVP_PKEY_public_check()
According to the documentation EVP_PKEY_public_check() may
return -2 if the algorithm is not supported.
This has been observed with OpenSSL-1.1.1
2023-09-18 18:14:03 +02:00
Christian
d36eefaa7b Use correct free() function
EVP_PKEY must be freed by EVP_PKEY_free()
2023-09-15 10:48:05 +02:00
Christian
da01866fc2 Templates: Only support PEM like export format
PEM Format supports adding comments in comparison to binary.
Still support reading older, binary formatted templates.
2023-09-10 09:47:45 +02:00
Christian Hohnstaedt
11a88781f9 Merge branch 'vertical-align-fix' of github.com:gentoo90/xca 2023-05-30 18:39:35 +02:00
gentoo90
1e06d60f8e Fix vertical text alignment in the tree views 2023-05-30 18:41:11 +03:00
Christian Hohnstaedt
061f676041 Improve/simplify item import
Unify import functions for some (on_butImport_clicked)
or all (on_butOk_clicked) items.
They both call "importIndexes(const QModelIndexList &indexes)"
containing some or all indexes to import.

db_x509.cpp: Only need to search the treeItem (containing all items
without issuer, not all in the rootItem (containing also certificates
with known issuer)

Re-use "remFromCont()" when stealing items from an other CA.
2023-05-30 14:38:55 +02:00
Christian Hohnstaedt
1176a35fa7 Debugging: allow to select/deselect debug messages
Inspired by the Linux kernels dynamic debugging.
2023-05-28 15:31:33 +02:00
Christian Hohnstaedt
827db695b2 Close #368: error while creating CRL with CA using EC key (ed25519)
This fix differs from the proposal in #368 because the signature
of pki_crl::sign() changed after the 2.4.0 release.

However, I was able to increase the bug impact!
Now it crashed instead of only throwing an error! :-)

The signature of the pki_crl::sign() method changed with
commit 61fa66b129, but C++
"outsmarted" me and automatically transformed the EVP_MD == nullptr
into the digest::constructor(EVP_MD) which crashed on the nullptr.
2023-05-25 22:20:27 +02:00
Christian Hohnstaedt
8f277ea781 x509v3_ext: Improve error-checking
Validate SAN, IAN, AIA, CRLDP during rollout.
Fix tab-switching when validating new certificate context.

Also work with X509_EXTENSION being nullptr
2023-05-25 22:18:48 +02:00
Christian Hohnstaedt
4a81525dd1 Add missing smartCard entry
Otherwise "--list-items" displays an "unknown"
2023-05-19 22:56:17 +02:00
Christian Hohnstaedt
d8da9dd786 Really exit the application, when clicking exit
The password-input dialog of the database has an exit button.
It now really exits the application.
2023-05-19 22:54:20 +02:00
Christian Hohnstädt
5a92f68057
Merge pull request #428 from driseley/fix-cka-id-handling
Treat CKA_ID as byte array, not Bignum
2023-05-19 18:18:54 +02:00
Yaroslav Isakov
46c0f7ed25 Fix OpenSSL 3.0 engine asking two times for sign
In commit 9767a3dca7
OpenSSL changed sign behavior, that now it calls sign mechanism two
times - first with NULL output buffer, to get size of it, for next call.
This causes two sign operations in token for ED25519, so, let's detect
NULL buffer and return size of signature.

I haven't tested other type of keys - it's possible that they have
the same issue.
2023-05-16 09:49:46 +02:00
Christian Hohnstaedt
02fc95c70b Reset parent pointer when removing child from container
and use the issuer as parent when inserting it to
put it under the correct issuer
2023-05-16 09:49:46 +02:00
Christian Hohnstaedt
ab17dfd52f Simplify key checking algorithm
Since we dropped OpenSSL < 1.1.1 support, we can use
 EVP_PKEY_public_check() and EVP_PKEY_check()

Thanks to discussion in:
acb75afa6d
2023-05-16 09:49:46 +02:00
Christian Hohnstaedt
d606254f7a Additional attributes when printing PKCS#12 content 2023-05-14 21:49:49 +02:00
Christian Hohnstaedt
7206024d6a Fix deprecation warnings
The proposed "addAction()" with the KeySequence as 2nd argument
is only available soince Qt6.3 and not compatible with QT5
Change the call in a compatible way and set the shortcut afterwards.
2023-05-14 21:49:13 +02:00
Christian Hohnstaedt
fa0d67b26c Adaptions for QT 6.5 and macos
- Create universal binaries
 - re-create menubar to avoid duplications during language change
 - Select MACOS SDK 11 when using  QT-6.5 requiring it.
2023-05-14 21:41:47 +02:00
Dave Riseley
5f8176a134 Treat CKA_ID as byte array, not Bignum 2023-05-09 17:48:31 +01:00
Christian Hohnstädt
2ba114d393
Merge pull request #389 from sake/pkcs12_algo
PKCS12 encryption algorithm setting
2023-01-22 20:02:22 +01:00
Boris-Chengbiao Zhou
eb66836583 Fix command line parsing
Expected CLI option arguments weren't passed to the QCommandLineOption
constructor.
2023-01-08 00:54:35 +01:00
Tobias Wich
706ad7bf36 Add note where to find allowed PBE encryption schemes for PKCS12 2022-10-06 15:38:56 +02:00
Tobias Wich
097cbfb815 Add PKCS12 enc algo setting and use it when exporting PKCS12 2022-10-06 15:32:30 +02:00
Tobias Wich
ef8d90e5c5 Add PKCS12 encryption algorithm class 2022-10-06 15:15:11 +02:00
Tobias Wich
48acc326be Add PKCS12 encryption algorithm class 2022-10-06 15:01:16 +02:00
Tobias Wich
401b1a7a2b Use PBE algo for key and cert encryption in PKCS12 2022-10-06 11:25:25 +02:00
Christian Hohnstaedt
bd61f44e02 Refactor source file inclusion
No libraries needed. Just put all files as source to xca
and those needed for xcadoc to the xcadoc target.
Github Action: create deployments for each matrix result
2022-09-07 20:01:25 +02:00
Christian Hohnstaedt
ced6dfc41a Add support for Qt6
XCA now supports both, Qt6 and Qt5 down to Qt-5.2

Use CMAKE_PREFIX_PATH to point to the QT dompiler directory like
$ cmake -B build -DCMAKE_PREFIX_PATH=$HOME/6.3.1/gcc_64
2022-08-31 00:09:37 +02:00
Christian Hohnstaedt
ded935b033 Prepare for Qt6: QRegExp -> QRegularExpression
QRegExp is deprecated and needs special library
in Qt6: core5compat

Replace by QRegularExpression which has been introduced by Qt5
2022-08-31 00:01:06 +02:00
Christian Hohnstaedt
ee842feb5e Improve windows compatibility 2022-08-31 00:01:06 +02:00
Christian Hohnstaedt
0a54a0ad04 Fixup for #67: Password input dialog
Also ask for password when called with database on commandline
Ask for password repetition if a new password is typed
2022-08-31 00:01:06 +02:00
Christian Hohnstaedt
1c5429160f Close #321 - extend commit d289f83a6d
If the digest name is not empty and not understood by openssl
raise an error immediately.
If the nid id NID_undef make sure no openssl-error is stored
in the error list.
2022-08-31 00:01:06 +02:00
Yaroslav Isakov
d289f83a6d Fix #321 - decryptKey shows OpenSSL error, which were raised before 2022-08-30 23:45:00 +02:00
Yaroslav Isakov
31e6fdd3ef Fix OpenSSL 3 compatibility in ED25519 smartcard code
Also, use proper defines instead of EC one
2022-08-06 22:36:33 +02:00
Christian Hohnstaedt
186657fbce Close: #366 Not Responding after upgrade
cache the results of visibility check as long as the search text remains.
This function is called many times when displaying the data,
even if the search string does not change.
2022-08-03 07:36:33 +02:00
Christian Hohnstaedt
ed475c8d9f Close #327: "Dump database" dumps everything to everywhere
Select the items to be dumped to the currently selected
directory.
2022-07-31 13:02:29 +02:00
Yaroslav Isakov
6d098460d6 Support importing ED25519 keys and signing with them, using PKCS#11 tokens
What works:
- Importing ED25519 Signature key from Yubikey token (OpenSC with openpgp driver, key generated via gpg)
- Creating self-signed certificate for CA, for Signature key from card
- Signing Certificates using new CA

I haven't tested other features, e.g. storing new certificate on card, so, they're probably broken
2022-07-28 22:54:32 +02:00
Melg Eight
3f6b0105a3
Enable usage of hashAlgo digest selected by user for CRL sign
Signed-off-by: Melg Eight <public.melg8@gmail.com>
2022-02-15 19:24:47 +03:00
Christian Hohnstädt
0d26913f40
Merge pull request #334 from melg8/fix_pkcs_8_private_key_encryption
Enables usage of aes_256_cbc for private key export
2022-02-11 22:00:00 +01:00
Melg Eight
7bef74fb74
Enables usage of aes_256_cbc for private key export
Signed-off-by: Melg Eight <public.melg8@gmail.com>
2022-02-10 10:27:24 +03:00
Melg Eight
3eeb33cb07
Fix new/delete mismatch 2022-02-09 05:37:04 +03:00
Christian Hohnstädt
06fbe10d24 cmake: fixup undefined variables
Remove unused variables, define variables for all platforms
and fix typo
2022-01-03 20:03:31 +01:00
Christian Hohnstädt
e92031cf0d Drop debugging output 2021-11-20 02:12:02 +01:00
Christian Hohnstaedt
c66354ec9d Close #317: "Please insert card: ..." message
... when multiple PKCS#11 slots are present

Use the same pkcs11 instance to close the session.

Kudos to Christian Svensson for not only finding and reporting
but also fixing this issue.
2021-11-19 09:41:40 +01:00
Christian Hohnstädt
44bf1b4e84 Fix detecting the language directory 2021-11-18 22:42:41 +01:00
Christian Hohnstädt
284b1fa3f4 Call getHomeDir() later, after global constructors
This helps getting the directory of the executable
for judging whether we are the portable app or not on windows
2021-11-17 21:50:44 +01:00
Christian Hohnstaedt
4d401792a9 OpenSSL: Avoid all FILE pointer operations, use QFile
For interoprability reason.
To enforce it, set "#define OPENSSL_NO_STDIO 1"
All file access is done by reading/writing from/to BioByteArray()
which is filled by QFile:readAll()

Drop CRYPTO_malloc_debug / CRYPTO_mem_leaks
which is unused and disabled since many years.
2021-11-13 23:53:11 +01:00
Christian Hohnstaedt
25d2fdabb2 Fix and improve building help and documentation
- Always build html documentation if sphinx-build is available.
  to be installable during install
- Collect "${D}/qthelp/xca.qhc" "${D}/qthelp/xca.qch" in QTHELP_IDX
  and use this instead.
- On linux also install the qthelp in an html subdirectory like WIN32
- Don't instanciate QHelpEngine if no help available.
2021-11-13 14:49:02 +01:00
Christian Hohnstädt
435602d524 Convert to native separators in calendar items 2021-11-13 14:49:02 +01:00
Christian Hohnstaedt
a70ffe4ff1 Move XcaDialog call from x509_super to XcaWarning 2021-11-13 14:49:02 +01:00
Christian Hohnstädt
6ea01e80f6 Refactor item export: separate GUI and database
Collect all export formats in pki_export.

Each export format has assigned acouple of flags, indicating,
whether they are text, concatenateable, encrypted, usable for
multiple selections or only for a single item.
2021-11-13 14:49:02 +01:00
Christian Hohnstaedt
f2fe9be3f3 Move file loading GUI element out of non-gui container class (db_*)
into GUI View widgets/*TreeView.cpp
2021-10-30 11:51:35 +02:00
Christian Hohnstaedt
6efba2bb3e pkcs7: Fix endless loop when loading PKCS#7 via PEM import 2021-10-30 11:51:35 +02:00
Christian Hohnstädt
be1a44d0a8 Consolidate export types and format in pki_export class
Move the descriptons from the ExportDialog into the
new pki_export class.

Also translate the exportType::etype to F_* flags
2021-10-30 11:51:35 +02:00
Christian Hohnstädt
8271a1a3e8 MacOS: Fix location of translations 2021-10-24 17:57:23 +02:00
Christian Hohnstädt
3e858c877f Merge remote-tracking branch 'github/master' into main 2021-10-24 14:56:38 +02:00
Christian Hohnstädt
13b0992780 Set Key export format separately via context menu
The popping up query dialog during PEM export via Drag&Drop
and Ctrl-C during Key export was pretty annoying.
2021-10-24 14:41:25 +02:00
Christian Hohnstädt
810b5509b1 pem_format(): Move private key cases to pki_evp
Support "exportType::PKCS8_encrypt"
2021-10-02 08:21:52 +02:00
Christian Hohnstaedt
c752508979 Separate XCA Warning in Cmdline and GUI 2021-09-09 21:46:30 +02:00
Christian Hohnstaedt
e9f36fc72b Move storeItems() from db_base to XcaTeeView 2021-09-09 21:30:06 +02:00
Christian Hohnstädt
56c6df6c90 editComment: Move Gui elements to widgets/XcaTreeView
Another step to separate GUI from functionality
2021-06-19 13:18:48 +02:00
Christian Hohnstädt
8c0a5adc3a
Merge pull request #288 from PF4Public/pf/replace
Replace certificate while renewing
2021-06-04 08:50:58 +02:00
pf
8af3cabfa8 Replace certificate while renewing it
This commit also changes the default state of
the "Revoke old certificate" checkbox to unchecked.
The reasoning for this is that by renewing a certificate
its lifetime and subsequently validity are prolonged,
which therefore implies equal trustworthiness
for both new and old certificates, which does not intend
the revocation of the latter.
2021-06-01 20:25:13 +03:00
Christian Hohnstaedt
8cdc15aa39 Move database_schema.cpp from widgets to lib
there are no GUI elements in database_schema.cpp
2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
a233ec89f9 QObject: Add Q_OBJECT macro where necessary 2021-06-01 17:48:37 +02:00
Christian Hohnstädt
52bf30e47b Visual Code adaptions 2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
0e5af2e452 Replace check_oom() by Q_CHECK_PTR()
Qt offers the functionality. No need to invent it ourselves.
2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
915a920de8 cmake: Split CMakeLists.txt into the different sub directories
mv cmake/sphinx-documentation.cmake -> doc/CMakeLists.txt
2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
9180a3ea31 Move font information from db_base to TreeView 2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
cfe788d362 Don't store the current locale ourselves. QLocale() does the job
This also seperates UI from the core.
After calling QLocale::setDefault(), the empty QLocale constructor
returns the current default locale.
This is now used instead of XcaApplication::language()
2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
f5f6b57df4 Fix translation handling.
Use "i18n" instead of "translations" as subdirectory.
Expect "i18n" being a directory.
2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
e066619a08 Close #283 Nitrokey HSM2 can't create EC keys on 2.4.0
Correctly create NewKey list items for smart-cards mechanisms.
use the PKCS#11 ID t.mech as parameter for CK_MECHANISM_TYPE
instead of t.type, which is an OpenSSL ID.
Both are numeric, so the compiler didnot complain.

For RSA it worked accidentally, because
type:EVP_PKEY_RSA == mech:CKM_RSA_PKCS_KEY_PAIR_GEN == 0

Bug introduced after 2.3.0 with
77519936e0

Set the mechanism of ED25519 to CKM_VENDOR_DEFINED, because ED25519
is not supported by PKCS#11 and 0 means CKM_RSA_PKCS_KEY_PAIR_GEN.
2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
00926e3efd Get rid of libltdl. QLibrary provides the same functionality 2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
61fa66b129 Add digest class encapsulating EVP_MD
Enables the separation of the core classes from the hashbox widget
2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
4e2a4b7d1a Move default keyjob from NewKey to the keyjob class
another step to separate widgets from the core
2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
731d866bcb Drop more unneeded includes 2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
9c49c9949f Consolidate and document used environment variables
Rename XCA_SPECIAL to XCA_ARGUMENTS, which is less generic.

and change %1_OPTIONS to XCA_%1_OPTIONS to prefix all
XCA related environment variables with "XCA_".
2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
487f5e2046 Cleanup: Drop many superflous includes and unused loadImg() function 2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
f8915fbc98 PwDialog: Split into cmdline-core and GUI
Another step to split core and GUI components
2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
f1c0e96435 Cmdline: no-gui autodetect: also detect --crlgen=xxx as nogui 2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
0c5603ec20 XcaWarning: Split into Core and GUI element
one more step to split core and GUI components
2021-06-01 17:48:37 +02:00
Christian Hohnstädt
68273d0a30 Switch from autotools/qmake to cmake
Why?
 - QT will switch from qmake to cmake sooner or later.
 - autotools are good for unix-ish systems, cmake also for
   macOS and Xcode as well as Windows and VS-code
 - Cross compiling the windows-binaries on linux
   is not very helpful to attract windows-centric
   developers.

Also drop qmake's xca.pro
Generate man-page and sphinx sources of commandline arguments
during build by executing xca (xcadoc.cpp).
Generating Version-patchlevel and git hash is now also
OS independent.
2021-06-01 17:48:37 +02:00
Christian Hohnstädt
1adcceaa66 Drop OpenSSL backward comatibility for NID_tlsfeature
it was not defined for OpenSSL < 1.1.0
which is not supported anymore anyway.
2021-06-01 17:48:37 +02:00
Christian Hohnstädt
d8283d8ab5 Read oids: Avoid out of range access when reading OIDs
..and catch openssl_error()s when reading the OIDs
2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
b20ef7f32a Diffie-Hellmann: use XcaProgress dialog 2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
82da759a4e XcaProgress: separate Cmdline progress from GUI progress
The generic XcaProgress object is used, which dynamically
creates a Cmdline progress object.
The Mainwindow replaces it by a GUI object, which integrates
into the status bar.
2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
2621d20d22 make dbhistory independent of GUI widget OpenDb
the "lastRemote" database is not GUI specific and
has been moved from "OpenDb" to the non-gui class dbhistory,
which in turn becomes independent of OpenDb
2021-06-01 17:48:37 +02:00
Christian Hohnstaedt
7f431ccbd6 Fix typo introduced with 5f1d3945 to query the database password
Opening a database now again asks for the password
2021-06-01 17:29:30 +02:00
Christian Hohnstaedt
2635b91033 WIP 2021-05-25 21:10:54 +02:00
Christian Hohnstaedt
03769bef56 Add commandline option "select" to 'print', 'pem' or 'text'
can be used to export or display items.
2021-05-24 22:22:51 +02:00
Christian Hohnstaedt
802a8787cf Adaptions to stay OpenSSL 3.0 alpha16 compatible 2021-05-12 08:49:28 +02:00
Christian Hohnstädt
3bce3ae1d6 Fix travis build
Add qttools5-dev-tools qttools5-dev
Fix warnings found by travis
2021-05-12 00:03:52 +02:00
Christian Hohnstädt
00e592d8f3 Sort output of "--issuers" and "--list-items" by primary key
This is also somehow a sort by inserting date.
For more detailled displays a sqlite browser should be used.
2021-05-11 12:07:40 +02:00
Christian Hohnstaedt
ccfad6a1c3 Replace qWarning()s by qDebug() 2021-05-11 12:07:40 +02:00
Christian Hohnstaedt
7e72d8c02c Commandline: Add "--list-items" to print a list of database items 2021-05-11 12:07:40 +02:00
Christian Hohnstaedt
5f1d394530 Close #67: possibility to ignore password prompt from CLI
XCA automatically checks whether the current arguments need
a password
2021-05-11 12:07:40 +02:00
Christian Hohnstädt
8daf06dcac Close #259: Follow the XDG base directory specification
After dropping Qt4 support, the Qt5 QStandardPaths class
can be used to replace my implementation of directory discovery.

QStandardPaths follows the XDG specification.
2021-05-11 12:04:46 +02:00
Christian Hohnstaedt
7d564132ba Move ca-properties dialog to the certificate view
Reduce UI from QDialog to QWidget and display it in the XcaDialog frame.
Also move user interface specific code from the db_x509 class
into the CertTreeView class
2021-05-10 20:41:12 +02:00
Christian Hohnstaedt
523fa64486 asn1ToQString: use OpenSSL's ASN1_STRING_to_UTF8()
instead of my own implementation.

Please don't ask why I didn't look for such a function
before. I don't know.
2021-05-10 20:41:12 +02:00
Christian Hohnstaedt
57802580c8 Drop backward-compatibility for old(<2.0.0) XCA databases 2021-05-10 20:41:12 +02:00
Christian Hohnstädt
1500e636c8 Drop OpenSSL backward compatibility hacks < 1.1.0
OpenSSL < 1.1.1 is out of support anyway
2021-05-09 12:25:32 +02:00
Christian Hohnstädt
d5fa97c3bb Drop support for Qt4
Version 2.4.0 was the last one with Qt4 support
2021-05-09 12:25:32 +02:00
Christian Hohnstaedt
2c38ddbd8d Set default key size to 2048 instead of 0
when changing the key type from EC/ED25519 to RSA/DSA
2021-05-07 22:30:51 +02:00
Christian Hohnstaedt
dea42e8d1f Minor documentation update 2021-05-07 22:08:34 +02:00
Christian Hohnstaedt
c2d88bf460 Database.close() is idempotent. Call it at the end unconditionally 2021-05-07 13:04:32 +02:00
Christian Hohnstaedt
d54819e15b database_model: better handle uncreateable databases
Current implementation did not check whether a non-existing
database-file could be created.

Throw an error message if the database file cannot be created.
Simply by using XFile instead of QFile.
2021-05-07 13:04:22 +02:00
Christian Hohnstädt
703d9c0ba7 sql: better handle SQL errors during insert
Don't pop-up a success message, but delete the item,
if an SQL error occures during insert.
2021-05-05 19:39:28 +02:00
Christian Hohnstaedt
b907103975 Update documentation 2021-04-28 22:27:04 +02:00
Christian Hohnstaedt
5d4b52ac87 Fix opening a database on startup.
Commit e32fce8581
(main.cpp: mainwin must exist for read_cmdline() in GUI mode)
created the Mainwindow before parsing the commandline,
but the MainWindow constructor opened a default database if set.

With this change, the MinWindow constructor does not open a default
database. Now the default database is explicitly opened after parsing
the command line, if no other database is already open.

Rename init_database() to setup_open_database()
It is re-entrant.
2021-04-28 22:26:40 +02:00
Christian Hohnstädt
8c04bc2b27 Rename PACKAGE_VERSION to XCA_VERSION
For an official release XCA_VERSION == PACKAGE_VERSION.
For any additional commit, XCA_VERSION's path-level is increased.

PACKAGE_VERSION cannot be modified after initially set.
Change any occurance of PACKAGE_VERSION by XCA_VERSION
2021-04-26 10:10:23 +02:00
Christian Hohnstädt
48e211b892 Improve error message during commandline import
If the file es not accessible, XCA now reports:
  Error opening file: 'file.pem': No such file or directory
Instead of:
  Failed to import from '../I'
2021-04-25 15:41:02 +02:00
Christian Hohnstädt
7a05d5623d Change versioning schema: drop iteration counter
The patchlevel will be increased by the iteration counter,
which is the number of commits since the most recent annotated tag.

Tagged version 1.2.3 in VERSION will be called "1.2.3"
3 commits later it will be 1.2.6
2021-04-24 23:16:36 +02:00
Christian Hohnstaedt
a81ee33652 pki_key.cpp: The key-type string in the database is only 4 bytes
... but "ED25519" is consists of more than 4 characters.
2021-04-23 15:57:32 +02:00
Christian Hohnstaedt
e32fce8581 main.cpp: mainwin must exist for read_cmdline() in GUI mode
If XCA runs in GUI-mode, the mainwin must be accessible.
2021-04-23 15:57:32 +02:00
Christian Hohnstaedt
87c4729d75 func.h: The mainwin is global
Like the application, the main window is a single instance
which is globally available for simplicity.
in case of non-gui mode, mainwin is NULL.
2021-04-23 15:57:32 +02:00
Christian Hohnstaedt
51f3418c68 db_base.cpp: Improve loading database content
If tan item has unsupported content like key type or algorithm,
it will be skipped with a warning now, but the database loads.
2021-04-23 15:57:32 +02:00
Christian Hohnstädt
ca0fdcd5c9 Bash completion 2021-04-23 15:57:32 +02:00
Christian Hohnstaedt
ff7704ff0b Add context sensitive documentation
All dialogs get the "Qt::WindowModal" modality to
operate the Help window in parallel
while also blocking the dialog parent windows.

The manageRevocations() moved from model to view

The Details dialogs become more self-sufficient.
There is a statc start method that shows the dialog and
updates name and comment after accept().
This allows recursive starts of certificate details and
independence of mainwin.
It is necessary to set the current toplevel widget as parent
for the next dialog to not block the application.
2021-04-23 15:50:13 +02:00
Christian Hohnstaedt
7ace0db0d5 Add ED25519 support for commandline key generation
Enable the key-job class to parse ED25519 key description
without size and EC-Group correctly.
Don't check the size parameter of ED25519 keys.
2021-04-09 17:36:03 +02:00
Christian Hohnstaedt
d53d64d23d Transform XCA documentation from SGML to sphinx
linuxdoc is pretty outdated, while sphinx is really cool:

 - Sphinx is modern with a broad user base
 - The generated documentation is themeable
 - The sphinx-source is much more readable than the
   SGML-tag scattered linuxdoc.
 - The different topics can be splitted into different files
 - It can be converted to qt-context sensitive help
 - It supports syntax highlighting for the SQL database documentation
 - It is supported on MacOSX,because it is python-based.

Drop code2html perl-script, which was used to colorize the SQL schema.
Generate "doc/arguments.rst" with XCA_MAN="rst" ./xca
2021-04-09 17:36:03 +02:00
Christian Hohnstaedt
c05b58c6e6 Fix for building against libreoffice 2021-04-01 20:27:11 +02:00
Christian Hohnstaedt
0bdd964443 Use .priv as SSH private key extension 2021-04-01 17:25:27 +02:00
Christian Hohnstädt
45de747461 Add support for SSH2 ED25519 private key export
Encrypting the SSH2 private keys is not supported, yet.
2021-04-01 12:24:01 +02:00
Christian Hohnstädt
241abffaad Close #258: xca aborts on exit and on access to own templates
Double check the values used to call beginRemove/InsertRows()
2021-04-01 11:02:22 +02:00
Christian Hohnstädt
6d76fe1206 Close #142: Support Ed25519 Export private SSH2 key
Currently "PEM private" will export the key in SSH2
for PEM export into the clipboard
2021-04-01 11:02:22 +02:00
Christian Hohnstaedt
fdb2894e80 Close #142: Support Ed25519 Import private SSH2 key
Support loading OpenSSH ED25519 private key

Improve private key verification in general.
ED25519 does not support EVP_PKEY_sign(), so use
EVP_DigestSign(), which in turn only works since OpenSSL 1.1.1
resulting in a backward compatibility quirk in openssl_compat.
2021-04-01 11:02:22 +02:00
Christian Hohnstaedt
9cd58ff262 Close #142: Support Ed25519 Import public key
Import ED25519 key from SSH2 public key format
2021-04-01 11:02:22 +02:00
Christian Hohnstaedt
86cfff35d0 Close #142: Support Ed25519 Public export an Details
- Export SSH2 Public key
- Detect whether ED25519 key is private key
- Support ED25519 in the KeyDetails dialog
   o Display public key
   o Curve name
   o Fingerprints
   o Availability of private key
2021-04-01 11:02:22 +02:00
Christian Hohnstaedt
dbb3c48ef3 Close #142: Support Ed25519 Keygen
Support generating ED25519 keys
2021-04-01 11:02:22 +02:00
Christian Hohnstädt
1a0ef9c9ee Extend OpenSSL 1.0.2 compatibility layer
Add EVP_MD_CTX_new/free() and EVP_CIPHER_CTX_new/free()
as backward compatibility layer
2021-04-01 11:02:22 +02:00
Christian Hohnstaedt
46cbba45a3 pki_evp: Fix indentation 2021-04-01 11:02:22 +02:00
Christian Hohnstädt
496fb5e0bc Close #251: AuthorityKeyIdentifier: use issuer:always
When analysing and translating the AuthorityKeyIdentifier
extension to OpenSSL syntax, take an existing DirName
as "issuer:always", because openssle otherwise ignores it,
when the keyid succeeds.
2021-02-08 17:07:06 +01:00
Christian Hohnstädt
c90302ddd8 Close #230: Change PKCS12 export extension from .p12 to .pfx
[Change Request] Consider changing PKCS12 export
extension from .p12 to .pfx by default,
as p12 is a legacy Netscape holdover,
and PFX is the 'standard' per RFC now.
2021-02-06 22:52:54 +01:00
Christian Hohnstaedt
66cff37ad9 Close #208: XCA hung when importing EC keys. For example prime256v1
Fix Null-Pointer exception, which is strange, because:
 - it only happens on windows
 - the key still works fine
2021-02-06 22:52:54 +01:00
Christian Hohnstaedt
e9edb75442 ImportMulti: Update pointer management to always free all items 2020-10-16 00:37:12 +02:00
Christian Hohnstaedt
cbe7709b20 Close #224: Store original path/filename on import 2020-10-16 00:37:12 +02:00
Christian Hohnstädt
ef5bb98a90 Initialize workingdir with trailing slash
All users of the workingdir assume it ends with a /
2020-10-15 06:21:32 +02:00
Christian Hohnstädt
0745af1d63 Fix editing revocation entries and generate CRL from that dialog 2020-10-14 19:48:18 +02:00
Christian Hohnstädt
ed29b5f3a5 Fix typo to start CRL Management 2020-10-14 19:48:18 +02:00
Christian Hohnstädt
497e4a6120 Extend Password input by filedescriptor number and automatic man page
Also extend the documentation about the password.
Automatically generate the man page from the options.

Call xca as "XCA_MAN=1 ./xca" to print the current man-page options
2020-10-14 19:48:18 +02:00
Christian Hohnstädt
8963590053 Create user-settings directory after creating QApplication
At least on OSX this is required to have
QCoreApplication::applicationName() return "xca"
2020-10-14 19:48:18 +02:00
Christian Hohnstädt
6474d6356b Improve finding certs/requests with same key
The SELECT query now also only selects items of the required type:
 Request / x509 certificate
This avoids error messages
2020-10-14 19:48:17 +02:00
Christian Hohnstädt
78d6b5e67c Check XCA_ABORT_ON_WARNING envvar to abort() on any warning or worse
This allows easy debugging of warnings and errors
2020-10-14 19:48:17 +02:00
Christian Hohnstädt
24009b13c7 Fix warnings 2020-10-14 19:48:17 +02:00
Christian Hohnstädt
673df16dcf Finish struct option with zeros 2020-10-12 13:04:03 +02:00
Christian Hohnstaedt
ef24c00c22 Minor fixes 2020-06-26 14:21:32 +02:00
Christian Hohnstaedt
17b621ccef Encapsulate all index.internalPointer() in fromIndex(index) 2020-05-10 09:09:31 +02:00
Christian Hohnstaedt
9e52d99067 Fix destructor of BioByteArray to not overwrite ro data 2020-05-08 17:37:40 +02:00
Christian Hohnstaedt
45f834a6e4 Move tree-handling from db_x509 class to the base class
This is a preparation for possibly inserting
structuring folder elements later.
2020-05-08 17:37:40 +02:00
Christian Hohnstaedt
af79214121 Use fromIndex(index) convenience function
for certificates create a function returning
a dynamically casted pki_x509 pointer

Add NULL check of dynamically casted pointer,
because it could be a folder...
2020-05-08 17:37:40 +02:00
Christian Hohnstaedt
1e544161f6 Eliminate the use of "mainwin" in lib/db_* 2020-05-08 11:59:09 +02:00
Christian Hohnstaedt
7c65a786ea Revamp database management
The global variable "Database" of class xca_db
can be used by any other class to access. No need
to provide it.

The "xca_db" class managed the "database_model" pointer.
Accessing the name of the current database has been unified.
2020-05-08 07:47:15 +02:00
Christian Hohnstaedt
93a7c6a9a3 Implement option --list-curves and display EC curves 2020-05-06 18:32:37 +02:00
Christian Hohnstaedt
9b201566e2 Improve on cmdline, console, unicode and windows CMD
Improve Windows registry functions

Use *A postfix function explicit becaus e we don't expect
unicode characters.
Also simplify "console_write()"
2020-05-06 18:32:27 +02:00
Christian Hohnstaedt
d1c0970ea1 BioByteArray: Add size() method 2020-05-06 18:08:36 +02:00
Christian Hohnstaedt
b5c9d645e3 More native separators when displaying file names 2020-05-06 17:57:09 +02:00
Christian Hohnstaedt
b2ab7570b8 Minor fixxes and constifies 2020-04-30 18:47:28 +02:00
Christian Hohnstaedt
0f7465dcc5 Add convenience function to convert QModelIndex to pki_base * 2020-04-30 18:46:08 +02:00
Christian Hohnstaedt
03633d7a8a Provide db class name through constructor 2020-04-30 18:44:36 +02:00
Christian Hohnstaedt
a3344100e3 Drop FOR_ALL_pki() makro and use a foreach() loop
The foreach loop iterates over all items of a type.
The iterate method is now superflous
2020-04-30 18:40:49 +02:00
Christian Hohnstaedt
8f46d238e0 Replace __ME makro by pki_base QString() operator
Now a pki item can transform itself to a QString for debugging
2020-04-30 18:37:48 +02:00
Christian Hohnstaedt
5a64725556 Move item store from db_base into separate class "pki_lookup"
Since also pki_base and other classes need to access them.
2020-04-30 18:37:25 +02:00
Christian Hohnstaedt
f889efc4cb Merge branch 'master' into develop 2020-04-30 18:34:16 +02:00
Christian Hohnstaedt
1f2429e677 Avoid filedescriptor leak 2020-04-29 13:29:01 +02:00
Christian Hohnstaedt
76e3f86783 Close #191: OID LN differs warning popups at startup
OpenSSL fixed the 2 LN with commit:
  648b53b88e

in OpenSSL 1.1.1e.

Follow my own advice and delete them from the oids.txt
together with all other OIDs present in OpenSSL
since at least version 0.9.8

Also do the initOIDs after creating the QApplication to
avoid qAbort() when creating the warning (introduced after 2.2.1)
2020-04-27 15:03:36 +02:00
Christian Hohnstaedt
0ac3b2daca Improve and fix VERSION_ITERATION 2020-04-27 15:03:36 +02:00
Christian Hohnstaedt
7d5bb9ca4f Fix newline handling 2020-04-07 15:54:16 +02:00
Christian Hohnstaedt
5cb1b45d81 console_write: takes a QByteArray instead of printf()
Good Windows Unicode font:
https://math.berkeley.edu/~serganov/ilyaz.org/software/fonts/
2020-04-06 22:08:04 +02:00
Christian Hohnstaedt
dd46ff7201 Fix Copy&Paste'o: Put issuer into issuer property and not subject 2020-04-06 22:07:57 +02:00
Christian Hohnstaedt
ea453d4336 Encapsulate all BIOs in the BioByteArray class
If we have a QByteArray (ba) and must provide it to
a BIO* expecting OpenSSL function, the following
construct provides it: BioByteArray(ba).ro()
directly providing the QByteArray buffer as BIO

It also supports mixed writes:
  BIO_write(bba, buf, size)
  bba += QByteArray
2020-04-06 22:07:57 +02:00
Christian Hohnstaedt
4d95912d51 Add console_write() to print also on CMD 2020-04-05 22:45:11 +02:00
Christian Hohnstaedt
b7d3e6a3cc Merge branch 'master' into develop 2020-04-05 13:49:01 +02:00
Christian Hohnstaedt
fb5ee14911 Improve PKCS11 library loading for portable app 2020-04-05 13:12:09 +02:00
Christian Hohnstaedt
a9a4c2b2d6 remote database: Dont show error if the password was empty
Otherwise, first an error message is shown and then
a password is asked.
2020-04-05 13:08:47 +02:00
Christian Hohnstaedt
9d7275ef31 Accept missing "dbhistory" file 2020-04-05 10:59:00 +02:00
Christian Hohnstaedt
c528c37986 Merge branch 'master' into develop 2020-04-05 10:58:47 +02:00
Christian Hohnstaedt
4314b0ead9 constify slotid 2020-04-05 09:16:12 +02:00
Christian Hohnstaedt
500f11c9b3 Get rid of filename2bytearray and QString2filename
We now use QFile or its derivate XFile, who smoothly
handle unicode filenames also on windows.

The lt_dlopen() only handles "char *" not wchar_t.
Try to convert the filename with all known codecs
until we can open it.

filename2QString() remains to differently encode
filenames provided on the commandline on Windows.
2020-04-05 09:16:12 +02:00
Christian Hohnstaedt
2d0980d4f6 Use pkcs11_lib_list as model for Options:pkcs11list
Change pkcs11List from QListWidget to QListView
The pkcs11_lib_list holds the data of the loaded libraries.
For the model a QList "model_data" is used to
hold indexes into QList dirs to allow duplicates,
moves and removes.

On windows it now displays the paths with \ separators.
2020-04-05 09:16:12 +02:00
Christian Hohnstaedt
296ff59f3c PKCS11 library list: Don't get confused by C: when expecting 1: 2020-04-03 21:56:37 +02:00
Christian Hohnstaedt
5543ec2fb8 Merge branch 'master' into develop 2020-04-02 07:35:18 +02:00
Christian Hohnstaedt
b41d322069 Refactor native separators / and \ on windows.
Always only use forward slash /
Drop all "QDir::separator()" and "nativeSeparator()"
functions. Only use it where filenames are displayed for the user.
2020-04-02 06:12:47 +02:00
Christian Hohnstaedt
66a85497b7 Improve development version calculation as 4th digit
The plus sign was not compatible with the WIX toolset.
The 4th digist is the number of commits since the last release.

For a tagged release it is not 00, but empty.
2020-04-01 22:56:53 +02:00
Christian Hohnstaedt
096e57ec8c Close #70: cant open ics file in ical on macos mojave
Fixed syntax errors in the ICS file.
Verified by http://ical-validator.herokuapp.com/validate/
Thanks for the service.
2020-04-01 12:29:55 +02:00
Christian Hohnstaedt
d54aa116db Avoid unused variable warning for OpenSSL 0.9.8 2020-03-29 22:33:57 +02:00
Christian Hohnstaedt
524aff97b8 Load OID lists. Fixup for c89b6aff 2020-03-29 22:33:57 +02:00
Christian Hohnstaedt
799d3262b0 Reactivate translation of x509 expressions 2020-03-29 22:33:57 +02:00
Christian Hohnstaedt
4f1103a64f Close #72: Add checkbox for OCSP staple feature
Also support them in XCA template and transformation from
certificate and request.
2020-03-29 22:23:21 +02:00
Christian Hohnstaedt
9c55caf82f Merge branch 'master' into develop 2020-03-23 06:53:06 +01:00
Christian Hohnstaedt
149ecda63c Fix index-hierarchy functionality
create target directory and name feature "hierarchy"
2020-03-23 06:39:30 +01:00
Christian Hohnstaedt
852da61836 Fix array access 2020-03-22 08:12:38 +01:00
Christian Hohnstaedt
8cf138b409 Drop debugging code 2020-03-22 08:12:38 +01:00
Christian Hohnstaedt
92846d6b38 Close #174: Microsoft's PVK RSA private key format
Support Import and export private and public PVK keys.
2020-03-22 08:12:38 +01:00
Christian Hohnstaedt
f244cec5d3 Drop functions from legacy database modul
Only read-functions are required for an
upgrade
2020-03-20 16:29:43 +01:00
Christian Hohnstaedt
928ff6458c Improve and fix qDeleteAll()
qDeleteAll() does not clear the QList.
Add it, if necessary.

Use dynamic_cast where appropriate
2020-03-20 16:29:42 +01:00
Christian Hohnstaedt
b8b368d787 hashNum() is an unsigned integer 2020-03-19 20:40:36 +01:00
Christian Hohnstaedt
9183f300c8 Add support for validating a keyjob
In case of an invalid keyjob bail out.
2020-03-18 05:26:16 +01:00
Christian Hohnstaedt
919f4f6b23 Parse keytype uppercase to also allow "rsa:2048" 2020-03-18 05:26:16 +01:00
Christian Hohnstaedt
ee7739baa6 Improve detection of commands enforcing no-gui
provided cmdline parameter are handled as abbreviated
parameter.
2020-03-18 05:26:16 +01:00
Christian Hohnstaedt
7a5936eb9f Replace malloc/free by new/delete 2020-03-18 05:26:16 +01:00