Commit Graph

144 Commits

Author SHA1 Message Date
Christian Hohnstaedt
ef9b3aff3d Drop superflous includes from header files 2020-03-13 12:13:27 +01:00
Christian Hohnstaedt
a48ea10e3d Split key generation and data-collection-UI
Use the key job to transfer the information
2020-03-13 12:13:27 +01:00
Christian Hohnstaedt
77519936e0 Invent keytype class for mapping type mechanism and name 2020-03-13 12:13:27 +01:00
Christian Hohnstaedt
c5208f1cd7 Consolidate headers, unguard delete operator 2020-03-11 07:19:56 +01:00
Christian Hohnstaedt
e4d0ab8f8e Refactor Image and icon ressources 2020-03-11 07:19:56 +01:00
Christian Hohnstaedt
7d0ab9d787 Add pki_XXX(const pki_XXX*) constructor
pki_XXX(const QString) -> (const QString &)
2020-03-11 07:19:56 +01:00
Christian Hohnstaedt
a90d7b5b0d Improve password input handling
Unify password results
Retry on password verification error
Honor the users wish to exit
2020-03-11 07:19:56 +01:00
Christian Hohnstaedt
113a201d39 Separate database from Mainwin for better cmdline support
New classes:
 - database_model: Manage the database tables (keys, req, cert, crl, templ)
   extracted from widgets/MW_database.cpp
 - arguments: parse commandline, dynamically create help text
2020-03-11 07:19:56 +01:00
Christian Hohnstaedt
2fbadfc9f0 Update Copyright Years to 2020 2020-01-13 07:26:46 +01:00
Christian Hohnstaedt
1ea45c8da4 Constify fload() fromPEM_BIO() fromPEMbyteArray()
Use "BIO_from_QByteArray()" instead of "BIO_new_mem_buf()"

Replace qSort() by std::sort()
Replace QString::null by QString()
2020-01-06 21:30:29 +01:00
Christian Hohnstaedt
8726c8b96d Improve item loading. Inspired by #153
If Loading the item results in an openssl error,
even if the item is not empty, discard it.
Otherwise loading it from the database later on will fail.

Improve "autoIntName()"
2020-01-06 19:35:11 +01:00
Christian Hohnstaedt
212b385022 Fix Typo 2019-12-14 13:24:15 +01:00
Christian Hohnstaedt
5e3d5e0edc Cancel creating a new database if database-password dialog is cancelled.
Clicking cancel in the password dialog during database creation
does not trigger an assertion during key generation/import
anymore.
2019-03-27 05:58:15 +01:00
Christian Hohnstaedt
fa704001ca Also change File loading from FILE* to QFile 2019-03-18 06:25:20 +01:00
Christian Hohnstaedt
026d8f8e6d Extend PEM files by human readable information about the item
This can be enabled or disabled during export.
Move from FILE* to QFile
2019-03-18 06:25:20 +01:00
Christian Hohnstaedt
742e1536d7 Fix Private key verification 2019-03-14 06:35:25 +01:00
Christian Hohnstaedt
1bc340a0ef Close #104: Also show sha256 digests of public keys
Print digest of public keys in the key details in different formats:

Print SHA256 SSH digest as used to by SSH users:
	ssh-keygen -l -f ~/.ssh/id_rsa.pub

Print SHA1 X509 key digest as shown in the
	Subject key identifier of a certificate

Print SHA256 digest as in:
	openssl pkey -pubout -outform DER < key.pem | sha256sum
as requested by this issue.

Refactored digesting functionality by a generic Digest()
function working with QByteArrays.
The function formatHash() now also expects a QByteArray input.
2019-03-14 06:35:24 +01:00
Christian Hohnstaedt
56687bfc83 Verify imported keys thoroughly
When importing keys, a verification by signing and verifying
some random data is performed now.
2018-12-06 05:50:09 +01:00
Christian Hohnstaedt
bdfa10d4d5 Close #45: Unable to view Public Key
Allow displaying the public key of a certificate
or request without importing it.

When importing certificates or CRLs,
display the issuer if it exists in the database.
2018-07-01 14:58:23 +02:00
Christian Hohnstaedt
b362ae3593 Const-ify dbheader in column_data() and getIcon() 2018-04-25 09:34:45 +02:00
Christian Hohnstaedt
b74642fa09 Const-ify QSqlRecord of restoreSql() 2018-04-24 09:34:34 +02:00
Christian Hohnstaedt
bfe6fbbc43 Close #24: Add LibreSSL support. Tested with LibreSSL 2.7.2 2018-04-22 16:12:04 +02:00
Christian Hohnstaedt
cd118e4e72 Fixup for "Assure traditional file format if PKCS#8 NOT selected"
Also RSA and DSA keys were marked as EC PRIVATE KEY.
Add break to the switch statement
2018-04-09 05:18:19 +02:00
Christian Hohnstaedt
ec5507412e Fix private key import of PKCS12 and PEM keys 2018-04-06 06:01:05 +02:00
Christian Hohnstaedt
3073bcd105 Fixup previous commit to build on Qt4 2018-04-04 22:39:50 +02:00
Christian Hohnstaedt
4c75d43b87 Assure traditional file format if PKCS#8 NOT selected 2018-04-04 19:24:16 +02:00
Christian Hohnstaedt
5fdd84c82c Fix Importing PKCS#12 and PKCS#7 files 2018-03-30 21:34:00 +02:00
Christian Hohnstaedt
6f85548c07 Drop getClassName() 2018-03-30 14:38:09 +02:00
Christian Hohnstaedt
2c20bd109a Constify and Pure-Virtual pki_base and derived classes 2018-03-30 14:38:09 +02:00
Christian Hohnstaedt
6cf72a38e0 Remove superflous function and mark decryptKey as pure virtual 2018-03-30 14:38:09 +02:00
Christian Hohnstaedt
0776ead694 Acceppt empty password for private key decryption
d2i_PKCS8PrivateKey_bio does not accept
passwords with 0 length for whatever reason.
2018-03-12 16:15:30 +01:00
Christian Hohnstaedt
0ed9f6926c GitHub Bug #5: Exporting a private key results in too-permissive permissions
Add umask(077) for key export
2018-03-10 14:43:36 +01:00
Christian Hohnstaedt
4867cfb8ab Improve "Dump database" filename 2018-03-07 05:49:46 +01:00
Christian Hohnstaedt
80471cd3f3 Small fixes: MySQL does not like "DEFAULT (0)" 2018-03-06 16:45:42 +01:00
Christian Hohnstaedt
d079dbde09 Collect affected items 2018-03-05 07:46:10 +01:00
Christian Hohnstaedt
a3900b1473 Several fixes for templates, key encryption etc. 2018-03-05 07:46:10 +01:00
Christian Hohnstaedt
3f016c62e7 Fix minor problems during db open and key import 2018-03-05 07:46:10 +01:00
Christian Hohnstaedt
e1b982a346 Replace printf by qDebug 2018-03-05 07:46:10 +01:00
Christian Hohnstaedt
431076c90e Change private key encryption in the database to PKCS#8 2018-03-05 07:46:10 +01:00
Christian Hohnstaedt
fbde63e98d Add Views and a concept of schema updates 2018-03-05 07:46:10 +01:00
Christian Hohnstaedt
e624743494 Add PKI Source: generated, imported, transformed 2018-03-05 07:46:09 +01:00
Christian Hohnstaedt
4598ddb4de Convert QByteArray.base64() to QString before writing it to the DB 2018-03-05 07:46:09 +01:00
Christian Hohnstaedt
4b3ee2c705 Switch database format to SQL(ite)
This is a large squash of many small commits.

Allow porting data from the legacy format to SQL.
Store Binaries base64 encoded and use db->transaction
Update password hash to be 8000 x SHA512 with 8 byte Salt
Add revocations table and fixup CRL generation
Add comment and insertion date columns

Fix column saving, remove trust, add XcaDialog
Allow changing the internal name and comment in Cert/Req details view
Extend Comment functionality, Replace About.ui by XcaDialog.ui
2018-03-05 07:42:36 +01:00
Christian Hohnstaedt
1d2a1b18c4 Fix dumping private keys during "Dump database"
If the database password is empty, dumping private keys
resulted in an error message.

Fix this by setting the encryption algorithm to NULL if
the password is empty.

Additionally throw the error after closing the filedescriptor.
2018-01-27 12:52:17 +01:00
Christian Hohnstaedt
27482fc080 Fix Null pointer exception when importing PKCS#12 with OpenSSL 1.1.0
Setting the EVP_PKEY type deletes the key with OpenSSL 1.1.0

Reported by Perederyaev Ivan. Thank you.
2018-01-27 12:48:13 +01:00
Christian Hohnstaedt
ac780d3e77 Fix PEM_BIO loading by using QByteArray instead of BIO and fmemopen 2017-07-15 06:51:37 +02:00
Christian Hohnstaedt
b22d82a3f9 OSSL 1.1 vs. 1.0: Windows support 2017-07-08 06:57:04 +02:00
Christian Hohnstaedt
f7e485393c OSSL 1.1 vs. 1.0: EVP 2017-06-19 08:33:29 +02:00
Christian Hohnstaedt
39c2e86ee0 OSSL 1.1 vs. 1.0: Improve Key generation 2017-06-19 08:33:29 +02:00
Patrick Monnerat
ad6c2baae5 Add support for OpenSSL 1.1.0
The API changed heavily. New functions arrived, old functions
disappeared and many structures became opaque.

This version of the patch implements pkcs11 signing as follows:
- openssl < 1.0.0: rsa & dsa without engine
- openssl 1.0.x: rsa, dsa & ec with engine
- openssl >= 1.1.0: rsa, dsa & ec without engine

In the operation, we therefore also gain implementation of dsa signing for openssl < 1.0.0 (ec disabled because EC_KEY_METHOD was not yet invented!).

I've given up trying to use a PKEY_ENGINE with openssl 1.1: seems not possible anymore.

I've succeeded compiling the patched xca with openssl 0.9.8n, 1.0.2j and 1.1.0e.
I've successfully tested pkcs11 signing using softhsm with openssl 1.0.2j and 1.1.0e.

The patch also removes gcc7 new warnings.
2017-06-19 08:32:39 +02:00
Christian Hohnstaedt
e5541c6d67 SF. Bug. #81 Make xca qt5 compatible
Extend XCA to also compile against Qt5
Remove directory from Qt includes
2015-09-17 18:42:42 +02:00
Christian Hohnstaedt
d55eb917e2 Silence compiler warnings about unused parameters 2015-08-11 07:17:56 +02:00
Christian Hohnstaedt
85d2a26aa9 Fix all fopen() calls to always use "wb" or "rb"
fix PKI item autodetection
Fix compiler warning because of a changed OpenSSL 0.9.8/1.0.1
  "PEM_load_bio()" API change
2015-05-20 13:14:21 +02:00
Christian Hohnstaedt
2909e79317 Move entropy functions into new class
Read and write .rnd file during start and exit
2015-04-08 06:54:55 +02:00
Christian Hohnstaedt
1138dad902 SF Bug #102 Weak entropy source used for key generation
On startup use "/dev/random" and "/dev/hwrng"
as additional entropy for the OpenSSL random pool.

Collect mouse position and key press time entropy
for seeding the openssl random pool before generating keys.

When using Smartcards, use the Smartcard RNG
as additional entropy source.
2015-04-06 14:19:10 +02:00
Christian Hohnstaedt
02d7856b74 Update version and copyright year 2015-02-19 09:06:55 +01:00
Christian Hohnstaedt
e69bb319a0 Support importing SSH2 public keys 2015-02-17 19:34:39 +01:00
Christian Hohnstaedt
8aa5141078 Optionally allow hash algos not supported by the token
Especially EC and DSA signatures are only defined
with SHA1 in PKCS#11 v2.20 spec
2014-11-13 20:10:18 +01:00
Christian Hohnstaedt
30ca37a427 Fix Segfault when loading EC keys with unknown curve 2014-11-01 10:03:06 +01:00
Christian Hohnstaedt
8ed9bab7df Support EC key generation on PKCS#11 token
move EC builtin sources into extra class and file
2014-10-31 00:23:39 +01:00
Christian Hohnstaedt
3cbd020bfc Update copyright notes 2013-11-20 09:32:39 +01:00
Christian Hohnstaedt
0105a2c1b7 SF Bug #82 Certificate Creation out of Spec
Add sha256, sha384 and sha512 when compiling against OpenSSL > 1.0.0
Thanks "dvo" for the patch proposal
2013-11-20 07:41:11 +01:00
Christian Hohnstaedt
38ed0b60b5 Update Copyright dates 2012-05-06 11:16:44 +02:00
Christian Hohnstaedt
610a20d1f2 Add x509v3 extensions to the list of selectable columns
Requests and certificates can display the extensions in the table
and be sorted by them.

make the key identifiers display in numerical style
2011-06-21 22:06:39 +02:00
Christian Hohnstaedt
722c20a2b4 improve pasting PEM data 2011-04-30 07:53:39 +02:00
Christian Hohnstaedt
b622e64209 consolidate Password and Pin input dialogs
change storage type of passwords from char[] to QByteArray
Create PwDialog class and drop passWrite and passRead
Create Passwd class derived from QBytearray
move PKCS12 password input to PwDialog
2011-04-30 07:53:26 +02:00
Christian Hohnstaedt
84998b6ca3 reduce overlong filenames
Thanks Andreas Piesk
2011-02-02 18:12:38 +01:00
Christian Hohnstaedt
00f1bbb5b3 Make EC parts of XCA depend on OpenSSL config
Some distributions ship an OpenSSL installation without
EC Support.
XCA evaluates the OPENSSL_NO_EC flag to disable EC

Thanks to Andreas Piesk for his patch
2011-01-06 07:01:29 +01:00
Christian Hohnstaedt
88e0a02155 Close bug [3091576] Private key export is always PKCS#8 encoded
Since OpenSSL 1.0.0 PEM_write_PrivateKey() always
writes a PKCS#8 structure.

PEM Export function PEM_write_PrivateKey() replaced by
PEM_write_#KEY#PrivateKey() depending on the KEY type.
2010-10-26 07:10:26 +02:00
Christian Hohnstaedt
0d9eec9797 drop Openssl 0.9.7 backward compatibility hack 2010-08-19 07:16:51 +02:00
Christian Hohnstaedt
603cc7d9be Improve Columns of all Items Feature Request [849713]
Keys: Sort Keysize numerical
Certs: CA, fingerprints, start date (notBefore)
Crl: CRL number , Last update

Requests, Crls, Templates, Certs: All subject items and the full name
2010-07-30 06:54:14 +02:00
Christian Hohnstaedt
fd776644ac improve error messages 2010-07-24 22:17:52 +02:00
Christian Hohnstaedt
de851ed3a9 Changed all header includes to QT4 names and included the correct component name
By Andreas Piesk. Thanks!

adapt to HEAD since the patch is based on 0.6.4

drop qt4/Qt include in list of includes during configuration
2010-06-13 11:49:38 +02:00
Christian Hohnstaedt
2b91c11d5a improve key import
- support importing encrypted and unencrypted PKCS#8 DER
   formatted keys
2010-05-02 07:09:24 +02:00
Christian Hohnstaedt
984798659c add DH param generation 2010-03-24 08:08:18 +01:00
Christian Hohnstaedt
f1c528fcc9 update copyright information 2010-03-11 07:13:48 +01:00
Christian Hohnstaedt
32a58564f5 use QByteArray for storing encrypted keys 2010-03-08 07:50:12 +01:00
Christian Hohnstaedt
0230061855 replace allocated strings by QByteArray for datastorage 2010-03-08 07:50:08 +01:00
Christian Hohnstaedt
825fea569d improve token handling
- add tokenInfo.model to the card information, revamp tokenInfo
 - add driverInfo()
 - use token_info.label (card_label) as token descriptor for reading passwords
 - use only CKA_LABEL as internal name
2010-02-28 10:31:53 +01:00
Christian Hohnstaedt
00eccfe98f add informational messageboxes
- for keys, requests, certificates, crls or templates
 - when successfully created or imported one.
2010-02-23 19:17:44 +01:00
Christian Hohnstaedt
345cdc1083 improve messages and usability
- update german translation
2010-02-21 16:24:00 +01:00
Christian Hohnstaedt
d362a9c51e add new Token-features
- replace occurances of "Smart Card" by "Token"
 - Support for creating keys on a token
 - Store existing keys on a token
 - delete keys and certs from a token
 - update docs
2010-02-17 07:20:18 +01:00
Christian Hohnstaedt
4b2f6726cc improve error-messages during file load.
- while at it, revamp SPKAC loading
2010-01-28 07:30:52 +01:00
Christian Hohnstaedt
dbad217a9f improve file-dialog handling
- resize columns to fit to the longest entry
 - Ask once if an existing file shall be overwritten
2009-12-06 16:39:17 +01:00
Christian Hohnstaedt
838fb6924d add information to requests, wether they are already signed or not
- look for a certificate with the public key of the request
   to decide whether it is already handled or not.
2009-11-29 12:28:31 +01:00
Christian Hohnstaedt
bd90901c10 change filename handling to support UTF8 names 2009-11-24 19:16:25 +01:00
Christian Hohnstaedt
9f900ae6f7 update copyright date to 2009 where appropriate 2009-11-24 17:54:21 +01:00
Christian Hohnstaedt
42da9ac574 reactivate functionality to change database password
- remove CRTL+X shortcuts from menu
 - change DB pass not via button, but via file-menu.
2009-11-24 17:42:16 +01:00
Christian Hohnstaedt
76913168ed smart card related fixes
- fixes to not crash if Smart card support is missing
 - select correct list of hash algos by
   reading PKCS11 mechanisms per slot and save them among with
   the card in the db
 - remove debugging code
 - allow to configure the path to the PKCS#11 library
 - copy pkcs11 header-file into XCA lib
2009-11-04 18:59:55 +01:00
Christian Hohnstaedt
48f59e9d1a support for PIN changes of Smart card tokens. 2009-11-01 19:41:29 +01:00
Christian Hohnstaedt
7fe7a06c7b merge Scard details and key details 2009-10-30 08:18:16 +01:00
Christian Hohnstaedt
dcf0c83b35 support smart card import
- import keys and certificates from a smart card and
   show them in an importMulti dialog
 - support exporting the public from smart card
2009-10-29 18:54:08 +01:00
Christian Hohnstaedt
f82aad0c2a add support for Elliptic curve keys 2009-10-28 18:56:44 +01:00
Christian Hohnstaedt
66c7db0350 Start implementation of SmartCard support
- use PKCS#11
 - load keys and showing them works
2009-10-28 18:54:22 +01:00