From 7d0a06e19a19bbc47309073b02020e20c2b7e055 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 28 Feb 2011 16:09:45 +0100 Subject: [PATCH 01/72] * Mon Feb 28 2011 Patrick Monnerat 0.9.0-1 - New upstream release. - Suppress "includes" patch (went upstream). - Suppress "openssl10" patch (new release is openssl 10 compatible). - Patches "locale" and "noec" port to new release. - French localization added. --- .gitignore | 2 + README.update | 7 - lastver | 2 +- sources | 3 +- xca-0.6.4-includes.patch | 12 - xca-0.6.4-openssl10.patch | 16 - xca-0.7.0-locale.patch | 26 - xca-0.8.0-noec.patch | 259 --- xca-0.9.0-french.patch | 3250 +++++++++++++++++++++++++++++++++++++ xca-0.9.0-locale.patch | 20 + xca-0.9.0-noec.patch | 303 ++++ xca.spec | 161 +- xca.xml | 7 - 13 files changed, 3668 insertions(+), 400 deletions(-) delete mode 100644 README.update delete mode 100644 xca-0.6.4-includes.patch delete mode 100644 xca-0.6.4-openssl10.patch delete mode 100644 xca-0.7.0-locale.patch delete mode 100644 xca-0.8.0-noec.patch create mode 100644 xca-0.9.0-french.patch create mode 100644 xca-0.9.0-locale.patch create mode 100644 xca-0.9.0-noec.patch delete mode 100644 xca.xml diff --git a/.gitignore b/.gitignore index f5e8082..71e4422 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ xca-0.8.1.tar.gz +/xca-0.9.0.tar.gz +/README.update diff --git a/README.update b/README.update deleted file mode 100644 index cdf62b4..0000000 --- a/README.update +++ /dev/null @@ -1,7 +0,0 @@ -xca-0.6 uses a different database format. To convert the existing -database, execute: - -1. Install 'db_dump' from the db4-utils package: - | yum install db4-utils - -2. Read /usr/share/xca/xca-2.html for further instructions diff --git a/lastver b/lastver index 6f4eebd..ac39a10 100644 --- a/lastver +++ b/lastver @@ -1 +1 @@ -0.8.1 +0.9.0 diff --git a/sources b/sources index 1f0025a..64ab1af 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -ca87fd1af19ea2d90ac5aca1c296dd21 xca-0.8.1.tar.gz +ff6e23a0aac6a6d9d10b47d3f9856f1a xca-0.9.0.tar.gz +113ba37a89fe2de69338fcfe3b773a03 README.update diff --git a/xca-0.6.4-includes.patch b/xca-0.6.4-includes.patch deleted file mode 100644 index 34f86c3..0000000 --- a/xca-0.6.4-includes.patch +++ /dev/null @@ -1,12 +0,0 @@ -Index: xca-0.7.0/lib/db.h -=================================================================== ---- xca-0.7.0.orig/lib/db.h -+++ xca-0.7.0/lib/db.h -@@ -13,6 +13,7 @@ - #include - #include - #include -+#include - - #define XCA_MAGIC 0xcadb1969 - #define NAMELEN 80 diff --git a/xca-0.6.4-openssl10.patch b/xca-0.6.4-openssl10.patch deleted file mode 100644 index ee2ee34..0000000 --- a/xca-0.6.4-openssl10.patch +++ /dev/null @@ -1,16 +0,0 @@ -Index: xca-0.7.0/lib/pki_x509req.cpp -=================================================================== ---- xca-0.7.0.orig/lib/pki_x509req.cpp -+++ xca-0.7.0/lib/pki_x509req.cpp -@@ -350,7 +350,11 @@ void pki_x509req::set_spki(NETSCAPE_SPKI - void pki_x509req::load_spkac(const QString filename) - { - STACK_OF(CONF_VALUE) *sk=NULL; -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+ LHASH_OF(CONF_VALUE) *parms=NULL; -+#else - LHASH *parms=NULL; -+#endif - CONF_VALUE *cv=NULL; - x509name subject; - char *type,*buf; diff --git a/xca-0.7.0-locale.patch b/xca-0.7.0-locale.patch deleted file mode 100644 index b701cc9..0000000 --- a/xca-0.7.0-locale.patch +++ /dev/null @@ -1,26 +0,0 @@ -2007-03-17 Enrico Scholz - * lib/main.c: use correct locale for the xca.qm file - * lib/main.c: [SECURITY] do not load qt.qm file from current - directory - -Index: xca-0.7.0/lib/main.cpp -=================================================================== ---- xca-0.7.0.orig/lib/main.cpp -+++ xca-0.7.0/lib/main.cpp -@@ -9,6 +9,7 @@ - #include - #include - #include -+#include - #include - #include "widgets/MainWindow.h" - #include "lib/func.h" -@@ -39,7 +40,7 @@ int main( int argc, char *argv[] ) - #else - locale = QLocale::system().name(); - #endif -- qtTr.load( QString( "qt_" ) + locale, "." ); -+ qtTr.load( QString( "qt_" ) + locale, XCA_DEFAULT_TRANSLATE); - xcaTr.load( QString( "xca_" ) + locale, getPrefix() ); - - a.installTranslator( &qtTr ); diff --git a/xca-0.8.0-noec.patch b/xca-0.8.0-noec.patch deleted file mode 100644 index 1e58fa2..0000000 --- a/xca-0.8.0-noec.patch +++ /dev/null @@ -1,259 +0,0 @@ -Index: xca-0.8.0/lib/pki_evp.cpp -=================================================================== ---- xca-0.8.0.orig/lib/pki_evp.cpp -+++ xca-0.8.0/lib/pki_evp.cpp -@@ -25,9 +25,11 @@ QString pki_evp::passHash = QString(); - - QPixmap *pki_evp::icon[2]= { NULL, NULL }; - -+#ifndef DISABLE_EC - EC_builtin_curve *pki_evp::curves = NULL; - size_t pki_evp::num_curves = 0; - unsigned char *pki_evp::curve_flags = NULL; -+#endif - - void pki_evp::erasePasswd() - { -@@ -107,7 +109,9 @@ void pki_evp::generate(int bits, int typ - { - RSA *rsakey; - DSA *dsakey; -+#ifndef DISABLE_EC - EC_KEY *eckey; -+#endif - - progress->setMinimum(0); - progress->setMaximum(100); -@@ -127,6 +131,7 @@ void pki_evp::generate(int bits, int typ - if (dsakey) - EVP_PKEY_set1_DSA(key, dsakey); - break; -+#ifndef DISABLE_EC - case EVP_PKEY_EC: - EC_GROUP *group = EC_GROUP_new_by_curve_name(curve_nid); - if (!group) -@@ -147,6 +152,7 @@ void pki_evp::generate(int bits, int typ - EC_KEY_free(eckey); - EC_GROUP_free(group); - break; -+#endif - } - openssl_error(); - encryptKey(); -@@ -190,8 +196,10 @@ static bool EVP_PKEY_isPrivKey(EVP_PKEY - return key->pkey.rsa->d ? true: false; - case EVP_PKEY_DSA: - return key->pkey.dsa->priv_key ? true: false; -+#ifndef DISABLE_EC - case EVP_PKEY_EC: - return EC_KEY_get0_private_key(key->pkey.ec) ? true: false; -+#endif - } - return false; - } -@@ -236,6 +244,7 @@ void pki_evp::fromPEM_BIO(BIO *bio, QStr - openssl_error(name); - } - -+#ifndef DISABLE_EC - static void search_ec_oid(EC_KEY *ec) - { - const EC_GROUP *ec_group = EC_KEY_get0_group(ec); -@@ -260,6 +269,7 @@ static void search_ec_oid(EC_KEY *ec) - } - } - } -+#endif - - void pki_evp::fload(const QString fname) - { -@@ -301,8 +311,10 @@ void pki_evp::fload(const QString fname) - } - fclose(fp); - if (pkey){ -+#ifndef DISABLE_EC - if (pkey->type == EVP_PKEY_EC) - search_ec_oid(pkey->pkey.ec); -+#endif - if (key) - EVP_PKEY_free(key); - key = pkey; -@@ -680,7 +692,9 @@ const EVP_MD *pki_evp::getDefaultMD() - switch (key->type) { - case EVP_PKEY_RSA: md = EVP_sha1(); break; - case EVP_PKEY_DSA: md = EVP_dss1(); break; -+#ifndef DISABLE_EC - case EVP_PKEY_EC: md = EVP_ecdsa(); break; -+#endif - default: md = NULL; break; - } - return md; -Index: xca-0.8.0/lib/pki_scard.cpp -=================================================================== ---- xca-0.8.0.orig/lib/pki_scard.cpp -+++ xca-0.8.0/lib/pki_scard.cpp -@@ -178,6 +178,7 @@ EVP_PKEY *pki_scard::load_pubkey(pkcs11 - EVP_PKEY_set1_DSA(pkey, dsa); - break; - } -+#ifndef DISABLE_EC - case CKK_EC: { - EC_KEY *ec = EC_KEY_new(); - -@@ -202,6 +203,7 @@ EVP_PKEY *pki_scard::load_pubkey(pkcs11 - EVP_PKEY_set1_EC_KEY(pkey, ec); - break; - } -+#endif - default: - throw errorEx(QString("Unsupported CKA_KEY_TYPE: %1\n").arg(keytype)); - } -@@ -304,8 +306,10 @@ const EVP_MD *pki_scard::getDefaultMD() - return EVP_sha1(); - if (mech_list.contains(CKM_DSA_SHA1)) - return EVP_dss1(); -+#ifndef DISABLE_EC - if (mech_list.contains(CKM_ECDSA_SHA1)) - return EVP_ecdsa(); -+#endif - if (mech_list.contains(CKM_SHA512_RSA_PKCS)) - return EVP_sha512(); - if (mech_list.contains(CKM_SHA384_RSA_PKCS)) -Index: xca-0.8.0/widgets/KeyDetail.cpp -=================================================================== ---- xca-0.8.0.orig/widgets/KeyDetail.cpp -+++ xca-0.8.0/widgets/KeyDetail.cpp -@@ -25,6 +25,7 @@ KeyDetail::KeyDetail(QWidget *parent) - keyDesc->setReadOnly(true); - } - -+#ifndef DISABLE_EC - static QString CurveComment(int nid) - { - for (size_t i=0; isetText(key->subprime()); - keyModulus->setText(key->pubkey()); - break; -+#ifndef DISABLE_EC - case EVP_PKEY_EC: - nid = key->ecParamNid(); - tlModulus->setText(tr("Public key")); -@@ -84,6 +87,7 @@ void KeyDetail::setKey(pki_key *key) - keyPubEx->setToolTip(CurveComment(nid)); - keyModulus->setText(key->ecPubKey()); - break; -+#endif - default: - tlHeader->setText(tr("UNKNOWN Key")); - } -Index: xca-0.8.0/widgets/NewKey.cpp -=================================================================== ---- xca-0.8.0.orig/widgets/NewKey.cpp -+++ xca-0.8.0/widgets/NewKey.cpp -@@ -23,7 +23,9 @@ struct typelist { - static const struct typelist typeList[] = { - { "RSA", EVP_PKEY_RSA }, - { "DSA", EVP_PKEY_DSA }, -+#ifndef DISABLE_EC - { "EC", EVP_PKEY_EC }, -+#endif - }; - - NewKey::NewKey(QWidget *parent, QString name) -@@ -48,6 +50,7 @@ NewKey::NewKey(QWidget *parent, QString - keyType->addItem(QString(typeList[i].name)); - } - -+#ifndef DISABLE_EC - for (i = 0; iaddItems(curve_x962); - curveBox->addItems(curve_other); -+#endif -+ - keyLength->setCurrentIndex(0); - keyDesc->setFocus(); - } -Index: xca-0.8.0/widgets/hashBox.cpp -=================================================================== ---- xca-0.8.0.orig/widgets/hashBox.cpp -+++ xca-0.8.0/widgets/hashBox.cpp -@@ -42,8 +42,10 @@ const EVP_MD *hashBox::currentHash() - switch(key_type) { - case EVP_PKEY_DSA: - return EVP_dss1(); -+#ifndef DISABLE_EC - case EVP_PKEY_EC: - return EVP_ecdsa(); -+#endif - default: - QString hash = currentText(); - for (unsigned i=0; itype != EVP_PKEY_EC) -@@ -160,6 +161,7 @@ QString pki_key::ecPubKey() - } - return pub; - } -+#endif - - bool pki_key::compare(pki_base *ref) - { -Index: xca-0.8.0/widgets/MainWindow.cpp -=================================================================== ---- xca-0.8.0.orig/widgets/MainWindow.cpp -+++ xca-0.8.0/widgets/MainWindow.cpp -@@ -97,6 +97,7 @@ static const int other_curve_nids[] = { - - static void init_curves() - { -+#ifndef DISABLE_EC - pki_evp::num_curves = EC_get_builtin_curves(NULL, 0); - pki_evp::curves = (EC_builtin_curve*)OPENSSL_malloc( - (int)(sizeof(EC_builtin_curve) *pki_evp::num_curves)); -@@ -125,6 +126,7 @@ static void init_curves() - } - } - } -+#endif - } - - void MainWindow::load_engine() diff --git a/xca-0.9.0-french.patch b/xca-0.9.0-french.patch new file mode 100644 index 0000000..2eaa0ed --- /dev/null +++ b/xca-0.9.0-french.patch @@ -0,0 +1,3250 @@ +diff -Naur xca-0.9.0.orig/lang/fr.po xca-0.9.0.new/lang/fr.po +--- xca-0.9.0.orig/lang/fr.po 1970-01-01 01:00:00.000000000 +0100 ++++ xca-0.9.0.new/lang/fr.po 2011-02-25 17:08:33.620671679 +0100 +@@ -0,0 +1,3223 @@ ++# ++# Patrick Monnerat , 2011. ++# ++msgid "" ++msgstr "" ++"Project-Id-Version: xca 0.9.0\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2010-08-24 07:29+0200\n" ++"PO-Revision-Date: 2011-02-25 16:20+0100\n" ++"Last-Translator: Patrick Monnerat \n" ++"Language-Team: fr \n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"X-Generator: Translate Toolkit 1.7.0\n" ++ ++#: About#1 ++msgid "Done" ++msgstr "OK" ++ ++#: CaProperties#1 ++msgid "CA Properties" ++msgstr "Propriétés du CA" ++ ++#: CaProperties#2 ++msgid "Use random Serial numbers" ++msgstr "Utiliser des numéros de série aléatoires" ++ ++#: CaProperties#3 ++msgid "Days until next CRL issuing" ++msgstr "" ++"Nombre de jours avant la génération de la prochaine liste de révocation" ++ ++#: CaProperties#4 ++msgid "Default template" ++msgstr "Modèle par défaut" ++ ++#: CaProperties#5 ++msgid "Next serial for signing" ++msgstr "Numéro de série suivant pour la signature" ++ ++#: CertDetail#1 ++msgid "Details of the Certificate" ++msgstr "Détails du Certificat" ++ ++#: CertDetail#2 ++msgid "S&tatus" ++msgstr "E&tat" ++ ++#: CertDetail#3 ++msgctxt "CertDetail#3" ++msgid "Serial" ++msgstr "Numéro de série" ++ ++#: CertDetail#4 ++msgid "The serial number of the certificate" ++msgstr "Le numéro de série du certificat" ++ ++#: CertDetail#5 ++msgid "The internal name of the certificate in the database" ++msgstr "Le nom interne du certificat dans la base de données" ++ ++#: CertDetail#6 ++msgctxt "CertDetail#6" ++msgid "Internal name" ++msgstr "Nom interne" ++ ++#: CertDetail#7 ++msgctxt "CertDetail#7" ++msgid "Signature algorithm" ++msgstr "Algorithme de signature" ++ ++#: CertDetail#8 ++msgctxt "CertDetail#8" ++msgid "Signature" ++msgstr "Signature" ++ ++#: CertDetail#9 ++msgctxt "CertDetail#9" ++msgid "Key" ++msgstr "Clé" ++ ++#: CertDetail#10 ++msgid "Fingerprints" ++msgstr "Empreinte" ++ ++#: CertDetail#11 ++msgid "SHA1" ++msgstr "SHA1" ++ ++#: CertDetail#12 ++msgid "MD5" ++msgstr "MD5" ++ ++#: CertDetail#13 ++msgid "A SHA-1 hashsum of the certificate" ++msgstr "La somme de hachage SHA-1 du certificat" ++ ++#: CertDetail#14 ++msgid "An md5 hashsum of the certificate" ++msgstr "La somme de hachage MD5 du certificat" ++ ++#: CertDetail#15 ++msgctxt "CertDetail#15" ++msgid "Validity" ++msgstr "Validité" ++ ++#: CertDetail#16 ++msgid "The time since the certificate is valid" ++msgstr "Le moment depuis lequel le certificat est valide" ++ ++#: CertDetail#17 ++msgid "The time until the certificate is valid" ++msgstr "Le moment auquel le certificat échoit" ++ ++#: CertDetail#18 ++msgid "&Subject" ++msgstr "&Sujet" ++ ++#: CertDetail#19 ++msgctxt "CertDetail#19" ++msgid "&Issuer" ++msgstr "&Emetteur" ++ ++#: CertDetail#20 ++msgid "Attributes" ++msgstr "Attributs" ++ ++#: CertDetail#21 ++msgctxt "CertDetail#21" ++msgid "&Extensions" ++msgstr "E&xtensions" ++ ++#: CertDetail#22 ++msgid "Show config" ++msgstr "Afficher la configuration" ++ ++#: CertDetail#23 ++msgid "Show extensions" ++msgstr "Afficher les extensions" ++ ++#: CertDetail#24 ++msgctxt "CertDetail#24" ++msgid "Not available" ++msgstr "Non disponible" ++ ++#: CertDetail#25 ++msgid "Details of the certificate" ++msgstr "Détails du certificat" ++ ++#: CertDetail#26 ++msgid "Signer unknown" ++msgstr "Signataire inconnu" ++ ++#: CertDetail#27 ++msgid "Self signed" ++msgstr "Auto-signé" ++ ++#: CertDetail#28 ++msgctxt "CertDetail#28" ++msgid "Not trusted" ++msgstr "Pas sûr" ++ ++#: CertDetail#29 ++msgid "Trusted" ++msgstr "Sûr" ++ ++#: CertDetail#30 ++msgid "Revoked: " ++msgstr "Révoqués: " ++ ++#: CertDetail#31 ++msgid "Not valid" ++msgstr "Echu" ++ ++#: CertDetail#32 ++msgid "Valid" ++msgstr "Valide" ++ ++#: CertDetail#33 ++msgid "Details of the certificate signing request" ++msgstr "Détails de la requête de signature" ++ ++#: CertExtend#1 ++msgid "Certificate renewal" ++msgstr "Renouvellement du certificat" ++ ++#: CertExtend#2 ++msgid "" ++"This will create a new certificate as a copy of the old one with a new " ++"serial number and adjusted validity values." ++msgstr "" ++"Créer un nouveau certificat conforme à l'ancien, mais avec un nouveau numéro " ++"de série et les limites de validité ajustées." ++ ++#: CertExtend#3 ++msgctxt "CertExtend#3" ++msgid "Validity" ++msgstr "Validité" ++ ++#: CertExtend#4 ++msgctxt "CertExtend#4" ++msgid "Not before" ++msgstr "Pas avant" ++ ++#: CertExtend#5 ++msgctxt "CertExtend#5" ++msgid "Not after" ++msgstr "Pas après" ++ ++#: CertExtend#6 ++msgctxt "CertExtend#6" ++msgid "Time range" ++msgstr "Intervalle de temps" ++ ++#: CertExtend#7 ++msgctxt "CertExtend#7" ++msgid "No well-defined expiration" ++msgstr "Date d'expiration mal définie" ++ ++#: CertExtend#8 ++msgctxt "CertExtend#8" ++msgid "Apply" ++msgstr "Appliquer" ++ ++#: CertExtend#9 ++msgctxt "CertExtend#9" ++msgid "Days" ++msgstr "Jours" ++ ++#: CertExtend#10 ++msgctxt "CertExtend#10" ++msgid "Months" ++msgstr "Mois" ++ ++#: CertExtend#11 ++msgctxt "CertExtend#11" ++msgid "Years" ++msgstr "Années" ++ ++#: CertExtend#12 ++msgctxt "CertExtend#12" ++msgid "Midnight" ++msgstr "Minuit" ++ ++#: CertExtend#13 ++msgctxt "CertExtend#13" ++msgid "" ++"The certificate will be earlier valid than the signer. This is probably not " ++"what you want." ++msgstr "" ++"Le certificat serait valide avant son signataire. Ce n'est probablement pas " ++"ce qui est désiré." ++ ++#: CertExtend#14 ++msgid "Edit times" ++msgstr "Modifier les limites de validité" ++ ++#: CertExtend#15 ++msgctxt "CertExtend#15" ++msgid "Abort rollout" ++msgstr "Interrompre le déploiement" ++ ++#: CertExtend#16 ++msgctxt "CertExtend#16" ++msgid "Continue rollout" ++msgstr "Continuer le déploiement" ++ ++#: CertExtend#17 ++msgctxt "CertExtend#17" ++msgid "Adjust date and continue" ++msgstr "Ajuster la date et continuer" ++ ++#: CertExtend#18 ++msgctxt "CertExtend#18" ++msgid "" ++"The certificate will be longer valid than the signer. This is probably not " ++"what you want." ++msgstr "" ++"Le certificat serait valide plus longtemps que son signataire. Ce n'est " ++"probablement pas ce qui est désiré." ++ ++#: CertView#1 ++msgctxt "CertView#1" ++msgid "There was no key found for the Certificate: " ++msgstr "Aucune clé n'a été trouvée pour ce certificat: " ++ ++#: CertView#2 ++msgctxt "CertView#2" ++msgid "Import Certificate signing request" ++msgstr "Importer une requête de signature" ++ ++#: ClickLabel#1 ++msgid "Double click for details" ++msgstr "Double-cliquer pour afficher les détails" ++ ++#: CrlDetail#1 ++msgid "Details of the Revocation list" ++msgstr "Détails de la liste de révocation" ++ ++#: CrlDetail#2 ++msgid "&Status" ++msgstr "&Etat" ++ ++#: CrlDetail#3 ++msgid "Version" ++msgstr "Version" ++ ++#: CrlDetail#4 ++msgctxt "CrlDetail#4" ++msgid "Signature" ++msgstr "Signature" ++ ++#: CrlDetail#5 ++msgid "Signed by" ++msgstr "Signé par" ++ ++#: CrlDetail#6 ++msgctxt "CrlDetail#6" ++msgid "Name" ++msgstr "Nom" ++ ++#: CrlDetail#7 ++msgid "The internal name of the CRL in the database" ++msgstr "Le nom interne de la liste de révocation dans la base de données" ++ ++#: CrlDetail#8 ++msgid "issuing dates" ++msgstr "date d'émission" ++ ++#: CrlDetail#9 ++msgid "Next Update" ++msgstr "Prochaine mise-à-jour" ++ ++#: CrlDetail#10 ++msgid "Last Update" ++msgstr "Dernière mise-à-jour" ++ ++#: CrlDetail#11 ++msgctxt "CrlDetail#11" ++msgid "&Issuer" ++msgstr "&Emetteur" ++ ++#: CrlDetail#12 ++msgctxt "CrlDetail#12" ++msgid "&Extensions" ++msgstr "E&xtensions" ++ ++#: CrlDetail#13 ++msgid "&Revocation list" ++msgstr "Liste de &révocation" ++ ++#: CrlDetail#14 ++msgid "0" ++msgstr "0" ++ ++#: CrlDetail#15 ++msgctxt "CrlDetail#15" ++msgid "Serial" ++msgstr "Numéro de série" ++ ++#: CrlDetail#16 ++msgctxt "CrlDetail#16" ++msgid "Revocation" ++msgstr "Révocation" ++ ++#: CrlDetail#17 ++msgid "Reason" ++msgstr "Raison" ++ ++#: CrlDetail#18 ++msgid "Invalidation" ++msgstr "Invalidation" ++ ++#: CrlDetail#19 ++msgid "Failed" ++msgstr "Echoué" ++ ++#: CrlDetail#20 ++msgid "Unknown signer" ++msgstr "Signataire inconnu" ++ ++#: CrlDetail#21 ++msgid "Verification not possible" ++msgstr "Vérification impossible" ++ ++#: CrlDetail#22 ++msgid "Unknown certificate" ++msgstr "Certificat inconnu" ++ ++#: ExportCert#1 ++msgid "X509 Certificates ( *.cer *.crt *.p12 *.p7b);;All files ( * )" ++msgstr "Certificats X509 ( *.cer *.crt *.p12 *.p7b);;Tous les fichiers ( * )" ++ ++#: ExportCert#2 ++msgid "" ++"DER is a binary format of the Certificate\n" ++"PEM is a base64 encoded Certificate\n" ++"PKCS#7 is an official Certificate exchange format\n" ++"PKCS#12 is an encrypted official Key-Certificate exchange format\n" ++msgstr "" ++"DER est un format binaire de certificat\n" ++"PEM encode le certificat en base64\n" ++"PKCS#7 est un format officiel d'échange de certificat\n" ++"PKCS#12 est un format officiel encrypté d'échange de certificat et de clé\n" ++ ++#: ExportCert#3 ++msgid "Please enter the filename for the certificate." ++msgstr "SVP entrer le nom du fichier pour le certificat." ++ ++#: ExportCert#4 ++msgid "Certifikate export" ++msgstr "Exportation de certificat" ++ ++#: ExportDer#1 ++msgctxt "ExportDer#1" ++msgid "All files ( * )" ++msgstr "Tous les fichiers ( * )" ++ ++#: ExportDer#2 ++msgid "" ++"DER is a binary format\n" ++"PEM is a base64 encoded DER file\n" ++msgstr "" ++"DER est un format binaire\n" ++"PEM est un format encodé en base64\n" ++ ++#: ExportDialog#1 ++msgid "..." ++msgstr "..." ++ ++#: ExportDialog#2 ++msgid "Filename" ++msgstr "Nom du fichier" ++ ++#: ExportDialog#3 ++msgid "Please enter the filename" ++msgstr "SVP saisir le nom du fichier" ++ ++#: ExportDialog#4 ++msgid "Export Format" ++msgstr "Format d'exportation" ++ ++#: ExportDialog#5 ++msgid "The file: '%1' already exists!" ++msgstr "Le fichier '%1' existe déjà!" ++ ++#: ExportDialog#6 ++msgid "Overwrite" ++msgstr "Ecraser" ++ ++#: ExportDialog#7 ++msgid "Do not overwrite" ++msgstr "Ne pas écraser" ++ ++#: ExportKey#1 ++msgid "When exporting the private key it should be encrypted." ++msgstr "Il est conseillé d'encrypter la clé privée lors de son exportation." ++ ++#: ExportKey#2 ++msgid "When exporting the private part, it should be encrypted." ++msgstr "Il est conseillé d'encrypter la partie privée lors de son exportation." ++ ++#: ExportKey#3 ++msgid "E&xport the private part of the Key too" ++msgstr "E&xporter aussi la partie privée de la clé" ++ ++#: ExportKey#4 ++msgid "Export as PKCS#8" ++msgstr "Exporter en PKCS#8" ++ ++#: ExportKey#5 ++msgid "&Encrypt the Key with a password" ++msgstr "&Encrypter la clé avec un mot de passe" ++ ++#: ExportKey#6 ++msgid "Private keys ( *.pem *.der *.pk8 );;All files ( * )" ++msgstr "Clés privées ( *.pem *.der *.pk8 );;Tous les fichiers ( * )" ++ ++#: ExportKey#7 ++msgid "" ++"DER is a binary format of the key without encryption\n" ++"PEM is a base64 encoded key with optional encryption\n" ++"PKCS#8 is an encrypted official Key-exchange format" ++msgstr "" ++"DER est un format binaire de clé sans encryption\n" ++"PEM encode la clé en base64 avec une encryption facultative\n" ++"PKCS#8 est un format officiel d'échange de clé" ++ ++#: ExportKey#8 ++msgid "Please enter the filename for the key." ++msgstr "SVP saisir le nom du fichier pour la clé." ++ ++#: ExportKey#9 ++msgid "Public key export" ++msgstr "Exporter la clé publique" ++ ++#: ExportKey#10 ++msgid "Key export" ++msgstr "Exporter la clé" ++ ++#: Help#1 ++msgid "<<" ++msgstr "<<" ++ ++#: Help#2 ++msgid ">>" ++msgstr "<<" ++ ++#: Help#3 ++msgctxt "Help#3" ++msgid "&Done" ++msgstr "&OK" ++ ++#: ImportMulti#1 ++msgid "Import PKI Items" ++msgstr "Importer des objets PKI" ++ ++#: ImportMulti#2 ++msgid "Import &All" ++msgstr "Importer &tout" ++ ++#: ImportMulti#3 ++msgctxt "ImportMulti#3" ++msgid "&Import" ++msgstr "&Importer" ++ ++#: ImportMulti#4 ++msgctxt "ImportMulti#4" ++msgid "&Done" ++msgstr "&OK" ++ ++#: ImportMulti#5 ++msgid "&Remove" ++msgstr "&Enlever" ++ ++#: ImportMulti#6 ++msgid "Details" ++msgstr "Détails" ++ ++#: ImportMulti#7 ++msgid "Delete from token" ++msgstr "Enlever du jeton" ++ ++#: ImportMulti#8 ++msgid "Rename on token" ++msgstr "Renommer dans le jeton" ++ ++#: ImportMulti#9 ++msgid "" ++"\n" ++"Name: %1\n" ++"Model: %2\n" ++"Serial: %3" ++msgstr "" ++"\n" ++"Nom: %1\n" ++"Modèle: %2\n" ++"Numéro de série: %3" ++ ++#: ImportMulti#10 ++msgid "Manage security token" ++msgstr "Gérer les jetons de sécurité" ++ ++#: ImportMulti#11 ++msgid "The type of the Item '%1' is not recognized" ++msgstr "Le type de l'objet '%1' n'est pas reconnu" ++ ++#: ImportMulti#12 ++msgid "Details of the item '%1' cannot be shown" ++msgstr "Les détails de l'objet '%1' ne peuvent pas être affichés" ++ ++#: ImportMulti#13 ++msgid "The type of the item '%1' is not recognized" ++msgstr "Le type de l'objet '%1' n'est pas reconnu" ++ ++#: ImportMulti#14 ++msgid "The file '%1' did not contain PKI data" ++msgstr "Le fichier '%1' ne contient pas de données PKI" ++ ++#: ImportMulti#15 ++msgid "The %1 files: '%2' did not contain PKI data" ++msgstr "Les %1 fichiers: '%2' ne contiennent pas de données PKI" ++ ++#: KeyDetail#1 ++msgctxt "KeyDetail#1" ++msgid "Name" ++msgstr "Nom" ++ ++#: KeyDetail#2 ++msgid "The internal name of the key used by xca" ++msgstr "Le nom interne de la clé utilisé par xca" ++ ++#: KeyDetail#3 ++msgctxt "KeyDetail#3" ++msgid "Security token" ++msgstr "Jeton de sécurité" ++ ++#: KeyDetail#4 ++msgid "Manufacturer" ++msgstr "Fabricant" ++ ++#: KeyDetail#5 ++msgctxt "KeyDetail#5" ++msgid "Serial" ++msgstr "Numéro de série" ++ ++#: KeyDetail#6 ++msgctxt "KeyDetail#6" ++msgid "Key" ++msgstr "Clé" ++ ++#: KeyDetail#7 ++msgid "Public Exponent" ++msgstr "Exposant public" ++ ++#: KeyDetail#8 ++msgctxt "KeyDetail#8" ++msgid "Keysize" ++msgstr "Taille de la clé" ++ ++#: KeyDetail#9 ++msgid "Private Exponent" ++msgstr "Exposant privé" ++ ++#: KeyDetail#10 ++msgid "Modulus" ++msgstr "Modulo" ++ ++#: KeyDetail#11 ++msgid "Details of the %1 key" ++msgstr "Détails de la clé %1" ++ ++#: KeyDetail#12 ++msgctxt "KeyDetail#12" ++msgid "Not available" ++msgstr "Non disponible" ++ ++#: KeyDetail#13 ++msgid "Token" ++msgstr "Jeton" ++ ++#: KeyDetail#14 ++msgid "Security token ID:%1" ++msgstr "Identifiant de jeton de sécurité: %1" ++ ++#: KeyDetail#15 ++msgid "Available" ++msgstr "Disponible" ++ ++#: KeyDetail#16 ++msgid "Sub prime" ++msgstr "Sous-premier" ++ ++#: KeyDetail#17 ++msgid "Public key" ++msgstr "Clé publique" ++ ++#: KeyDetail#18 ++msgctxt "KeyDetail#18" ++msgid "Private key" ++msgstr "Clé privée" ++ ++#: KeyDetail#19 ++msgid "Curve name" ++msgstr "Nom de la courbe" ++ ++#: KeyDetail#20 ++msgid "Unknown key" ++msgstr "Clé inconnue" ++ ++#: MainWindow#1 ++msgid "Private Keys" ++msgstr "Clés privées" ++ ++#: MainWindow#2 ++msgid "&New Key" ++msgstr "&Nouvelle clé" ++ ++#: MainWindow#3 ++msgid "&Export" ++msgstr "&Exporter" ++ ++#: MainWindow#4 ++msgctxt "MainWindow#4" ++msgid "&Import" ++msgstr "&Importer" ++ ++#: MainWindow#5 ++msgid "Import PFX (PKCS#12)" ++msgstr "Importer en PFX (PKCS#12)" ++ ++#: MainWindow#6 ++msgid "&Show Details" ++msgstr "&Afficher les Détails" ++ ++#: MainWindow#7 ++msgid "&Delete" ++msgstr "&Détruire" ++ ++#: MainWindow#8 ++msgid "Certificate signing requests" ++msgstr "Requêtes de signature de certificat" ++ ++#: MainWindow#9 ++msgid "&New Request" ++msgstr "&Nouvelle requête" ++ ++#: MainWindow#10 ++msgid "Certificates" ++msgstr "Certificats" ++ ++#: MainWindow#11 ++msgid "&New Certificate" ++msgstr "&Nouveau Certificat" ++ ++#: MainWindow#12 ++msgid "Import &PKCS#12" ++msgstr "Importer en &PKCS#12" ++ ++#: MainWindow#13 ++msgid "Import P&KCS#7" ++msgstr "Importer en P&KCS#7" ++ ++#: MainWindow#14 ++msgctxt "MainWindow#14" ++msgid "Plain View" ++msgstr "Vue à plat" ++ ++#: MainWindow#15 ++msgid "Templates" ++msgstr "Modèles" ++ ++#: MainWindow#16 ++msgid "&New template" ++msgstr "&Nouveau modèle" ++ ++#: MainWindow#17 ++msgid "Ch&ange Template" ++msgstr "&Modifier le Modèle" ++ ++#: MainWindow#18 ++msgid "Revocation lists" ++msgstr "Listes de révocation" ++ ++#: MainWindow#19 ++msgid "Please enter the password to decrypt the private key: '%1'" ++msgstr "SVP saisir le mot de passe pour décrypter la clé privée: '%1'" ++ ++#: MainWindow#20 ++msgid "" ++"Using or exporting private keys will not be possible without providing the " ++"correct password" ++msgstr "" ++"L'usage ou l'exportation de clés privées seront impossible sans fournir le " ++"mot de passe correct." ++ ++#: MainWindow#21 ++msgid "Database" ++msgstr "Base de donnée" ++ ++#: MainWindow#22 ++msgid "No deleted items found" ++msgstr "Aucun objet détruit n'a été trouvé" ++ ++#: MainWindow#23 ++msgid "&File" ++msgstr "&Fichier" ++ ++#: MainWindow#24 ++msgid "&New DataBase" ++msgstr "&Nouvelle base de données" ++ ++#: MainWindow#25 ++msgid "&Open DataBase" ++msgstr "&Ouvrir une base de données" ++ ++#: MainWindow#26 ++msgid "Generate DH parameter" ++msgstr "Générer le paramètre DH" ++ ++#: MainWindow#27 ++msgid "&Close DataBase" ++msgstr "&Fermer la base de données" ++ ++#: MainWindow#28 ++msgid "&Dump DataBase" ++msgstr "C&licher la base de données" ++ ++#: MainWindow#29 ++msgid "C&hange DataBase password" ++msgstr "C&hanger le mot de passe de la base de données" ++ ++#: MainWindow#30 ++msgid "&Import old db_dump" ++msgstr "&Importer un cliché de base de données en ancien format (db_dump)" ++ ++#: MainWindow#31 ++msgid "&Undelete items" ++msgstr "&Récupérer des objets détruits" ++ ++#: MainWindow#32 ++msgid "Options" ++msgstr "Options" ++ ++#: MainWindow#33 ++msgid "Exit" ++msgstr "Quitter" ++ ++#: MainWindow#34 ++msgid "I&mport" ++msgstr "I&mporter" ++ ++#: MainWindow#35 ++msgid "Keys" ++msgstr "Clés" ++ ++#: MainWindow#36 ++msgid "Requests" ++msgstr "Requêtes" ++ ++#: MainWindow#37 ++msgid "PKCS#12" ++msgstr "PKCS#12" ++ ++#: MainWindow#38 ++msgctxt "MainWindow#38" ++msgid "PKCS#7" ++msgstr "PKCS#7" ++ ++#: MainWindow#39 ++msgctxt "MainWindow#39" ++msgid "Template" ++msgstr "Modèle" ++ ++#: MainWindow#40 ++msgid "Revocation list" ++msgstr "Liste de révocation" ++ ++#: MainWindow#41 ++msgid "PEM file" ++msgstr "Fichier PEM" ++ ++#: MainWindow#42 ++msgid "paste PEM file" ++msgstr "Coller un fichier PEM" ++ ++#: MainWindow#43 ++msgid "&Token" ++msgstr "&Jeton" ++ ++#: MainWindow#44 ++msgid "&Manage Security token" ++msgstr "&Gérer le jeton de sécurité" ++ ++#: MainWindow#45 ++msgid "&Init Security token" ++msgstr "&Initialiser le jeton de sécurité" ++ ++#: MainWindow#46 ++msgid "&Change PIN" ++msgstr "&Changer le NIP" ++ ++#: MainWindow#47 ++msgid "Change &SO PIN" ++msgstr "Changer le P&UK" ++ ++#: MainWindow#48 ++msgid "Init PIN" ++msgstr "Initialiser le NIP" ++ ++#: MainWindow#49 ++msgid "&Help" ++msgstr "&Aide" ++ ++#: MainWindow#50 ++msgid "&Content" ++msgstr "&Contenu" ++ ++#: MainWindow#51 ++msgid "&About" ++msgstr "&A propos" ++ ++#: MainWindow#52 ++msgid "Donations" ++msgstr "Dons" ++ ++#: MainWindow#53 ++msgid "Database dump ( *.dump );;All files ( * )" ++msgstr "Cliché de base de données ( *.dump );;Tous les fichiers ( * )" ++ ++#: MainWindow#54 ++msgid "Import password" ++msgstr "Mot de passe d'importation" ++ ++#: MainWindow#55 ++msgid "Please enter the password of the old database" ++msgstr "SVP saisir le mot de passe de l'ancienne base de données" ++ ++#: MainWindow#56 ++msgid "Password verification error. Ignore keys ?" ++msgstr "La vérification du mot de passe a écoué. Ignorer les clés ?" ++ ++#: MainWindow#57 ++msgid "Import anyway" ++msgstr "Importer quand-même" ++ ++#: MainWindow#58 ++msgctxt "MainWindow#58" ++msgid "Cancel" ++msgstr "Abandonner" ++ ++#: MainWindow#59 ++msgid "no such option: %1" ++msgstr "'%1' n'est pas une option" ++ ++#: MainWindow#60 ++msgid "Import PEM data" ++msgstr "Importer les données PEM" ++ ++#: MainWindow#61 ++msgid "Please enter the original SO PIN (PUK) of the token '%1'" ++msgstr "SVP saisir le PUK original du jeton '%1'" ++ ++#: MainWindow#62 ++msgid "Please enter the new SO PIN (PUK) of the token '%1'" ++msgstr "SVP saisir le nouveau PUK du jeton '%1'" ++ ++#: MainWindow#63 ++msgid "The new label of the token '%1'" ++msgstr "La nouvelle étiquette du jeton '%1'" ++ ++#: MainWindow#64 ++msgid "The token '%1' did not contain any keys or certificates" ++msgstr "Le jeton '%1' ne contient aucune clé ni aucun certificat" ++ ++#: MainWindow#65 ++msgid "New Password" ++msgstr "Nouveau mot de passe" ++ ++#: MainWindow#66 ++msgid "" ++"Please enter the new password to encrypt your private keys in the database-" ++"file" ++msgstr "" ++"SVP saisir le nouveau mot de passe pour encrypter les clés privées dans le " ++"fichier de base de données" ++ ++#: MainWindow#67 ++msgid "" ++"Please enter a password, that will be used to encrypt your private keys in " ++"the database file: '%1'" ++msgstr "" ++"SVP saisir un mot de passe qui sera utilisé pour encrypter les clés privées " ++"dans le fichier de base de données: '%1'" ++ ++#: MainWindow#68 ++msgid "Password verify error, please try again" ++msgstr "La vérification du mot de passe a échoué. SVP essayez encore" ++ ++#: MainWindow#69 ++msgctxt "MainWindow#69" ++msgid "Password" ++msgstr "Mot de passe" ++ ++#: MainWindow#70 ++msgid "Please enter the password for unlocking the database: '%1'" ++msgstr "SVP saisir le mot de passe pour débloquer la base de données: '%1'" ++ ++#: MainWindow#71 ++msgid "" ++"Hex password must only contain the characters '0' - '9' and 'a' - 'f' and it " ++"must consist of an even number of characters" ++msgstr "" ++"Un mot de passe hexadécimal peut seulement contenir les caractères '0' à '9' " ++"et 'a' à 'f' et il doit consister en un nombre pair de caractères" ++ ++#: MainWindow#72 ++msgid "Repeat %1" ++msgstr "Répéter %1" ++ ++#: MainWindow#73 ++msgid "%1 missmatch" ++msgstr "%1 ne correspond pas" ++ ++#: MainWindow#74 ++msgid "The following error occured:" ++msgstr "L'erreur suivante s'est produite:" ++ ++#: MainWindow#75 ++msgid "Copy to Clipboard" ++msgstr "Copier dans le presse-papier" ++ ++#: MainWindow#76 ++msgid "DH parameter bits" ++msgstr "Bits du paramètre DH" ++ ++#: MainWindow#77 ++msgctxt "MainWindow#77" ++msgid "Error opening file: '%1': %2" ++msgstr "Erreur à l'ouverture du fichier '%1': %2" ++ ++#: NewCrl#1 ++msgid "Create CRL" ++msgstr "Créer une liste de révocation" ++ ++#: NewCrl#2 ++msgid "Dates" ++msgstr "Dates" ++ ++#: NewCrl#3 ++msgid "last update" ++msgstr "dernière mise-à-jour" ++ ++#: NewCrl#4 ++msgid "next update" ++msgstr "prochaine mise-à-jour" ++ ++#: NewCrl#5 ++msgctxt "NewCrl#5" ++msgid "Days" ++msgstr "Jours" ++ ++#: NewCrl#6 ++msgctxt "NewCrl#6" ++msgid "Months" ++msgstr "Mois" ++ ++#: NewCrl#7 ++msgctxt "NewCrl#7" ++msgid "Years" ++msgstr "Années" ++ ++#: NewCrl#8 ++msgctxt "NewCrl#8" ++msgid "Midnight" ++msgstr "Minuit" ++ ++#: NewCrl#9 ++msgctxt "NewCrl#9" ++msgid "Apply" ++msgstr "Appliquer" ++ ++#: NewCrl#10 ++msgid "Hashing algorithm" ++msgstr "Algorithme de hachage" ++ ++#: NewCrl#11 ++msgctxt "NewCrl#11" ++msgid "Extensions" ++msgstr "Extensions" ++ ++#: NewCrl#12 ++msgid "Authority key identifier" ++msgstr "Identifiant de clé de l'autorité" ++ ++#: NewCrl#13 ++msgid "Subject alternative name" ++msgstr "Nom alternatif du sujet" ++ ++#: NewCrl#14 ++msgid "CRL Number" ++msgstr "Numéro de la liste de révocation" ++ ++#: NewCrl#15 ++msgid "Revokation reasons" ++msgstr "Raisons de la révocation" ++ ++#: NewKey#1 ++msgid "New key" ++msgstr "Nouvelle clé" ++ ++#: NewKey#2 ++msgid "Please give a name to the new key and select the desired keysize" ++msgstr "" ++"SVP donner un nom à la nouvelle clé et sélectionner la taille de clé désirée" ++ ++#: NewKey#3 ++msgid "Key properties" ++msgstr "Propriétés de la clé" ++ ++#: NewKey#4 ++msgctxt "NewKey#4" ++msgid "Name" ++msgstr "Nom" ++ ++#: NewKey#5 ++msgid "The internal name of the new key" ++msgstr "Le nom interne de la nouvelle clé" ++ ++#: NewKey#6 ++msgctxt "NewKey#6" ++msgid "New Key" ++msgstr "Nouvelle Clé" ++ ++#: NewKey#7 ++msgid "Curve" ++msgstr "Courbe" ++ ++#: NewKey#8 ++msgctxt "NewKey#8" ++msgid "Keysize" ++msgstr "Taille de la clé" ++ ++#: NewKey#9 ++msgid "Usually 1024 or 2048 bit keys are used" ++msgstr "1024 et 2048 bits sont les tailles de clé les plus usitées" ++ ++#: NewKey#10 ++msgid "Keytype" ++msgstr "Type de clé" ++ ++#: NewKey#11 ++msgctxt "NewKey#11" ++msgid "Create" ++msgstr "Créer" ++ ++#: NewX509#1 ++msgctxt "NewX509#1" ++msgid "Create" ++msgstr "Créer" ++ ++#: NewX509#2 ++msgid "Source" ++msgstr "Source" ++ ++#: NewX509#3 ++msgid "Signing request" ++msgstr "Requête de signature" ++ ++#: NewX509#4 ++msgid "" ++"A certificate signing request can be signed, even if the private key of the " ++"request is not available. This is the intention of a CSR:\n" ++"Getting signed by a CA certificate, whoes certificate of course must be in " ++"the database\n" ++"Of course you need the private key of the CSR if you want to create a self-" ++"signed cert from it." ++msgstr "" ++"Un requête de signature de certificat peut être signée même si la clé privée " ++"de la requête n'est pas disponible. C'est l'intention\n" ++"d'une requête de signature: être signée par un certificat d'autorité (CA) " ++"qui lui bien-sûr, doit être dans la base de donnée.\n" ++"Par contre, la clé privée d'une requête est nécessaire pour créer un " ++"certificat auto-signé à partir de celle-ci." ++ ++#: NewX509#5 ++msgid "Show request" ++msgstr "Afficher la requête" ++ ++#: NewX509#6 ++msgid "Sign this Certificate signing &request" ++msgstr "Signer cette &requête" ++ ++#: NewX509#7 ++msgid "Copy extensions from the request" ++msgstr "Copier les extensions de la requête" ++ ++#: NewX509#8 ++msgid "Modify subject of the request" ++msgstr "Modifier le sujet de la requête" ++ ++#: NewX509#9 ++msgid "Signing" ++msgstr "Signer" ++ ++#: NewX509#10 ++msgid "Create a &self signed certificate with the serial" ++msgstr "Créer un certificat auto-&signé avec le numéro de série" ++ ++#: NewX509#11 ++msgid "If you leave this blank the serial 00 will be used" ++msgstr "Si ce champ est laissé vide, le numéro de série 00 sera utilisé" ++ ++#: NewX509#12 ++msgid "1" ++msgstr "1" ++ ++#: NewX509#13 ++msgid "Use &this Certificate for signing" ++msgstr "Utiliser &ce certificat pour signer" ++ ++#: NewX509#14 ++msgid "All certificates in your database that can create valid signatures" ++msgstr "" ++"Tous les certificats dans la base de données qui peuvent produire des " ++"signatures valables" ++ ++#: NewX509#15 ++msgid "" ++"This list contains all certificates with the CA-flag set to true and whoes " ++"private key is present in the key-database.\n" ++"If this list is disabled, you only can create a self-signed certificate." ++msgstr "" ++"Cette liste contient tous les certificats qui ont le drapeau CA levé et dont " ++"la clé privée est présente dans la base de données.\n" ++"Si cette liste est désactivée, seule la création d'un certificat auto-signé " ++"est possible." ++ ++#: NewX509#16 ++msgctxt "NewX509#16" ++msgid "Signature algorithm" ++msgstr "Algorithme de signature" ++ ++#: NewX509#17 ++msgid "Template for the new certificate" ++msgstr "Modèle pour le nouveau certificat" ++ ++#: NewX509#18 ++msgid "All available templates" ++msgstr "Tous les modèles disponibles" ++ ++#: NewX509#19 ++msgid "This list contains all templates from the toplevel template Tab" ++msgstr "Cette liste contient tous les modèles de l'onglet 'Modèles'" ++ ++#: NewX509#20 ++msgid "Apply extensions" ++msgstr "Appliquer les extensions" ++ ++#: NewX509#21 ++msgid "Apply subject" ++msgstr "Appliquer le sujet" ++ ++#: NewX509#22 ++msgid "Apply all" ++msgstr "Appliquer tout" ++ ++#: NewX509#23 ++msgctxt "NewX509#23" ++msgid "Subject" ++msgstr "Sujet" ++ ++#: NewX509#24 ++msgid "Organisation" ++msgstr "Organisation" ++ ++#: NewX509#25 ++msgid "" ++"This name is only used internally and does not appear in the resulting " ++"certificate" ++msgstr "" ++"Ce nom est seulement utilisé par xca et n'apparaît pas dans le certificat " ++"exporté" ++ ++#: NewX509#26 ++msgid "Must be exactly 2 letter of size (DE, UK)" ++msgstr "Doit contenir exactement deux lettres [FR, UK]" ++ ++#: NewX509#27 ++msgid "Country code" ++msgstr "Code du pays" ++ ++#: NewX509#28 ++msgid "State or Province" ++msgstr "Etat ou Province" ++ ++#: NewX509#29 ++msgid "Locality" ++msgstr "Ville" ++ ++#: NewX509#30 ++msgid "Organisational unit" ++msgstr "Unité organisationnlle" ++ ++#: NewX509#31 ++msgid "E-Mail address" ++msgstr "Adresse de courriel" ++ ++#: NewX509#32 ++msgctxt "NewX509#32" ++msgid "Internal name" ++msgstr "Nom interne" ++ ++#: NewX509#33 ++msgid "Common name" ++msgstr "Nom commun" ++ ++#: NewX509#34 ++msgctxt "NewX509#34" ++msgid "Add" ++msgstr "Ajouter" ++ ++#: NewX509#35 ++msgctxt "NewX509#35" ++msgid "Delete" ++msgstr "Enlever" ++ ++#: NewX509#36 ++msgctxt "NewX509#36" ++msgid "Private key" ++msgstr "Clé privée" ++ ++#: NewX509#37 ++msgid "This list only contains unused keys" ++msgstr "Cette liste ne contient que les clés inutilisées" ++ ++#: NewX509#38 ++msgid "Used keys too" ++msgstr "Inclure les clés utilisées" ++ ++#: NewX509#39 ++msgid "&Generate a new key" ++msgstr "&Générer une nouvelle clé" ++ ++#: NewX509#40 ++msgctxt "NewX509#40" ++msgid "Extensions" ++msgstr "Extensions" ++ ++#: NewX509#41 ++msgid "Basic constraints" ++msgstr "Contraintes basiques" ++ ++#: NewX509#42 ++msgctxt "NewX509#42" ++msgid "Type" ++msgstr "Type" ++ ++#: NewX509#43 ++msgid "If this will become a CA certificate or not" ++msgstr "Si un certificat d'autorité (CA) est en train d'être créé ou non" ++ ++#: NewX509#44 ++msgid "" ++"Set this to TRUE if you want to create a CA certificate that signs other " ++"certificates.\n" ++"This is always set to FALSE for client or server certificates. In most cases " ++"self-signed certificates are CA certificates.\n" ++"Self-signed non-CA certificates are unusual although they are possible." ++msgstr "" ++"Sélectionner \"VRAI\" si vous voulez créer un certificat d'autorité (CA) qui " ++"peut signer d'autres certificats.\n" ++"\"FAUX\" doit toujours être séléectionné pour des certificats de clients ou " ++"de serveurs. Dans la plupart des cas,\n" ++"les certificats auto-signés sont des certificats d'autorité: bien que " ++"possibles, les certificats auto-signés non-CA sont rares." ++ ++#: NewX509#45 ++msgid "Not defined" ++msgstr "Non défini" ++ ++#: NewX509#46 ++msgid "Certification Authority" ++msgstr "Autorité de Certification" ++ ++#: NewX509#47 ++msgid "End Entity" ++msgstr "Entité Finale" ++ ++#: NewX509#48 ++msgid "Path length" ++msgstr "Distance aux feuilles" ++ ++#: NewX509#49 ++msgid "How much CAs may be below this." ++msgstr "" ++"Combien de niveau de sous-CA peuvent apparaître jusqu'à une entité finale." ++ ++#: NewX509#50 ++msgid "" ++"If this is left empty the pathlen is not included in the certificate. " ++"Otherwise it distinguishes the count of chained CA certificates below this " ++"one.\n" ++"A pathlen of 0 means, that this certificate may not issue other sub-CA " ++"certificates. Although it can do it, all chain-checking algorithms in e.g. " ++"your browser or openssl will (should) fail." ++msgstr "" ++"Si ce champ est laissé vide, la distance aux peuilles n'est pas incluse dans " ++"le certificat. Sinon il limite le nombre de sous-CA en dessous de celui-ci.\n" ++"Une distance aux feuilles de 0 signifie que ce certificat ne peut pas signer " ++"de sous-CA. Bien qu'il puisse effectivement le faire, tous les algorithme de " ++"vérification de\n" ++"chaînage des certificats (p.ex: dans votre navigateur ou openssl) les " ++"refuseront." ++ ++#: NewX509#51 ++msgid "The basic constraints should always be critical" ++msgstr "Les contraintes basiques doivent toujours être critiques" ++ ++#: NewX509#52 ++msgid "Key identifier" ++msgstr "Identifiant de clé" ++ ++#: NewX509#53 ++msgid "Creates a hash of the key following the PKIX guidelines" ++msgstr "Crée un hachage de la clé conformément aux directives PKIX" ++ ++#: NewX509#54 ++msgid "Copy the Subject Key Identifier from the issuer" ++msgstr "Copie l'identifiant de clé du sujet du signataire" ++ ++#: NewX509#55 ++msgid "" ++"If this box is checked an attempt is made to copy the subject key identifier " ++"from the signing certificate.\n" ++"It also copies the issuer and serial number from the issuer certificate. " ++"Normally this will only be done if the keyid option fails." ++msgstr "" ++"Quand cette case est cochée, l'identifiant de clé est copiée du certificat " ++"signataire.\n" ++"L'emetteur et le numéro de série du certificat signataire sont aussi copiés: " ++"normalement cette copie n'est effectuée que si la copie de l'identifiant de " ++"clé échoue." ++ ++#: NewX509#56 ++msgctxt "NewX509#56" ++msgid "Validity" ++msgstr "Validité" ++ ++#: NewX509#57 ++msgctxt "NewX509#57" ++msgid "Not before" ++msgstr "Pas avant" ++ ++#: NewX509#58 ++msgctxt "NewX509#58" ++msgid "Not after" ++msgstr "Pas après" ++ ++#: NewX509#59 ++msgctxt "NewX509#59" ++msgid "Time range" ++msgstr "Intervalle de temps" ++ ++#: NewX509#60 ++msgctxt "NewX509#60" ++msgid "Days" ++msgstr "Jours" ++ ++#: NewX509#61 ++msgctxt "NewX509#61" ++msgid "Months" ++msgstr "Mois" ++ ++#: NewX509#62 ++msgctxt "NewX509#62" ++msgid "Years" ++msgstr "Années" ++ ++#: NewX509#63 ++msgctxt "NewX509#63" ++msgid "Apply" ++msgstr "Appliquer" ++ ++#: NewX509#64 ++msgid "Set the time to 00:00:00 and 23:59:59 respectively" ++msgstr "Définir les heures à 00:00:00 et 23:59:59 respectivement" ++ ++#: NewX509#65 ++msgctxt "NewX509#65" ++msgid "Midnight" ++msgstr "Minuit" ++ ++#: NewX509#66 ++msgctxt "NewX509#66" ++msgid "No well-defined expiration" ++msgstr "Date d'expiration mal définie" ++ ++#: NewX509#67 ++msgid "Authority Info Access" ++msgstr "Accès à l'information de l'autorité" ++ ++#: NewX509#68 ++msgid "CRL distribution point" ++msgstr "Point de distribution de la liste de révocation" ++ ++#: NewX509#69 ++msgid "issuer alternative name" ++msgstr "Nom alternatif du signataire" ++ ++#: NewX509#70 ++msgid "URI:" ++msgstr "URI:" ++ ++#: NewX509#71 ++msgid "" ++"This is a multi-valued extension that supports all the literal options of " ++"subject alternative name. Of the few software packages that currentlyi " ++"nterpret this extension most only interpret the URI option.\n" ++"Currently each option will set a new DistributionPoint with the fullName " ++"field set to the given value.\n" ++"Other fields like cRLissuer and reasons cannot currently be set or " ++"displayed: at this time no examples were available that used these fields.\n" ++"If you see this extension with when you attempt to print it " ++"out or it doesn't appear to display correctly then let steve know, including " ++"the certificate (mail steve at openssl dot org) .\n" ++"Examples:\n" ++"URI:http://www.myhost.com/myca.crl\n" ++"URI:http://www.my.com/my.crl, URI:http://www.oth.com/my.crl" ++msgstr "" ++"Cette extension est un agrégat de toutes les options littérales du nom " ++"alternatif du sujet. Parmi les quelques logiciels qui utilisent cette " ++"extension aujourd'hui, la plupart ne traitent uniquement l'option URI.\n" ++"Chaque option introduit un nouveau point de distribution qualifié par son " ++"nom complet.\n" ++"Pour l'instant, les autres champs comme 'CRLissuer' et 'reasons' ne peuvent " ++"pas être saisis ou affichés. Aucun exemple utilisant ces champs n'est " ++"disponible aujourd'hui.\n" ++"Si cette extension apparaît comme ou si le contenu ne semble " ++"pas affiché correctement, faites-le savoir a Steve (courriel: steve arobase " ++"openssl point org).\n" ++"Exemples:\n" ++"URI:http://www.monsite.com/monca.crl\n" ++"URI:http://www.moi.com/moi.crl, URI:http://www.lui.com/moi.crl" ++ ++#: NewX509#72 ++msgid "can be altered by the file \"aia.txt\"" ++msgstr "peut être altéré par le fichier \"aia.txt\"" ++ ++#: NewX509#73 ++msgid "Edit" ++msgstr "Modifier" ++ ++#: NewX509#74 ++msgid "DNS: IP: URI: email: RID:" ++msgstr "DNS: IP: URI: email: RID:" ++ ++#: NewX509#75 ++msgid "" ++"The authority information access extension gives details about how to access " ++"certain information relating to the CA. Its syntax is accessOID;location " ++"where 'location' has the same syntax as subject alternative name (except " ++"that email:copy is not supported). accessOID can be any valid OID but only " ++"certain values are meaningful for example OCSP and caIssuers. OCSP gives the " ++"location of an OCSP responder: this is used by Netscape PSM and other " ++"software.\n" ++"\n" ++"Example:\n" ++"\n" ++"OCSP;URI:http://ocsp.my.host/\n" ++"caIssuers;URI:http://my.ca/ca.html" ++msgstr "" ++"L'extension d'accès à l'information de l'autorité indique comment accéder à " ++"certaines informations concernant le certificat d'autorité. La syntaxe est " ++"accèsOID;emplacement où 'emplacement` à la même syntaxe que le nom " ++"alternatif du sujet (à part 'email:copy\" qui n'est pas supporté). N'importe " ++"quel OID valide peut être spécifié pour accèsOID, mais seules certaines " ++"valeurs ont un sens, par exemple OCSP et caIssuers. OCSP renseigne sur " ++"l'emplacement d'un répondeur OCSP; ceci est untilisé par les navigateurs Web " ++"et d'autres logiciels.\n" ++"\n" ++"Exemple:\n" ++"\n" ++"OCSP;URI:http://ocsp.mon.site/\n" ++"caIssuers;URI:http://moi.ca/ca.html" ++ ++#: NewX509#76 ++msgid "" ++"The subject alternative name extension allows various literal values to be " ++"used. These include \"email\" (an email address) , \"URI\" a uniform " ++"resource indicator, \"DNS\" (a DNS domain name) , RID (a registered ID: " ++"OBJECT IDENTIFIER) and IP (an IP address).\n" ++"Examples:\n" ++"email:my@other.address, IP: 1.1.1.1 , URI:http://my.url.here/\n" ++"email:my@other.address, RID:1.2.3.4, DNS: ns.server.tld" ++msgstr "" ++"Cette extension contient le nom alternatif du sujet et permet de regrouper " ++"plusieurs valeurs littérales. Celles-ci comprennent \"email\" (un adresse de " ++"courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS\" (un nom de " ++"domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP\" (une adresse " ++"IP).\n" ++"Exemples:\n" ++"email:mon@autre.adresse, IP: 1.1.1.1 , URI:http://mon.url.ici/\n" ++"email:mon@autre.adresse, RID:1.2.3.4, DNS: serveur.de.nom.tld" ++ ++#: NewX509#77 ++msgid "subject alternative name" ++msgstr "nom alternatif du sujet" ++ ++#: NewX509#78 ++msgid "" ++"The issuer alternative name extension allows various literal values to be " ++"used. These include \"email\" (an email address) , \"URI\" a uniform " ++"resource indicator, \"DNS\" (a DNS domain name), RID (a registered ID: " ++"OBJECT IDENTIFIER) and IP (an IP address).\n" ++"Examples:\n" ++"email:my@other.address, IP: 1.1.1.1 , URI:http://my.url.here/\n" ++"email:my@other.address, RID:1.2.3.4, DNS: ns.server.tld" ++msgstr "" ++"Cette extension contient le nom alternatif du signataire et permet de " ++"regrouper plusieurs valeurs littérales. Celles-ci comprennent \"email\" (un " ++"adresse de courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS" ++"\" (un nom de domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP" ++"\" (une adresse IP).\n" ++"Exemples:\n" ++"email:mon@autre.adresse, IP: 1.1.1.1 , URI:http://mon.url.ici/\n" ++"email:mon@autre.adresse, RID:1.2.3.4, DNS: serveur.de.nom.tld" ++ ++#: NewX509#79 ++msgid "Key usage" ++msgstr "Utilisation de la clé" ++ ++#: NewX509#80 ++msgid "Extended key usage" ++msgstr "Utilisation étendue de la clé" ++ ++#: NewX509#81 ++msgid "Netscape" ++msgstr "Netscape" ++ ++#: NewX509#82 ++msgid "CA Revocation URL" ++msgstr "URL de révocation du certificat CA" ++ ++#: NewX509#83 ++msgid "Revocation URL" ++msgstr "URL de révocation" ++ ++#: NewX509#84 ++msgid "SSL server name" ++msgstr "Nom du serveur SSL" ++ ++#: NewX509#85 ++msgid "Certificate renewal URL" ++msgstr "URL de renouvellement de certificat" ++ ++#: NewX509#86 ++msgid "Comment" ++msgstr "Commentaire" ++ ++#: NewX509#87 ++msgid "CA policy URL" ++msgstr "URL des conditions générales du CA" ++ ++#: NewX509#88 ++msgid "Base URL" ++msgstr "URL de base" ++ ++#: NewX509#89 ++msgid "If you know a more pretty one tell me" ++msgstr "Si vous en connaissez un plus joli, faites-le moi savoir" ++ ++#: NewX509#90 ++msgid "Advanced" ++msgstr "Avancé" ++ ++#: NewX509#91 ++msgctxt "NewX509#91" ++msgid "Validate" ++msgstr "Valider" ++ ++#: NewX509#92 ++msgid "Create a &self signed certificate with a MD5-hashed QA serial" ++msgstr "" ++"Créer un certificat auto-&signé avec un numéro de série QA basé sur MD5" ++ ++#: NewX509#93 ++msgid "Create Certificate signing request" ++msgstr "Créer une requête de signature de certificat" ++ ++#: NewX509#94 ++msgid "minimum size: %1" ++msgstr "taille minimale: %1" ++ ++#: NewX509#95 ++msgid "maximum size: %1" ++msgstr "taille maximale: %1" ++ ++#: NewX509#96 ++msgid "only a-z A-Z 0-9 '()+,-./:=?" ++msgstr "seulement a-z A-Z 0-9 '()+,-./:=?" ++ ++#: NewX509#97 ++msgid "only 7-bit clean characters" ++msgstr "seulement des caractères 7-bit ASCII imprimables" ++ ++#: NewX509#98 ++msgid "XCA template" ++msgstr "modèle XCA" ++ ++#: NewX509#99 ++msgid "Create x509 Certificate" ++msgstr "Créer un certificat x509" ++ ++#: NewX509#100 ++msgid "From PKCS#10 request" ++msgstr "A partir d'une requête en PKCS#10" ++ ++#: NewX509#101 ++msgid "Other Tabs" ++msgstr "Autres Onglets" ++ ++#: NewX509#102 ++msgid "Advanced Tab" ++msgstr "Onglet Avancé" ++ ++#: NewX509#103 ++msgid "Errors" ++msgstr "Erreurs" ++ ++#: NewX509#104 ++msgctxt "NewX509#104" ++msgid "Abort rollout" ++msgstr "Interrompre le déploiement" ++ ++#: NewX509#105 ++msgid "The following length restrictions of RFC3280 are violated:" ++msgstr "" ++"Pour être en conformité avec la RFC3280, les règles de restriction de " ++"longueur suivantes ne sont pas respectées:" ++ ++#: NewX509#106 ++msgid "Edit subject" ++msgstr "Modifier le sujet" ++ ++#: NewX509#107 ++msgctxt "NewX509#107" ++msgid "Continue rollout" ++msgstr "Continuer le déploiement" ++ ++#: NewX509#108 ++msgid "" ++"The verification of the Certificate request failed.\n" ++"The rollout should be aborted." ++msgstr "" ++"La vérification de la requête de signature à échoué.\n" ++"Le déploiement devrait être interrompu." ++ ++#: NewX509#109 ++msgid "Continue anyway" ++msgstr "Continuer quand-même" ++ ++#: NewX509#110 ++msgid "" ++"The internal name and the common name are empty.\n" ++"Please set at least the internal name." ++msgstr "" ++"Le nom interne et le nom commun sont vides.\n" ++"SVP saisir au moins le nom interne." ++ ++#: NewX509#111 ++msgid "Edit name" ++msgstr "Modifier le nom" ++ ++#: NewX509#112 ++msgid "There is no Key selected for signing." ++msgstr "Aucune clé n'est sélectionnée pour la signature." ++ ++#: NewX509#113 ++msgid "Select key" ++msgstr "Sélectionner la clé" ++ ++#: NewX509#114 ++msgid "" ++"The following distinguished name entries are empty:\n" ++"%1\n" ++"though you have declared them as mandatory in the options menu." ++msgstr "" ++"Les indications de nom distinctif suivantes sont vides:\n" ++"%1\n" ++"bien que vous les avez déclarées comme obligatoires dans le menu des options." ++ ++#: NewX509#115 ++msgctxt "NewX509#115" ++msgid "The key you selected for signing is not a private one." ++msgstr "La clé sélectionnée pour la signature n'est pas une clé privée." ++ ++#: NewX509#116 ++msgid "Select other signer" ++msgstr "Sélectionner un autre signataire" ++ ++#: NewX509#117 ++msgid "Select other key" ++msgstr "Sélectionner une autre clé" ++ ++#: NewX509#118 ++msgctxt "NewX509#118" ++msgid "" ++"The certificate will be earlier valid than the signer. This is probably not " ++"what you want." ++msgstr "" ++"Le certificat serait valide avant son signataire. Ce n'est probablement pas " ++"ce qui est désiré." ++ ++#: NewX509#119 ++msgid "Edit dates" ++msgstr "Modifier les limites de validité" ++ ++#: NewX509#120 ++msgctxt "NewX509#120" ++msgid "Adjust date and continue" ++msgstr "Ajuster la date et continuer" ++ ++#: NewX509#121 ++msgctxt "NewX509#121" ++msgid "" ++"The certificate will be longer valid than the signer. This is probably not " ++"what you want." ++msgstr "" ++"Le certificat serait valide plus longtemps que son signataire. Ce n'est " ++"probablement pas ce qui est désiré." ++ ++#: NewX509#122 ++msgid "" ++"The certificate will be out of date before it becomes valid. You most " ++"probably mixed up both dates." ++msgstr "" ++"Le certificat serait échu avant de devenir actif. Vous avez probablement " ++"interverti les deux dates." ++ ++#: NewX509#123 ++msgid "" ++"The certificate contains duplicated extensions. Check the validation on the " ++"advanced tab." ++msgstr "" ++"Le certificat contient des extensions dupliquées. Valider et vérifier sur " ++"l'onglet \"Avancé\"." ++ ++#: NewX509#124 ++msgid "Edit extensions" ++msgstr "Modifier les extensions" ++ ++#: NewX509#125 ++msgid "Configfile error on line %1\n" ++msgstr "Erreur dans le fichier de configuration à la ligne %1\n" ++ ++#: Options#1 ++msgid "XCA Options" ++msgstr "Options de XCA" ++ ++#: Options#2 ++msgid "Mandatory subject entries" ++msgstr "Inscriptions du sujet obligatoires" ++ ++#: Options#3 ++msgctxt "Options#3" ++msgid "Add" ++msgstr "Ajouter" ++ ++#: Options#4 ++msgctxt "Options#4" ++msgid "Delete" ++msgstr "Détruire" ++ ++#: Options#5 ++msgid "Default hash algorithm" ++msgstr "Algorithme de hachage par défaut" ++ ++#: Options#6 ++msgid "String types" ++msgstr "Types de chaînes" ++ ++#: Options#7 ++msgid "PKCS#11 provider" ++msgstr "Fournisseur PKCS#11" ++ ++#: Options#8 ++msgid "Remove" ++msgstr "Enlever" ++ ++#: Options#9 ++msgid "Printable string or UTF8 (default)" ++msgstr "Chaîne imprimable ou UTF8 (défaut)" ++ ++#: Options#10 ++msgid "PKIX recommendation in RFC2459" ++msgstr "La recommandation PKIX est dans la RFC2459" ++ ++#: Options#11 ++msgid "No BMP strings, only printable and T61" ++msgstr "Pas de chaîne BMP, seulement imprimable et T61" ++ ++#: Options#12 ++msgid "UTF8 strings only (RFC2459)" ++msgstr "Chaînes UTF8 uniquement (RFC2459)" ++ ++#: Options#13 ++msgid "All strings" ++msgstr "Toutes les chaînes" ++ ++#: Options#14 ++msgid "Load failed" ++msgstr "Le chargement a échoué" ++ ++#: PassRead#1 ++msgctxt "PassRead#1" ++msgid "Password" ++msgstr "Mot de passe" ++ ++#: PassRead#2 ++msgctxt "PassRead#2" ++msgid "" ++"The password is parsed as 2-digit hex code. It must have an equal number of " ++"digits (0-9 and a-f)" ++msgstr "" ++"Le mot de passe contient des codes hexadécimaux à deux chiffres. Il doit " ++"donc consiter en un nombre pair de chiffres (0-9 et a-f)" ++ ++#: PassRead#3 ++msgctxt "PassRead#3" ++msgid "Take as HEX string" ++msgstr "Comprendre comme chaîne hexadécimale" ++ ++#: PassWrite#1 ++msgctxt "PassWrite#1" ++msgid "Password" ++msgstr "Mot de passe" ++ ++#: PassWrite#2 ++msgctxt "PassWrite#2" ++msgid "" ++"The password is parsed as 2-digit hex code. It must have an equal number of " ++"digits (0-9 and a-f)" ++msgstr "" ++"Le mot de passe contient des codes hexadécimaux à deux chiffres. Il doit " ++"donc consiter en un nombre pair de chiffres (0-9 et a-f)" ++ ++#: PassWrite#3 ++msgctxt "PassWrite#3" ++msgid "Take as HEX string" ++msgstr "Comprendre comme chaîne hexadécimale" ++ ++#: QObject#1 ++msgid "Undefined" ++msgstr "Indéfini" ++ ++#: QObject#2 ++msgid "DB: Rename: '%1' already in use" ++msgstr "DB: Renommer: '%1' déjà en utilisation" ++ ++#: QObject#3 ++msgid "DB: Entry to rename not found: %1" ++msgstr "DB: l'inscription à renommer n'a pas été trouvée: '%1'" ++ ++#: QObject#4 ++msgid "DB: Write error %1 - %2" ++msgstr "DB: Erreur d'écriture %1 - %2" ++ ++#: QObject#5 ++msgid "Out of data" ++msgstr "A court de données" ++ ++#: QObject#6 ++msgid "Error finding endmarker of string" ++msgstr "Erreur: une marque de fin de chaîne n'a pas été trouvée" ++ ++#: QObject#7 ++msgid "Out of Memory at %1:%2" ++msgstr "A court de mémoire à %1:%2" ++ ++#: QObject#8 ++msgctxt "QObject#8" ++msgid "All files ( * )" ++msgstr "Tous les fichiers ( * )" ++ ++#: QObject#9 ++msgid "PKI Keys ( *.pem *.der *.key );;PKCS#8 Keys ( *.p8 *.pk8 );;" ++msgstr "Clés PKI ( *.pem *.der *.key );;Clés PKCS#8 ( *.p8 *.pk8 );;" ++ ++#: QObject#10 ++msgid "Import RSA key" ++msgstr "Importer une clé RSA" ++ ++#: QObject#11 ++msgid "PKCS#10 CSR ( *.pem *.der *.csr );;Netscape Request ( *.spkac *.spc );;" ++msgstr "" ++"Requête PKCS#10 ( *.pem *.der *.csr );;Requête Netscape ( *.spkac *.spc );;" ++ ++#: QObject#12 ++msgid "Import Request" ++msgstr "Importer une requête" ++ ++#: QObject#13 ++msgid "Certificates ( *.pem *.der *.crt *.cer );;" ++msgstr "Certificats ( *.pem *.der *.crt *.cer );;" ++ ++#: QObject#14 ++msgid "Import X.509 Certificate" ++msgstr "Importer un certificat X.509" ++ ++#: QObject#15 ++msgid "PKCS#7 data ( *.p7s *.p7m *.p7b );;" ++msgstr "Données PKCS#7 ( *.p7s *.p7m *.p7b );;" ++ ++#: QObject#16 ++msgid "Import PKCS#7 Certificates" ++msgstr "Importer un certificat PKCS#7" ++ ++#: QObject#17 ++msgid "PKCS#12 Certificates ( *.p12 *.pfx );;" ++msgstr "Certificats PKCS#12 ( *.p12 *.pfx );;" ++ ++#: QObject#18 ++msgid "Import PKCS#12 Private Certificate" ++msgstr "Importer un certificat privé PKCS#12" ++ ++#: QObject#19 ++msgid "XCA templates ( *.xca );;" ++msgstr "Modèles XCA ( *.xca );;" ++ ++#: QObject#20 ++msgid "Import XCA Templates" ++msgstr "Importer des modèles XCA" ++ ++#: QObject#21 ++msgid "Revocation lists ( *.pem *.der *.crl );;" ++msgstr "Listes de révocation ( *.pem *.der *.crl );;" ++ ++#: QObject#22 ++msgid "Import Certificate Revocation List" ++msgstr "Importer une liste de révocation de certificats" ++ ++#: QObject#23 ++msgid "XCA Databases ( *.xdb );;" ++msgstr "Bases de données XCA ( *.xdb );;" ++ ++#: QObject#24 ++msgid "Open XCA Database" ++msgstr "Ouvrir une Base de Données XCA" ++ ++#: QObject#25 ++msgid "PKCS#11 library ( *.dll );;" ++msgstr "Bibliothèque PKCS#11 ( *.dll );;" ++ ++#: QObject#26 ++msgid "PKCS#11 library ( *.dylib *.so );;" ++msgstr "Bibliothèque PKCS#11 ( *.dylib *.so );;" ++ ++#: QObject#27 ++msgid "PKCS#11 library ( *.so );;" ++msgstr "Bibliothèque PKCS#11 ( *.so );;" ++ ++#: QObject#28 ++msgid "Open PKCS#11 shared library" ++msgstr "Ouvrir une bibliothèque partagée PKCS#11" ++ ++#: QObject#29 ++msgid "PEM files ( *.pem );;" ++msgstr "Fichiers PEM ( *.pem );;" ++ ++#: QObject#30 ++msgid "Load PEM encoded file" ++msgstr "Charger un fichier encodé en PEM" ++ ++#: QObject#31 ++msgid "Please enter the SO PIN (PUK) of the token %1" ++msgstr "SVP saisir le PUK du jeton '%1'" ++ ++#: QObject#32 ++msgid "Please enter the PIN of the token %1" ++msgstr "SVP saisir le NIP du jeton '%1'" ++ ++#: QObject#33 ++msgid "No Security token found" ++msgstr "Aucun jeton de sécurité trouvé" ++ ++#: QObject#34 ++msgid "Select" ++msgstr "Sélectionner" ++ ++#: QObject#35 ++msgid "Please enter the new SO PIN (PUK) for the token: '%1'" ++msgstr "SVP saisir le nouveau PUK pour le jeton: '%1'" ++ ++#: QObject#36 ++msgid "Please enter the new PIN for the token: '%1'" ++msgstr "SVP saisir le nouveau NIP pour le jeton: '%1'" ++ ++#: QObject#37 ++msgid "Required PIN size: %1 - %2" ++msgstr "Taille du NIP requise: %1 - %2" ++ ++#: QObject#38 ++msgid "Failed to open PKCS11 library: %1" ++msgstr "L'ouverture de la bibliothèque PKCS#11 '%1' a échoué" ++ ++#: QObject#39 ++msgid "PKCS#11 function '%1' failed: %2" ++msgstr "La fonction PKCS#11 '%1' a échoué: %2" ++ ++#: QObject#40 ++msgid "" ++"PKCS#11 function '%1' failed: %2\n" ++"In library %3\n" ++"%4" ++msgstr "" ++"La fonction PKCS#11 '%1' a échoué: %2\n" ++"Dans la bibliothèque %3\n" ++"%4" ++ ++#: QObject#41 ++msgid "Please enter the password to decrypt the private key." ++msgstr "SVP saisir le mot de passe pour décrypter la clé privée" ++ ++#: QObject#42 ++msgid "Invalid" ++msgstr "Invalide" ++ ++#: QObject#43 ++msgid "%1 is shorter than %2 bytes: '%3'" ++msgstr "%1 est plus court que %2 octets: '%3'" ++ ++#: QObject#44 ++msgid "%1 is longer than %2 bytes: '%3'" ++msgstr "%1 est plus long que %2 octets: '%3'" ++ ++#: Revoke#1 ++msgid "Revokation details" ++msgstr "Détails de la révocation" ++ ++#: Revoke#2 ++msgid "Invalid since" ++msgstr "Non-valide depuis" ++ ++#: Revoke#3 ++msgid "Revokation reason" ++msgstr "Raison de la révocation" ++ ++#: SelectToken#1 ++msgid "Select Token" ++msgstr "Sélectionner un jeton" ++ ++#: SelectToken#2 ++msgctxt "SelectToken#2" ++msgid "Security token" ++msgstr "Jeton de sécurité" ++ ++#: SelectToken#3 ++msgid "Please select the security token" ++msgstr "SVP sélectionner le jeton de sécurité" ++ ++#: TrustState#1 ++msgid "Set trustment of the Certificate" ++msgstr "Ajuster le niveau de confiance du certificat" ++ ++#: TrustState#2 ++msgid "Trustment" ++msgstr "Niveau de confiance" ++ ++#: TrustState#3 ++msgid "&Never trust this certificate" ++msgstr "&Ne jamais se fier à ce certificat" ++ ++#: TrustState#4 ++msgid "Only &trust this certificate, if we trust the signer" ++msgstr "Ne &se fier à ce certificat qui si son signataire est de confiance" ++ ++#: TrustState#5 ++msgid "&Always trust this certificate" ++msgstr "&Toujours se fier à ce certificat" ++ ++#: Validity#1 ++msgid "yyyy-MM-dd hh:mm" ++msgstr "yyyy-MM-dd hh:mm" ++ ++#: db_base#1 ++msgctxt "db_base#1" ++msgid "Internal name" ++msgstr "Nom interne" ++ ++#: db_base#2 ++msgid "Reset" ++msgstr "Réinitialisation" ++ ++#: db_base#3 ++msgid "Subject entries" ++msgstr "Inscriptions du sujet" ++ ++#: db_base#4 ++msgid "Columns" ++msgstr "Colonnes" ++ ++#: db_crl#1 ++msgid "Signer" ++msgstr "Signataire" ++ ++#: db_crl#2 ++msgid "Internal name of the signer" ++msgstr "Nom interne du signataire" ++ ++#: db_crl#3 ++msgid "No. revoked" ++msgstr "Numéro révoqué" ++ ++#: db_crl#4 ++msgid "Number of revoked certificates" ++msgstr "Nombre de certificats révoqués" ++ ++#: db_crl#5 ++msgid "Last update" ++msgstr "Dernière mise-à-jour" ++ ++#: db_crl#6 ++msgid "Next update" ++msgstr "Prochaine mise-à-jour" ++ ++#: db_crl#7 ++msgid "CRL number" ++msgstr "Numéro de la liste de révocation" ++ ++#: db_crl#8 ++msgid "" ++"The revokation list already exists in the database as:\n" ++"'%1'\n" ++"and so it was not imported" ++msgstr "" ++"Cette liste de révocation figure déjà dans la base de données sous le nom:\n" ++"'%1'\n" ++"En conséquence, elle n'a pas été importée" ++ ++#: db_crl#9 ++msgid "CRL ( *.pem *.der *.crl )" ++msgstr "Listes de révocation ( *.pem *.der *.crl )" ++ ++#: db_crl#10 ++msgid "Revokation list export" ++msgstr "Exportation d'une liste de révocation" ++ ++#: db_crl#11 ++msgctxt "db_crl#11" ++msgid "Import" ++msgstr "Importer" ++ ++#: db_crl#12 ++msgctxt "db_crl#12" ++msgid "Rename" ++msgstr "Renommer" ++ ++#: db_crl#13 ++msgctxt "db_crl#13" ++msgid "Export" ++msgstr "Exporter" ++ ++#: db_crl#14 ++msgctxt "db_crl#14" ++msgid "Delete" ++msgstr "Détruire" ++ ++#: db_key#1 ++msgctxt "db_key#1" ++msgid "Type" ++msgstr "Type" ++ ++#: db_key#2 ++msgid "Size" ++msgstr "Taille" ++ ++#: db_key#3 ++msgid "Use" ++msgstr "Usage" ++ ++#: db_key#4 ++msgctxt "db_key#4" ++msgid "Password" ++msgstr "Mot de passe" ++ ++#: db_key#5 ++msgid "" ++"The key is already in the database as:\n" ++"'%1'\n" ++"and is not going to be imported" ++msgstr "" ++"Cette clé figure déjà dans la base de données sous le nom:\n" ++"'%1'\n" ++"En conséquence, elle ne va pas être importée" ++ ++#: db_key#6 ++msgid "" ++"The database already contains the public part of the imported key as\n" ++"'%1\n" ++"and will be completed by the new, private part of the key" ++msgstr "" ++"La base de donnée connait déjà la partie publique de la clé importée sous le " ++"nom\n" ++"'%1'\n" ++"En conséquence, cette dernière sera complétée par la partie privée de la clé " ++"importée" ++ ++#: db_key#7 ++msgid "Key size too small !" ++msgstr "Taille de clé trop petite !" ++ ++#: db_key#8 ++msgid "You are sure to create a key of the size: %1 ?" ++msgstr "Etes-vous sûr de couloir créer une clé de taille %1 ?" ++ ++#: db_key#9 ++msgid "" ++"Shall the original key '%1' be replaced by the key on the token?\n" ++"This will delete the key '%1' and make it unexportable" ++msgstr "" ++"La clé originale '%1' doit-elle être remplacée par la clé en provenance du " ++"jeton ?\n" ++"Cela détruirait la clé '%1' et la rendrait non-exportable." ++ ++#: db_key#10 ++msgctxt "db_key#10" ++msgid "New Key" ++msgstr "Nouvelle clé" ++ ++#: db_key#11 ++msgctxt "db_key#11" ++msgid "Import" ++msgstr "Importer" ++ ++#: db_key#12 ++msgctxt "db_key#12" ++msgid "Rename" ++msgstr "Renommer" ++ ++#: db_key#13 ++msgctxt "db_key#13" ++msgid "Show Details" ++msgstr "Afficher les Détails" ++ ++#: db_key#14 ++msgctxt "db_key#14" ++msgid "Delete" ++msgstr "Détruire" ++ ++#: db_key#15 ++msgctxt "db_key#15" ++msgid "Export" ++msgstr "Exporter" ++ ++#: db_key#16 ++msgid "Change password" ++msgstr "Changer le mot de passe" ++ ++#: db_key#17 ++msgid "Reset password" ++msgstr "Effacer le mot de passe" ++ ++#: db_key#18 ++msgid "Change PIN" ++msgstr "Changer le NIP" ++ ++#: db_key#19 ++msgid "Init PIN with SO PIN (PUK)" ++msgstr "Initialiser le NIP avec le PUK" ++ ++#: db_key#20 ++msgid "Change SO PIN (PUK)" ++msgstr "Changer le PUK" ++ ++#: db_key#21 ++msgid "Store on Security token" ++msgstr "Enregistrer dans le jeton de sécurité" ++ ++#: db_key#22 ++msgid "Tried to change password of a token" ++msgstr "Tentative de changement de mot de passe d'un jeton de sécurité" ++ ++#: db_key#23 ++msgid "Tried to change PIN of a key" ++msgstr "Tentative de changement de NIP d'une clé" ++ ++#: db_key#24 ++msgid "Tried to init PIN of a key" ++msgstr "Tentative d'initialisation du NIP d'une clé" ++ ++#: db_key#25 ++msgid "Tried to change SO PIN of a key" ++msgstr "Tentative de changement de PUK d'une clé" ++ ++#: db_temp#1 ++msgctxt "db_temp#1" ++msgid "Type" ++msgstr "Type" ++ ++#: db_temp#2 ++msgid "Bad template: %1" ++msgstr "Mauvais modèle: %1" ++ ++#: db_temp#3 ++msgid "Nothing" ++msgstr "Rien" ++ ++#: db_temp#4 ++msgid "Preset Template values" ++msgstr "Initaliser les valeurs du modèle" ++ ++#: db_temp#5 ++msgid "copy" ++msgstr "copier" ++ ++#: db_temp#6 ++msgid "Save template as" ++msgstr "Enregistrer le modèle sous" ++ ++#: db_temp#7 ++msgid "XCA templates ( *.xca);; All files ( * )" ++msgstr "Modèles XCA ( *.xca);; Tous les fichiers ( * )" ++ ++#: db_temp#8 ++msgid "New Template" ++msgstr "Nouveau modèle" ++ ++#: db_temp#9 ++msgctxt "db_temp#9" ++msgid "Import" ++msgstr "Importer" ++ ++#: db_temp#10 ++msgctxt "db_temp#10" ++msgid "Rename" ++msgstr "Renommer" ++ ++#: db_temp#11 ++msgctxt "db_temp#11" ++msgid "Export" ++msgstr "Exporter" ++ ++#: db_temp#12 ++msgid "Change" ++msgstr "Changer" ++ ++#: db_temp#13 ++msgctxt "db_temp#13" ++msgid "Delete" ++msgstr "Détruire" ++ ++#: db_temp#14 ++msgid "Duplicate" ++msgstr "Dupliquer" ++ ++#: db_temp#15 ++msgid "Create certificate" ++msgstr "Créer un certificat" ++ ++#: db_temp#16 ++msgid "Create request" ++msgstr "Créer une requête" ++ ++#: db_x509#1 ++msgid "CA" ++msgstr "CA" ++ ++#: db_x509#2 ++msgid "reflects the basic Constraints extension" ++msgstr "reflète l'extension des contraintes basiques" ++ ++#: db_x509#3 ++msgctxt "db_x509#3" ++msgid "Serial" ++msgstr "Numéro de série" ++ ++#: db_x509#4 ++msgid "md5 fingerprint" ++msgstr "Empreinte MD5" ++ ++#: db_x509#5 ++msgid "sha1 fingerprint" ++msgstr "Empreinte sha1" ++ ++#: db_x509#6 ++msgid "Start date" ++msgstr "Date de début" ++ ++#: db_x509#7 ++msgid "not Before" ++msgstr "pas Avant" ++ ++#: db_x509#8 ++msgid "Expiry date" ++msgstr "Date d'expiration" ++ ++#: db_x509#9 ++msgid "not After" ++msgstr "pas Après" ++ ++#: db_x509#10 ++msgid "Trust state" ++msgstr "État de confiance" ++ ++#: db_x509#11 ++msgctxt "db_x509#11" ++msgid "Revocation" ++msgstr "Révocation" ++ ++#: db_x509#12 ++msgctxt "db_x509#12" ++msgid "Plain View" ++msgstr "Vue à plat" ++ ++#: db_x509#13 ++msgid "Tree View" ++msgstr "Vue arborescente" ++ ++#: db_x509#14 ++msgid "" ++"The certificate already exists in the database as:\n" ++"'%1'\n" ++"and so it was not imported" ++msgstr "" ++"Ce certificat figure déjà dans la base de données sous le nom:\n" ++"'%1'\n" ++"En conséquence, il n'a pas été importé" ++ ++#: db_x509#15 ++msgid "Please enter the new hexadecimal secret number for the QA process." ++msgstr "SVP saisir le nouveau nombre secret hexadécimal pour le processus QA." ++ ++#: db_x509#16 ++msgid "The two secret numbers don't match." ++msgstr "Les deux nombres secrets ne sont pas les mêmes." ++ ++#: db_x509#17 ++msgid "The QA process has been terminated by the user." ++msgstr "Le processus QA a été arrêté par l'utilisateur." ++ ++#: db_x509#18 ++msgctxt "db_x509#18" ++msgid "The key you selected for signing is not a private one." ++msgstr "La clé sélectionnée pour la signature n'est pas une clé privée." ++ ++#: db_x509#19 ++msgid "Store the certificate to the key on the token '%1 (#%2)' ?" ++msgstr "Enregistrer le certificate avec la clé sur le jeton '%1 (#%2)' ?" ++ ++#: db_x509#20 ++msgid "New Certificate" ++msgstr "Nouveau Certificat" ++ ++#: db_x509#21 ++msgctxt "db_x509#21" ++msgid "Import" ++msgstr "Importer" ++ ++#: db_x509#22 ++msgid "Import PKCS#12" ++msgstr "Importer en PKCS#12" ++ ++#: db_x509#23 ++msgid "Import from PKCS#7" ++msgstr "Importer en PKCS#7" ++ ++#: db_x509#24 ++msgctxt "db_x509#24" ++msgid "Rename" ++msgstr "Renommer" ++ ++#: db_x509#25 ++msgctxt "db_x509#25" ++msgid "Show Details" ++msgstr "Afficher les Détails" ++ ++#: db_x509#26 ++msgctxt "db_x509#26" ++msgid "Extract public Key" ++msgstr "Extraire la clé publique" ++ ++#: db_x509#27 ++msgctxt "db_x509#27" ++msgid "Export" ++msgstr "Exporter" ++ ++#: db_x509#28 ++msgctxt "db_x509#28" ++msgid "File" ++msgstr "Fichier" ++ ++#: db_x509#29 ++msgid "Request" ++msgstr "Requête" ++ ++#: db_x509#30 ++msgctxt "db_x509#30" ++msgid "Security token" ++msgstr "Jeton de sécurité" ++ ++#: db_x509#31 ++msgid "Other token" ++msgstr "Autre jeton" ++ ++#: db_x509#32 ++msgctxt "db_x509#32" ++msgid "Template" ++msgstr "Modèle" ++ ++#: db_x509#33 ++msgctxt "db_x509#33" ++msgid "Delete" ++msgstr "Détruire" ++ ++#: db_x509#34 ++msgid "Delete from Security token" ++msgstr "Détruire sur le jeton de sécurité" ++ ++#: db_x509#35 ++msgid "Trust" ++msgstr "Niveau de confiance" ++ ++#: db_x509#36 ++msgid "Properties" ++msgstr "Propriétés" ++ ++#: db_x509#37 ++msgid "Generate CRL" ++msgstr "Générer la liste de révocation" ++ ++#: db_x509#38 ++msgctxt "db_x509#38" ++msgid "PKCS#7" ++msgstr "PKCS#7" ++ ++#: db_x509#39 ++msgctxt "db_x509#39" ++msgid "Sign" ++msgstr "Signer" ++ ++#: db_x509#40 ++msgid "Encrypt" ++msgstr "Encrypter" ++ ++#: db_x509#41 ++msgid "Renewal" ++msgstr "Renouvellement" ++ ++#: db_x509#42 ++msgid "Unrevoke" ++msgstr "Dé-révoquer" ++ ++#: db_x509#43 ++msgid "Revoke" ++msgstr "Révoquer" ++ ++#: db_x509#44 ++msgid "There was no key found for the Certificate: '%1'" ++msgstr "Aucune clé n'a été trouvée pour le Certificat. '%1'" ++ ++#: db_x509#45 ++msgid "Not possible for a token key: '%1'" ++msgstr "Impossible pour une clé d'un jeton de sécurité: '%1'" ++ ++#: db_x509#46 ++msgid "Not possible for the token-key Certificate '%1'" ++msgstr "Impossible pour le certificat d'une clé d'un jeton de sécurité: '%1'" ++ ++#: db_x509#47 ++msgid " days" ++msgstr " jours" ++ ++#: db_x509name#1 ++msgctxt "db_x509name#1" ++msgid "Subject" ++msgstr "Sujet" ++ ++#: db_x509name#2 ++msgid "Complete distinguished name" ++msgstr "Nom distinctif complet" ++ ++#: db_x509name#3 ++msgid "Subject hash" ++msgstr "Hachage du sujet" ++ ++#: db_x509name#4 ++msgid "Hash to lookup certs in directories" ++msgstr "Hachage de recherche dans un dossier" ++ ++#: db_x509req#1 ++msgctxt "db_x509req#1" ++msgid "Signed" ++msgstr "Signé" ++ ++#: db_x509req#2 ++msgid "whether the request is already signed or not" ++msgstr "si la requête a déjà été signée ou non" ++ ++#: db_x509req#3 ++msgid "Unstructured name" ++msgstr "Nom non-structuré" ++ ++#: db_x509req#4 ++msgid "Challange password" ++msgstr "Mot de passe opposable" ++ ++#: db_x509req#5 ++msgid "" ++"The certificate signing request already exists in the database as\n" ++"'%1'\n" ++"and thus was not stored" ++msgstr "" ++"Cette requête de signature figure déjà dans la base de données sous le nom\n" ++"'%1'\n" ++"En conséquence, elle n'a pas été chargée" ++ ++#: db_x509req#6 ++msgid "Certificate request ( *.pem *.der *.crl )" ++msgstr "Requête de signature de certificat ( *.pem *.der *.crl )" ++ ++#: db_x509req#7 ++msgid "Certificate request export" ++msgstr "Exporter la requête de signature" ++ ++#: db_x509req#8 ++msgid "New Request" ++msgstr "Nouvelle requête" ++ ++#: db_x509req#9 ++msgctxt "db_x509req#9" ++msgid "Import" ++msgstr "Importer" ++ ++#: db_x509req#10 ++msgctxt "db_x509req#10" ++msgid "Extract public Key" ++msgstr "Extraire la clé publique" ++ ++#: db_x509req#11 ++msgctxt "db_x509req#11" ++msgid "Rename" ++msgstr "Renommer" ++ ++#: db_x509req#12 ++msgctxt "db_x509req#12" ++msgid "Show Details" ++msgstr "Afficher les Détails" ++ ++#: db_x509req#13 ++msgctxt "db_x509req#13" ++msgid "Sign" ++msgstr "Signer" ++ ++#: db_x509req#14 ++msgctxt "db_x509req#14" ++msgid "Export" ++msgstr "Exporter" ++ ++#: db_x509req#15 ++msgctxt "db_x509req#15" ++msgid "File" ++msgstr "Fichier" ++ ++#: db_x509req#16 ++msgctxt "db_x509req#16" ++msgid "Template" ++msgstr "Modèle" ++ ++#: db_x509req#17 ++msgctxt "db_x509req#17" ++msgid "Delete" ++msgstr "Détruire" ++ ++#: db_x509super#1 ++msgid "Key name" ++msgstr "Nom de la clé" ++ ++#: db_x509super#2 ++msgid "Internal name of the key" ++msgstr "Nom interne de la clé" ++ ++#: db_x509super#3 ++msgid "The following extensions were not ported into the template" ++msgstr "Les extensions suivantes n'ont pas été enregistrées dans le modèle" ++ ++#: kvView#1 ++msgctxt "kvView#1" ++msgid "Type" ++msgstr "Type" ++ ++#: kvView#2 ++msgid "Content" ++msgstr "Contenu" ++ ++#: pass_info#1 ++msgctxt "pass_info#1" ++msgid "Password" ++msgstr "Mot de passe" ++ ++#: pass_info#2 ++msgctxt "pass_info#2" ++msgid "PIN" ++msgstr "NIP" ++ ++#: pki_base#1 ++msgctxt "pki_base#1" ++msgid "Error opening file: '%1': %2" ++msgstr "Erreur à l'ouverture du fichier '%1': %2" ++ ++#: pki_base#2 ++msgid "Error: " ++msgstr "Erreur: " ++ ++#: pki_base#3 ++msgid "Internal error: Unexpected message: %1 %2" ++msgstr "Erreur interne: message inattendu: %1 %2" ++ ++#: pki_crl#1 ++msgid "Successfully imported the revokation list '%1'" ++msgstr "La liste de révocation '%1' a été importée avec succès" ++ ++#: pki_crl#2 ++msgid "Delete the revokation list '%1'?" ++msgstr "Détruire la liste de révocation '%1' ?" ++ ++#: pki_crl#3 ++msgid "Successfully created the revokation list '%1'" ++msgstr "La liste de révocation '%1' a été créée avec succès" ++ ++#: pki_crl#4 ++msgid "Delete the %1 revokation lists: %2?" ++msgstr "Détruire les %1 listes de révocation: %2 ?" ++ ++#: pki_crl#5 ++msgid "" ++"Unable to load the revokation list in file %1. Tried PEM and DER formatted " ++"CRL." ++msgstr "" ++"Impossible de charger le liste de révocation du fichier %1. Les formats PEM " ++"et DER ont été essayés." ++ ++#: pki_crl#6 ++msgid "No issuer given" ++msgstr "Aucun signataire spécifié" ++ ++#: pki_crl#7 ++msgctxt "pki_crl#7" ++msgid "Wrong Size %1" ++msgstr "Taille fausse %1" ++ ++#: pki_crl#8 ++msgid "unknown" ++msgstr "inconnu" ++ ++#: pki_evp#1 ++msgid "Failed to decrypt the key (bad password) " ++msgstr "Le décryptage de la clé a échoué (mauvais mot de passe)." ++ ++#: pki_evp#2 ++msgid "" ++"Unable to load the private key in file %1. Tried PEM and DER private, public " ++"and PKCS#8 key types." ++msgstr "" ++"Impossible de charger la clé privée du fichier %1. Les formats PEM et DER " ++"ainsi que les types de clés privé, public et PKCS#8 ont été essayés." ++ ++#: pki_evp#3 ++msgid "Password input aborted" ++msgstr "Saisie du mot de passe abandonnée" ++ ++#: pki_evp#4 ++msgid "Please enter the database password for decrypting the key '%1'" ++msgstr "" ++"SVP saisir le mot de basse de la base de données pour décrypter la clé '%1'" ++ ++#: pki_evp#5 ++msgid "Please enter the password to protect the private key: '%1'" ++msgstr "SVP saisir le mot de pass pour protéger la clé privée: '%1'" ++ ++#: pki_evp#6 ++msgid "Please enter the database password for encrypting the key" ++msgstr "SVP saisir le mot de passe de la base de données pour encrypter la clé" ++ ++#: pki_evp#7 ++msgid "Please enter the password protecting the PKCS#8 key '%1'" ++msgstr "SVP saisir le mot de passe protégeant la clé en PKCS#8 '%1'" ++ ++#: pki_evp#8 ++msgid "Please enter the export password for the private key '%1'" ++msgstr "SVP saisir le mot de passe d'exportation pour la clé privée '%1'" ++ ++#: pki_key#1 ++msgid "Successfully imported the %1 public key '%2'" ++msgstr "Les %1 clés publiques '%2' ont été importées avec succès" ++ ++#: pki_key#2 ++msgid "Delete the %1 public key '%2'?" ++msgstr "Détruire les %1 clés publiques '%2' ?" ++ ++#: pki_key#3 ++msgid "Successfully imported the %1 private key '%2'" ++msgstr "Les %1 clés privées '%2' ont été importées avec succès" ++ ++#: pki_key#4 ++msgid "Delete the %1 private key '%2'?" ++msgstr "Détruire les %1 clés privées '%2' ?" ++ ++#: pki_key#5 ++msgid "Successfully created the %1 private key '%2'" ++msgstr "Les %1 clés privées '%2' ont été créées avec succès" ++ ++#: pki_key#6 ++msgctxt "pki_key#6" ++msgid "Delete the %1 keys: %2?" ++msgstr "Détruire les %1 clés: '%2' ?" ++ ++#: pki_key#7 ++msgid "public key" ++msgstr "clé publique" ++ ++#: pki_key#8 ++msgid "Common" ++msgstr "Commun" ++ ++#: pki_key#9 ++msgid "Private" ++msgstr "Privé" ++ ++#: pki_key#10 ++msgid "Bogus" ++msgstr "Erroné" ++ ++#: pki_key#11 ++msgctxt "pki_key#11" ++msgid "PIN" ++msgstr "NIP" ++ ++#: pki_key#12 ++msgid "No password" ++msgstr "Pas de mot de passe" ++ ++#: pki_multi#1 ++msgid "Seek failed" ++msgstr "Un \"seek\" a échoué" ++ ++#: pki_pkcs12#1 ++msgid "Please enter the password to decrypt the PKCS#12 file." ++msgstr "SVP saisir le mot de passe pour décrypter le fichier en PKCS#12." ++ ++#: pki_pkcs12#2 ++msgid "Unable to load the PKCS#12 (pfx) file %1." ++msgstr "Impossible de charger le fichier en PKCS#12 (pfx) %1." ++ ++#: pki_pkcs12#3 ++msgid "The supplied password was wrong (%1)" ++msgstr "Le mot de passe renseigné était faux (%1)" ++ ++#: pki_pkcs12#4 ++msgid "Please enter the password to encrypt the PKCS#12 file" ++msgstr "SVP saisir le mot de passe pour encrypter le fichier en PKCS#12" ++ ++#: pki_pkcs12#5 ++msgid "No key or no Cert and no pkcs12" ++msgstr "Pas de clé ou pas de certificat et pas en PKCS#12" ++ ++#: pki_pkcs7#1 ++msgid "Unable to load the PKCS#7 file %1. Tried PEM and DER format." ++msgstr "" ++"Impossible de charger le fichier en PKCS#7 %1. Les formats PEM et DER ont " ++"été essayés." ++ ++#: pki_scard#1 ++msgid "Successfully imported the token key '%1'" ++msgstr "La clé du jeton '%1' a été importée avec succès" ++ ++#: pki_scard#2 ++msgid "Delete the token key '%1'?" ++msgstr "Détruire la clé du jeton '%1' ?" ++ ++#: pki_scard#3 ++msgid "Successfully created the token key '%1'" ++msgstr "La clé du jeton '%1' a été créée avec succès" ++ ++#: pki_scard#4 ++msgctxt "pki_scard#4" ++msgid "Delete the %1 keys: %2?" ++msgstr "Détruire les %1 clés: '%2' ?" ++ ++#: pki_scard#5 ++msgid "Delete the private key '%1' from the token '%2 (#%3)' ?" ++msgstr "Détruire la clé privée '%1' sur le jeton '%2 (#%3)' ?" ++ ++#: pki_scard#6 ++msgid "only RSA keys can be stored on tokens" ++msgstr "Seules des clés RSA peuvent être enregistrées sur les jetons" ++ ++#: pki_scard#7 ++msgid "This Key is already on the token" ++msgstr "Cette clé est déjà sur le jeton" ++ ++#: pki_scard#8 ++msgid "PIN input aborted" ++msgstr "Saisie du NIP abandonnée" ++ ++#: pki_scard#9 ++msgid "Unable to find copied key on the token" ++msgstr "Impossible de trouver la clé copiée sur le jeton" ++ ++#: pki_scard#10 ++msgid "Please insert card: %1 %2 [%3] with Serial: %4" ++msgstr "SVP insérer la carte %1 %2 [%3] avec le numéro de série: %4" ++ ++#: pki_scard#11 ++msgid "Public Key missmatch. Please re-import card" ++msgstr "La clé publique ne correspond pas. Veuillez re-importer la carte" ++ ++#: pki_scard#12 ++msgid "Unable to find generated key on card" ++msgstr "Impossible de trouver la clé générée sur la carte" ++ ++#: pki_scard#13 ++msgctxt "pki_scard#13" ++msgid "Wrong Size %1" ++msgstr "Taille fausse %1" ++ ++#: pki_scard#14 ++msgid "Token %1" ++msgstr "Jeton %1" ++ ++#: pki_scard#15 ++msgid "Failed to find the key on the token" ++msgstr "Impossible de trouver la clé sur le jeton" ++ ++#: pki_scard#16 ++msgid "Invalid Pin for the token" ++msgstr "NIP invalide pour le jeton" ++ ++#: pki_temp#1 ++msgid "Successfully imported the XCA template '%1'" ++msgstr "Le modèle XCA '%1' a été importé avec succès" ++ ++#: pki_temp#2 ++msgid "Delete the XCA template '%1'?" ++msgstr "Détruire le modèle XCA '%1' ?" ++ ++#: pki_temp#3 ++msgid "Successfully created the XCA template '%1'" ++msgstr "Le modèle XCA '%1' a été créé avec succès" ++ ++#: pki_temp#4 ++msgid "Delete the %1 XCA templates: %2?" ++msgstr "Détruire les %1 modèles XCA: %2 ?" ++ ++#: pki_temp#5 ++msgctxt "pki_temp#5" ++msgid "Wrong Size %1" ++msgstr "Taille fausse %1" ++ ++#: pki_temp#6 ++msgid "Template file content error (too small): %1" ++msgstr "erreur de contenu du fichier de modèle (trop petit): %1" ++ ++#: pki_temp#7 ++msgid "Template file content error (bad size): %1 " ++msgstr "erreur de contenu du fichier de modèle (mauvaise taille): %1" ++ ++#: pki_temp#8 ++msgid "Template file content error (bad length) :%1" ++msgstr "erreur de contenu du fichier de modèle (mauvaise longueur): %1" ++ ++#: pki_x509#1 ++msgid "Successfully imported the certificate '%1'" ++msgstr "Le certificat '%1' a été importée avec succès" ++ ++#: pki_x509#2 ++msgid "Delete the certificate '%1'?" ++msgstr "Détruire le certificat '%1' ?" ++ ++#: pki_x509#3 ++msgid "Successfully created the certificate '%1'" ++msgstr "Le certificat '%1' a été créé avec succès" ++ ++#: pki_x509#4 ++msgid "Delete the %1 certificates: %2?" ++msgstr "Détruire les %1 certificats: '%2' ?" ++ ++#: pki_x509#5 ++msgid "" ++"Unable to load the certificate in file %1. Tried PEM and DER certificate." ++msgstr "" ++"Impossible de charge le certificat du fichier %1. Les formats PEM et DER ont " ++"été essayés." ++ ++#: pki_x509#6 ++msgid "This certificate is already on the security token" ++msgstr "Ce certificat est déjà dans le jeton de sécurité" ++ ++#: pki_x509#7 ++msgid "Delete the certificate '%1' from the token '%2 (#%3)'?" ++msgstr "Détruire le certificat '%1' sur le jeton '%2 (#%3)' ?" ++ ++#: pki_x509#8 ++msgid "There is no key for signing !" ++msgstr "Il n'y a pas de clé pour signer !" ++ ++#: pki_x509#9 ++msgctxt "pki_x509#9" ++msgid "Wrong Size %1" ++msgstr "Taille fausse %1" ++ ++#: pki_x509#10 ++msgctxt "pki_x509#10" ++msgid "Not trusted" ++msgstr "Pas sûr" ++ ++#: pki_x509#11 ++msgid "Trust inherited" ++msgstr "Confiance héritée" ++ ++#: pki_x509#12 ++msgid "Always Trusted" ++msgstr "Sûr" ++ ++#: pki_x509#13 ++msgid "CRL expires: %1" ++msgstr "La liste de révocation expire le %1" ++ ++#: pki_x509#14 ++msgid "No" ++msgstr "Non" ++ ++#: pki_x509#15 ++msgid "Yes" ++msgstr "Oui" ++ ++#: pki_x509req#1 ++msgid "Signing key not valid (public key)" ++msgstr "La clé de signature n'est pas valide (c'est une clé publique)" ++ ++#: pki_x509req#2 ++msgid "Successfully imported the %1 certificate request '%2'" ++msgstr "Les %1 requêtes de signature '%2' ont été importées avec succès" ++ ++#: pki_x509req#3 ++msgid "Delete the %1 certificate request '%2'?" ++msgstr "Détruire les %1 requêtes de signature '%2' ?" ++ ++#: pki_x509req#4 ++msgid "Successfully created the %1 certificate request '%2'" ++msgstr "Les %1 requêtes de signature '%2' ont été créées avec succès" ++ ++#: pki_x509req#5 ++msgid "Delete the %1 certificate requests: %2?" ++msgstr "Détruire les %1 requêtes de signature '%2' ?" ++ ++#: pki_x509req#6 ++msgid "" ++"Unable to load the certificate request in file %1. Tried PEM, DER and SPKAC " ++"format." ++msgstr "" ++"Impossible de charger la requête de signature du fichier %1. Les formats " ++"PEM, DER et SPKAC ont été essayés." ++ ++#: pki_x509req#7 ++msgctxt "pki_x509req#7" ++msgid "Signed" ++msgstr "Signé" ++ ++#: pki_x509req#8 ++msgid "Unhandled" ++msgstr "Non-géré" ++ ++#: pki_x509req#9 ++msgctxt "pki_x509req#9" ++msgid "Wrong Size %1" ++msgstr "Taille fausse %1" ++ ++#: v3ext#1 ++msgctxt "v3ext#1" ++msgid "Add" ++msgstr "Ajouter" ++ ++#: v3ext#2 ++msgctxt "v3ext#2" ++msgid "Delete" ++msgstr "Détruire" ++ ++#: v3ext#3 ++msgctxt "v3ext#3" ++msgid "Apply" ++msgstr "Appliquer" ++ ++#: v3ext#4 ++msgctxt "v3ext#4" ++msgid "Validate" ++msgstr "Valider" ++ ++#: v3ext#5 ++msgctxt "v3ext#5" ++msgid "Cancel" ++msgstr "Abandonner" ++ ++#: v3ext#6 ++msgid "An email address or 'copy'" ++msgstr "Une adresse de courriel ou 'copy'" ++ ++#: v3ext#7 ++msgid "An email address" ++msgstr "Une adresse de courriel" ++ ++#: v3ext#8 ++msgid "a registered ID: OBJECT IDENTIFIER" ++msgstr "un IDentifiant enregistré: IDENTIFICATEUR.OBJET" ++ ++#: v3ext#9 ++msgid "a uniform resource indicator" ++msgstr "un indicateur uniforme de ressource" ++ ++#: v3ext#10 ++msgid "a DNS domain name" ++msgstr "u nom de domaine DNS" ++ ++#: v3ext#11 ++msgid "an IP address" ++msgstr "une adresse IP" ++ ++#: v3ext#12 ++msgid "Syntax: ;TYPE:text like '1.2.3.4:UTF8:name'" ++msgstr "Syntaxe: ;TYPE:texte comme '1.2.3.4:UTF8:nom'" ++ ++#: v3ext#13 ++msgid "No editing. Only 'copy' allowed here" ++msgstr "Pas de modification possible. Seul 'copy' est permis ici" ++ ++#: v3ext#14 ++msgid "" ++"Validation failed:\n" ++"'%1'\n" ++"%2" ++msgstr "" ++"La validation a échoué:\n" ++"'%1'\n" ++"%2" ++ ++#: v3ext#15 ++msgid "" ++"Validation successfull:\n" ++"'%1'" ++msgstr "" ++"La validation a été effectuée avec succès:\n" ++"'%1'" ++ ++#: void#1 ++msgctxt "void#1" ++msgid "There was no key found for the Certificate: " ++msgstr "Aucune clé n'a été trouvée pour le Certificat: " ++ ++#: void#2 ++msgctxt "void#2" ++msgid "Import Certificate signing request" ++msgstr "Importer une requête de signature" +diff -Naur xca-0.9.0.orig/lang/Makefile xca-0.9.0.new/lang/Makefile +--- xca-0.9.0.orig/lang/Makefile 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/lang/Makefile 2011-02-25 16:42:38.063627556 +0100 +@@ -3,7 +3,7 @@ + TOPDIR=.. + endif + +-PO_LANGUAGES=es ++PO_LANGUAGES=es fr + LANGUAGES=de ru $(PO_LANGUAGES) + QM_XCA=$(patsubst %, xca_%.qm, $(LANGUAGES)) + QM_QT=$(patsubst %, qt_%.qm, $(LANGUAGES)) +diff -Naur xca-0.9.0.orig/misc/xca.desktop xca-0.9.0.new/misc/xca.desktop +--- xca-0.9.0.orig/misc/xca.desktop 2011-02-24 16:58:29.000000000 +0100 ++++ xca-0.9.0.new/misc/xca.desktop 2011-02-25 17:10:17.513801650 +0100 +@@ -5,6 +5,7 @@ + Comment=A graphical user interface for handling and issuing X.509 compliant Certificates + Comment[de]=Eine graphische Oberfläche zur Erstellung von X.509 konformen Zertifikaten + Comment[fi]=Graafinen X.509-varmenteiden hallintatyökalu ++Comment[fr]=Création et gestion de certificats conformes à la norme X.509 + Exec=xca + Icon=xca-32x32.xpm + Terminal=false diff --git a/xca-0.9.0-locale.patch b/xca-0.9.0-locale.patch new file mode 100644 index 0000000..3685b75 --- /dev/null +++ b/xca-0.9.0-locale.patch @@ -0,0 +1,20 @@ +diff -Naur xca-0.9.0.orig/lib/main.cpp xca-0.9.0.new/lib/main.cpp +--- xca-0.9.0.orig/lib/main.cpp 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/lib/main.cpp 2011-02-28 13:22:24.083587071 +0100 +@@ -40,10 +40,15 @@ + locale = QLocale::system().name(); + + dirs << getPrefix() ++#ifdef XCA_DEFAULT_QT_TRANSLATE ++ << XCA_DEFAULT_QT_TRANSLATE ++#endif ++#ifndef WIN32 + << "/usr/local/share/qt4/translations/" + << "/usr/share/qt4/translations/" + << "/usr/share/qt/translations/" +- << "."; ++#endif ++ ; + + foreach(QString dir, dirs) { + if (qtTr.load(QString("qt_%1").arg(locale), dir)) { diff --git a/xca-0.9.0-noec.patch b/xca-0.9.0-noec.patch new file mode 100644 index 0000000..bda0cc3 --- /dev/null +++ b/xca-0.9.0-noec.patch @@ -0,0 +1,303 @@ +diff -Naur xca-0.9.0.orig/configure xca-0.9.0.new/configure +--- xca-0.9.0.orig/configure 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/configure 2011-02-28 12:30:48.060564861 +0100 +@@ -140,14 +140,12 @@ + cat >conftest.c < + #include +-//#include ++#include + #include + + int main(){ + printf("\nThe Versions of the used libraries are:\n\t%s 0x%lxL\n\tQT: %s\n", +-// "\tOpenSC: %s\n", + OPENSSL_VERSION_TEXT, OPENSSL_VERSION_NUMBER, QT_VERSION_STR +-// , sc_get_version() + ); + + if (QT_VERSION < 0x040300) { +@@ -158,6 +156,12 @@ + printf("You need OpenSSL >= 0.9.8 or higher\n"); + return 1; + } ++ ++#ifdef OPENSSL_NO_EC ++ printf("\n### This OpenSSL installation has no EC cryptography support\n"); ++#endif ++ ++ puts("\n"); + return 0; + } + EOF +diff -Naur xca-0.9.0.orig/lib/pki_evp.cpp xca-0.9.0.new/lib/pki_evp.cpp +--- xca-0.9.0.orig/lib/pki_evp.cpp 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/lib/pki_evp.cpp 2011-02-28 12:25:18.768851651 +0100 +@@ -27,9 +27,11 @@ + + QPixmap *pki_evp::icon[2]= { NULL, NULL }; + ++#ifndef OPENSSL_NO_EC + EC_builtin_curve *pki_evp::curves = NULL; + size_t pki_evp::num_curves = 0; + unsigned char *pki_evp::curve_flags = NULL; ++#endif + + void pki_evp::erasePasswd() + { +@@ -101,7 +103,9 @@ + { + RSA *rsakey; + DSA *dsakey; ++#ifndef OPENSSL_NO_EC + EC_KEY *eckey; ++#endif + + progress->setMinimum(0); + progress->setMaximum(100); +@@ -122,6 +126,7 @@ + if (dsakey) + EVP_PKEY_assign_DSA(key, dsakey); + break; ++#ifndef OPENSSL_NO_EC + case EVP_PKEY_EC: + EC_GROUP *group = EC_GROUP_new_by_curve_name(curve_nid); + if (!group) +@@ -142,6 +147,7 @@ + EC_KEY_free(eckey); + EC_GROUP_free(group); + break; ++#endif + } + pki_openssl_error(); + encryptKey(); +@@ -180,8 +186,10 @@ + return key->pkey.rsa->d ? true: false; + case EVP_PKEY_DSA: + return key->pkey.dsa->priv_key ? true: false; ++#ifndef OPENSSL_NO_EC + case EVP_PKEY_EC: + return EC_KEY_get0_private_key(key->pkey.ec) ? true: false; ++#endif + } + return false; + } +@@ -226,6 +234,7 @@ + openssl_error(name); + } + ++#ifndef OPENSSL_NO_EC + static void search_ec_oid(EC_KEY *ec) + { + const EC_GROUP *ec_group = EC_KEY_get0_group(ec); +@@ -250,6 +259,7 @@ + } + } + } ++#endif + + void pki_evp::fload(const QString fname) + { +@@ -311,8 +321,10 @@ + throw errorEx(tr("Unable to load the private key in file %1. Tried PEM and DER private, public and PKCS#8 key types.").arg(fname)); + } + if (pkey){ ++#ifndef OPENSSL_NO_EC + if (pkey->type == EVP_PKEY_EC) + search_ec_oid(pkey->pkey.ec); ++#endif + if (key) + EVP_PKEY_free(key); + key = pkey; +@@ -659,7 +671,9 @@ + switch (key->type) { + case EVP_PKEY_RSA: md = EVP_sha1(); break; + case EVP_PKEY_DSA: md = EVP_dss1(); break; ++#ifndef OPENSSL_NO_EC + case EVP_PKEY_EC: md = EVP_ecdsa(); break; ++#endif + default: md = NULL; break; + } + return md; +diff -Naur xca-0.9.0.orig/lib/pki_evp.h xca-0.9.0.new/lib/pki_evp.h +--- xca-0.9.0.orig/lib/pki_evp.h 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/lib/pki_evp.h 2011-02-28 12:25:18.769851580 +0100 +@@ -37,9 +37,11 @@ + static void setOldPasswd(const char *pass); + static QString md5passwd(const char *pass); + static QString sha512passwd(QString pass, QString salt); ++#ifndef OPENSSL_NO_EC + static EC_builtin_curve *curves; + static size_t num_curves; + static unsigned char *curve_flags; ++#endif + + void generate(int bits, int type, QProgressBar *progress); + void generate(int bits, int type, QProgressBar *progress, +diff -Naur xca-0.9.0.orig/lib/pki_key.cpp xca-0.9.0.new/lib/pki_key.cpp +--- xca-0.9.0.orig/lib/pki_key.cpp 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/lib/pki_key.cpp 2011-02-28 12:25:18.769851580 +0100 +@@ -210,6 +210,7 @@ + return QString(); + } + ++#ifndef OPENSSL_NO_EC + int pki_key::ecParamNid() + { + if (key->type != EVP_PKEY_EC) +@@ -232,6 +233,7 @@ + } + return pub; + } ++#endif + + bool pki_key::compare(pki_base *ref) + { +diff -Naur xca-0.9.0.orig/lib/pki_scard.cpp xca-0.9.0.new/lib/pki_scard.cpp +--- xca-0.9.0.orig/lib/pki_scard.cpp 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/lib/pki_scard.cpp 2011-02-28 12:36:50.761408182 +0100 +@@ -113,6 +113,7 @@ + EVP_PKEY_assign_DSA(pkey, dsa); + break; + } ++#ifndef OPENSSL_NO_EC + case CKK_EC: { + EC_KEY *ec = EC_KEY_new(); + +@@ -137,6 +138,7 @@ + EVP_PKEY_assign_EC_KEY(pkey, ec); + break; + } ++#endif + default: + throw errorEx(QString("Unsupported CKA_KEY_TYPE: %1\n").arg(keytype)); + } +@@ -368,7 +370,9 @@ + switch (mech_list[i]) { + case CKM_MD5_RSA_PKCS: nids << NID_md5; break; + case CKM_DSA_SHA1: ++#ifndef OPENSSL_NO_EC + case CKM_ECDSA_SHA1: ++#endif + case CKM_SHA1_RSA_PKCS: nids << NID_sha1; break; + case CKM_SHA256_RSA_PKCS: nids << NID_sha256; break; + case CKM_SHA384_RSA_PKCS: nids << NID_sha384; break; +@@ -389,8 +393,10 @@ + return EVP_sha1(); + if (mech_list.contains(CKM_DSA_SHA1)) + return EVP_dss1(); ++#ifndef OPENSSL_NO_EC + if (mech_list.contains(CKM_ECDSA_SHA1)) + return EVP_ecdsa(); ++#endif + if (mech_list.contains(CKM_SHA512_RSA_PKCS)) + return EVP_sha512(); + if (mech_list.contains(CKM_SHA384_RSA_PKCS)) +diff -Naur xca-0.9.0.orig/widgets/hashBox.cpp xca-0.9.0.new/widgets/hashBox.cpp +--- xca-0.9.0.orig/widgets/hashBox.cpp 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/widgets/hashBox.cpp 2011-02-28 12:25:18.769851580 +0100 +@@ -40,8 +40,10 @@ + switch(key_type) { + case EVP_PKEY_DSA: + return EVP_dss1(); ++#ifndef OPENSSL_NO_EC + case EVP_PKEY_EC: + return EVP_ecdsa(); ++#endif + default: + QString hash = currentText(); + for (unsigned i=0; isetReadOnly(true); + } + ++#ifndef OPENSSL_NO_EC + static QString CurveComment(int nid) + { + for (size_t i=0; isetText(key->subprime()); + keyModulus->setText(key->pubkey()); + break; ++#ifndef OPENSSL_NO_EC + case EVP_PKEY_EC: + nid = key->ecParamNid(); + tlModulus->setText(tr("Public key")); +@@ -83,6 +86,7 @@ + keyPubEx->setToolTip(CurveComment(nid)); + keyModulus->setText(key->ecPubKey()); + break; ++#endif + default: + tlHeader->setText(tr("Unknown key")); + } +diff -Naur xca-0.9.0.orig/widgets/MainWindow.cpp xca-0.9.0.new/widgets/MainWindow.cpp +--- xca-0.9.0.orig/widgets/MainWindow.cpp 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/widgets/MainWindow.cpp 2011-02-28 12:39:47.453229550 +0100 +@@ -99,6 +99,7 @@ + NID_secp521r1 + }; + ++#ifndef OPENSSL_NO_EC + static void init_curves() + { + pki_evp::num_curves = EC_get_builtin_curves(NULL, 0); +@@ -130,6 +131,7 @@ + } + } + } ++#endif + + void MainWindow::enableTokenMenu(bool enable) + { +@@ -185,7 +187,9 @@ + init_images(); + homedir = getHomeDir(); + ++#ifndef OPENSSL_NO_EC + init_curves(); ++#endif + + #ifdef MDEBUG + CRYPTO_malloc_debug_init(); +diff -Naur xca-0.9.0.orig/widgets/NewKey.cpp xca-0.9.0.new/widgets/NewKey.cpp +--- xca-0.9.0.orig/widgets/NewKey.cpp 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/widgets/NewKey.cpp 2011-02-28 12:25:18.770851497 +0100 +@@ -24,7 +24,9 @@ + static const struct typelist typeList[] = { + { "RSA", EVP_PKEY_RSA }, + { "DSA", EVP_PKEY_DSA }, ++#ifndef OPENSSL_NO_EC + { "EC", EVP_PKEY_EC }, ++#endif + }; + + class keyListItem +@@ -98,6 +100,7 @@ + keytypes << gk; + } + ++#ifndef OPENSSL_NO_EC + for (i = 0; iaddItems(curve_x962); + curveBox->addItems(curve_other); ++#endif ++ + keyLength->setCurrentIndex(0); + keyDesc->setFocus(); + if (pkcs11::loaded()) try { diff --git a/xca.spec b/xca.spec index cd9279f..db1a85b 100644 --- a/xca.spec +++ b/xca.spec @@ -1,140 +1,159 @@ %{!?release_func:%global release_func() %1%{?dist}} -%{!?apply:%global apply(p:n:b:) %patch%%{-n:%%{-n*}} %%{-p:-p %%{-p*}} %%{-b:-b %%{-b*}} \ -%nil} Summary: Graphical X.509 certificate management tool Name: xca -Version: 0.8.1 -Release: %release_func 1401 +Version: 0.9.0 +Release: %release_func 1 License: BSD Group: Applications/Productivity URL: http://www.hohnstaedt.de/xca.html -Source0: http://download.sourceforge.net/sourceforge/xca/%name-%version.tar.gz +Source0: http://downloads.sourceforge.net/sourceforge/xca/%{name}-%{version}.tar.gz Source1: README.update -Source4: xca.xml -Patch0: xca-0.7.0-locale.patch -Patch2: xca-0.6.4-includes.patch -Patch3: xca-0.6.4-openssl10.patch -Patch4: xca-0.8.0-noec.patch -BuildRoot: %_tmppath/%name-%version-%release-buildroot +Patch1: xca-0.9.0-locale.patch +Patch2: xca-0.9.0-noec.patch +Patch3: xca-0.9.0-french.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: qt4-devel openssl-devel -BuildRequires: db4-devel BuildRequires: xdg-utils BuildRequires: ImageMagick BuildRequires: linuxdoc-tools BuildRequires: libtool-ltdl-devel +BuildRequires: translate-toolkit Requires: hicolor-icon-theme Requires(posttrans): shared-mime-info Requires(postun): shared-mime-info %description -The Program uses a Berkeley db for storage and supports RSA keys. -Certificate signing requests (PKCS#10) and Certificates (X509v3), the -signing of requests, and the creation of selfsigned certificates is -supported. Both can use templates for simplicity. The PKI structures -can be imported and exported in several formats like PKCS#7, PKCS#12, -PEM, DER, PKCS#8. + X Certificate and Key management is a graphic interface for managing +asymmetric keys like RSA or DSA, certificates and revocation lists. It is +intended as a small CA for creation and signing certificates. It uses the +OpenSSL library for the cryptographic operations. + Certificate signing requests (PKCS#10), certificates (X509v3), the signing +of requests, the creation of self-signed certificates, certificate revocation +lists and SmartCards are supported. For an easy company-wide use, customizable +templates can be used for certificate and request generation. The PKI structures +can be imported and exported in several formats like PKCS#7, PKCS#12, PEM, +DER, PKCS#8. All cryptographic data are stored in a byte order agnostic file +format, portable across operating systems. %prep %setup -q -%apply -n0 -p1 -%apply -n2 -p1 -%apply -n3 -p1 -%apply -n4 -p1 +%patch1 -p 1 -b .locale +%patch2 -p 1 -b .noec +%patch3 -p 1 -b .french mkdir -p _tmp_root/usr -ln -s /usr/%_lib _tmp_root/usr/lib -ln -s /%_lib _tmp_root/lib -ln -s %_includedir/Qt _tmp_root/include +ln -s "/usr/%{_lib}" _tmp_root/usr/lib +ln -s "/%{_lib}" _tmp_root/lib +ln -s "%{_includedir}/Qt" _tmp_root/include -install -p -m644 %SOURCE1 '.' +install -p -m 644 "%{SOURCE1}" ./ -sed -i -e 's!xca\.xpm!fedora-xca!g;s!^Exec=.*!\0 %f!' misc/xca.desktop +sed -i -e 's!^Exec=.*!\0 %F!' misc/xca.desktop %build -#test -n "$QTDIR" || . %_sysconfdir/profile.d/qt.sh -export QTDIR=%_libdir/qt4 -CC='%__cxx' LD='%__ld' CFLAGS="$RPM_OPT_FLAGS -DDISABLE_EC -DXCA_DEFAULT_TRANSLATE=\\\"%_datadir/qt4/translations\\\"" \ -STRIP=: prefix=%_prefix LIBS="-Wl,-as-needed `pkg-config --libs QtGui`" \ -./configure `pwd`/_tmp_root{,/usr} +#test -n "${QTDIR}" || . "%{_sysconfdir}/profile.d/qt.sh" +export QTDIR="%{_libdir}/qt4" +CC='%{__cxx}' LD='%{__ld}' CFLAGS="${RPM_OPT_FLAGS} \ + -DXCA_DEFAULT_QT_TRANSLATE=\"\\\"%{_datadir}/qt4/translations\\\"\"" \ + STRIP=: prefix="%{_prefix}" \ + LIBS="-Wl,-as-needed `pkg-config --libs QtGui`" \ + ./configure "`pwd`/"_tmp_root{,/usr} make %{?_smp_mflags} convert img/xca.ico xca.png +touch -r img/xca.ico xca.png convert img/xdb.ico xdb.png +touch -r img/xdb.ico xdb.png + +iconv -f iso8859-1 -t utf8 AUTHORS > AUTHORS.utf8 +touch -r AUTHORS AUTHORS.utf8 +mv AUTHORS.utf8 AUTHORS %install -rm -rf "$RPM_BUILD_ROOT" +rm -rf "${RPM_BUILD_ROOT}" -make destdir="$RPM_BUILD_ROOT" mandir=share/man install -make destdir="$RPM_BUILD_ROOT" mandir=share/man install -C misc TOPDIR=.. +make destdir="${RPM_BUILD_ROOT}" mandir=share/man install +make destdir="${RPM_BUILD_ROOT}" mandir=share/man install -C misc TOPDIR=.. # HACK: check whether workarounds below are still necessary -test ! -e $RPM_BUILD_ROOT%_datadir/xca/crl.png +if test ! -e "${RPM_BUILD_ROOT}%{_datadir}/xca/crl.png" +then install -d -m 755 \ + "${RPM_BUILD_ROOT}%{_datadir}/"{applications,mime/packages,icons/hicolor} + install -p -m 644 img/*.png "${RPM_BUILD_ROOT}%{_datadir}/xca" +fi -install -d -m755 $RPM_BUILD_ROOT%_datadir/{applications,mime/packages,icons/hicolor} -install -p -m644 img/*.png $RPM_BUILD_ROOT%_datadir/xca -install -p -m644 %SOURCE4 $RPM_BUILD_ROOT%_datadir/mime/packages/ +install -p -m 644 misc/xca.xml "${RPM_BUILD_ROOT}%{_datadir}/mime/packages/" -export XDG_DATA_DIRS=$RPM_BUILD_ROOT%_datadir +export XDG_DATA_DIRS="${RPM_BUILD_ROOT}%{_datadir}" export XDG_UTILS_INSTALL_MODE=system -xdg-icon-resource install --noupdate --context mimetypes --size 32 xdb.png application-x-xca-database -xdg-icon-resource install --noupdate --size 32 xca.png fedora-xca +xdg-icon-resource install --noupdate --context mimetypes \ + --size 32 xdb.png application-x-xca-database +xdg-icon-resource install --noupdate --size 32 xca.png fedora-xca -desktop-file-install --vendor fedora --mode 0644 \ - --dir $RPM_BUILD_ROOT%_datadir/applications \ - --delete-original \ - --add-mime-type application/x-xca-database \ - --remove-category QT \ - $RPM_BUILD_ROOT%_datadir/applications/xca.desktop +desktop-file-install --vendor fedora --mode 0644 \ + --dir "${RPM_BUILD_ROOT}%{_datadir}/applications" \ + --delete-original \ + --add-mime-type application/x-xca-database \ + --remove-category QT \ + "${RPM_BUILD_ROOT}%{_datadir}/applications/xca.desktop" %clean -rm -rf "$RPM_BUILD_ROOT" +rm -rf "${RPM_BUILD_ROOT}" %post -touch --no-create %_datadir/icons/hicolor || : +touch --no-create "%{_datadir}/icons/hicolor" || : %preun -touch --no-create %_datadir/icons/hicolor || : +touch --no-create "%{_datadir}/icons/hicolor" || : %posttrans -gtk-update-icon-cache %_datadir/icons/hicolor &>/dev/null || : -update-mime-database %_datadir/mime &>/dev/null || : -update-desktop-database &>/dev/null || : +gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : +update-mime-database "%{_datadir}/mime" &> /dev/null || : +update-desktop-database &> /dev/null || : %postun -update-desktop-database &>/dev/null || : -update-mime-database %_datadir/mime &>/dev/null || : -gtk-update-icon-cache %_datadir/icons/hicolor &>/dev/null || : +update-desktop-database &> /dev/null || : +update-mime-database "%{_datadir}/mime" &> /dev/null || : +gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %files -%defattr(-,root,root,-) +%defattr(-, root, root, -) %doc AUTHORS COPYRIGHT README.update -%_bindir/* -%attr(0644,root,root) %_mandir/*/* +%{_bindir}/* %dir %{_datadir}/xca -%_datadir/pixmaps/*.xpm -%_datadir/xca/*.png -%_datadir/xca/*.txt -%_datadir/xca/*.html -%_datadir/xca/*.xca -%_datadir/icons/*/*/*/*.png -%_datadir/mime/packages/%name.* -%lang(de) %_datadir/xca/xca_de.qm -%lang(es) %_datadir/xca/xca_es.qm - -%_datadir/applications/* +%{_datadir}/xca/*.png +%{_datadir}/xca/*.txt +%{_datadir}/xca/*.html +%{_datadir}/xca/*.xca +%lang(de) %{_datadir}/xca/xca_de.qm +%lang(es) %{_datadir}/xca/xca_es.qm +%lang(fr) %{_datadir}/xca/xca_fr.qm +%lang(ru) %{_datadir}/xca/xca_ru.qm +%{_datadir}/pixmaps/*.xpm +%{_datadir}/icons/*/*/*/*.png +%{_datadir}/mime/packages/%{name}.* +%{_datadir}/applications/* +%attr(0644, root, root) %{_mandir}/*/* %changelog +* Mon Feb 28 2011 Patrick Monnerat 0.9.0-1 +- New upstream release. +- Suppress "includes" patch (went upstream). +- Suppress "openssl10" patch (new release is openssl 10 compatible). +- Patches "locale" and "noec" port to new release. +- French localization added. + * Mon Feb 07 2011 Fedora Release Engineering - 0.8.1-1401 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild diff --git a/xca.xml b/xca.xml deleted file mode 100644 index 393ba73..0000000 --- a/xca.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - XCA Database - - - From ca5dae775198a2c44ca3062dcedeb4d98234d52e Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 28 Feb 2011 16:26:18 +0100 Subject: [PATCH 02/72] * Mon Feb 28 2011 Patrick Monnerat 0.9.0-1 - New upstream release. - Suppress "includes" patch (went upstream). - Suppress "openssl10" patch (new release is openssl 10 compatible). - Patches "locale" and "noec" port to new release. - French localization added. --- .gitignore | 2 + README.update | 7 - lastver | 2 +- sources | 3 +- xca-0.6.4-includes.patch | 12 - xca-0.6.4-openssl10.patch | 16 - xca-0.7.0-locale.patch | 26 - xca-0.8.0-noec.patch | 259 --- xca-0.9.0-french.patch | 3250 +++++++++++++++++++++++++++++++++++++ xca-0.9.0-locale.patch | 20 + xca-0.9.0-noec.patch | 303 ++++ xca.spec | 161 +- xca.xml | 7 - 13 files changed, 3668 insertions(+), 400 deletions(-) delete mode 100644 README.update delete mode 100644 xca-0.6.4-includes.patch delete mode 100644 xca-0.6.4-openssl10.patch delete mode 100644 xca-0.7.0-locale.patch delete mode 100644 xca-0.8.0-noec.patch create mode 100644 xca-0.9.0-french.patch create mode 100644 xca-0.9.0-locale.patch create mode 100644 xca-0.9.0-noec.patch delete mode 100644 xca.xml diff --git a/.gitignore b/.gitignore index f5e8082..71e4422 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ xca-0.8.1.tar.gz +/xca-0.9.0.tar.gz +/README.update diff --git a/README.update b/README.update deleted file mode 100644 index cdf62b4..0000000 --- a/README.update +++ /dev/null @@ -1,7 +0,0 @@ -xca-0.6 uses a different database format. To convert the existing -database, execute: - -1. Install 'db_dump' from the db4-utils package: - | yum install db4-utils - -2. Read /usr/share/xca/xca-2.html for further instructions diff --git a/lastver b/lastver index 6f4eebd..ac39a10 100644 --- a/lastver +++ b/lastver @@ -1 +1 @@ -0.8.1 +0.9.0 diff --git a/sources b/sources index 1f0025a..64ab1af 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -ca87fd1af19ea2d90ac5aca1c296dd21 xca-0.8.1.tar.gz +ff6e23a0aac6a6d9d10b47d3f9856f1a xca-0.9.0.tar.gz +113ba37a89fe2de69338fcfe3b773a03 README.update diff --git a/xca-0.6.4-includes.patch b/xca-0.6.4-includes.patch deleted file mode 100644 index 34f86c3..0000000 --- a/xca-0.6.4-includes.patch +++ /dev/null @@ -1,12 +0,0 @@ -Index: xca-0.7.0/lib/db.h -=================================================================== ---- xca-0.7.0.orig/lib/db.h -+++ xca-0.7.0/lib/db.h -@@ -13,6 +13,7 @@ - #include - #include - #include -+#include - - #define XCA_MAGIC 0xcadb1969 - #define NAMELEN 80 diff --git a/xca-0.6.4-openssl10.patch b/xca-0.6.4-openssl10.patch deleted file mode 100644 index ee2ee34..0000000 --- a/xca-0.6.4-openssl10.patch +++ /dev/null @@ -1,16 +0,0 @@ -Index: xca-0.7.0/lib/pki_x509req.cpp -=================================================================== ---- xca-0.7.0.orig/lib/pki_x509req.cpp -+++ xca-0.7.0/lib/pki_x509req.cpp -@@ -350,7 +350,11 @@ void pki_x509req::set_spki(NETSCAPE_SPKI - void pki_x509req::load_spkac(const QString filename) - { - STACK_OF(CONF_VALUE) *sk=NULL; -+#if OPENSSL_VERSION_NUMBER >= 0x10000000L -+ LHASH_OF(CONF_VALUE) *parms=NULL; -+#else - LHASH *parms=NULL; -+#endif - CONF_VALUE *cv=NULL; - x509name subject; - char *type,*buf; diff --git a/xca-0.7.0-locale.patch b/xca-0.7.0-locale.patch deleted file mode 100644 index b701cc9..0000000 --- a/xca-0.7.0-locale.patch +++ /dev/null @@ -1,26 +0,0 @@ -2007-03-17 Enrico Scholz - * lib/main.c: use correct locale for the xca.qm file - * lib/main.c: [SECURITY] do not load qt.qm file from current - directory - -Index: xca-0.7.0/lib/main.cpp -=================================================================== ---- xca-0.7.0.orig/lib/main.cpp -+++ xca-0.7.0/lib/main.cpp -@@ -9,6 +9,7 @@ - #include - #include - #include -+#include - #include - #include "widgets/MainWindow.h" - #include "lib/func.h" -@@ -39,7 +40,7 @@ int main( int argc, char *argv[] ) - #else - locale = QLocale::system().name(); - #endif -- qtTr.load( QString( "qt_" ) + locale, "." ); -+ qtTr.load( QString( "qt_" ) + locale, XCA_DEFAULT_TRANSLATE); - xcaTr.load( QString( "xca_" ) + locale, getPrefix() ); - - a.installTranslator( &qtTr ); diff --git a/xca-0.8.0-noec.patch b/xca-0.8.0-noec.patch deleted file mode 100644 index 1e58fa2..0000000 --- a/xca-0.8.0-noec.patch +++ /dev/null @@ -1,259 +0,0 @@ -Index: xca-0.8.0/lib/pki_evp.cpp -=================================================================== ---- xca-0.8.0.orig/lib/pki_evp.cpp -+++ xca-0.8.0/lib/pki_evp.cpp -@@ -25,9 +25,11 @@ QString pki_evp::passHash = QString(); - - QPixmap *pki_evp::icon[2]= { NULL, NULL }; - -+#ifndef DISABLE_EC - EC_builtin_curve *pki_evp::curves = NULL; - size_t pki_evp::num_curves = 0; - unsigned char *pki_evp::curve_flags = NULL; -+#endif - - void pki_evp::erasePasswd() - { -@@ -107,7 +109,9 @@ void pki_evp::generate(int bits, int typ - { - RSA *rsakey; - DSA *dsakey; -+#ifndef DISABLE_EC - EC_KEY *eckey; -+#endif - - progress->setMinimum(0); - progress->setMaximum(100); -@@ -127,6 +131,7 @@ void pki_evp::generate(int bits, int typ - if (dsakey) - EVP_PKEY_set1_DSA(key, dsakey); - break; -+#ifndef DISABLE_EC - case EVP_PKEY_EC: - EC_GROUP *group = EC_GROUP_new_by_curve_name(curve_nid); - if (!group) -@@ -147,6 +152,7 @@ void pki_evp::generate(int bits, int typ - EC_KEY_free(eckey); - EC_GROUP_free(group); - break; -+#endif - } - openssl_error(); - encryptKey(); -@@ -190,8 +196,10 @@ static bool EVP_PKEY_isPrivKey(EVP_PKEY - return key->pkey.rsa->d ? true: false; - case EVP_PKEY_DSA: - return key->pkey.dsa->priv_key ? true: false; -+#ifndef DISABLE_EC - case EVP_PKEY_EC: - return EC_KEY_get0_private_key(key->pkey.ec) ? true: false; -+#endif - } - return false; - } -@@ -236,6 +244,7 @@ void pki_evp::fromPEM_BIO(BIO *bio, QStr - openssl_error(name); - } - -+#ifndef DISABLE_EC - static void search_ec_oid(EC_KEY *ec) - { - const EC_GROUP *ec_group = EC_KEY_get0_group(ec); -@@ -260,6 +269,7 @@ static void search_ec_oid(EC_KEY *ec) - } - } - } -+#endif - - void pki_evp::fload(const QString fname) - { -@@ -301,8 +311,10 @@ void pki_evp::fload(const QString fname) - } - fclose(fp); - if (pkey){ -+#ifndef DISABLE_EC - if (pkey->type == EVP_PKEY_EC) - search_ec_oid(pkey->pkey.ec); -+#endif - if (key) - EVP_PKEY_free(key); - key = pkey; -@@ -680,7 +692,9 @@ const EVP_MD *pki_evp::getDefaultMD() - switch (key->type) { - case EVP_PKEY_RSA: md = EVP_sha1(); break; - case EVP_PKEY_DSA: md = EVP_dss1(); break; -+#ifndef DISABLE_EC - case EVP_PKEY_EC: md = EVP_ecdsa(); break; -+#endif - default: md = NULL; break; - } - return md; -Index: xca-0.8.0/lib/pki_scard.cpp -=================================================================== ---- xca-0.8.0.orig/lib/pki_scard.cpp -+++ xca-0.8.0/lib/pki_scard.cpp -@@ -178,6 +178,7 @@ EVP_PKEY *pki_scard::load_pubkey(pkcs11 - EVP_PKEY_set1_DSA(pkey, dsa); - break; - } -+#ifndef DISABLE_EC - case CKK_EC: { - EC_KEY *ec = EC_KEY_new(); - -@@ -202,6 +203,7 @@ EVP_PKEY *pki_scard::load_pubkey(pkcs11 - EVP_PKEY_set1_EC_KEY(pkey, ec); - break; - } -+#endif - default: - throw errorEx(QString("Unsupported CKA_KEY_TYPE: %1\n").arg(keytype)); - } -@@ -304,8 +306,10 @@ const EVP_MD *pki_scard::getDefaultMD() - return EVP_sha1(); - if (mech_list.contains(CKM_DSA_SHA1)) - return EVP_dss1(); -+#ifndef DISABLE_EC - if (mech_list.contains(CKM_ECDSA_SHA1)) - return EVP_ecdsa(); -+#endif - if (mech_list.contains(CKM_SHA512_RSA_PKCS)) - return EVP_sha512(); - if (mech_list.contains(CKM_SHA384_RSA_PKCS)) -Index: xca-0.8.0/widgets/KeyDetail.cpp -=================================================================== ---- xca-0.8.0.orig/widgets/KeyDetail.cpp -+++ xca-0.8.0/widgets/KeyDetail.cpp -@@ -25,6 +25,7 @@ KeyDetail::KeyDetail(QWidget *parent) - keyDesc->setReadOnly(true); - } - -+#ifndef DISABLE_EC - static QString CurveComment(int nid) - { - for (size_t i=0; isetText(key->subprime()); - keyModulus->setText(key->pubkey()); - break; -+#ifndef DISABLE_EC - case EVP_PKEY_EC: - nid = key->ecParamNid(); - tlModulus->setText(tr("Public key")); -@@ -84,6 +87,7 @@ void KeyDetail::setKey(pki_key *key) - keyPubEx->setToolTip(CurveComment(nid)); - keyModulus->setText(key->ecPubKey()); - break; -+#endif - default: - tlHeader->setText(tr("UNKNOWN Key")); - } -Index: xca-0.8.0/widgets/NewKey.cpp -=================================================================== ---- xca-0.8.0.orig/widgets/NewKey.cpp -+++ xca-0.8.0/widgets/NewKey.cpp -@@ -23,7 +23,9 @@ struct typelist { - static const struct typelist typeList[] = { - { "RSA", EVP_PKEY_RSA }, - { "DSA", EVP_PKEY_DSA }, -+#ifndef DISABLE_EC - { "EC", EVP_PKEY_EC }, -+#endif - }; - - NewKey::NewKey(QWidget *parent, QString name) -@@ -48,6 +50,7 @@ NewKey::NewKey(QWidget *parent, QString - keyType->addItem(QString(typeList[i].name)); - } - -+#ifndef DISABLE_EC - for (i = 0; iaddItems(curve_x962); - curveBox->addItems(curve_other); -+#endif -+ - keyLength->setCurrentIndex(0); - keyDesc->setFocus(); - } -Index: xca-0.8.0/widgets/hashBox.cpp -=================================================================== ---- xca-0.8.0.orig/widgets/hashBox.cpp -+++ xca-0.8.0/widgets/hashBox.cpp -@@ -42,8 +42,10 @@ const EVP_MD *hashBox::currentHash() - switch(key_type) { - case EVP_PKEY_DSA: - return EVP_dss1(); -+#ifndef DISABLE_EC - case EVP_PKEY_EC: - return EVP_ecdsa(); -+#endif - default: - QString hash = currentText(); - for (unsigned i=0; itype != EVP_PKEY_EC) -@@ -160,6 +161,7 @@ QString pki_key::ecPubKey() - } - return pub; - } -+#endif - - bool pki_key::compare(pki_base *ref) - { -Index: xca-0.8.0/widgets/MainWindow.cpp -=================================================================== ---- xca-0.8.0.orig/widgets/MainWindow.cpp -+++ xca-0.8.0/widgets/MainWindow.cpp -@@ -97,6 +97,7 @@ static const int other_curve_nids[] = { - - static void init_curves() - { -+#ifndef DISABLE_EC - pki_evp::num_curves = EC_get_builtin_curves(NULL, 0); - pki_evp::curves = (EC_builtin_curve*)OPENSSL_malloc( - (int)(sizeof(EC_builtin_curve) *pki_evp::num_curves)); -@@ -125,6 +126,7 @@ static void init_curves() - } - } - } -+#endif - } - - void MainWindow::load_engine() diff --git a/xca-0.9.0-french.patch b/xca-0.9.0-french.patch new file mode 100644 index 0000000..2eaa0ed --- /dev/null +++ b/xca-0.9.0-french.patch @@ -0,0 +1,3250 @@ +diff -Naur xca-0.9.0.orig/lang/fr.po xca-0.9.0.new/lang/fr.po +--- xca-0.9.0.orig/lang/fr.po 1970-01-01 01:00:00.000000000 +0100 ++++ xca-0.9.0.new/lang/fr.po 2011-02-25 17:08:33.620671679 +0100 +@@ -0,0 +1,3223 @@ ++# ++# Patrick Monnerat , 2011. ++# ++msgid "" ++msgstr "" ++"Project-Id-Version: xca 0.9.0\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2010-08-24 07:29+0200\n" ++"PO-Revision-Date: 2011-02-25 16:20+0100\n" ++"Last-Translator: Patrick Monnerat \n" ++"Language-Team: fr \n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"X-Generator: Translate Toolkit 1.7.0\n" ++ ++#: About#1 ++msgid "Done" ++msgstr "OK" ++ ++#: CaProperties#1 ++msgid "CA Properties" ++msgstr "Propriétés du CA" ++ ++#: CaProperties#2 ++msgid "Use random Serial numbers" ++msgstr "Utiliser des numéros de série aléatoires" ++ ++#: CaProperties#3 ++msgid "Days until next CRL issuing" ++msgstr "" ++"Nombre de jours avant la génération de la prochaine liste de révocation" ++ ++#: CaProperties#4 ++msgid "Default template" ++msgstr "Modèle par défaut" ++ ++#: CaProperties#5 ++msgid "Next serial for signing" ++msgstr "Numéro de série suivant pour la signature" ++ ++#: CertDetail#1 ++msgid "Details of the Certificate" ++msgstr "Détails du Certificat" ++ ++#: CertDetail#2 ++msgid "S&tatus" ++msgstr "E&tat" ++ ++#: CertDetail#3 ++msgctxt "CertDetail#3" ++msgid "Serial" ++msgstr "Numéro de série" ++ ++#: CertDetail#4 ++msgid "The serial number of the certificate" ++msgstr "Le numéro de série du certificat" ++ ++#: CertDetail#5 ++msgid "The internal name of the certificate in the database" ++msgstr "Le nom interne du certificat dans la base de données" ++ ++#: CertDetail#6 ++msgctxt "CertDetail#6" ++msgid "Internal name" ++msgstr "Nom interne" ++ ++#: CertDetail#7 ++msgctxt "CertDetail#7" ++msgid "Signature algorithm" ++msgstr "Algorithme de signature" ++ ++#: CertDetail#8 ++msgctxt "CertDetail#8" ++msgid "Signature" ++msgstr "Signature" ++ ++#: CertDetail#9 ++msgctxt "CertDetail#9" ++msgid "Key" ++msgstr "Clé" ++ ++#: CertDetail#10 ++msgid "Fingerprints" ++msgstr "Empreinte" ++ ++#: CertDetail#11 ++msgid "SHA1" ++msgstr "SHA1" ++ ++#: CertDetail#12 ++msgid "MD5" ++msgstr "MD5" ++ ++#: CertDetail#13 ++msgid "A SHA-1 hashsum of the certificate" ++msgstr "La somme de hachage SHA-1 du certificat" ++ ++#: CertDetail#14 ++msgid "An md5 hashsum of the certificate" ++msgstr "La somme de hachage MD5 du certificat" ++ ++#: CertDetail#15 ++msgctxt "CertDetail#15" ++msgid "Validity" ++msgstr "Validité" ++ ++#: CertDetail#16 ++msgid "The time since the certificate is valid" ++msgstr "Le moment depuis lequel le certificat est valide" ++ ++#: CertDetail#17 ++msgid "The time until the certificate is valid" ++msgstr "Le moment auquel le certificat échoit" ++ ++#: CertDetail#18 ++msgid "&Subject" ++msgstr "&Sujet" ++ ++#: CertDetail#19 ++msgctxt "CertDetail#19" ++msgid "&Issuer" ++msgstr "&Emetteur" ++ ++#: CertDetail#20 ++msgid "Attributes" ++msgstr "Attributs" ++ ++#: CertDetail#21 ++msgctxt "CertDetail#21" ++msgid "&Extensions" ++msgstr "E&xtensions" ++ ++#: CertDetail#22 ++msgid "Show config" ++msgstr "Afficher la configuration" ++ ++#: CertDetail#23 ++msgid "Show extensions" ++msgstr "Afficher les extensions" ++ ++#: CertDetail#24 ++msgctxt "CertDetail#24" ++msgid "Not available" ++msgstr "Non disponible" ++ ++#: CertDetail#25 ++msgid "Details of the certificate" ++msgstr "Détails du certificat" ++ ++#: CertDetail#26 ++msgid "Signer unknown" ++msgstr "Signataire inconnu" ++ ++#: CertDetail#27 ++msgid "Self signed" ++msgstr "Auto-signé" ++ ++#: CertDetail#28 ++msgctxt "CertDetail#28" ++msgid "Not trusted" ++msgstr "Pas sûr" ++ ++#: CertDetail#29 ++msgid "Trusted" ++msgstr "Sûr" ++ ++#: CertDetail#30 ++msgid "Revoked: " ++msgstr "Révoqués: " ++ ++#: CertDetail#31 ++msgid "Not valid" ++msgstr "Echu" ++ ++#: CertDetail#32 ++msgid "Valid" ++msgstr "Valide" ++ ++#: CertDetail#33 ++msgid "Details of the certificate signing request" ++msgstr "Détails de la requête de signature" ++ ++#: CertExtend#1 ++msgid "Certificate renewal" ++msgstr "Renouvellement du certificat" ++ ++#: CertExtend#2 ++msgid "" ++"This will create a new certificate as a copy of the old one with a new " ++"serial number and adjusted validity values." ++msgstr "" ++"Créer un nouveau certificat conforme à l'ancien, mais avec un nouveau numéro " ++"de série et les limites de validité ajustées." ++ ++#: CertExtend#3 ++msgctxt "CertExtend#3" ++msgid "Validity" ++msgstr "Validité" ++ ++#: CertExtend#4 ++msgctxt "CertExtend#4" ++msgid "Not before" ++msgstr "Pas avant" ++ ++#: CertExtend#5 ++msgctxt "CertExtend#5" ++msgid "Not after" ++msgstr "Pas après" ++ ++#: CertExtend#6 ++msgctxt "CertExtend#6" ++msgid "Time range" ++msgstr "Intervalle de temps" ++ ++#: CertExtend#7 ++msgctxt "CertExtend#7" ++msgid "No well-defined expiration" ++msgstr "Date d'expiration mal définie" ++ ++#: CertExtend#8 ++msgctxt "CertExtend#8" ++msgid "Apply" ++msgstr "Appliquer" ++ ++#: CertExtend#9 ++msgctxt "CertExtend#9" ++msgid "Days" ++msgstr "Jours" ++ ++#: CertExtend#10 ++msgctxt "CertExtend#10" ++msgid "Months" ++msgstr "Mois" ++ ++#: CertExtend#11 ++msgctxt "CertExtend#11" ++msgid "Years" ++msgstr "Années" ++ ++#: CertExtend#12 ++msgctxt "CertExtend#12" ++msgid "Midnight" ++msgstr "Minuit" ++ ++#: CertExtend#13 ++msgctxt "CertExtend#13" ++msgid "" ++"The certificate will be earlier valid than the signer. This is probably not " ++"what you want." ++msgstr "" ++"Le certificat serait valide avant son signataire. Ce n'est probablement pas " ++"ce qui est désiré." ++ ++#: CertExtend#14 ++msgid "Edit times" ++msgstr "Modifier les limites de validité" ++ ++#: CertExtend#15 ++msgctxt "CertExtend#15" ++msgid "Abort rollout" ++msgstr "Interrompre le déploiement" ++ ++#: CertExtend#16 ++msgctxt "CertExtend#16" ++msgid "Continue rollout" ++msgstr "Continuer le déploiement" ++ ++#: CertExtend#17 ++msgctxt "CertExtend#17" ++msgid "Adjust date and continue" ++msgstr "Ajuster la date et continuer" ++ ++#: CertExtend#18 ++msgctxt "CertExtend#18" ++msgid "" ++"The certificate will be longer valid than the signer. This is probably not " ++"what you want." ++msgstr "" ++"Le certificat serait valide plus longtemps que son signataire. Ce n'est " ++"probablement pas ce qui est désiré." ++ ++#: CertView#1 ++msgctxt "CertView#1" ++msgid "There was no key found for the Certificate: " ++msgstr "Aucune clé n'a été trouvée pour ce certificat: " ++ ++#: CertView#2 ++msgctxt "CertView#2" ++msgid "Import Certificate signing request" ++msgstr "Importer une requête de signature" ++ ++#: ClickLabel#1 ++msgid "Double click for details" ++msgstr "Double-cliquer pour afficher les détails" ++ ++#: CrlDetail#1 ++msgid "Details of the Revocation list" ++msgstr "Détails de la liste de révocation" ++ ++#: CrlDetail#2 ++msgid "&Status" ++msgstr "&Etat" ++ ++#: CrlDetail#3 ++msgid "Version" ++msgstr "Version" ++ ++#: CrlDetail#4 ++msgctxt "CrlDetail#4" ++msgid "Signature" ++msgstr "Signature" ++ ++#: CrlDetail#5 ++msgid "Signed by" ++msgstr "Signé par" ++ ++#: CrlDetail#6 ++msgctxt "CrlDetail#6" ++msgid "Name" ++msgstr "Nom" ++ ++#: CrlDetail#7 ++msgid "The internal name of the CRL in the database" ++msgstr "Le nom interne de la liste de révocation dans la base de données" ++ ++#: CrlDetail#8 ++msgid "issuing dates" ++msgstr "date d'émission" ++ ++#: CrlDetail#9 ++msgid "Next Update" ++msgstr "Prochaine mise-à-jour" ++ ++#: CrlDetail#10 ++msgid "Last Update" ++msgstr "Dernière mise-à-jour" ++ ++#: CrlDetail#11 ++msgctxt "CrlDetail#11" ++msgid "&Issuer" ++msgstr "&Emetteur" ++ ++#: CrlDetail#12 ++msgctxt "CrlDetail#12" ++msgid "&Extensions" ++msgstr "E&xtensions" ++ ++#: CrlDetail#13 ++msgid "&Revocation list" ++msgstr "Liste de &révocation" ++ ++#: CrlDetail#14 ++msgid "0" ++msgstr "0" ++ ++#: CrlDetail#15 ++msgctxt "CrlDetail#15" ++msgid "Serial" ++msgstr "Numéro de série" ++ ++#: CrlDetail#16 ++msgctxt "CrlDetail#16" ++msgid "Revocation" ++msgstr "Révocation" ++ ++#: CrlDetail#17 ++msgid "Reason" ++msgstr "Raison" ++ ++#: CrlDetail#18 ++msgid "Invalidation" ++msgstr "Invalidation" ++ ++#: CrlDetail#19 ++msgid "Failed" ++msgstr "Echoué" ++ ++#: CrlDetail#20 ++msgid "Unknown signer" ++msgstr "Signataire inconnu" ++ ++#: CrlDetail#21 ++msgid "Verification not possible" ++msgstr "Vérification impossible" ++ ++#: CrlDetail#22 ++msgid "Unknown certificate" ++msgstr "Certificat inconnu" ++ ++#: ExportCert#1 ++msgid "X509 Certificates ( *.cer *.crt *.p12 *.p7b);;All files ( * )" ++msgstr "Certificats X509 ( *.cer *.crt *.p12 *.p7b);;Tous les fichiers ( * )" ++ ++#: ExportCert#2 ++msgid "" ++"DER is a binary format of the Certificate\n" ++"PEM is a base64 encoded Certificate\n" ++"PKCS#7 is an official Certificate exchange format\n" ++"PKCS#12 is an encrypted official Key-Certificate exchange format\n" ++msgstr "" ++"DER est un format binaire de certificat\n" ++"PEM encode le certificat en base64\n" ++"PKCS#7 est un format officiel d'échange de certificat\n" ++"PKCS#12 est un format officiel encrypté d'échange de certificat et de clé\n" ++ ++#: ExportCert#3 ++msgid "Please enter the filename for the certificate." ++msgstr "SVP entrer le nom du fichier pour le certificat." ++ ++#: ExportCert#4 ++msgid "Certifikate export" ++msgstr "Exportation de certificat" ++ ++#: ExportDer#1 ++msgctxt "ExportDer#1" ++msgid "All files ( * )" ++msgstr "Tous les fichiers ( * )" ++ ++#: ExportDer#2 ++msgid "" ++"DER is a binary format\n" ++"PEM is a base64 encoded DER file\n" ++msgstr "" ++"DER est un format binaire\n" ++"PEM est un format encodé en base64\n" ++ ++#: ExportDialog#1 ++msgid "..." ++msgstr "..." ++ ++#: ExportDialog#2 ++msgid "Filename" ++msgstr "Nom du fichier" ++ ++#: ExportDialog#3 ++msgid "Please enter the filename" ++msgstr "SVP saisir le nom du fichier" ++ ++#: ExportDialog#4 ++msgid "Export Format" ++msgstr "Format d'exportation" ++ ++#: ExportDialog#5 ++msgid "The file: '%1' already exists!" ++msgstr "Le fichier '%1' existe déjà!" ++ ++#: ExportDialog#6 ++msgid "Overwrite" ++msgstr "Ecraser" ++ ++#: ExportDialog#7 ++msgid "Do not overwrite" ++msgstr "Ne pas écraser" ++ ++#: ExportKey#1 ++msgid "When exporting the private key it should be encrypted." ++msgstr "Il est conseillé d'encrypter la clé privée lors de son exportation." ++ ++#: ExportKey#2 ++msgid "When exporting the private part, it should be encrypted." ++msgstr "Il est conseillé d'encrypter la partie privée lors de son exportation." ++ ++#: ExportKey#3 ++msgid "E&xport the private part of the Key too" ++msgstr "E&xporter aussi la partie privée de la clé" ++ ++#: ExportKey#4 ++msgid "Export as PKCS#8" ++msgstr "Exporter en PKCS#8" ++ ++#: ExportKey#5 ++msgid "&Encrypt the Key with a password" ++msgstr "&Encrypter la clé avec un mot de passe" ++ ++#: ExportKey#6 ++msgid "Private keys ( *.pem *.der *.pk8 );;All files ( * )" ++msgstr "Clés privées ( *.pem *.der *.pk8 );;Tous les fichiers ( * )" ++ ++#: ExportKey#7 ++msgid "" ++"DER is a binary format of the key without encryption\n" ++"PEM is a base64 encoded key with optional encryption\n" ++"PKCS#8 is an encrypted official Key-exchange format" ++msgstr "" ++"DER est un format binaire de clé sans encryption\n" ++"PEM encode la clé en base64 avec une encryption facultative\n" ++"PKCS#8 est un format officiel d'échange de clé" ++ ++#: ExportKey#8 ++msgid "Please enter the filename for the key." ++msgstr "SVP saisir le nom du fichier pour la clé." ++ ++#: ExportKey#9 ++msgid "Public key export" ++msgstr "Exporter la clé publique" ++ ++#: ExportKey#10 ++msgid "Key export" ++msgstr "Exporter la clé" ++ ++#: Help#1 ++msgid "<<" ++msgstr "<<" ++ ++#: Help#2 ++msgid ">>" ++msgstr "<<" ++ ++#: Help#3 ++msgctxt "Help#3" ++msgid "&Done" ++msgstr "&OK" ++ ++#: ImportMulti#1 ++msgid "Import PKI Items" ++msgstr "Importer des objets PKI" ++ ++#: ImportMulti#2 ++msgid "Import &All" ++msgstr "Importer &tout" ++ ++#: ImportMulti#3 ++msgctxt "ImportMulti#3" ++msgid "&Import" ++msgstr "&Importer" ++ ++#: ImportMulti#4 ++msgctxt "ImportMulti#4" ++msgid "&Done" ++msgstr "&OK" ++ ++#: ImportMulti#5 ++msgid "&Remove" ++msgstr "&Enlever" ++ ++#: ImportMulti#6 ++msgid "Details" ++msgstr "Détails" ++ ++#: ImportMulti#7 ++msgid "Delete from token" ++msgstr "Enlever du jeton" ++ ++#: ImportMulti#8 ++msgid "Rename on token" ++msgstr "Renommer dans le jeton" ++ ++#: ImportMulti#9 ++msgid "" ++"\n" ++"Name: %1\n" ++"Model: %2\n" ++"Serial: %3" ++msgstr "" ++"\n" ++"Nom: %1\n" ++"Modèle: %2\n" ++"Numéro de série: %3" ++ ++#: ImportMulti#10 ++msgid "Manage security token" ++msgstr "Gérer les jetons de sécurité" ++ ++#: ImportMulti#11 ++msgid "The type of the Item '%1' is not recognized" ++msgstr "Le type de l'objet '%1' n'est pas reconnu" ++ ++#: ImportMulti#12 ++msgid "Details of the item '%1' cannot be shown" ++msgstr "Les détails de l'objet '%1' ne peuvent pas être affichés" ++ ++#: ImportMulti#13 ++msgid "The type of the item '%1' is not recognized" ++msgstr "Le type de l'objet '%1' n'est pas reconnu" ++ ++#: ImportMulti#14 ++msgid "The file '%1' did not contain PKI data" ++msgstr "Le fichier '%1' ne contient pas de données PKI" ++ ++#: ImportMulti#15 ++msgid "The %1 files: '%2' did not contain PKI data" ++msgstr "Les %1 fichiers: '%2' ne contiennent pas de données PKI" ++ ++#: KeyDetail#1 ++msgctxt "KeyDetail#1" ++msgid "Name" ++msgstr "Nom" ++ ++#: KeyDetail#2 ++msgid "The internal name of the key used by xca" ++msgstr "Le nom interne de la clé utilisé par xca" ++ ++#: KeyDetail#3 ++msgctxt "KeyDetail#3" ++msgid "Security token" ++msgstr "Jeton de sécurité" ++ ++#: KeyDetail#4 ++msgid "Manufacturer" ++msgstr "Fabricant" ++ ++#: KeyDetail#5 ++msgctxt "KeyDetail#5" ++msgid "Serial" ++msgstr "Numéro de série" ++ ++#: KeyDetail#6 ++msgctxt "KeyDetail#6" ++msgid "Key" ++msgstr "Clé" ++ ++#: KeyDetail#7 ++msgid "Public Exponent" ++msgstr "Exposant public" ++ ++#: KeyDetail#8 ++msgctxt "KeyDetail#8" ++msgid "Keysize" ++msgstr "Taille de la clé" ++ ++#: KeyDetail#9 ++msgid "Private Exponent" ++msgstr "Exposant privé" ++ ++#: KeyDetail#10 ++msgid "Modulus" ++msgstr "Modulo" ++ ++#: KeyDetail#11 ++msgid "Details of the %1 key" ++msgstr "Détails de la clé %1" ++ ++#: KeyDetail#12 ++msgctxt "KeyDetail#12" ++msgid "Not available" ++msgstr "Non disponible" ++ ++#: KeyDetail#13 ++msgid "Token" ++msgstr "Jeton" ++ ++#: KeyDetail#14 ++msgid "Security token ID:%1" ++msgstr "Identifiant de jeton de sécurité: %1" ++ ++#: KeyDetail#15 ++msgid "Available" ++msgstr "Disponible" ++ ++#: KeyDetail#16 ++msgid "Sub prime" ++msgstr "Sous-premier" ++ ++#: KeyDetail#17 ++msgid "Public key" ++msgstr "Clé publique" ++ ++#: KeyDetail#18 ++msgctxt "KeyDetail#18" ++msgid "Private key" ++msgstr "Clé privée" ++ ++#: KeyDetail#19 ++msgid "Curve name" ++msgstr "Nom de la courbe" ++ ++#: KeyDetail#20 ++msgid "Unknown key" ++msgstr "Clé inconnue" ++ ++#: MainWindow#1 ++msgid "Private Keys" ++msgstr "Clés privées" ++ ++#: MainWindow#2 ++msgid "&New Key" ++msgstr "&Nouvelle clé" ++ ++#: MainWindow#3 ++msgid "&Export" ++msgstr "&Exporter" ++ ++#: MainWindow#4 ++msgctxt "MainWindow#4" ++msgid "&Import" ++msgstr "&Importer" ++ ++#: MainWindow#5 ++msgid "Import PFX (PKCS#12)" ++msgstr "Importer en PFX (PKCS#12)" ++ ++#: MainWindow#6 ++msgid "&Show Details" ++msgstr "&Afficher les Détails" ++ ++#: MainWindow#7 ++msgid "&Delete" ++msgstr "&Détruire" ++ ++#: MainWindow#8 ++msgid "Certificate signing requests" ++msgstr "Requêtes de signature de certificat" ++ ++#: MainWindow#9 ++msgid "&New Request" ++msgstr "&Nouvelle requête" ++ ++#: MainWindow#10 ++msgid "Certificates" ++msgstr "Certificats" ++ ++#: MainWindow#11 ++msgid "&New Certificate" ++msgstr "&Nouveau Certificat" ++ ++#: MainWindow#12 ++msgid "Import &PKCS#12" ++msgstr "Importer en &PKCS#12" ++ ++#: MainWindow#13 ++msgid "Import P&KCS#7" ++msgstr "Importer en P&KCS#7" ++ ++#: MainWindow#14 ++msgctxt "MainWindow#14" ++msgid "Plain View" ++msgstr "Vue à plat" ++ ++#: MainWindow#15 ++msgid "Templates" ++msgstr "Modèles" ++ ++#: MainWindow#16 ++msgid "&New template" ++msgstr "&Nouveau modèle" ++ ++#: MainWindow#17 ++msgid "Ch&ange Template" ++msgstr "&Modifier le Modèle" ++ ++#: MainWindow#18 ++msgid "Revocation lists" ++msgstr "Listes de révocation" ++ ++#: MainWindow#19 ++msgid "Please enter the password to decrypt the private key: '%1'" ++msgstr "SVP saisir le mot de passe pour décrypter la clé privée: '%1'" ++ ++#: MainWindow#20 ++msgid "" ++"Using or exporting private keys will not be possible without providing the " ++"correct password" ++msgstr "" ++"L'usage ou l'exportation de clés privées seront impossible sans fournir le " ++"mot de passe correct." ++ ++#: MainWindow#21 ++msgid "Database" ++msgstr "Base de donnée" ++ ++#: MainWindow#22 ++msgid "No deleted items found" ++msgstr "Aucun objet détruit n'a été trouvé" ++ ++#: MainWindow#23 ++msgid "&File" ++msgstr "&Fichier" ++ ++#: MainWindow#24 ++msgid "&New DataBase" ++msgstr "&Nouvelle base de données" ++ ++#: MainWindow#25 ++msgid "&Open DataBase" ++msgstr "&Ouvrir une base de données" ++ ++#: MainWindow#26 ++msgid "Generate DH parameter" ++msgstr "Générer le paramètre DH" ++ ++#: MainWindow#27 ++msgid "&Close DataBase" ++msgstr "&Fermer la base de données" ++ ++#: MainWindow#28 ++msgid "&Dump DataBase" ++msgstr "C&licher la base de données" ++ ++#: MainWindow#29 ++msgid "C&hange DataBase password" ++msgstr "C&hanger le mot de passe de la base de données" ++ ++#: MainWindow#30 ++msgid "&Import old db_dump" ++msgstr "&Importer un cliché de base de données en ancien format (db_dump)" ++ ++#: MainWindow#31 ++msgid "&Undelete items" ++msgstr "&Récupérer des objets détruits" ++ ++#: MainWindow#32 ++msgid "Options" ++msgstr "Options" ++ ++#: MainWindow#33 ++msgid "Exit" ++msgstr "Quitter" ++ ++#: MainWindow#34 ++msgid "I&mport" ++msgstr "I&mporter" ++ ++#: MainWindow#35 ++msgid "Keys" ++msgstr "Clés" ++ ++#: MainWindow#36 ++msgid "Requests" ++msgstr "Requêtes" ++ ++#: MainWindow#37 ++msgid "PKCS#12" ++msgstr "PKCS#12" ++ ++#: MainWindow#38 ++msgctxt "MainWindow#38" ++msgid "PKCS#7" ++msgstr "PKCS#7" ++ ++#: MainWindow#39 ++msgctxt "MainWindow#39" ++msgid "Template" ++msgstr "Modèle" ++ ++#: MainWindow#40 ++msgid "Revocation list" ++msgstr "Liste de révocation" ++ ++#: MainWindow#41 ++msgid "PEM file" ++msgstr "Fichier PEM" ++ ++#: MainWindow#42 ++msgid "paste PEM file" ++msgstr "Coller un fichier PEM" ++ ++#: MainWindow#43 ++msgid "&Token" ++msgstr "&Jeton" ++ ++#: MainWindow#44 ++msgid "&Manage Security token" ++msgstr "&Gérer le jeton de sécurité" ++ ++#: MainWindow#45 ++msgid "&Init Security token" ++msgstr "&Initialiser le jeton de sécurité" ++ ++#: MainWindow#46 ++msgid "&Change PIN" ++msgstr "&Changer le NIP" ++ ++#: MainWindow#47 ++msgid "Change &SO PIN" ++msgstr "Changer le P&UK" ++ ++#: MainWindow#48 ++msgid "Init PIN" ++msgstr "Initialiser le NIP" ++ ++#: MainWindow#49 ++msgid "&Help" ++msgstr "&Aide" ++ ++#: MainWindow#50 ++msgid "&Content" ++msgstr "&Contenu" ++ ++#: MainWindow#51 ++msgid "&About" ++msgstr "&A propos" ++ ++#: MainWindow#52 ++msgid "Donations" ++msgstr "Dons" ++ ++#: MainWindow#53 ++msgid "Database dump ( *.dump );;All files ( * )" ++msgstr "Cliché de base de données ( *.dump );;Tous les fichiers ( * )" ++ ++#: MainWindow#54 ++msgid "Import password" ++msgstr "Mot de passe d'importation" ++ ++#: MainWindow#55 ++msgid "Please enter the password of the old database" ++msgstr "SVP saisir le mot de passe de l'ancienne base de données" ++ ++#: MainWindow#56 ++msgid "Password verification error. Ignore keys ?" ++msgstr "La vérification du mot de passe a écoué. Ignorer les clés ?" ++ ++#: MainWindow#57 ++msgid "Import anyway" ++msgstr "Importer quand-même" ++ ++#: MainWindow#58 ++msgctxt "MainWindow#58" ++msgid "Cancel" ++msgstr "Abandonner" ++ ++#: MainWindow#59 ++msgid "no such option: %1" ++msgstr "'%1' n'est pas une option" ++ ++#: MainWindow#60 ++msgid "Import PEM data" ++msgstr "Importer les données PEM" ++ ++#: MainWindow#61 ++msgid "Please enter the original SO PIN (PUK) of the token '%1'" ++msgstr "SVP saisir le PUK original du jeton '%1'" ++ ++#: MainWindow#62 ++msgid "Please enter the new SO PIN (PUK) of the token '%1'" ++msgstr "SVP saisir le nouveau PUK du jeton '%1'" ++ ++#: MainWindow#63 ++msgid "The new label of the token '%1'" ++msgstr "La nouvelle étiquette du jeton '%1'" ++ ++#: MainWindow#64 ++msgid "The token '%1' did not contain any keys or certificates" ++msgstr "Le jeton '%1' ne contient aucune clé ni aucun certificat" ++ ++#: MainWindow#65 ++msgid "New Password" ++msgstr "Nouveau mot de passe" ++ ++#: MainWindow#66 ++msgid "" ++"Please enter the new password to encrypt your private keys in the database-" ++"file" ++msgstr "" ++"SVP saisir le nouveau mot de passe pour encrypter les clés privées dans le " ++"fichier de base de données" ++ ++#: MainWindow#67 ++msgid "" ++"Please enter a password, that will be used to encrypt your private keys in " ++"the database file: '%1'" ++msgstr "" ++"SVP saisir un mot de passe qui sera utilisé pour encrypter les clés privées " ++"dans le fichier de base de données: '%1'" ++ ++#: MainWindow#68 ++msgid "Password verify error, please try again" ++msgstr "La vérification du mot de passe a échoué. SVP essayez encore" ++ ++#: MainWindow#69 ++msgctxt "MainWindow#69" ++msgid "Password" ++msgstr "Mot de passe" ++ ++#: MainWindow#70 ++msgid "Please enter the password for unlocking the database: '%1'" ++msgstr "SVP saisir le mot de passe pour débloquer la base de données: '%1'" ++ ++#: MainWindow#71 ++msgid "" ++"Hex password must only contain the characters '0' - '9' and 'a' - 'f' and it " ++"must consist of an even number of characters" ++msgstr "" ++"Un mot de passe hexadécimal peut seulement contenir les caractères '0' à '9' " ++"et 'a' à 'f' et il doit consister en un nombre pair de caractères" ++ ++#: MainWindow#72 ++msgid "Repeat %1" ++msgstr "Répéter %1" ++ ++#: MainWindow#73 ++msgid "%1 missmatch" ++msgstr "%1 ne correspond pas" ++ ++#: MainWindow#74 ++msgid "The following error occured:" ++msgstr "L'erreur suivante s'est produite:" ++ ++#: MainWindow#75 ++msgid "Copy to Clipboard" ++msgstr "Copier dans le presse-papier" ++ ++#: MainWindow#76 ++msgid "DH parameter bits" ++msgstr "Bits du paramètre DH" ++ ++#: MainWindow#77 ++msgctxt "MainWindow#77" ++msgid "Error opening file: '%1': %2" ++msgstr "Erreur à l'ouverture du fichier '%1': %2" ++ ++#: NewCrl#1 ++msgid "Create CRL" ++msgstr "Créer une liste de révocation" ++ ++#: NewCrl#2 ++msgid "Dates" ++msgstr "Dates" ++ ++#: NewCrl#3 ++msgid "last update" ++msgstr "dernière mise-à-jour" ++ ++#: NewCrl#4 ++msgid "next update" ++msgstr "prochaine mise-à-jour" ++ ++#: NewCrl#5 ++msgctxt "NewCrl#5" ++msgid "Days" ++msgstr "Jours" ++ ++#: NewCrl#6 ++msgctxt "NewCrl#6" ++msgid "Months" ++msgstr "Mois" ++ ++#: NewCrl#7 ++msgctxt "NewCrl#7" ++msgid "Years" ++msgstr "Années" ++ ++#: NewCrl#8 ++msgctxt "NewCrl#8" ++msgid "Midnight" ++msgstr "Minuit" ++ ++#: NewCrl#9 ++msgctxt "NewCrl#9" ++msgid "Apply" ++msgstr "Appliquer" ++ ++#: NewCrl#10 ++msgid "Hashing algorithm" ++msgstr "Algorithme de hachage" ++ ++#: NewCrl#11 ++msgctxt "NewCrl#11" ++msgid "Extensions" ++msgstr "Extensions" ++ ++#: NewCrl#12 ++msgid "Authority key identifier" ++msgstr "Identifiant de clé de l'autorité" ++ ++#: NewCrl#13 ++msgid "Subject alternative name" ++msgstr "Nom alternatif du sujet" ++ ++#: NewCrl#14 ++msgid "CRL Number" ++msgstr "Numéro de la liste de révocation" ++ ++#: NewCrl#15 ++msgid "Revokation reasons" ++msgstr "Raisons de la révocation" ++ ++#: NewKey#1 ++msgid "New key" ++msgstr "Nouvelle clé" ++ ++#: NewKey#2 ++msgid "Please give a name to the new key and select the desired keysize" ++msgstr "" ++"SVP donner un nom à la nouvelle clé et sélectionner la taille de clé désirée" ++ ++#: NewKey#3 ++msgid "Key properties" ++msgstr "Propriétés de la clé" ++ ++#: NewKey#4 ++msgctxt "NewKey#4" ++msgid "Name" ++msgstr "Nom" ++ ++#: NewKey#5 ++msgid "The internal name of the new key" ++msgstr "Le nom interne de la nouvelle clé" ++ ++#: NewKey#6 ++msgctxt "NewKey#6" ++msgid "New Key" ++msgstr "Nouvelle Clé" ++ ++#: NewKey#7 ++msgid "Curve" ++msgstr "Courbe" ++ ++#: NewKey#8 ++msgctxt "NewKey#8" ++msgid "Keysize" ++msgstr "Taille de la clé" ++ ++#: NewKey#9 ++msgid "Usually 1024 or 2048 bit keys are used" ++msgstr "1024 et 2048 bits sont les tailles de clé les plus usitées" ++ ++#: NewKey#10 ++msgid "Keytype" ++msgstr "Type de clé" ++ ++#: NewKey#11 ++msgctxt "NewKey#11" ++msgid "Create" ++msgstr "Créer" ++ ++#: NewX509#1 ++msgctxt "NewX509#1" ++msgid "Create" ++msgstr "Créer" ++ ++#: NewX509#2 ++msgid "Source" ++msgstr "Source" ++ ++#: NewX509#3 ++msgid "Signing request" ++msgstr "Requête de signature" ++ ++#: NewX509#4 ++msgid "" ++"A certificate signing request can be signed, even if the private key of the " ++"request is not available. This is the intention of a CSR:\n" ++"Getting signed by a CA certificate, whoes certificate of course must be in " ++"the database\n" ++"Of course you need the private key of the CSR if you want to create a self-" ++"signed cert from it." ++msgstr "" ++"Un requête de signature de certificat peut être signée même si la clé privée " ++"de la requête n'est pas disponible. C'est l'intention\n" ++"d'une requête de signature: être signée par un certificat d'autorité (CA) " ++"qui lui bien-sûr, doit être dans la base de donnée.\n" ++"Par contre, la clé privée d'une requête est nécessaire pour créer un " ++"certificat auto-signé à partir de celle-ci." ++ ++#: NewX509#5 ++msgid "Show request" ++msgstr "Afficher la requête" ++ ++#: NewX509#6 ++msgid "Sign this Certificate signing &request" ++msgstr "Signer cette &requête" ++ ++#: NewX509#7 ++msgid "Copy extensions from the request" ++msgstr "Copier les extensions de la requête" ++ ++#: NewX509#8 ++msgid "Modify subject of the request" ++msgstr "Modifier le sujet de la requête" ++ ++#: NewX509#9 ++msgid "Signing" ++msgstr "Signer" ++ ++#: NewX509#10 ++msgid "Create a &self signed certificate with the serial" ++msgstr "Créer un certificat auto-&signé avec le numéro de série" ++ ++#: NewX509#11 ++msgid "If you leave this blank the serial 00 will be used" ++msgstr "Si ce champ est laissé vide, le numéro de série 00 sera utilisé" ++ ++#: NewX509#12 ++msgid "1" ++msgstr "1" ++ ++#: NewX509#13 ++msgid "Use &this Certificate for signing" ++msgstr "Utiliser &ce certificat pour signer" ++ ++#: NewX509#14 ++msgid "All certificates in your database that can create valid signatures" ++msgstr "" ++"Tous les certificats dans la base de données qui peuvent produire des " ++"signatures valables" ++ ++#: NewX509#15 ++msgid "" ++"This list contains all certificates with the CA-flag set to true and whoes " ++"private key is present in the key-database.\n" ++"If this list is disabled, you only can create a self-signed certificate." ++msgstr "" ++"Cette liste contient tous les certificats qui ont le drapeau CA levé et dont " ++"la clé privée est présente dans la base de données.\n" ++"Si cette liste est désactivée, seule la création d'un certificat auto-signé " ++"est possible." ++ ++#: NewX509#16 ++msgctxt "NewX509#16" ++msgid "Signature algorithm" ++msgstr "Algorithme de signature" ++ ++#: NewX509#17 ++msgid "Template for the new certificate" ++msgstr "Modèle pour le nouveau certificat" ++ ++#: NewX509#18 ++msgid "All available templates" ++msgstr "Tous les modèles disponibles" ++ ++#: NewX509#19 ++msgid "This list contains all templates from the toplevel template Tab" ++msgstr "Cette liste contient tous les modèles de l'onglet 'Modèles'" ++ ++#: NewX509#20 ++msgid "Apply extensions" ++msgstr "Appliquer les extensions" ++ ++#: NewX509#21 ++msgid "Apply subject" ++msgstr "Appliquer le sujet" ++ ++#: NewX509#22 ++msgid "Apply all" ++msgstr "Appliquer tout" ++ ++#: NewX509#23 ++msgctxt "NewX509#23" ++msgid "Subject" ++msgstr "Sujet" ++ ++#: NewX509#24 ++msgid "Organisation" ++msgstr "Organisation" ++ ++#: NewX509#25 ++msgid "" ++"This name is only used internally and does not appear in the resulting " ++"certificate" ++msgstr "" ++"Ce nom est seulement utilisé par xca et n'apparaît pas dans le certificat " ++"exporté" ++ ++#: NewX509#26 ++msgid "Must be exactly 2 letter of size (DE, UK)" ++msgstr "Doit contenir exactement deux lettres [FR, UK]" ++ ++#: NewX509#27 ++msgid "Country code" ++msgstr "Code du pays" ++ ++#: NewX509#28 ++msgid "State or Province" ++msgstr "Etat ou Province" ++ ++#: NewX509#29 ++msgid "Locality" ++msgstr "Ville" ++ ++#: NewX509#30 ++msgid "Organisational unit" ++msgstr "Unité organisationnlle" ++ ++#: NewX509#31 ++msgid "E-Mail address" ++msgstr "Adresse de courriel" ++ ++#: NewX509#32 ++msgctxt "NewX509#32" ++msgid "Internal name" ++msgstr "Nom interne" ++ ++#: NewX509#33 ++msgid "Common name" ++msgstr "Nom commun" ++ ++#: NewX509#34 ++msgctxt "NewX509#34" ++msgid "Add" ++msgstr "Ajouter" ++ ++#: NewX509#35 ++msgctxt "NewX509#35" ++msgid "Delete" ++msgstr "Enlever" ++ ++#: NewX509#36 ++msgctxt "NewX509#36" ++msgid "Private key" ++msgstr "Clé privée" ++ ++#: NewX509#37 ++msgid "This list only contains unused keys" ++msgstr "Cette liste ne contient que les clés inutilisées" ++ ++#: NewX509#38 ++msgid "Used keys too" ++msgstr "Inclure les clés utilisées" ++ ++#: NewX509#39 ++msgid "&Generate a new key" ++msgstr "&Générer une nouvelle clé" ++ ++#: NewX509#40 ++msgctxt "NewX509#40" ++msgid "Extensions" ++msgstr "Extensions" ++ ++#: NewX509#41 ++msgid "Basic constraints" ++msgstr "Contraintes basiques" ++ ++#: NewX509#42 ++msgctxt "NewX509#42" ++msgid "Type" ++msgstr "Type" ++ ++#: NewX509#43 ++msgid "If this will become a CA certificate or not" ++msgstr "Si un certificat d'autorité (CA) est en train d'être créé ou non" ++ ++#: NewX509#44 ++msgid "" ++"Set this to TRUE if you want to create a CA certificate that signs other " ++"certificates.\n" ++"This is always set to FALSE for client or server certificates. In most cases " ++"self-signed certificates are CA certificates.\n" ++"Self-signed non-CA certificates are unusual although they are possible." ++msgstr "" ++"Sélectionner \"VRAI\" si vous voulez créer un certificat d'autorité (CA) qui " ++"peut signer d'autres certificats.\n" ++"\"FAUX\" doit toujours être séléectionné pour des certificats de clients ou " ++"de serveurs. Dans la plupart des cas,\n" ++"les certificats auto-signés sont des certificats d'autorité: bien que " ++"possibles, les certificats auto-signés non-CA sont rares." ++ ++#: NewX509#45 ++msgid "Not defined" ++msgstr "Non défini" ++ ++#: NewX509#46 ++msgid "Certification Authority" ++msgstr "Autorité de Certification" ++ ++#: NewX509#47 ++msgid "End Entity" ++msgstr "Entité Finale" ++ ++#: NewX509#48 ++msgid "Path length" ++msgstr "Distance aux feuilles" ++ ++#: NewX509#49 ++msgid "How much CAs may be below this." ++msgstr "" ++"Combien de niveau de sous-CA peuvent apparaître jusqu'à une entité finale." ++ ++#: NewX509#50 ++msgid "" ++"If this is left empty the pathlen is not included in the certificate. " ++"Otherwise it distinguishes the count of chained CA certificates below this " ++"one.\n" ++"A pathlen of 0 means, that this certificate may not issue other sub-CA " ++"certificates. Although it can do it, all chain-checking algorithms in e.g. " ++"your browser or openssl will (should) fail." ++msgstr "" ++"Si ce champ est laissé vide, la distance aux peuilles n'est pas incluse dans " ++"le certificat. Sinon il limite le nombre de sous-CA en dessous de celui-ci.\n" ++"Une distance aux feuilles de 0 signifie que ce certificat ne peut pas signer " ++"de sous-CA. Bien qu'il puisse effectivement le faire, tous les algorithme de " ++"vérification de\n" ++"chaînage des certificats (p.ex: dans votre navigateur ou openssl) les " ++"refuseront." ++ ++#: NewX509#51 ++msgid "The basic constraints should always be critical" ++msgstr "Les contraintes basiques doivent toujours être critiques" ++ ++#: NewX509#52 ++msgid "Key identifier" ++msgstr "Identifiant de clé" ++ ++#: NewX509#53 ++msgid "Creates a hash of the key following the PKIX guidelines" ++msgstr "Crée un hachage de la clé conformément aux directives PKIX" ++ ++#: NewX509#54 ++msgid "Copy the Subject Key Identifier from the issuer" ++msgstr "Copie l'identifiant de clé du sujet du signataire" ++ ++#: NewX509#55 ++msgid "" ++"If this box is checked an attempt is made to copy the subject key identifier " ++"from the signing certificate.\n" ++"It also copies the issuer and serial number from the issuer certificate. " ++"Normally this will only be done if the keyid option fails." ++msgstr "" ++"Quand cette case est cochée, l'identifiant de clé est copiée du certificat " ++"signataire.\n" ++"L'emetteur et le numéro de série du certificat signataire sont aussi copiés: " ++"normalement cette copie n'est effectuée que si la copie de l'identifiant de " ++"clé échoue." ++ ++#: NewX509#56 ++msgctxt "NewX509#56" ++msgid "Validity" ++msgstr "Validité" ++ ++#: NewX509#57 ++msgctxt "NewX509#57" ++msgid "Not before" ++msgstr "Pas avant" ++ ++#: NewX509#58 ++msgctxt "NewX509#58" ++msgid "Not after" ++msgstr "Pas après" ++ ++#: NewX509#59 ++msgctxt "NewX509#59" ++msgid "Time range" ++msgstr "Intervalle de temps" ++ ++#: NewX509#60 ++msgctxt "NewX509#60" ++msgid "Days" ++msgstr "Jours" ++ ++#: NewX509#61 ++msgctxt "NewX509#61" ++msgid "Months" ++msgstr "Mois" ++ ++#: NewX509#62 ++msgctxt "NewX509#62" ++msgid "Years" ++msgstr "Années" ++ ++#: NewX509#63 ++msgctxt "NewX509#63" ++msgid "Apply" ++msgstr "Appliquer" ++ ++#: NewX509#64 ++msgid "Set the time to 00:00:00 and 23:59:59 respectively" ++msgstr "Définir les heures à 00:00:00 et 23:59:59 respectivement" ++ ++#: NewX509#65 ++msgctxt "NewX509#65" ++msgid "Midnight" ++msgstr "Minuit" ++ ++#: NewX509#66 ++msgctxt "NewX509#66" ++msgid "No well-defined expiration" ++msgstr "Date d'expiration mal définie" ++ ++#: NewX509#67 ++msgid "Authority Info Access" ++msgstr "Accès à l'information de l'autorité" ++ ++#: NewX509#68 ++msgid "CRL distribution point" ++msgstr "Point de distribution de la liste de révocation" ++ ++#: NewX509#69 ++msgid "issuer alternative name" ++msgstr "Nom alternatif du signataire" ++ ++#: NewX509#70 ++msgid "URI:" ++msgstr "URI:" ++ ++#: NewX509#71 ++msgid "" ++"This is a multi-valued extension that supports all the literal options of " ++"subject alternative name. Of the few software packages that currentlyi " ++"nterpret this extension most only interpret the URI option.\n" ++"Currently each option will set a new DistributionPoint with the fullName " ++"field set to the given value.\n" ++"Other fields like cRLissuer and reasons cannot currently be set or " ++"displayed: at this time no examples were available that used these fields.\n" ++"If you see this extension with when you attempt to print it " ++"out or it doesn't appear to display correctly then let steve know, including " ++"the certificate (mail steve at openssl dot org) .\n" ++"Examples:\n" ++"URI:http://www.myhost.com/myca.crl\n" ++"URI:http://www.my.com/my.crl, URI:http://www.oth.com/my.crl" ++msgstr "" ++"Cette extension est un agrégat de toutes les options littérales du nom " ++"alternatif du sujet. Parmi les quelques logiciels qui utilisent cette " ++"extension aujourd'hui, la plupart ne traitent uniquement l'option URI.\n" ++"Chaque option introduit un nouveau point de distribution qualifié par son " ++"nom complet.\n" ++"Pour l'instant, les autres champs comme 'CRLissuer' et 'reasons' ne peuvent " ++"pas être saisis ou affichés. Aucun exemple utilisant ces champs n'est " ++"disponible aujourd'hui.\n" ++"Si cette extension apparaît comme ou si le contenu ne semble " ++"pas affiché correctement, faites-le savoir a Steve (courriel: steve arobase " ++"openssl point org).\n" ++"Exemples:\n" ++"URI:http://www.monsite.com/monca.crl\n" ++"URI:http://www.moi.com/moi.crl, URI:http://www.lui.com/moi.crl" ++ ++#: NewX509#72 ++msgid "can be altered by the file \"aia.txt\"" ++msgstr "peut être altéré par le fichier \"aia.txt\"" ++ ++#: NewX509#73 ++msgid "Edit" ++msgstr "Modifier" ++ ++#: NewX509#74 ++msgid "DNS: IP: URI: email: RID:" ++msgstr "DNS: IP: URI: email: RID:" ++ ++#: NewX509#75 ++msgid "" ++"The authority information access extension gives details about how to access " ++"certain information relating to the CA. Its syntax is accessOID;location " ++"where 'location' has the same syntax as subject alternative name (except " ++"that email:copy is not supported). accessOID can be any valid OID but only " ++"certain values are meaningful for example OCSP and caIssuers. OCSP gives the " ++"location of an OCSP responder: this is used by Netscape PSM and other " ++"software.\n" ++"\n" ++"Example:\n" ++"\n" ++"OCSP;URI:http://ocsp.my.host/\n" ++"caIssuers;URI:http://my.ca/ca.html" ++msgstr "" ++"L'extension d'accès à l'information de l'autorité indique comment accéder à " ++"certaines informations concernant le certificat d'autorité. La syntaxe est " ++"accèsOID;emplacement où 'emplacement` à la même syntaxe que le nom " ++"alternatif du sujet (à part 'email:copy\" qui n'est pas supporté). N'importe " ++"quel OID valide peut être spécifié pour accèsOID, mais seules certaines " ++"valeurs ont un sens, par exemple OCSP et caIssuers. OCSP renseigne sur " ++"l'emplacement d'un répondeur OCSP; ceci est untilisé par les navigateurs Web " ++"et d'autres logiciels.\n" ++"\n" ++"Exemple:\n" ++"\n" ++"OCSP;URI:http://ocsp.mon.site/\n" ++"caIssuers;URI:http://moi.ca/ca.html" ++ ++#: NewX509#76 ++msgid "" ++"The subject alternative name extension allows various literal values to be " ++"used. These include \"email\" (an email address) , \"URI\" a uniform " ++"resource indicator, \"DNS\" (a DNS domain name) , RID (a registered ID: " ++"OBJECT IDENTIFIER) and IP (an IP address).\n" ++"Examples:\n" ++"email:my@other.address, IP: 1.1.1.1 , URI:http://my.url.here/\n" ++"email:my@other.address, RID:1.2.3.4, DNS: ns.server.tld" ++msgstr "" ++"Cette extension contient le nom alternatif du sujet et permet de regrouper " ++"plusieurs valeurs littérales. Celles-ci comprennent \"email\" (un adresse de " ++"courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS\" (un nom de " ++"domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP\" (une adresse " ++"IP).\n" ++"Exemples:\n" ++"email:mon@autre.adresse, IP: 1.1.1.1 , URI:http://mon.url.ici/\n" ++"email:mon@autre.adresse, RID:1.2.3.4, DNS: serveur.de.nom.tld" ++ ++#: NewX509#77 ++msgid "subject alternative name" ++msgstr "nom alternatif du sujet" ++ ++#: NewX509#78 ++msgid "" ++"The issuer alternative name extension allows various literal values to be " ++"used. These include \"email\" (an email address) , \"URI\" a uniform " ++"resource indicator, \"DNS\" (a DNS domain name), RID (a registered ID: " ++"OBJECT IDENTIFIER) and IP (an IP address).\n" ++"Examples:\n" ++"email:my@other.address, IP: 1.1.1.1 , URI:http://my.url.here/\n" ++"email:my@other.address, RID:1.2.3.4, DNS: ns.server.tld" ++msgstr "" ++"Cette extension contient le nom alternatif du signataire et permet de " ++"regrouper plusieurs valeurs littérales. Celles-ci comprennent \"email\" (un " ++"adresse de courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS" ++"\" (un nom de domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP" ++"\" (une adresse IP).\n" ++"Exemples:\n" ++"email:mon@autre.adresse, IP: 1.1.1.1 , URI:http://mon.url.ici/\n" ++"email:mon@autre.adresse, RID:1.2.3.4, DNS: serveur.de.nom.tld" ++ ++#: NewX509#79 ++msgid "Key usage" ++msgstr "Utilisation de la clé" ++ ++#: NewX509#80 ++msgid "Extended key usage" ++msgstr "Utilisation étendue de la clé" ++ ++#: NewX509#81 ++msgid "Netscape" ++msgstr "Netscape" ++ ++#: NewX509#82 ++msgid "CA Revocation URL" ++msgstr "URL de révocation du certificat CA" ++ ++#: NewX509#83 ++msgid "Revocation URL" ++msgstr "URL de révocation" ++ ++#: NewX509#84 ++msgid "SSL server name" ++msgstr "Nom du serveur SSL" ++ ++#: NewX509#85 ++msgid "Certificate renewal URL" ++msgstr "URL de renouvellement de certificat" ++ ++#: NewX509#86 ++msgid "Comment" ++msgstr "Commentaire" ++ ++#: NewX509#87 ++msgid "CA policy URL" ++msgstr "URL des conditions générales du CA" ++ ++#: NewX509#88 ++msgid "Base URL" ++msgstr "URL de base" ++ ++#: NewX509#89 ++msgid "If you know a more pretty one tell me" ++msgstr "Si vous en connaissez un plus joli, faites-le moi savoir" ++ ++#: NewX509#90 ++msgid "Advanced" ++msgstr "Avancé" ++ ++#: NewX509#91 ++msgctxt "NewX509#91" ++msgid "Validate" ++msgstr "Valider" ++ ++#: NewX509#92 ++msgid "Create a &self signed certificate with a MD5-hashed QA serial" ++msgstr "" ++"Créer un certificat auto-&signé avec un numéro de série QA basé sur MD5" ++ ++#: NewX509#93 ++msgid "Create Certificate signing request" ++msgstr "Créer une requête de signature de certificat" ++ ++#: NewX509#94 ++msgid "minimum size: %1" ++msgstr "taille minimale: %1" ++ ++#: NewX509#95 ++msgid "maximum size: %1" ++msgstr "taille maximale: %1" ++ ++#: NewX509#96 ++msgid "only a-z A-Z 0-9 '()+,-./:=?" ++msgstr "seulement a-z A-Z 0-9 '()+,-./:=?" ++ ++#: NewX509#97 ++msgid "only 7-bit clean characters" ++msgstr "seulement des caractères 7-bit ASCII imprimables" ++ ++#: NewX509#98 ++msgid "XCA template" ++msgstr "modèle XCA" ++ ++#: NewX509#99 ++msgid "Create x509 Certificate" ++msgstr "Créer un certificat x509" ++ ++#: NewX509#100 ++msgid "From PKCS#10 request" ++msgstr "A partir d'une requête en PKCS#10" ++ ++#: NewX509#101 ++msgid "Other Tabs" ++msgstr "Autres Onglets" ++ ++#: NewX509#102 ++msgid "Advanced Tab" ++msgstr "Onglet Avancé" ++ ++#: NewX509#103 ++msgid "Errors" ++msgstr "Erreurs" ++ ++#: NewX509#104 ++msgctxt "NewX509#104" ++msgid "Abort rollout" ++msgstr "Interrompre le déploiement" ++ ++#: NewX509#105 ++msgid "The following length restrictions of RFC3280 are violated:" ++msgstr "" ++"Pour être en conformité avec la RFC3280, les règles de restriction de " ++"longueur suivantes ne sont pas respectées:" ++ ++#: NewX509#106 ++msgid "Edit subject" ++msgstr "Modifier le sujet" ++ ++#: NewX509#107 ++msgctxt "NewX509#107" ++msgid "Continue rollout" ++msgstr "Continuer le déploiement" ++ ++#: NewX509#108 ++msgid "" ++"The verification of the Certificate request failed.\n" ++"The rollout should be aborted." ++msgstr "" ++"La vérification de la requête de signature à échoué.\n" ++"Le déploiement devrait être interrompu." ++ ++#: NewX509#109 ++msgid "Continue anyway" ++msgstr "Continuer quand-même" ++ ++#: NewX509#110 ++msgid "" ++"The internal name and the common name are empty.\n" ++"Please set at least the internal name." ++msgstr "" ++"Le nom interne et le nom commun sont vides.\n" ++"SVP saisir au moins le nom interne." ++ ++#: NewX509#111 ++msgid "Edit name" ++msgstr "Modifier le nom" ++ ++#: NewX509#112 ++msgid "There is no Key selected for signing." ++msgstr "Aucune clé n'est sélectionnée pour la signature." ++ ++#: NewX509#113 ++msgid "Select key" ++msgstr "Sélectionner la clé" ++ ++#: NewX509#114 ++msgid "" ++"The following distinguished name entries are empty:\n" ++"%1\n" ++"though you have declared them as mandatory in the options menu." ++msgstr "" ++"Les indications de nom distinctif suivantes sont vides:\n" ++"%1\n" ++"bien que vous les avez déclarées comme obligatoires dans le menu des options." ++ ++#: NewX509#115 ++msgctxt "NewX509#115" ++msgid "The key you selected for signing is not a private one." ++msgstr "La clé sélectionnée pour la signature n'est pas une clé privée." ++ ++#: NewX509#116 ++msgid "Select other signer" ++msgstr "Sélectionner un autre signataire" ++ ++#: NewX509#117 ++msgid "Select other key" ++msgstr "Sélectionner une autre clé" ++ ++#: NewX509#118 ++msgctxt "NewX509#118" ++msgid "" ++"The certificate will be earlier valid than the signer. This is probably not " ++"what you want." ++msgstr "" ++"Le certificat serait valide avant son signataire. Ce n'est probablement pas " ++"ce qui est désiré." ++ ++#: NewX509#119 ++msgid "Edit dates" ++msgstr "Modifier les limites de validité" ++ ++#: NewX509#120 ++msgctxt "NewX509#120" ++msgid "Adjust date and continue" ++msgstr "Ajuster la date et continuer" ++ ++#: NewX509#121 ++msgctxt "NewX509#121" ++msgid "" ++"The certificate will be longer valid than the signer. This is probably not " ++"what you want." ++msgstr "" ++"Le certificat serait valide plus longtemps que son signataire. Ce n'est " ++"probablement pas ce qui est désiré." ++ ++#: NewX509#122 ++msgid "" ++"The certificate will be out of date before it becomes valid. You most " ++"probably mixed up both dates." ++msgstr "" ++"Le certificat serait échu avant de devenir actif. Vous avez probablement " ++"interverti les deux dates." ++ ++#: NewX509#123 ++msgid "" ++"The certificate contains duplicated extensions. Check the validation on the " ++"advanced tab." ++msgstr "" ++"Le certificat contient des extensions dupliquées. Valider et vérifier sur " ++"l'onglet \"Avancé\"." ++ ++#: NewX509#124 ++msgid "Edit extensions" ++msgstr "Modifier les extensions" ++ ++#: NewX509#125 ++msgid "Configfile error on line %1\n" ++msgstr "Erreur dans le fichier de configuration à la ligne %1\n" ++ ++#: Options#1 ++msgid "XCA Options" ++msgstr "Options de XCA" ++ ++#: Options#2 ++msgid "Mandatory subject entries" ++msgstr "Inscriptions du sujet obligatoires" ++ ++#: Options#3 ++msgctxt "Options#3" ++msgid "Add" ++msgstr "Ajouter" ++ ++#: Options#4 ++msgctxt "Options#4" ++msgid "Delete" ++msgstr "Détruire" ++ ++#: Options#5 ++msgid "Default hash algorithm" ++msgstr "Algorithme de hachage par défaut" ++ ++#: Options#6 ++msgid "String types" ++msgstr "Types de chaînes" ++ ++#: Options#7 ++msgid "PKCS#11 provider" ++msgstr "Fournisseur PKCS#11" ++ ++#: Options#8 ++msgid "Remove" ++msgstr "Enlever" ++ ++#: Options#9 ++msgid "Printable string or UTF8 (default)" ++msgstr "Chaîne imprimable ou UTF8 (défaut)" ++ ++#: Options#10 ++msgid "PKIX recommendation in RFC2459" ++msgstr "La recommandation PKIX est dans la RFC2459" ++ ++#: Options#11 ++msgid "No BMP strings, only printable and T61" ++msgstr "Pas de chaîne BMP, seulement imprimable et T61" ++ ++#: Options#12 ++msgid "UTF8 strings only (RFC2459)" ++msgstr "Chaînes UTF8 uniquement (RFC2459)" ++ ++#: Options#13 ++msgid "All strings" ++msgstr "Toutes les chaînes" ++ ++#: Options#14 ++msgid "Load failed" ++msgstr "Le chargement a échoué" ++ ++#: PassRead#1 ++msgctxt "PassRead#1" ++msgid "Password" ++msgstr "Mot de passe" ++ ++#: PassRead#2 ++msgctxt "PassRead#2" ++msgid "" ++"The password is parsed as 2-digit hex code. It must have an equal number of " ++"digits (0-9 and a-f)" ++msgstr "" ++"Le mot de passe contient des codes hexadécimaux à deux chiffres. Il doit " ++"donc consiter en un nombre pair de chiffres (0-9 et a-f)" ++ ++#: PassRead#3 ++msgctxt "PassRead#3" ++msgid "Take as HEX string" ++msgstr "Comprendre comme chaîne hexadécimale" ++ ++#: PassWrite#1 ++msgctxt "PassWrite#1" ++msgid "Password" ++msgstr "Mot de passe" ++ ++#: PassWrite#2 ++msgctxt "PassWrite#2" ++msgid "" ++"The password is parsed as 2-digit hex code. It must have an equal number of " ++"digits (0-9 and a-f)" ++msgstr "" ++"Le mot de passe contient des codes hexadécimaux à deux chiffres. Il doit " ++"donc consiter en un nombre pair de chiffres (0-9 et a-f)" ++ ++#: PassWrite#3 ++msgctxt "PassWrite#3" ++msgid "Take as HEX string" ++msgstr "Comprendre comme chaîne hexadécimale" ++ ++#: QObject#1 ++msgid "Undefined" ++msgstr "Indéfini" ++ ++#: QObject#2 ++msgid "DB: Rename: '%1' already in use" ++msgstr "DB: Renommer: '%1' déjà en utilisation" ++ ++#: QObject#3 ++msgid "DB: Entry to rename not found: %1" ++msgstr "DB: l'inscription à renommer n'a pas été trouvée: '%1'" ++ ++#: QObject#4 ++msgid "DB: Write error %1 - %2" ++msgstr "DB: Erreur d'écriture %1 - %2" ++ ++#: QObject#5 ++msgid "Out of data" ++msgstr "A court de données" ++ ++#: QObject#6 ++msgid "Error finding endmarker of string" ++msgstr "Erreur: une marque de fin de chaîne n'a pas été trouvée" ++ ++#: QObject#7 ++msgid "Out of Memory at %1:%2" ++msgstr "A court de mémoire à %1:%2" ++ ++#: QObject#8 ++msgctxt "QObject#8" ++msgid "All files ( * )" ++msgstr "Tous les fichiers ( * )" ++ ++#: QObject#9 ++msgid "PKI Keys ( *.pem *.der *.key );;PKCS#8 Keys ( *.p8 *.pk8 );;" ++msgstr "Clés PKI ( *.pem *.der *.key );;Clés PKCS#8 ( *.p8 *.pk8 );;" ++ ++#: QObject#10 ++msgid "Import RSA key" ++msgstr "Importer une clé RSA" ++ ++#: QObject#11 ++msgid "PKCS#10 CSR ( *.pem *.der *.csr );;Netscape Request ( *.spkac *.spc );;" ++msgstr "" ++"Requête PKCS#10 ( *.pem *.der *.csr );;Requête Netscape ( *.spkac *.spc );;" ++ ++#: QObject#12 ++msgid "Import Request" ++msgstr "Importer une requête" ++ ++#: QObject#13 ++msgid "Certificates ( *.pem *.der *.crt *.cer );;" ++msgstr "Certificats ( *.pem *.der *.crt *.cer );;" ++ ++#: QObject#14 ++msgid "Import X.509 Certificate" ++msgstr "Importer un certificat X.509" ++ ++#: QObject#15 ++msgid "PKCS#7 data ( *.p7s *.p7m *.p7b );;" ++msgstr "Données PKCS#7 ( *.p7s *.p7m *.p7b );;" ++ ++#: QObject#16 ++msgid "Import PKCS#7 Certificates" ++msgstr "Importer un certificat PKCS#7" ++ ++#: QObject#17 ++msgid "PKCS#12 Certificates ( *.p12 *.pfx );;" ++msgstr "Certificats PKCS#12 ( *.p12 *.pfx );;" ++ ++#: QObject#18 ++msgid "Import PKCS#12 Private Certificate" ++msgstr "Importer un certificat privé PKCS#12" ++ ++#: QObject#19 ++msgid "XCA templates ( *.xca );;" ++msgstr "Modèles XCA ( *.xca );;" ++ ++#: QObject#20 ++msgid "Import XCA Templates" ++msgstr "Importer des modèles XCA" ++ ++#: QObject#21 ++msgid "Revocation lists ( *.pem *.der *.crl );;" ++msgstr "Listes de révocation ( *.pem *.der *.crl );;" ++ ++#: QObject#22 ++msgid "Import Certificate Revocation List" ++msgstr "Importer une liste de révocation de certificats" ++ ++#: QObject#23 ++msgid "XCA Databases ( *.xdb );;" ++msgstr "Bases de données XCA ( *.xdb );;" ++ ++#: QObject#24 ++msgid "Open XCA Database" ++msgstr "Ouvrir une Base de Données XCA" ++ ++#: QObject#25 ++msgid "PKCS#11 library ( *.dll );;" ++msgstr "Bibliothèque PKCS#11 ( *.dll );;" ++ ++#: QObject#26 ++msgid "PKCS#11 library ( *.dylib *.so );;" ++msgstr "Bibliothèque PKCS#11 ( *.dylib *.so );;" ++ ++#: QObject#27 ++msgid "PKCS#11 library ( *.so );;" ++msgstr "Bibliothèque PKCS#11 ( *.so );;" ++ ++#: QObject#28 ++msgid "Open PKCS#11 shared library" ++msgstr "Ouvrir une bibliothèque partagée PKCS#11" ++ ++#: QObject#29 ++msgid "PEM files ( *.pem );;" ++msgstr "Fichiers PEM ( *.pem );;" ++ ++#: QObject#30 ++msgid "Load PEM encoded file" ++msgstr "Charger un fichier encodé en PEM" ++ ++#: QObject#31 ++msgid "Please enter the SO PIN (PUK) of the token %1" ++msgstr "SVP saisir le PUK du jeton '%1'" ++ ++#: QObject#32 ++msgid "Please enter the PIN of the token %1" ++msgstr "SVP saisir le NIP du jeton '%1'" ++ ++#: QObject#33 ++msgid "No Security token found" ++msgstr "Aucun jeton de sécurité trouvé" ++ ++#: QObject#34 ++msgid "Select" ++msgstr "Sélectionner" ++ ++#: QObject#35 ++msgid "Please enter the new SO PIN (PUK) for the token: '%1'" ++msgstr "SVP saisir le nouveau PUK pour le jeton: '%1'" ++ ++#: QObject#36 ++msgid "Please enter the new PIN for the token: '%1'" ++msgstr "SVP saisir le nouveau NIP pour le jeton: '%1'" ++ ++#: QObject#37 ++msgid "Required PIN size: %1 - %2" ++msgstr "Taille du NIP requise: %1 - %2" ++ ++#: QObject#38 ++msgid "Failed to open PKCS11 library: %1" ++msgstr "L'ouverture de la bibliothèque PKCS#11 '%1' a échoué" ++ ++#: QObject#39 ++msgid "PKCS#11 function '%1' failed: %2" ++msgstr "La fonction PKCS#11 '%1' a échoué: %2" ++ ++#: QObject#40 ++msgid "" ++"PKCS#11 function '%1' failed: %2\n" ++"In library %3\n" ++"%4" ++msgstr "" ++"La fonction PKCS#11 '%1' a échoué: %2\n" ++"Dans la bibliothèque %3\n" ++"%4" ++ ++#: QObject#41 ++msgid "Please enter the password to decrypt the private key." ++msgstr "SVP saisir le mot de passe pour décrypter la clé privée" ++ ++#: QObject#42 ++msgid "Invalid" ++msgstr "Invalide" ++ ++#: QObject#43 ++msgid "%1 is shorter than %2 bytes: '%3'" ++msgstr "%1 est plus court que %2 octets: '%3'" ++ ++#: QObject#44 ++msgid "%1 is longer than %2 bytes: '%3'" ++msgstr "%1 est plus long que %2 octets: '%3'" ++ ++#: Revoke#1 ++msgid "Revokation details" ++msgstr "Détails de la révocation" ++ ++#: Revoke#2 ++msgid "Invalid since" ++msgstr "Non-valide depuis" ++ ++#: Revoke#3 ++msgid "Revokation reason" ++msgstr "Raison de la révocation" ++ ++#: SelectToken#1 ++msgid "Select Token" ++msgstr "Sélectionner un jeton" ++ ++#: SelectToken#2 ++msgctxt "SelectToken#2" ++msgid "Security token" ++msgstr "Jeton de sécurité" ++ ++#: SelectToken#3 ++msgid "Please select the security token" ++msgstr "SVP sélectionner le jeton de sécurité" ++ ++#: TrustState#1 ++msgid "Set trustment of the Certificate" ++msgstr "Ajuster le niveau de confiance du certificat" ++ ++#: TrustState#2 ++msgid "Trustment" ++msgstr "Niveau de confiance" ++ ++#: TrustState#3 ++msgid "&Never trust this certificate" ++msgstr "&Ne jamais se fier à ce certificat" ++ ++#: TrustState#4 ++msgid "Only &trust this certificate, if we trust the signer" ++msgstr "Ne &se fier à ce certificat qui si son signataire est de confiance" ++ ++#: TrustState#5 ++msgid "&Always trust this certificate" ++msgstr "&Toujours se fier à ce certificat" ++ ++#: Validity#1 ++msgid "yyyy-MM-dd hh:mm" ++msgstr "yyyy-MM-dd hh:mm" ++ ++#: db_base#1 ++msgctxt "db_base#1" ++msgid "Internal name" ++msgstr "Nom interne" ++ ++#: db_base#2 ++msgid "Reset" ++msgstr "Réinitialisation" ++ ++#: db_base#3 ++msgid "Subject entries" ++msgstr "Inscriptions du sujet" ++ ++#: db_base#4 ++msgid "Columns" ++msgstr "Colonnes" ++ ++#: db_crl#1 ++msgid "Signer" ++msgstr "Signataire" ++ ++#: db_crl#2 ++msgid "Internal name of the signer" ++msgstr "Nom interne du signataire" ++ ++#: db_crl#3 ++msgid "No. revoked" ++msgstr "Numéro révoqué" ++ ++#: db_crl#4 ++msgid "Number of revoked certificates" ++msgstr "Nombre de certificats révoqués" ++ ++#: db_crl#5 ++msgid "Last update" ++msgstr "Dernière mise-à-jour" ++ ++#: db_crl#6 ++msgid "Next update" ++msgstr "Prochaine mise-à-jour" ++ ++#: db_crl#7 ++msgid "CRL number" ++msgstr "Numéro de la liste de révocation" ++ ++#: db_crl#8 ++msgid "" ++"The revokation list already exists in the database as:\n" ++"'%1'\n" ++"and so it was not imported" ++msgstr "" ++"Cette liste de révocation figure déjà dans la base de données sous le nom:\n" ++"'%1'\n" ++"En conséquence, elle n'a pas été importée" ++ ++#: db_crl#9 ++msgid "CRL ( *.pem *.der *.crl )" ++msgstr "Listes de révocation ( *.pem *.der *.crl )" ++ ++#: db_crl#10 ++msgid "Revokation list export" ++msgstr "Exportation d'une liste de révocation" ++ ++#: db_crl#11 ++msgctxt "db_crl#11" ++msgid "Import" ++msgstr "Importer" ++ ++#: db_crl#12 ++msgctxt "db_crl#12" ++msgid "Rename" ++msgstr "Renommer" ++ ++#: db_crl#13 ++msgctxt "db_crl#13" ++msgid "Export" ++msgstr "Exporter" ++ ++#: db_crl#14 ++msgctxt "db_crl#14" ++msgid "Delete" ++msgstr "Détruire" ++ ++#: db_key#1 ++msgctxt "db_key#1" ++msgid "Type" ++msgstr "Type" ++ ++#: db_key#2 ++msgid "Size" ++msgstr "Taille" ++ ++#: db_key#3 ++msgid "Use" ++msgstr "Usage" ++ ++#: db_key#4 ++msgctxt "db_key#4" ++msgid "Password" ++msgstr "Mot de passe" ++ ++#: db_key#5 ++msgid "" ++"The key is already in the database as:\n" ++"'%1'\n" ++"and is not going to be imported" ++msgstr "" ++"Cette clé figure déjà dans la base de données sous le nom:\n" ++"'%1'\n" ++"En conséquence, elle ne va pas être importée" ++ ++#: db_key#6 ++msgid "" ++"The database already contains the public part of the imported key as\n" ++"'%1\n" ++"and will be completed by the new, private part of the key" ++msgstr "" ++"La base de donnée connait déjà la partie publique de la clé importée sous le " ++"nom\n" ++"'%1'\n" ++"En conséquence, cette dernière sera complétée par la partie privée de la clé " ++"importée" ++ ++#: db_key#7 ++msgid "Key size too small !" ++msgstr "Taille de clé trop petite !" ++ ++#: db_key#8 ++msgid "You are sure to create a key of the size: %1 ?" ++msgstr "Etes-vous sûr de couloir créer une clé de taille %1 ?" ++ ++#: db_key#9 ++msgid "" ++"Shall the original key '%1' be replaced by the key on the token?\n" ++"This will delete the key '%1' and make it unexportable" ++msgstr "" ++"La clé originale '%1' doit-elle être remplacée par la clé en provenance du " ++"jeton ?\n" ++"Cela détruirait la clé '%1' et la rendrait non-exportable." ++ ++#: db_key#10 ++msgctxt "db_key#10" ++msgid "New Key" ++msgstr "Nouvelle clé" ++ ++#: db_key#11 ++msgctxt "db_key#11" ++msgid "Import" ++msgstr "Importer" ++ ++#: db_key#12 ++msgctxt "db_key#12" ++msgid "Rename" ++msgstr "Renommer" ++ ++#: db_key#13 ++msgctxt "db_key#13" ++msgid "Show Details" ++msgstr "Afficher les Détails" ++ ++#: db_key#14 ++msgctxt "db_key#14" ++msgid "Delete" ++msgstr "Détruire" ++ ++#: db_key#15 ++msgctxt "db_key#15" ++msgid "Export" ++msgstr "Exporter" ++ ++#: db_key#16 ++msgid "Change password" ++msgstr "Changer le mot de passe" ++ ++#: db_key#17 ++msgid "Reset password" ++msgstr "Effacer le mot de passe" ++ ++#: db_key#18 ++msgid "Change PIN" ++msgstr "Changer le NIP" ++ ++#: db_key#19 ++msgid "Init PIN with SO PIN (PUK)" ++msgstr "Initialiser le NIP avec le PUK" ++ ++#: db_key#20 ++msgid "Change SO PIN (PUK)" ++msgstr "Changer le PUK" ++ ++#: db_key#21 ++msgid "Store on Security token" ++msgstr "Enregistrer dans le jeton de sécurité" ++ ++#: db_key#22 ++msgid "Tried to change password of a token" ++msgstr "Tentative de changement de mot de passe d'un jeton de sécurité" ++ ++#: db_key#23 ++msgid "Tried to change PIN of a key" ++msgstr "Tentative de changement de NIP d'une clé" ++ ++#: db_key#24 ++msgid "Tried to init PIN of a key" ++msgstr "Tentative d'initialisation du NIP d'une clé" ++ ++#: db_key#25 ++msgid "Tried to change SO PIN of a key" ++msgstr "Tentative de changement de PUK d'une clé" ++ ++#: db_temp#1 ++msgctxt "db_temp#1" ++msgid "Type" ++msgstr "Type" ++ ++#: db_temp#2 ++msgid "Bad template: %1" ++msgstr "Mauvais modèle: %1" ++ ++#: db_temp#3 ++msgid "Nothing" ++msgstr "Rien" ++ ++#: db_temp#4 ++msgid "Preset Template values" ++msgstr "Initaliser les valeurs du modèle" ++ ++#: db_temp#5 ++msgid "copy" ++msgstr "copier" ++ ++#: db_temp#6 ++msgid "Save template as" ++msgstr "Enregistrer le modèle sous" ++ ++#: db_temp#7 ++msgid "XCA templates ( *.xca);; All files ( * )" ++msgstr "Modèles XCA ( *.xca);; Tous les fichiers ( * )" ++ ++#: db_temp#8 ++msgid "New Template" ++msgstr "Nouveau modèle" ++ ++#: db_temp#9 ++msgctxt "db_temp#9" ++msgid "Import" ++msgstr "Importer" ++ ++#: db_temp#10 ++msgctxt "db_temp#10" ++msgid "Rename" ++msgstr "Renommer" ++ ++#: db_temp#11 ++msgctxt "db_temp#11" ++msgid "Export" ++msgstr "Exporter" ++ ++#: db_temp#12 ++msgid "Change" ++msgstr "Changer" ++ ++#: db_temp#13 ++msgctxt "db_temp#13" ++msgid "Delete" ++msgstr "Détruire" ++ ++#: db_temp#14 ++msgid "Duplicate" ++msgstr "Dupliquer" ++ ++#: db_temp#15 ++msgid "Create certificate" ++msgstr "Créer un certificat" ++ ++#: db_temp#16 ++msgid "Create request" ++msgstr "Créer une requête" ++ ++#: db_x509#1 ++msgid "CA" ++msgstr "CA" ++ ++#: db_x509#2 ++msgid "reflects the basic Constraints extension" ++msgstr "reflète l'extension des contraintes basiques" ++ ++#: db_x509#3 ++msgctxt "db_x509#3" ++msgid "Serial" ++msgstr "Numéro de série" ++ ++#: db_x509#4 ++msgid "md5 fingerprint" ++msgstr "Empreinte MD5" ++ ++#: db_x509#5 ++msgid "sha1 fingerprint" ++msgstr "Empreinte sha1" ++ ++#: db_x509#6 ++msgid "Start date" ++msgstr "Date de début" ++ ++#: db_x509#7 ++msgid "not Before" ++msgstr "pas Avant" ++ ++#: db_x509#8 ++msgid "Expiry date" ++msgstr "Date d'expiration" ++ ++#: db_x509#9 ++msgid "not After" ++msgstr "pas Après" ++ ++#: db_x509#10 ++msgid "Trust state" ++msgstr "État de confiance" ++ ++#: db_x509#11 ++msgctxt "db_x509#11" ++msgid "Revocation" ++msgstr "Révocation" ++ ++#: db_x509#12 ++msgctxt "db_x509#12" ++msgid "Plain View" ++msgstr "Vue à plat" ++ ++#: db_x509#13 ++msgid "Tree View" ++msgstr "Vue arborescente" ++ ++#: db_x509#14 ++msgid "" ++"The certificate already exists in the database as:\n" ++"'%1'\n" ++"and so it was not imported" ++msgstr "" ++"Ce certificat figure déjà dans la base de données sous le nom:\n" ++"'%1'\n" ++"En conséquence, il n'a pas été importé" ++ ++#: db_x509#15 ++msgid "Please enter the new hexadecimal secret number for the QA process." ++msgstr "SVP saisir le nouveau nombre secret hexadécimal pour le processus QA." ++ ++#: db_x509#16 ++msgid "The two secret numbers don't match." ++msgstr "Les deux nombres secrets ne sont pas les mêmes." ++ ++#: db_x509#17 ++msgid "The QA process has been terminated by the user." ++msgstr "Le processus QA a été arrêté par l'utilisateur." ++ ++#: db_x509#18 ++msgctxt "db_x509#18" ++msgid "The key you selected for signing is not a private one." ++msgstr "La clé sélectionnée pour la signature n'est pas une clé privée." ++ ++#: db_x509#19 ++msgid "Store the certificate to the key on the token '%1 (#%2)' ?" ++msgstr "Enregistrer le certificate avec la clé sur le jeton '%1 (#%2)' ?" ++ ++#: db_x509#20 ++msgid "New Certificate" ++msgstr "Nouveau Certificat" ++ ++#: db_x509#21 ++msgctxt "db_x509#21" ++msgid "Import" ++msgstr "Importer" ++ ++#: db_x509#22 ++msgid "Import PKCS#12" ++msgstr "Importer en PKCS#12" ++ ++#: db_x509#23 ++msgid "Import from PKCS#7" ++msgstr "Importer en PKCS#7" ++ ++#: db_x509#24 ++msgctxt "db_x509#24" ++msgid "Rename" ++msgstr "Renommer" ++ ++#: db_x509#25 ++msgctxt "db_x509#25" ++msgid "Show Details" ++msgstr "Afficher les Détails" ++ ++#: db_x509#26 ++msgctxt "db_x509#26" ++msgid "Extract public Key" ++msgstr "Extraire la clé publique" ++ ++#: db_x509#27 ++msgctxt "db_x509#27" ++msgid "Export" ++msgstr "Exporter" ++ ++#: db_x509#28 ++msgctxt "db_x509#28" ++msgid "File" ++msgstr "Fichier" ++ ++#: db_x509#29 ++msgid "Request" ++msgstr "Requête" ++ ++#: db_x509#30 ++msgctxt "db_x509#30" ++msgid "Security token" ++msgstr "Jeton de sécurité" ++ ++#: db_x509#31 ++msgid "Other token" ++msgstr "Autre jeton" ++ ++#: db_x509#32 ++msgctxt "db_x509#32" ++msgid "Template" ++msgstr "Modèle" ++ ++#: db_x509#33 ++msgctxt "db_x509#33" ++msgid "Delete" ++msgstr "Détruire" ++ ++#: db_x509#34 ++msgid "Delete from Security token" ++msgstr "Détruire sur le jeton de sécurité" ++ ++#: db_x509#35 ++msgid "Trust" ++msgstr "Niveau de confiance" ++ ++#: db_x509#36 ++msgid "Properties" ++msgstr "Propriétés" ++ ++#: db_x509#37 ++msgid "Generate CRL" ++msgstr "Générer la liste de révocation" ++ ++#: db_x509#38 ++msgctxt "db_x509#38" ++msgid "PKCS#7" ++msgstr "PKCS#7" ++ ++#: db_x509#39 ++msgctxt "db_x509#39" ++msgid "Sign" ++msgstr "Signer" ++ ++#: db_x509#40 ++msgid "Encrypt" ++msgstr "Encrypter" ++ ++#: db_x509#41 ++msgid "Renewal" ++msgstr "Renouvellement" ++ ++#: db_x509#42 ++msgid "Unrevoke" ++msgstr "Dé-révoquer" ++ ++#: db_x509#43 ++msgid "Revoke" ++msgstr "Révoquer" ++ ++#: db_x509#44 ++msgid "There was no key found for the Certificate: '%1'" ++msgstr "Aucune clé n'a été trouvée pour le Certificat. '%1'" ++ ++#: db_x509#45 ++msgid "Not possible for a token key: '%1'" ++msgstr "Impossible pour une clé d'un jeton de sécurité: '%1'" ++ ++#: db_x509#46 ++msgid "Not possible for the token-key Certificate '%1'" ++msgstr "Impossible pour le certificat d'une clé d'un jeton de sécurité: '%1'" ++ ++#: db_x509#47 ++msgid " days" ++msgstr " jours" ++ ++#: db_x509name#1 ++msgctxt "db_x509name#1" ++msgid "Subject" ++msgstr "Sujet" ++ ++#: db_x509name#2 ++msgid "Complete distinguished name" ++msgstr "Nom distinctif complet" ++ ++#: db_x509name#3 ++msgid "Subject hash" ++msgstr "Hachage du sujet" ++ ++#: db_x509name#4 ++msgid "Hash to lookup certs in directories" ++msgstr "Hachage de recherche dans un dossier" ++ ++#: db_x509req#1 ++msgctxt "db_x509req#1" ++msgid "Signed" ++msgstr "Signé" ++ ++#: db_x509req#2 ++msgid "whether the request is already signed or not" ++msgstr "si la requête a déjà été signée ou non" ++ ++#: db_x509req#3 ++msgid "Unstructured name" ++msgstr "Nom non-structuré" ++ ++#: db_x509req#4 ++msgid "Challange password" ++msgstr "Mot de passe opposable" ++ ++#: db_x509req#5 ++msgid "" ++"The certificate signing request already exists in the database as\n" ++"'%1'\n" ++"and thus was not stored" ++msgstr "" ++"Cette requête de signature figure déjà dans la base de données sous le nom\n" ++"'%1'\n" ++"En conséquence, elle n'a pas été chargée" ++ ++#: db_x509req#6 ++msgid "Certificate request ( *.pem *.der *.crl )" ++msgstr "Requête de signature de certificat ( *.pem *.der *.crl )" ++ ++#: db_x509req#7 ++msgid "Certificate request export" ++msgstr "Exporter la requête de signature" ++ ++#: db_x509req#8 ++msgid "New Request" ++msgstr "Nouvelle requête" ++ ++#: db_x509req#9 ++msgctxt "db_x509req#9" ++msgid "Import" ++msgstr "Importer" ++ ++#: db_x509req#10 ++msgctxt "db_x509req#10" ++msgid "Extract public Key" ++msgstr "Extraire la clé publique" ++ ++#: db_x509req#11 ++msgctxt "db_x509req#11" ++msgid "Rename" ++msgstr "Renommer" ++ ++#: db_x509req#12 ++msgctxt "db_x509req#12" ++msgid "Show Details" ++msgstr "Afficher les Détails" ++ ++#: db_x509req#13 ++msgctxt "db_x509req#13" ++msgid "Sign" ++msgstr "Signer" ++ ++#: db_x509req#14 ++msgctxt "db_x509req#14" ++msgid "Export" ++msgstr "Exporter" ++ ++#: db_x509req#15 ++msgctxt "db_x509req#15" ++msgid "File" ++msgstr "Fichier" ++ ++#: db_x509req#16 ++msgctxt "db_x509req#16" ++msgid "Template" ++msgstr "Modèle" ++ ++#: db_x509req#17 ++msgctxt "db_x509req#17" ++msgid "Delete" ++msgstr "Détruire" ++ ++#: db_x509super#1 ++msgid "Key name" ++msgstr "Nom de la clé" ++ ++#: db_x509super#2 ++msgid "Internal name of the key" ++msgstr "Nom interne de la clé" ++ ++#: db_x509super#3 ++msgid "The following extensions were not ported into the template" ++msgstr "Les extensions suivantes n'ont pas été enregistrées dans le modèle" ++ ++#: kvView#1 ++msgctxt "kvView#1" ++msgid "Type" ++msgstr "Type" ++ ++#: kvView#2 ++msgid "Content" ++msgstr "Contenu" ++ ++#: pass_info#1 ++msgctxt "pass_info#1" ++msgid "Password" ++msgstr "Mot de passe" ++ ++#: pass_info#2 ++msgctxt "pass_info#2" ++msgid "PIN" ++msgstr "NIP" ++ ++#: pki_base#1 ++msgctxt "pki_base#1" ++msgid "Error opening file: '%1': %2" ++msgstr "Erreur à l'ouverture du fichier '%1': %2" ++ ++#: pki_base#2 ++msgid "Error: " ++msgstr "Erreur: " ++ ++#: pki_base#3 ++msgid "Internal error: Unexpected message: %1 %2" ++msgstr "Erreur interne: message inattendu: %1 %2" ++ ++#: pki_crl#1 ++msgid "Successfully imported the revokation list '%1'" ++msgstr "La liste de révocation '%1' a été importée avec succès" ++ ++#: pki_crl#2 ++msgid "Delete the revokation list '%1'?" ++msgstr "Détruire la liste de révocation '%1' ?" ++ ++#: pki_crl#3 ++msgid "Successfully created the revokation list '%1'" ++msgstr "La liste de révocation '%1' a été créée avec succès" ++ ++#: pki_crl#4 ++msgid "Delete the %1 revokation lists: %2?" ++msgstr "Détruire les %1 listes de révocation: %2 ?" ++ ++#: pki_crl#5 ++msgid "" ++"Unable to load the revokation list in file %1. Tried PEM and DER formatted " ++"CRL." ++msgstr "" ++"Impossible de charger le liste de révocation du fichier %1. Les formats PEM " ++"et DER ont été essayés." ++ ++#: pki_crl#6 ++msgid "No issuer given" ++msgstr "Aucun signataire spécifié" ++ ++#: pki_crl#7 ++msgctxt "pki_crl#7" ++msgid "Wrong Size %1" ++msgstr "Taille fausse %1" ++ ++#: pki_crl#8 ++msgid "unknown" ++msgstr "inconnu" ++ ++#: pki_evp#1 ++msgid "Failed to decrypt the key (bad password) " ++msgstr "Le décryptage de la clé a échoué (mauvais mot de passe)." ++ ++#: pki_evp#2 ++msgid "" ++"Unable to load the private key in file %1. Tried PEM and DER private, public " ++"and PKCS#8 key types." ++msgstr "" ++"Impossible de charger la clé privée du fichier %1. Les formats PEM et DER " ++"ainsi que les types de clés privé, public et PKCS#8 ont été essayés." ++ ++#: pki_evp#3 ++msgid "Password input aborted" ++msgstr "Saisie du mot de passe abandonnée" ++ ++#: pki_evp#4 ++msgid "Please enter the database password for decrypting the key '%1'" ++msgstr "" ++"SVP saisir le mot de basse de la base de données pour décrypter la clé '%1'" ++ ++#: pki_evp#5 ++msgid "Please enter the password to protect the private key: '%1'" ++msgstr "SVP saisir le mot de pass pour protéger la clé privée: '%1'" ++ ++#: pki_evp#6 ++msgid "Please enter the database password for encrypting the key" ++msgstr "SVP saisir le mot de passe de la base de données pour encrypter la clé" ++ ++#: pki_evp#7 ++msgid "Please enter the password protecting the PKCS#8 key '%1'" ++msgstr "SVP saisir le mot de passe protégeant la clé en PKCS#8 '%1'" ++ ++#: pki_evp#8 ++msgid "Please enter the export password for the private key '%1'" ++msgstr "SVP saisir le mot de passe d'exportation pour la clé privée '%1'" ++ ++#: pki_key#1 ++msgid "Successfully imported the %1 public key '%2'" ++msgstr "Les %1 clés publiques '%2' ont été importées avec succès" ++ ++#: pki_key#2 ++msgid "Delete the %1 public key '%2'?" ++msgstr "Détruire les %1 clés publiques '%2' ?" ++ ++#: pki_key#3 ++msgid "Successfully imported the %1 private key '%2'" ++msgstr "Les %1 clés privées '%2' ont été importées avec succès" ++ ++#: pki_key#4 ++msgid "Delete the %1 private key '%2'?" ++msgstr "Détruire les %1 clés privées '%2' ?" ++ ++#: pki_key#5 ++msgid "Successfully created the %1 private key '%2'" ++msgstr "Les %1 clés privées '%2' ont été créées avec succès" ++ ++#: pki_key#6 ++msgctxt "pki_key#6" ++msgid "Delete the %1 keys: %2?" ++msgstr "Détruire les %1 clés: '%2' ?" ++ ++#: pki_key#7 ++msgid "public key" ++msgstr "clé publique" ++ ++#: pki_key#8 ++msgid "Common" ++msgstr "Commun" ++ ++#: pki_key#9 ++msgid "Private" ++msgstr "Privé" ++ ++#: pki_key#10 ++msgid "Bogus" ++msgstr "Erroné" ++ ++#: pki_key#11 ++msgctxt "pki_key#11" ++msgid "PIN" ++msgstr "NIP" ++ ++#: pki_key#12 ++msgid "No password" ++msgstr "Pas de mot de passe" ++ ++#: pki_multi#1 ++msgid "Seek failed" ++msgstr "Un \"seek\" a échoué" ++ ++#: pki_pkcs12#1 ++msgid "Please enter the password to decrypt the PKCS#12 file." ++msgstr "SVP saisir le mot de passe pour décrypter le fichier en PKCS#12." ++ ++#: pki_pkcs12#2 ++msgid "Unable to load the PKCS#12 (pfx) file %1." ++msgstr "Impossible de charger le fichier en PKCS#12 (pfx) %1." ++ ++#: pki_pkcs12#3 ++msgid "The supplied password was wrong (%1)" ++msgstr "Le mot de passe renseigné était faux (%1)" ++ ++#: pki_pkcs12#4 ++msgid "Please enter the password to encrypt the PKCS#12 file" ++msgstr "SVP saisir le mot de passe pour encrypter le fichier en PKCS#12" ++ ++#: pki_pkcs12#5 ++msgid "No key or no Cert and no pkcs12" ++msgstr "Pas de clé ou pas de certificat et pas en PKCS#12" ++ ++#: pki_pkcs7#1 ++msgid "Unable to load the PKCS#7 file %1. Tried PEM and DER format." ++msgstr "" ++"Impossible de charger le fichier en PKCS#7 %1. Les formats PEM et DER ont " ++"été essayés." ++ ++#: pki_scard#1 ++msgid "Successfully imported the token key '%1'" ++msgstr "La clé du jeton '%1' a été importée avec succès" ++ ++#: pki_scard#2 ++msgid "Delete the token key '%1'?" ++msgstr "Détruire la clé du jeton '%1' ?" ++ ++#: pki_scard#3 ++msgid "Successfully created the token key '%1'" ++msgstr "La clé du jeton '%1' a été créée avec succès" ++ ++#: pki_scard#4 ++msgctxt "pki_scard#4" ++msgid "Delete the %1 keys: %2?" ++msgstr "Détruire les %1 clés: '%2' ?" ++ ++#: pki_scard#5 ++msgid "Delete the private key '%1' from the token '%2 (#%3)' ?" ++msgstr "Détruire la clé privée '%1' sur le jeton '%2 (#%3)' ?" ++ ++#: pki_scard#6 ++msgid "only RSA keys can be stored on tokens" ++msgstr "Seules des clés RSA peuvent être enregistrées sur les jetons" ++ ++#: pki_scard#7 ++msgid "This Key is already on the token" ++msgstr "Cette clé est déjà sur le jeton" ++ ++#: pki_scard#8 ++msgid "PIN input aborted" ++msgstr "Saisie du NIP abandonnée" ++ ++#: pki_scard#9 ++msgid "Unable to find copied key on the token" ++msgstr "Impossible de trouver la clé copiée sur le jeton" ++ ++#: pki_scard#10 ++msgid "Please insert card: %1 %2 [%3] with Serial: %4" ++msgstr "SVP insérer la carte %1 %2 [%3] avec le numéro de série: %4" ++ ++#: pki_scard#11 ++msgid "Public Key missmatch. Please re-import card" ++msgstr "La clé publique ne correspond pas. Veuillez re-importer la carte" ++ ++#: pki_scard#12 ++msgid "Unable to find generated key on card" ++msgstr "Impossible de trouver la clé générée sur la carte" ++ ++#: pki_scard#13 ++msgctxt "pki_scard#13" ++msgid "Wrong Size %1" ++msgstr "Taille fausse %1" ++ ++#: pki_scard#14 ++msgid "Token %1" ++msgstr "Jeton %1" ++ ++#: pki_scard#15 ++msgid "Failed to find the key on the token" ++msgstr "Impossible de trouver la clé sur le jeton" ++ ++#: pki_scard#16 ++msgid "Invalid Pin for the token" ++msgstr "NIP invalide pour le jeton" ++ ++#: pki_temp#1 ++msgid "Successfully imported the XCA template '%1'" ++msgstr "Le modèle XCA '%1' a été importé avec succès" ++ ++#: pki_temp#2 ++msgid "Delete the XCA template '%1'?" ++msgstr "Détruire le modèle XCA '%1' ?" ++ ++#: pki_temp#3 ++msgid "Successfully created the XCA template '%1'" ++msgstr "Le modèle XCA '%1' a été créé avec succès" ++ ++#: pki_temp#4 ++msgid "Delete the %1 XCA templates: %2?" ++msgstr "Détruire les %1 modèles XCA: %2 ?" ++ ++#: pki_temp#5 ++msgctxt "pki_temp#5" ++msgid "Wrong Size %1" ++msgstr "Taille fausse %1" ++ ++#: pki_temp#6 ++msgid "Template file content error (too small): %1" ++msgstr "erreur de contenu du fichier de modèle (trop petit): %1" ++ ++#: pki_temp#7 ++msgid "Template file content error (bad size): %1 " ++msgstr "erreur de contenu du fichier de modèle (mauvaise taille): %1" ++ ++#: pki_temp#8 ++msgid "Template file content error (bad length) :%1" ++msgstr "erreur de contenu du fichier de modèle (mauvaise longueur): %1" ++ ++#: pki_x509#1 ++msgid "Successfully imported the certificate '%1'" ++msgstr "Le certificat '%1' a été importée avec succès" ++ ++#: pki_x509#2 ++msgid "Delete the certificate '%1'?" ++msgstr "Détruire le certificat '%1' ?" ++ ++#: pki_x509#3 ++msgid "Successfully created the certificate '%1'" ++msgstr "Le certificat '%1' a été créé avec succès" ++ ++#: pki_x509#4 ++msgid "Delete the %1 certificates: %2?" ++msgstr "Détruire les %1 certificats: '%2' ?" ++ ++#: pki_x509#5 ++msgid "" ++"Unable to load the certificate in file %1. Tried PEM and DER certificate." ++msgstr "" ++"Impossible de charge le certificat du fichier %1. Les formats PEM et DER ont " ++"été essayés." ++ ++#: pki_x509#6 ++msgid "This certificate is already on the security token" ++msgstr "Ce certificat est déjà dans le jeton de sécurité" ++ ++#: pki_x509#7 ++msgid "Delete the certificate '%1' from the token '%2 (#%3)'?" ++msgstr "Détruire le certificat '%1' sur le jeton '%2 (#%3)' ?" ++ ++#: pki_x509#8 ++msgid "There is no key for signing !" ++msgstr "Il n'y a pas de clé pour signer !" ++ ++#: pki_x509#9 ++msgctxt "pki_x509#9" ++msgid "Wrong Size %1" ++msgstr "Taille fausse %1" ++ ++#: pki_x509#10 ++msgctxt "pki_x509#10" ++msgid "Not trusted" ++msgstr "Pas sûr" ++ ++#: pki_x509#11 ++msgid "Trust inherited" ++msgstr "Confiance héritée" ++ ++#: pki_x509#12 ++msgid "Always Trusted" ++msgstr "Sûr" ++ ++#: pki_x509#13 ++msgid "CRL expires: %1" ++msgstr "La liste de révocation expire le %1" ++ ++#: pki_x509#14 ++msgid "No" ++msgstr "Non" ++ ++#: pki_x509#15 ++msgid "Yes" ++msgstr "Oui" ++ ++#: pki_x509req#1 ++msgid "Signing key not valid (public key)" ++msgstr "La clé de signature n'est pas valide (c'est une clé publique)" ++ ++#: pki_x509req#2 ++msgid "Successfully imported the %1 certificate request '%2'" ++msgstr "Les %1 requêtes de signature '%2' ont été importées avec succès" ++ ++#: pki_x509req#3 ++msgid "Delete the %1 certificate request '%2'?" ++msgstr "Détruire les %1 requêtes de signature '%2' ?" ++ ++#: pki_x509req#4 ++msgid "Successfully created the %1 certificate request '%2'" ++msgstr "Les %1 requêtes de signature '%2' ont été créées avec succès" ++ ++#: pki_x509req#5 ++msgid "Delete the %1 certificate requests: %2?" ++msgstr "Détruire les %1 requêtes de signature '%2' ?" ++ ++#: pki_x509req#6 ++msgid "" ++"Unable to load the certificate request in file %1. Tried PEM, DER and SPKAC " ++"format." ++msgstr "" ++"Impossible de charger la requête de signature du fichier %1. Les formats " ++"PEM, DER et SPKAC ont été essayés." ++ ++#: pki_x509req#7 ++msgctxt "pki_x509req#7" ++msgid "Signed" ++msgstr "Signé" ++ ++#: pki_x509req#8 ++msgid "Unhandled" ++msgstr "Non-géré" ++ ++#: pki_x509req#9 ++msgctxt "pki_x509req#9" ++msgid "Wrong Size %1" ++msgstr "Taille fausse %1" ++ ++#: v3ext#1 ++msgctxt "v3ext#1" ++msgid "Add" ++msgstr "Ajouter" ++ ++#: v3ext#2 ++msgctxt "v3ext#2" ++msgid "Delete" ++msgstr "Détruire" ++ ++#: v3ext#3 ++msgctxt "v3ext#3" ++msgid "Apply" ++msgstr "Appliquer" ++ ++#: v3ext#4 ++msgctxt "v3ext#4" ++msgid "Validate" ++msgstr "Valider" ++ ++#: v3ext#5 ++msgctxt "v3ext#5" ++msgid "Cancel" ++msgstr "Abandonner" ++ ++#: v3ext#6 ++msgid "An email address or 'copy'" ++msgstr "Une adresse de courriel ou 'copy'" ++ ++#: v3ext#7 ++msgid "An email address" ++msgstr "Une adresse de courriel" ++ ++#: v3ext#8 ++msgid "a registered ID: OBJECT IDENTIFIER" ++msgstr "un IDentifiant enregistré: IDENTIFICATEUR.OBJET" ++ ++#: v3ext#9 ++msgid "a uniform resource indicator" ++msgstr "un indicateur uniforme de ressource" ++ ++#: v3ext#10 ++msgid "a DNS domain name" ++msgstr "u nom de domaine DNS" ++ ++#: v3ext#11 ++msgid "an IP address" ++msgstr "une adresse IP" ++ ++#: v3ext#12 ++msgid "Syntax: ;TYPE:text like '1.2.3.4:UTF8:name'" ++msgstr "Syntaxe: ;TYPE:texte comme '1.2.3.4:UTF8:nom'" ++ ++#: v3ext#13 ++msgid "No editing. Only 'copy' allowed here" ++msgstr "Pas de modification possible. Seul 'copy' est permis ici" ++ ++#: v3ext#14 ++msgid "" ++"Validation failed:\n" ++"'%1'\n" ++"%2" ++msgstr "" ++"La validation a échoué:\n" ++"'%1'\n" ++"%2" ++ ++#: v3ext#15 ++msgid "" ++"Validation successfull:\n" ++"'%1'" ++msgstr "" ++"La validation a été effectuée avec succès:\n" ++"'%1'" ++ ++#: void#1 ++msgctxt "void#1" ++msgid "There was no key found for the Certificate: " ++msgstr "Aucune clé n'a été trouvée pour le Certificat: " ++ ++#: void#2 ++msgctxt "void#2" ++msgid "Import Certificate signing request" ++msgstr "Importer une requête de signature" +diff -Naur xca-0.9.0.orig/lang/Makefile xca-0.9.0.new/lang/Makefile +--- xca-0.9.0.orig/lang/Makefile 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/lang/Makefile 2011-02-25 16:42:38.063627556 +0100 +@@ -3,7 +3,7 @@ + TOPDIR=.. + endif + +-PO_LANGUAGES=es ++PO_LANGUAGES=es fr + LANGUAGES=de ru $(PO_LANGUAGES) + QM_XCA=$(patsubst %, xca_%.qm, $(LANGUAGES)) + QM_QT=$(patsubst %, qt_%.qm, $(LANGUAGES)) +diff -Naur xca-0.9.0.orig/misc/xca.desktop xca-0.9.0.new/misc/xca.desktop +--- xca-0.9.0.orig/misc/xca.desktop 2011-02-24 16:58:29.000000000 +0100 ++++ xca-0.9.0.new/misc/xca.desktop 2011-02-25 17:10:17.513801650 +0100 +@@ -5,6 +5,7 @@ + Comment=A graphical user interface for handling and issuing X.509 compliant Certificates + Comment[de]=Eine graphische Oberfläche zur Erstellung von X.509 konformen Zertifikaten + Comment[fi]=Graafinen X.509-varmenteiden hallintatyökalu ++Comment[fr]=Création et gestion de certificats conformes à la norme X.509 + Exec=xca + Icon=xca-32x32.xpm + Terminal=false diff --git a/xca-0.9.0-locale.patch b/xca-0.9.0-locale.patch new file mode 100644 index 0000000..3685b75 --- /dev/null +++ b/xca-0.9.0-locale.patch @@ -0,0 +1,20 @@ +diff -Naur xca-0.9.0.orig/lib/main.cpp xca-0.9.0.new/lib/main.cpp +--- xca-0.9.0.orig/lib/main.cpp 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/lib/main.cpp 2011-02-28 13:22:24.083587071 +0100 +@@ -40,10 +40,15 @@ + locale = QLocale::system().name(); + + dirs << getPrefix() ++#ifdef XCA_DEFAULT_QT_TRANSLATE ++ << XCA_DEFAULT_QT_TRANSLATE ++#endif ++#ifndef WIN32 + << "/usr/local/share/qt4/translations/" + << "/usr/share/qt4/translations/" + << "/usr/share/qt/translations/" +- << "."; ++#endif ++ ; + + foreach(QString dir, dirs) { + if (qtTr.load(QString("qt_%1").arg(locale), dir)) { diff --git a/xca-0.9.0-noec.patch b/xca-0.9.0-noec.patch new file mode 100644 index 0000000..bda0cc3 --- /dev/null +++ b/xca-0.9.0-noec.patch @@ -0,0 +1,303 @@ +diff -Naur xca-0.9.0.orig/configure xca-0.9.0.new/configure +--- xca-0.9.0.orig/configure 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/configure 2011-02-28 12:30:48.060564861 +0100 +@@ -140,14 +140,12 @@ + cat >conftest.c < + #include +-//#include ++#include + #include + + int main(){ + printf("\nThe Versions of the used libraries are:\n\t%s 0x%lxL\n\tQT: %s\n", +-// "\tOpenSC: %s\n", + OPENSSL_VERSION_TEXT, OPENSSL_VERSION_NUMBER, QT_VERSION_STR +-// , sc_get_version() + ); + + if (QT_VERSION < 0x040300) { +@@ -158,6 +156,12 @@ + printf("You need OpenSSL >= 0.9.8 or higher\n"); + return 1; + } ++ ++#ifdef OPENSSL_NO_EC ++ printf("\n### This OpenSSL installation has no EC cryptography support\n"); ++#endif ++ ++ puts("\n"); + return 0; + } + EOF +diff -Naur xca-0.9.0.orig/lib/pki_evp.cpp xca-0.9.0.new/lib/pki_evp.cpp +--- xca-0.9.0.orig/lib/pki_evp.cpp 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/lib/pki_evp.cpp 2011-02-28 12:25:18.768851651 +0100 +@@ -27,9 +27,11 @@ + + QPixmap *pki_evp::icon[2]= { NULL, NULL }; + ++#ifndef OPENSSL_NO_EC + EC_builtin_curve *pki_evp::curves = NULL; + size_t pki_evp::num_curves = 0; + unsigned char *pki_evp::curve_flags = NULL; ++#endif + + void pki_evp::erasePasswd() + { +@@ -101,7 +103,9 @@ + { + RSA *rsakey; + DSA *dsakey; ++#ifndef OPENSSL_NO_EC + EC_KEY *eckey; ++#endif + + progress->setMinimum(0); + progress->setMaximum(100); +@@ -122,6 +126,7 @@ + if (dsakey) + EVP_PKEY_assign_DSA(key, dsakey); + break; ++#ifndef OPENSSL_NO_EC + case EVP_PKEY_EC: + EC_GROUP *group = EC_GROUP_new_by_curve_name(curve_nid); + if (!group) +@@ -142,6 +147,7 @@ + EC_KEY_free(eckey); + EC_GROUP_free(group); + break; ++#endif + } + pki_openssl_error(); + encryptKey(); +@@ -180,8 +186,10 @@ + return key->pkey.rsa->d ? true: false; + case EVP_PKEY_DSA: + return key->pkey.dsa->priv_key ? true: false; ++#ifndef OPENSSL_NO_EC + case EVP_PKEY_EC: + return EC_KEY_get0_private_key(key->pkey.ec) ? true: false; ++#endif + } + return false; + } +@@ -226,6 +234,7 @@ + openssl_error(name); + } + ++#ifndef OPENSSL_NO_EC + static void search_ec_oid(EC_KEY *ec) + { + const EC_GROUP *ec_group = EC_KEY_get0_group(ec); +@@ -250,6 +259,7 @@ + } + } + } ++#endif + + void pki_evp::fload(const QString fname) + { +@@ -311,8 +321,10 @@ + throw errorEx(tr("Unable to load the private key in file %1. Tried PEM and DER private, public and PKCS#8 key types.").arg(fname)); + } + if (pkey){ ++#ifndef OPENSSL_NO_EC + if (pkey->type == EVP_PKEY_EC) + search_ec_oid(pkey->pkey.ec); ++#endif + if (key) + EVP_PKEY_free(key); + key = pkey; +@@ -659,7 +671,9 @@ + switch (key->type) { + case EVP_PKEY_RSA: md = EVP_sha1(); break; + case EVP_PKEY_DSA: md = EVP_dss1(); break; ++#ifndef OPENSSL_NO_EC + case EVP_PKEY_EC: md = EVP_ecdsa(); break; ++#endif + default: md = NULL; break; + } + return md; +diff -Naur xca-0.9.0.orig/lib/pki_evp.h xca-0.9.0.new/lib/pki_evp.h +--- xca-0.9.0.orig/lib/pki_evp.h 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/lib/pki_evp.h 2011-02-28 12:25:18.769851580 +0100 +@@ -37,9 +37,11 @@ + static void setOldPasswd(const char *pass); + static QString md5passwd(const char *pass); + static QString sha512passwd(QString pass, QString salt); ++#ifndef OPENSSL_NO_EC + static EC_builtin_curve *curves; + static size_t num_curves; + static unsigned char *curve_flags; ++#endif + + void generate(int bits, int type, QProgressBar *progress); + void generate(int bits, int type, QProgressBar *progress, +diff -Naur xca-0.9.0.orig/lib/pki_key.cpp xca-0.9.0.new/lib/pki_key.cpp +--- xca-0.9.0.orig/lib/pki_key.cpp 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/lib/pki_key.cpp 2011-02-28 12:25:18.769851580 +0100 +@@ -210,6 +210,7 @@ + return QString(); + } + ++#ifndef OPENSSL_NO_EC + int pki_key::ecParamNid() + { + if (key->type != EVP_PKEY_EC) +@@ -232,6 +233,7 @@ + } + return pub; + } ++#endif + + bool pki_key::compare(pki_base *ref) + { +diff -Naur xca-0.9.0.orig/lib/pki_scard.cpp xca-0.9.0.new/lib/pki_scard.cpp +--- xca-0.9.0.orig/lib/pki_scard.cpp 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/lib/pki_scard.cpp 2011-02-28 12:36:50.761408182 +0100 +@@ -113,6 +113,7 @@ + EVP_PKEY_assign_DSA(pkey, dsa); + break; + } ++#ifndef OPENSSL_NO_EC + case CKK_EC: { + EC_KEY *ec = EC_KEY_new(); + +@@ -137,6 +138,7 @@ + EVP_PKEY_assign_EC_KEY(pkey, ec); + break; + } ++#endif + default: + throw errorEx(QString("Unsupported CKA_KEY_TYPE: %1\n").arg(keytype)); + } +@@ -368,7 +370,9 @@ + switch (mech_list[i]) { + case CKM_MD5_RSA_PKCS: nids << NID_md5; break; + case CKM_DSA_SHA1: ++#ifndef OPENSSL_NO_EC + case CKM_ECDSA_SHA1: ++#endif + case CKM_SHA1_RSA_PKCS: nids << NID_sha1; break; + case CKM_SHA256_RSA_PKCS: nids << NID_sha256; break; + case CKM_SHA384_RSA_PKCS: nids << NID_sha384; break; +@@ -389,8 +393,10 @@ + return EVP_sha1(); + if (mech_list.contains(CKM_DSA_SHA1)) + return EVP_dss1(); ++#ifndef OPENSSL_NO_EC + if (mech_list.contains(CKM_ECDSA_SHA1)) + return EVP_ecdsa(); ++#endif + if (mech_list.contains(CKM_SHA512_RSA_PKCS)) + return EVP_sha512(); + if (mech_list.contains(CKM_SHA384_RSA_PKCS)) +diff -Naur xca-0.9.0.orig/widgets/hashBox.cpp xca-0.9.0.new/widgets/hashBox.cpp +--- xca-0.9.0.orig/widgets/hashBox.cpp 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/widgets/hashBox.cpp 2011-02-28 12:25:18.769851580 +0100 +@@ -40,8 +40,10 @@ + switch(key_type) { + case EVP_PKEY_DSA: + return EVP_dss1(); ++#ifndef OPENSSL_NO_EC + case EVP_PKEY_EC: + return EVP_ecdsa(); ++#endif + default: + QString hash = currentText(); + for (unsigned i=0; isetReadOnly(true); + } + ++#ifndef OPENSSL_NO_EC + static QString CurveComment(int nid) + { + for (size_t i=0; isetText(key->subprime()); + keyModulus->setText(key->pubkey()); + break; ++#ifndef OPENSSL_NO_EC + case EVP_PKEY_EC: + nid = key->ecParamNid(); + tlModulus->setText(tr("Public key")); +@@ -83,6 +86,7 @@ + keyPubEx->setToolTip(CurveComment(nid)); + keyModulus->setText(key->ecPubKey()); + break; ++#endif + default: + tlHeader->setText(tr("Unknown key")); + } +diff -Naur xca-0.9.0.orig/widgets/MainWindow.cpp xca-0.9.0.new/widgets/MainWindow.cpp +--- xca-0.9.0.orig/widgets/MainWindow.cpp 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/widgets/MainWindow.cpp 2011-02-28 12:39:47.453229550 +0100 +@@ -99,6 +99,7 @@ + NID_secp521r1 + }; + ++#ifndef OPENSSL_NO_EC + static void init_curves() + { + pki_evp::num_curves = EC_get_builtin_curves(NULL, 0); +@@ -130,6 +131,7 @@ + } + } + } ++#endif + + void MainWindow::enableTokenMenu(bool enable) + { +@@ -185,7 +187,9 @@ + init_images(); + homedir = getHomeDir(); + ++#ifndef OPENSSL_NO_EC + init_curves(); ++#endif + + #ifdef MDEBUG + CRYPTO_malloc_debug_init(); +diff -Naur xca-0.9.0.orig/widgets/NewKey.cpp xca-0.9.0.new/widgets/NewKey.cpp +--- xca-0.9.0.orig/widgets/NewKey.cpp 2010-08-29 10:28:32.000000000 +0200 ++++ xca-0.9.0.new/widgets/NewKey.cpp 2011-02-28 12:25:18.770851497 +0100 +@@ -24,7 +24,9 @@ + static const struct typelist typeList[] = { + { "RSA", EVP_PKEY_RSA }, + { "DSA", EVP_PKEY_DSA }, ++#ifndef OPENSSL_NO_EC + { "EC", EVP_PKEY_EC }, ++#endif + }; + + class keyListItem +@@ -98,6 +100,7 @@ + keytypes << gk; + } + ++#ifndef OPENSSL_NO_EC + for (i = 0; iaddItems(curve_x962); + curveBox->addItems(curve_other); ++#endif ++ + keyLength->setCurrentIndex(0); + keyDesc->setFocus(); + if (pkcs11::loaded()) try { diff --git a/xca.spec b/xca.spec index cd9279f..db1a85b 100644 --- a/xca.spec +++ b/xca.spec @@ -1,140 +1,159 @@ %{!?release_func:%global release_func() %1%{?dist}} -%{!?apply:%global apply(p:n:b:) %patch%%{-n:%%{-n*}} %%{-p:-p %%{-p*}} %%{-b:-b %%{-b*}} \ -%nil} Summary: Graphical X.509 certificate management tool Name: xca -Version: 0.8.1 -Release: %release_func 1401 +Version: 0.9.0 +Release: %release_func 1 License: BSD Group: Applications/Productivity URL: http://www.hohnstaedt.de/xca.html -Source0: http://download.sourceforge.net/sourceforge/xca/%name-%version.tar.gz +Source0: http://downloads.sourceforge.net/sourceforge/xca/%{name}-%{version}.tar.gz Source1: README.update -Source4: xca.xml -Patch0: xca-0.7.0-locale.patch -Patch2: xca-0.6.4-includes.patch -Patch3: xca-0.6.4-openssl10.patch -Patch4: xca-0.8.0-noec.patch -BuildRoot: %_tmppath/%name-%version-%release-buildroot +Patch1: xca-0.9.0-locale.patch +Patch2: xca-0.9.0-noec.patch +Patch3: xca-0.9.0-french.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: qt4-devel openssl-devel -BuildRequires: db4-devel BuildRequires: xdg-utils BuildRequires: ImageMagick BuildRequires: linuxdoc-tools BuildRequires: libtool-ltdl-devel +BuildRequires: translate-toolkit Requires: hicolor-icon-theme Requires(posttrans): shared-mime-info Requires(postun): shared-mime-info %description -The Program uses a Berkeley db for storage and supports RSA keys. -Certificate signing requests (PKCS#10) and Certificates (X509v3), the -signing of requests, and the creation of selfsigned certificates is -supported. Both can use templates for simplicity. The PKI structures -can be imported and exported in several formats like PKCS#7, PKCS#12, -PEM, DER, PKCS#8. + X Certificate and Key management is a graphic interface for managing +asymmetric keys like RSA or DSA, certificates and revocation lists. It is +intended as a small CA for creation and signing certificates. It uses the +OpenSSL library for the cryptographic operations. + Certificate signing requests (PKCS#10), certificates (X509v3), the signing +of requests, the creation of self-signed certificates, certificate revocation +lists and SmartCards are supported. For an easy company-wide use, customizable +templates can be used for certificate and request generation. The PKI structures +can be imported and exported in several formats like PKCS#7, PKCS#12, PEM, +DER, PKCS#8. All cryptographic data are stored in a byte order agnostic file +format, portable across operating systems. %prep %setup -q -%apply -n0 -p1 -%apply -n2 -p1 -%apply -n3 -p1 -%apply -n4 -p1 +%patch1 -p 1 -b .locale +%patch2 -p 1 -b .noec +%patch3 -p 1 -b .french mkdir -p _tmp_root/usr -ln -s /usr/%_lib _tmp_root/usr/lib -ln -s /%_lib _tmp_root/lib -ln -s %_includedir/Qt _tmp_root/include +ln -s "/usr/%{_lib}" _tmp_root/usr/lib +ln -s "/%{_lib}" _tmp_root/lib +ln -s "%{_includedir}/Qt" _tmp_root/include -install -p -m644 %SOURCE1 '.' +install -p -m 644 "%{SOURCE1}" ./ -sed -i -e 's!xca\.xpm!fedora-xca!g;s!^Exec=.*!\0 %f!' misc/xca.desktop +sed -i -e 's!^Exec=.*!\0 %F!' misc/xca.desktop %build -#test -n "$QTDIR" || . %_sysconfdir/profile.d/qt.sh -export QTDIR=%_libdir/qt4 -CC='%__cxx' LD='%__ld' CFLAGS="$RPM_OPT_FLAGS -DDISABLE_EC -DXCA_DEFAULT_TRANSLATE=\\\"%_datadir/qt4/translations\\\"" \ -STRIP=: prefix=%_prefix LIBS="-Wl,-as-needed `pkg-config --libs QtGui`" \ -./configure `pwd`/_tmp_root{,/usr} +#test -n "${QTDIR}" || . "%{_sysconfdir}/profile.d/qt.sh" +export QTDIR="%{_libdir}/qt4" +CC='%{__cxx}' LD='%{__ld}' CFLAGS="${RPM_OPT_FLAGS} \ + -DXCA_DEFAULT_QT_TRANSLATE=\"\\\"%{_datadir}/qt4/translations\\\"\"" \ + STRIP=: prefix="%{_prefix}" \ + LIBS="-Wl,-as-needed `pkg-config --libs QtGui`" \ + ./configure "`pwd`/"_tmp_root{,/usr} make %{?_smp_mflags} convert img/xca.ico xca.png +touch -r img/xca.ico xca.png convert img/xdb.ico xdb.png +touch -r img/xdb.ico xdb.png + +iconv -f iso8859-1 -t utf8 AUTHORS > AUTHORS.utf8 +touch -r AUTHORS AUTHORS.utf8 +mv AUTHORS.utf8 AUTHORS %install -rm -rf "$RPM_BUILD_ROOT" +rm -rf "${RPM_BUILD_ROOT}" -make destdir="$RPM_BUILD_ROOT" mandir=share/man install -make destdir="$RPM_BUILD_ROOT" mandir=share/man install -C misc TOPDIR=.. +make destdir="${RPM_BUILD_ROOT}" mandir=share/man install +make destdir="${RPM_BUILD_ROOT}" mandir=share/man install -C misc TOPDIR=.. # HACK: check whether workarounds below are still necessary -test ! -e $RPM_BUILD_ROOT%_datadir/xca/crl.png +if test ! -e "${RPM_BUILD_ROOT}%{_datadir}/xca/crl.png" +then install -d -m 755 \ + "${RPM_BUILD_ROOT}%{_datadir}/"{applications,mime/packages,icons/hicolor} + install -p -m 644 img/*.png "${RPM_BUILD_ROOT}%{_datadir}/xca" +fi -install -d -m755 $RPM_BUILD_ROOT%_datadir/{applications,mime/packages,icons/hicolor} -install -p -m644 img/*.png $RPM_BUILD_ROOT%_datadir/xca -install -p -m644 %SOURCE4 $RPM_BUILD_ROOT%_datadir/mime/packages/ +install -p -m 644 misc/xca.xml "${RPM_BUILD_ROOT}%{_datadir}/mime/packages/" -export XDG_DATA_DIRS=$RPM_BUILD_ROOT%_datadir +export XDG_DATA_DIRS="${RPM_BUILD_ROOT}%{_datadir}" export XDG_UTILS_INSTALL_MODE=system -xdg-icon-resource install --noupdate --context mimetypes --size 32 xdb.png application-x-xca-database -xdg-icon-resource install --noupdate --size 32 xca.png fedora-xca +xdg-icon-resource install --noupdate --context mimetypes \ + --size 32 xdb.png application-x-xca-database +xdg-icon-resource install --noupdate --size 32 xca.png fedora-xca -desktop-file-install --vendor fedora --mode 0644 \ - --dir $RPM_BUILD_ROOT%_datadir/applications \ - --delete-original \ - --add-mime-type application/x-xca-database \ - --remove-category QT \ - $RPM_BUILD_ROOT%_datadir/applications/xca.desktop +desktop-file-install --vendor fedora --mode 0644 \ + --dir "${RPM_BUILD_ROOT}%{_datadir}/applications" \ + --delete-original \ + --add-mime-type application/x-xca-database \ + --remove-category QT \ + "${RPM_BUILD_ROOT}%{_datadir}/applications/xca.desktop" %clean -rm -rf "$RPM_BUILD_ROOT" +rm -rf "${RPM_BUILD_ROOT}" %post -touch --no-create %_datadir/icons/hicolor || : +touch --no-create "%{_datadir}/icons/hicolor" || : %preun -touch --no-create %_datadir/icons/hicolor || : +touch --no-create "%{_datadir}/icons/hicolor" || : %posttrans -gtk-update-icon-cache %_datadir/icons/hicolor &>/dev/null || : -update-mime-database %_datadir/mime &>/dev/null || : -update-desktop-database &>/dev/null || : +gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : +update-mime-database "%{_datadir}/mime" &> /dev/null || : +update-desktop-database &> /dev/null || : %postun -update-desktop-database &>/dev/null || : -update-mime-database %_datadir/mime &>/dev/null || : -gtk-update-icon-cache %_datadir/icons/hicolor &>/dev/null || : +update-desktop-database &> /dev/null || : +update-mime-database "%{_datadir}/mime" &> /dev/null || : +gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %files -%defattr(-,root,root,-) +%defattr(-, root, root, -) %doc AUTHORS COPYRIGHT README.update -%_bindir/* -%attr(0644,root,root) %_mandir/*/* +%{_bindir}/* %dir %{_datadir}/xca -%_datadir/pixmaps/*.xpm -%_datadir/xca/*.png -%_datadir/xca/*.txt -%_datadir/xca/*.html -%_datadir/xca/*.xca -%_datadir/icons/*/*/*/*.png -%_datadir/mime/packages/%name.* -%lang(de) %_datadir/xca/xca_de.qm -%lang(es) %_datadir/xca/xca_es.qm - -%_datadir/applications/* +%{_datadir}/xca/*.png +%{_datadir}/xca/*.txt +%{_datadir}/xca/*.html +%{_datadir}/xca/*.xca +%lang(de) %{_datadir}/xca/xca_de.qm +%lang(es) %{_datadir}/xca/xca_es.qm +%lang(fr) %{_datadir}/xca/xca_fr.qm +%lang(ru) %{_datadir}/xca/xca_ru.qm +%{_datadir}/pixmaps/*.xpm +%{_datadir}/icons/*/*/*/*.png +%{_datadir}/mime/packages/%{name}.* +%{_datadir}/applications/* +%attr(0644, root, root) %{_mandir}/*/* %changelog +* Mon Feb 28 2011 Patrick Monnerat 0.9.0-1 +- New upstream release. +- Suppress "includes" patch (went upstream). +- Suppress "openssl10" patch (new release is openssl 10 compatible). +- Patches "locale" and "noec" port to new release. +- French localization added. + * Mon Feb 07 2011 Fedora Release Engineering - 0.8.1-1401 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild diff --git a/xca.xml b/xca.xml deleted file mode 100644 index 393ba73..0000000 --- a/xca.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - XCA Database - - - From 68ad39df44eae1f2e841f28aa76993ef98c55e8a Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 28 Feb 2011 18:31:57 +0100 Subject: [PATCH 03/72] * Mon Feb 28 2011 Patrick Monnerat 0.9.0-2 - Fix Exec parameter in desktop file. --- xca.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/xca.spec b/xca.spec index db1a85b..b8b9a32 100644 --- a/xca.spec +++ b/xca.spec @@ -3,7 +3,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 0.9.0 -Release: %release_func 1 +Release: %release_func 2 License: BSD Group: Applications/Productivity @@ -52,7 +52,7 @@ ln -s "%{_includedir}/Qt" _tmp_root/include install -p -m 644 "%{SOURCE1}" ./ -sed -i -e 's!^Exec=.*!\0 %F!' misc/xca.desktop +sed -i -e 's!^Exec=.*!\0 %%F!' misc/xca.desktop %build @@ -147,6 +147,9 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Mon Feb 28 2011 Patrick Monnerat 0.9.0-2 +- Fix Exec parameter in desktop file. + * Mon Feb 28 2011 Patrick Monnerat 0.9.0-1 - New upstream release. - Suppress "includes" patch (went upstream). From ad1b9bdc40072c978489cd3e8437526af13901e5 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 28 Feb 2011 18:37:48 +0100 Subject: [PATCH 04/72] * Mon Feb 28 2011 Patrick Monnerat 0.9.0-2 - Fix Exec parameter in desktop file. --- xca.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/xca.spec b/xca.spec index db1a85b..b8b9a32 100644 --- a/xca.spec +++ b/xca.spec @@ -3,7 +3,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 0.9.0 -Release: %release_func 1 +Release: %release_func 2 License: BSD Group: Applications/Productivity @@ -52,7 +52,7 @@ ln -s "%{_includedir}/Qt" _tmp_root/include install -p -m 644 "%{SOURCE1}" ./ -sed -i -e 's!^Exec=.*!\0 %F!' misc/xca.desktop +sed -i -e 's!^Exec=.*!\0 %%F!' misc/xca.desktop %build @@ -147,6 +147,9 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Mon Feb 28 2011 Patrick Monnerat 0.9.0-2 +- Fix Exec parameter in desktop file. + * Mon Feb 28 2011 Patrick Monnerat 0.9.0-1 - New upstream release. - Suppress "includes" patch (went upstream). From 202ae80603bace13e5cf01f661baf0c2bee707a0 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Tue, 8 Nov 2011 14:02:16 +0100 Subject: [PATCH 05/72] * Tue Nov 8 2011 Patrick Monnerat 0.9.1-1 - New upstream release: all previous patches included in new code. --- .gitignore | 1 + sources | 2 +- xca-0.9.0-french.patch | 3250 ---------------------------------------- xca-0.9.0-locale.patch | 20 - xca-0.9.0-noec.patch | 303 ---- xca.spec | 18 +- 6 files changed, 9 insertions(+), 3585 deletions(-) delete mode 100644 xca-0.9.0-french.patch delete mode 100644 xca-0.9.0-locale.patch delete mode 100644 xca-0.9.0-noec.patch diff --git a/.gitignore b/.gitignore index 71e4422..bbd733a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ xca-0.8.1.tar.gz /xca-0.9.0.tar.gz /README.update +/xca-0.9.1.tar.gz diff --git a/sources b/sources index 64ab1af..4ad2aff 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -ff6e23a0aac6a6d9d10b47d3f9856f1a xca-0.9.0.tar.gz +53926d86ba9fc251b59f0dd154f2e3db xca-0.9.1.tar.gz 113ba37a89fe2de69338fcfe3b773a03 README.update diff --git a/xca-0.9.0-french.patch b/xca-0.9.0-french.patch deleted file mode 100644 index 2eaa0ed..0000000 --- a/xca-0.9.0-french.patch +++ /dev/null @@ -1,3250 +0,0 @@ -diff -Naur xca-0.9.0.orig/lang/fr.po xca-0.9.0.new/lang/fr.po ---- xca-0.9.0.orig/lang/fr.po 1970-01-01 01:00:00.000000000 +0100 -+++ xca-0.9.0.new/lang/fr.po 2011-02-25 17:08:33.620671679 +0100 -@@ -0,0 +1,3223 @@ -+# -+# Patrick Monnerat , 2011. -+# -+msgid "" -+msgstr "" -+"Project-Id-Version: xca 0.9.0\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2010-08-24 07:29+0200\n" -+"PO-Revision-Date: 2011-02-25 16:20+0100\n" -+"Last-Translator: Patrick Monnerat \n" -+"Language-Team: fr \n" -+"MIME-Version: 1.0\n" -+"Content-Type: text/plain; charset=UTF-8\n" -+"Content-Transfer-Encoding: 8bit\n" -+"X-Generator: Translate Toolkit 1.7.0\n" -+ -+#: About#1 -+msgid "Done" -+msgstr "OK" -+ -+#: CaProperties#1 -+msgid "CA Properties" -+msgstr "Propriétés du CA" -+ -+#: CaProperties#2 -+msgid "Use random Serial numbers" -+msgstr "Utiliser des numéros de série aléatoires" -+ -+#: CaProperties#3 -+msgid "Days until next CRL issuing" -+msgstr "" -+"Nombre de jours avant la génération de la prochaine liste de révocation" -+ -+#: CaProperties#4 -+msgid "Default template" -+msgstr "Modèle par défaut" -+ -+#: CaProperties#5 -+msgid "Next serial for signing" -+msgstr "Numéro de série suivant pour la signature" -+ -+#: CertDetail#1 -+msgid "Details of the Certificate" -+msgstr "Détails du Certificat" -+ -+#: CertDetail#2 -+msgid "S&tatus" -+msgstr "E&tat" -+ -+#: CertDetail#3 -+msgctxt "CertDetail#3" -+msgid "Serial" -+msgstr "Numéro de série" -+ -+#: CertDetail#4 -+msgid "The serial number of the certificate" -+msgstr "Le numéro de série du certificat" -+ -+#: CertDetail#5 -+msgid "The internal name of the certificate in the database" -+msgstr "Le nom interne du certificat dans la base de données" -+ -+#: CertDetail#6 -+msgctxt "CertDetail#6" -+msgid "Internal name" -+msgstr "Nom interne" -+ -+#: CertDetail#7 -+msgctxt "CertDetail#7" -+msgid "Signature algorithm" -+msgstr "Algorithme de signature" -+ -+#: CertDetail#8 -+msgctxt "CertDetail#8" -+msgid "Signature" -+msgstr "Signature" -+ -+#: CertDetail#9 -+msgctxt "CertDetail#9" -+msgid "Key" -+msgstr "Clé" -+ -+#: CertDetail#10 -+msgid "Fingerprints" -+msgstr "Empreinte" -+ -+#: CertDetail#11 -+msgid "SHA1" -+msgstr "SHA1" -+ -+#: CertDetail#12 -+msgid "MD5" -+msgstr "MD5" -+ -+#: CertDetail#13 -+msgid "A SHA-1 hashsum of the certificate" -+msgstr "La somme de hachage SHA-1 du certificat" -+ -+#: CertDetail#14 -+msgid "An md5 hashsum of the certificate" -+msgstr "La somme de hachage MD5 du certificat" -+ -+#: CertDetail#15 -+msgctxt "CertDetail#15" -+msgid "Validity" -+msgstr "Validité" -+ -+#: CertDetail#16 -+msgid "The time since the certificate is valid" -+msgstr "Le moment depuis lequel le certificat est valide" -+ -+#: CertDetail#17 -+msgid "The time until the certificate is valid" -+msgstr "Le moment auquel le certificat échoit" -+ -+#: CertDetail#18 -+msgid "&Subject" -+msgstr "&Sujet" -+ -+#: CertDetail#19 -+msgctxt "CertDetail#19" -+msgid "&Issuer" -+msgstr "&Emetteur" -+ -+#: CertDetail#20 -+msgid "Attributes" -+msgstr "Attributs" -+ -+#: CertDetail#21 -+msgctxt "CertDetail#21" -+msgid "&Extensions" -+msgstr "E&xtensions" -+ -+#: CertDetail#22 -+msgid "Show config" -+msgstr "Afficher la configuration" -+ -+#: CertDetail#23 -+msgid "Show extensions" -+msgstr "Afficher les extensions" -+ -+#: CertDetail#24 -+msgctxt "CertDetail#24" -+msgid "Not available" -+msgstr "Non disponible" -+ -+#: CertDetail#25 -+msgid "Details of the certificate" -+msgstr "Détails du certificat" -+ -+#: CertDetail#26 -+msgid "Signer unknown" -+msgstr "Signataire inconnu" -+ -+#: CertDetail#27 -+msgid "Self signed" -+msgstr "Auto-signé" -+ -+#: CertDetail#28 -+msgctxt "CertDetail#28" -+msgid "Not trusted" -+msgstr "Pas sûr" -+ -+#: CertDetail#29 -+msgid "Trusted" -+msgstr "Sûr" -+ -+#: CertDetail#30 -+msgid "Revoked: " -+msgstr "Révoqués: " -+ -+#: CertDetail#31 -+msgid "Not valid" -+msgstr "Echu" -+ -+#: CertDetail#32 -+msgid "Valid" -+msgstr "Valide" -+ -+#: CertDetail#33 -+msgid "Details of the certificate signing request" -+msgstr "Détails de la requête de signature" -+ -+#: CertExtend#1 -+msgid "Certificate renewal" -+msgstr "Renouvellement du certificat" -+ -+#: CertExtend#2 -+msgid "" -+"This will create a new certificate as a copy of the old one with a new " -+"serial number and adjusted validity values." -+msgstr "" -+"Créer un nouveau certificat conforme à l'ancien, mais avec un nouveau numéro " -+"de série et les limites de validité ajustées." -+ -+#: CertExtend#3 -+msgctxt "CertExtend#3" -+msgid "Validity" -+msgstr "Validité" -+ -+#: CertExtend#4 -+msgctxt "CertExtend#4" -+msgid "Not before" -+msgstr "Pas avant" -+ -+#: CertExtend#5 -+msgctxt "CertExtend#5" -+msgid "Not after" -+msgstr "Pas après" -+ -+#: CertExtend#6 -+msgctxt "CertExtend#6" -+msgid "Time range" -+msgstr "Intervalle de temps" -+ -+#: CertExtend#7 -+msgctxt "CertExtend#7" -+msgid "No well-defined expiration" -+msgstr "Date d'expiration mal définie" -+ -+#: CertExtend#8 -+msgctxt "CertExtend#8" -+msgid "Apply" -+msgstr "Appliquer" -+ -+#: CertExtend#9 -+msgctxt "CertExtend#9" -+msgid "Days" -+msgstr "Jours" -+ -+#: CertExtend#10 -+msgctxt "CertExtend#10" -+msgid "Months" -+msgstr "Mois" -+ -+#: CertExtend#11 -+msgctxt "CertExtend#11" -+msgid "Years" -+msgstr "Années" -+ -+#: CertExtend#12 -+msgctxt "CertExtend#12" -+msgid "Midnight" -+msgstr "Minuit" -+ -+#: CertExtend#13 -+msgctxt "CertExtend#13" -+msgid "" -+"The certificate will be earlier valid than the signer. This is probably not " -+"what you want." -+msgstr "" -+"Le certificat serait valide avant son signataire. Ce n'est probablement pas " -+"ce qui est désiré." -+ -+#: CertExtend#14 -+msgid "Edit times" -+msgstr "Modifier les limites de validité" -+ -+#: CertExtend#15 -+msgctxt "CertExtend#15" -+msgid "Abort rollout" -+msgstr "Interrompre le déploiement" -+ -+#: CertExtend#16 -+msgctxt "CertExtend#16" -+msgid "Continue rollout" -+msgstr "Continuer le déploiement" -+ -+#: CertExtend#17 -+msgctxt "CertExtend#17" -+msgid "Adjust date and continue" -+msgstr "Ajuster la date et continuer" -+ -+#: CertExtend#18 -+msgctxt "CertExtend#18" -+msgid "" -+"The certificate will be longer valid than the signer. This is probably not " -+"what you want." -+msgstr "" -+"Le certificat serait valide plus longtemps que son signataire. Ce n'est " -+"probablement pas ce qui est désiré." -+ -+#: CertView#1 -+msgctxt "CertView#1" -+msgid "There was no key found for the Certificate: " -+msgstr "Aucune clé n'a été trouvée pour ce certificat: " -+ -+#: CertView#2 -+msgctxt "CertView#2" -+msgid "Import Certificate signing request" -+msgstr "Importer une requête de signature" -+ -+#: ClickLabel#1 -+msgid "Double click for details" -+msgstr "Double-cliquer pour afficher les détails" -+ -+#: CrlDetail#1 -+msgid "Details of the Revocation list" -+msgstr "Détails de la liste de révocation" -+ -+#: CrlDetail#2 -+msgid "&Status" -+msgstr "&Etat" -+ -+#: CrlDetail#3 -+msgid "Version" -+msgstr "Version" -+ -+#: CrlDetail#4 -+msgctxt "CrlDetail#4" -+msgid "Signature" -+msgstr "Signature" -+ -+#: CrlDetail#5 -+msgid "Signed by" -+msgstr "Signé par" -+ -+#: CrlDetail#6 -+msgctxt "CrlDetail#6" -+msgid "Name" -+msgstr "Nom" -+ -+#: CrlDetail#7 -+msgid "The internal name of the CRL in the database" -+msgstr "Le nom interne de la liste de révocation dans la base de données" -+ -+#: CrlDetail#8 -+msgid "issuing dates" -+msgstr "date d'émission" -+ -+#: CrlDetail#9 -+msgid "Next Update" -+msgstr "Prochaine mise-à-jour" -+ -+#: CrlDetail#10 -+msgid "Last Update" -+msgstr "Dernière mise-à-jour" -+ -+#: CrlDetail#11 -+msgctxt "CrlDetail#11" -+msgid "&Issuer" -+msgstr "&Emetteur" -+ -+#: CrlDetail#12 -+msgctxt "CrlDetail#12" -+msgid "&Extensions" -+msgstr "E&xtensions" -+ -+#: CrlDetail#13 -+msgid "&Revocation list" -+msgstr "Liste de &révocation" -+ -+#: CrlDetail#14 -+msgid "0" -+msgstr "0" -+ -+#: CrlDetail#15 -+msgctxt "CrlDetail#15" -+msgid "Serial" -+msgstr "Numéro de série" -+ -+#: CrlDetail#16 -+msgctxt "CrlDetail#16" -+msgid "Revocation" -+msgstr "Révocation" -+ -+#: CrlDetail#17 -+msgid "Reason" -+msgstr "Raison" -+ -+#: CrlDetail#18 -+msgid "Invalidation" -+msgstr "Invalidation" -+ -+#: CrlDetail#19 -+msgid "Failed" -+msgstr "Echoué" -+ -+#: CrlDetail#20 -+msgid "Unknown signer" -+msgstr "Signataire inconnu" -+ -+#: CrlDetail#21 -+msgid "Verification not possible" -+msgstr "Vérification impossible" -+ -+#: CrlDetail#22 -+msgid "Unknown certificate" -+msgstr "Certificat inconnu" -+ -+#: ExportCert#1 -+msgid "X509 Certificates ( *.cer *.crt *.p12 *.p7b);;All files ( * )" -+msgstr "Certificats X509 ( *.cer *.crt *.p12 *.p7b);;Tous les fichiers ( * )" -+ -+#: ExportCert#2 -+msgid "" -+"DER is a binary format of the Certificate\n" -+"PEM is a base64 encoded Certificate\n" -+"PKCS#7 is an official Certificate exchange format\n" -+"PKCS#12 is an encrypted official Key-Certificate exchange format\n" -+msgstr "" -+"DER est un format binaire de certificat\n" -+"PEM encode le certificat en base64\n" -+"PKCS#7 est un format officiel d'échange de certificat\n" -+"PKCS#12 est un format officiel encrypté d'échange de certificat et de clé\n" -+ -+#: ExportCert#3 -+msgid "Please enter the filename for the certificate." -+msgstr "SVP entrer le nom du fichier pour le certificat." -+ -+#: ExportCert#4 -+msgid "Certifikate export" -+msgstr "Exportation de certificat" -+ -+#: ExportDer#1 -+msgctxt "ExportDer#1" -+msgid "All files ( * )" -+msgstr "Tous les fichiers ( * )" -+ -+#: ExportDer#2 -+msgid "" -+"DER is a binary format\n" -+"PEM is a base64 encoded DER file\n" -+msgstr "" -+"DER est un format binaire\n" -+"PEM est un format encodé en base64\n" -+ -+#: ExportDialog#1 -+msgid "..." -+msgstr "..." -+ -+#: ExportDialog#2 -+msgid "Filename" -+msgstr "Nom du fichier" -+ -+#: ExportDialog#3 -+msgid "Please enter the filename" -+msgstr "SVP saisir le nom du fichier" -+ -+#: ExportDialog#4 -+msgid "Export Format" -+msgstr "Format d'exportation" -+ -+#: ExportDialog#5 -+msgid "The file: '%1' already exists!" -+msgstr "Le fichier '%1' existe déjà!" -+ -+#: ExportDialog#6 -+msgid "Overwrite" -+msgstr "Ecraser" -+ -+#: ExportDialog#7 -+msgid "Do not overwrite" -+msgstr "Ne pas écraser" -+ -+#: ExportKey#1 -+msgid "When exporting the private key it should be encrypted." -+msgstr "Il est conseillé d'encrypter la clé privée lors de son exportation." -+ -+#: ExportKey#2 -+msgid "When exporting the private part, it should be encrypted." -+msgstr "Il est conseillé d'encrypter la partie privée lors de son exportation." -+ -+#: ExportKey#3 -+msgid "E&xport the private part of the Key too" -+msgstr "E&xporter aussi la partie privée de la clé" -+ -+#: ExportKey#4 -+msgid "Export as PKCS#8" -+msgstr "Exporter en PKCS#8" -+ -+#: ExportKey#5 -+msgid "&Encrypt the Key with a password" -+msgstr "&Encrypter la clé avec un mot de passe" -+ -+#: ExportKey#6 -+msgid "Private keys ( *.pem *.der *.pk8 );;All files ( * )" -+msgstr "Clés privées ( *.pem *.der *.pk8 );;Tous les fichiers ( * )" -+ -+#: ExportKey#7 -+msgid "" -+"DER is a binary format of the key without encryption\n" -+"PEM is a base64 encoded key with optional encryption\n" -+"PKCS#8 is an encrypted official Key-exchange format" -+msgstr "" -+"DER est un format binaire de clé sans encryption\n" -+"PEM encode la clé en base64 avec une encryption facultative\n" -+"PKCS#8 est un format officiel d'échange de clé" -+ -+#: ExportKey#8 -+msgid "Please enter the filename for the key." -+msgstr "SVP saisir le nom du fichier pour la clé." -+ -+#: ExportKey#9 -+msgid "Public key export" -+msgstr "Exporter la clé publique" -+ -+#: ExportKey#10 -+msgid "Key export" -+msgstr "Exporter la clé" -+ -+#: Help#1 -+msgid "<<" -+msgstr "<<" -+ -+#: Help#2 -+msgid ">>" -+msgstr "<<" -+ -+#: Help#3 -+msgctxt "Help#3" -+msgid "&Done" -+msgstr "&OK" -+ -+#: ImportMulti#1 -+msgid "Import PKI Items" -+msgstr "Importer des objets PKI" -+ -+#: ImportMulti#2 -+msgid "Import &All" -+msgstr "Importer &tout" -+ -+#: ImportMulti#3 -+msgctxt "ImportMulti#3" -+msgid "&Import" -+msgstr "&Importer" -+ -+#: ImportMulti#4 -+msgctxt "ImportMulti#4" -+msgid "&Done" -+msgstr "&OK" -+ -+#: ImportMulti#5 -+msgid "&Remove" -+msgstr "&Enlever" -+ -+#: ImportMulti#6 -+msgid "Details" -+msgstr "Détails" -+ -+#: ImportMulti#7 -+msgid "Delete from token" -+msgstr "Enlever du jeton" -+ -+#: ImportMulti#8 -+msgid "Rename on token" -+msgstr "Renommer dans le jeton" -+ -+#: ImportMulti#9 -+msgid "" -+"\n" -+"Name: %1\n" -+"Model: %2\n" -+"Serial: %3" -+msgstr "" -+"\n" -+"Nom: %1\n" -+"Modèle: %2\n" -+"Numéro de série: %3" -+ -+#: ImportMulti#10 -+msgid "Manage security token" -+msgstr "Gérer les jetons de sécurité" -+ -+#: ImportMulti#11 -+msgid "The type of the Item '%1' is not recognized" -+msgstr "Le type de l'objet '%1' n'est pas reconnu" -+ -+#: ImportMulti#12 -+msgid "Details of the item '%1' cannot be shown" -+msgstr "Les détails de l'objet '%1' ne peuvent pas être affichés" -+ -+#: ImportMulti#13 -+msgid "The type of the item '%1' is not recognized" -+msgstr "Le type de l'objet '%1' n'est pas reconnu" -+ -+#: ImportMulti#14 -+msgid "The file '%1' did not contain PKI data" -+msgstr "Le fichier '%1' ne contient pas de données PKI" -+ -+#: ImportMulti#15 -+msgid "The %1 files: '%2' did not contain PKI data" -+msgstr "Les %1 fichiers: '%2' ne contiennent pas de données PKI" -+ -+#: KeyDetail#1 -+msgctxt "KeyDetail#1" -+msgid "Name" -+msgstr "Nom" -+ -+#: KeyDetail#2 -+msgid "The internal name of the key used by xca" -+msgstr "Le nom interne de la clé utilisé par xca" -+ -+#: KeyDetail#3 -+msgctxt "KeyDetail#3" -+msgid "Security token" -+msgstr "Jeton de sécurité" -+ -+#: KeyDetail#4 -+msgid "Manufacturer" -+msgstr "Fabricant" -+ -+#: KeyDetail#5 -+msgctxt "KeyDetail#5" -+msgid "Serial" -+msgstr "Numéro de série" -+ -+#: KeyDetail#6 -+msgctxt "KeyDetail#6" -+msgid "Key" -+msgstr "Clé" -+ -+#: KeyDetail#7 -+msgid "Public Exponent" -+msgstr "Exposant public" -+ -+#: KeyDetail#8 -+msgctxt "KeyDetail#8" -+msgid "Keysize" -+msgstr "Taille de la clé" -+ -+#: KeyDetail#9 -+msgid "Private Exponent" -+msgstr "Exposant privé" -+ -+#: KeyDetail#10 -+msgid "Modulus" -+msgstr "Modulo" -+ -+#: KeyDetail#11 -+msgid "Details of the %1 key" -+msgstr "Détails de la clé %1" -+ -+#: KeyDetail#12 -+msgctxt "KeyDetail#12" -+msgid "Not available" -+msgstr "Non disponible" -+ -+#: KeyDetail#13 -+msgid "Token" -+msgstr "Jeton" -+ -+#: KeyDetail#14 -+msgid "Security token ID:%1" -+msgstr "Identifiant de jeton de sécurité: %1" -+ -+#: KeyDetail#15 -+msgid "Available" -+msgstr "Disponible" -+ -+#: KeyDetail#16 -+msgid "Sub prime" -+msgstr "Sous-premier" -+ -+#: KeyDetail#17 -+msgid "Public key" -+msgstr "Clé publique" -+ -+#: KeyDetail#18 -+msgctxt "KeyDetail#18" -+msgid "Private key" -+msgstr "Clé privée" -+ -+#: KeyDetail#19 -+msgid "Curve name" -+msgstr "Nom de la courbe" -+ -+#: KeyDetail#20 -+msgid "Unknown key" -+msgstr "Clé inconnue" -+ -+#: MainWindow#1 -+msgid "Private Keys" -+msgstr "Clés privées" -+ -+#: MainWindow#2 -+msgid "&New Key" -+msgstr "&Nouvelle clé" -+ -+#: MainWindow#3 -+msgid "&Export" -+msgstr "&Exporter" -+ -+#: MainWindow#4 -+msgctxt "MainWindow#4" -+msgid "&Import" -+msgstr "&Importer" -+ -+#: MainWindow#5 -+msgid "Import PFX (PKCS#12)" -+msgstr "Importer en PFX (PKCS#12)" -+ -+#: MainWindow#6 -+msgid "&Show Details" -+msgstr "&Afficher les Détails" -+ -+#: MainWindow#7 -+msgid "&Delete" -+msgstr "&Détruire" -+ -+#: MainWindow#8 -+msgid "Certificate signing requests" -+msgstr "Requêtes de signature de certificat" -+ -+#: MainWindow#9 -+msgid "&New Request" -+msgstr "&Nouvelle requête" -+ -+#: MainWindow#10 -+msgid "Certificates" -+msgstr "Certificats" -+ -+#: MainWindow#11 -+msgid "&New Certificate" -+msgstr "&Nouveau Certificat" -+ -+#: MainWindow#12 -+msgid "Import &PKCS#12" -+msgstr "Importer en &PKCS#12" -+ -+#: MainWindow#13 -+msgid "Import P&KCS#7" -+msgstr "Importer en P&KCS#7" -+ -+#: MainWindow#14 -+msgctxt "MainWindow#14" -+msgid "Plain View" -+msgstr "Vue à plat" -+ -+#: MainWindow#15 -+msgid "Templates" -+msgstr "Modèles" -+ -+#: MainWindow#16 -+msgid "&New template" -+msgstr "&Nouveau modèle" -+ -+#: MainWindow#17 -+msgid "Ch&ange Template" -+msgstr "&Modifier le Modèle" -+ -+#: MainWindow#18 -+msgid "Revocation lists" -+msgstr "Listes de révocation" -+ -+#: MainWindow#19 -+msgid "Please enter the password to decrypt the private key: '%1'" -+msgstr "SVP saisir le mot de passe pour décrypter la clé privée: '%1'" -+ -+#: MainWindow#20 -+msgid "" -+"Using or exporting private keys will not be possible without providing the " -+"correct password" -+msgstr "" -+"L'usage ou l'exportation de clés privées seront impossible sans fournir le " -+"mot de passe correct." -+ -+#: MainWindow#21 -+msgid "Database" -+msgstr "Base de donnée" -+ -+#: MainWindow#22 -+msgid "No deleted items found" -+msgstr "Aucun objet détruit n'a été trouvé" -+ -+#: MainWindow#23 -+msgid "&File" -+msgstr "&Fichier" -+ -+#: MainWindow#24 -+msgid "&New DataBase" -+msgstr "&Nouvelle base de données" -+ -+#: MainWindow#25 -+msgid "&Open DataBase" -+msgstr "&Ouvrir une base de données" -+ -+#: MainWindow#26 -+msgid "Generate DH parameter" -+msgstr "Générer le paramètre DH" -+ -+#: MainWindow#27 -+msgid "&Close DataBase" -+msgstr "&Fermer la base de données" -+ -+#: MainWindow#28 -+msgid "&Dump DataBase" -+msgstr "C&licher la base de données" -+ -+#: MainWindow#29 -+msgid "C&hange DataBase password" -+msgstr "C&hanger le mot de passe de la base de données" -+ -+#: MainWindow#30 -+msgid "&Import old db_dump" -+msgstr "&Importer un cliché de base de données en ancien format (db_dump)" -+ -+#: MainWindow#31 -+msgid "&Undelete items" -+msgstr "&Récupérer des objets détruits" -+ -+#: MainWindow#32 -+msgid "Options" -+msgstr "Options" -+ -+#: MainWindow#33 -+msgid "Exit" -+msgstr "Quitter" -+ -+#: MainWindow#34 -+msgid "I&mport" -+msgstr "I&mporter" -+ -+#: MainWindow#35 -+msgid "Keys" -+msgstr "Clés" -+ -+#: MainWindow#36 -+msgid "Requests" -+msgstr "Requêtes" -+ -+#: MainWindow#37 -+msgid "PKCS#12" -+msgstr "PKCS#12" -+ -+#: MainWindow#38 -+msgctxt "MainWindow#38" -+msgid "PKCS#7" -+msgstr "PKCS#7" -+ -+#: MainWindow#39 -+msgctxt "MainWindow#39" -+msgid "Template" -+msgstr "Modèle" -+ -+#: MainWindow#40 -+msgid "Revocation list" -+msgstr "Liste de révocation" -+ -+#: MainWindow#41 -+msgid "PEM file" -+msgstr "Fichier PEM" -+ -+#: MainWindow#42 -+msgid "paste PEM file" -+msgstr "Coller un fichier PEM" -+ -+#: MainWindow#43 -+msgid "&Token" -+msgstr "&Jeton" -+ -+#: MainWindow#44 -+msgid "&Manage Security token" -+msgstr "&Gérer le jeton de sécurité" -+ -+#: MainWindow#45 -+msgid "&Init Security token" -+msgstr "&Initialiser le jeton de sécurité" -+ -+#: MainWindow#46 -+msgid "&Change PIN" -+msgstr "&Changer le NIP" -+ -+#: MainWindow#47 -+msgid "Change &SO PIN" -+msgstr "Changer le P&UK" -+ -+#: MainWindow#48 -+msgid "Init PIN" -+msgstr "Initialiser le NIP" -+ -+#: MainWindow#49 -+msgid "&Help" -+msgstr "&Aide" -+ -+#: MainWindow#50 -+msgid "&Content" -+msgstr "&Contenu" -+ -+#: MainWindow#51 -+msgid "&About" -+msgstr "&A propos" -+ -+#: MainWindow#52 -+msgid "Donations" -+msgstr "Dons" -+ -+#: MainWindow#53 -+msgid "Database dump ( *.dump );;All files ( * )" -+msgstr "Cliché de base de données ( *.dump );;Tous les fichiers ( * )" -+ -+#: MainWindow#54 -+msgid "Import password" -+msgstr "Mot de passe d'importation" -+ -+#: MainWindow#55 -+msgid "Please enter the password of the old database" -+msgstr "SVP saisir le mot de passe de l'ancienne base de données" -+ -+#: MainWindow#56 -+msgid "Password verification error. Ignore keys ?" -+msgstr "La vérification du mot de passe a écoué. Ignorer les clés ?" -+ -+#: MainWindow#57 -+msgid "Import anyway" -+msgstr "Importer quand-même" -+ -+#: MainWindow#58 -+msgctxt "MainWindow#58" -+msgid "Cancel" -+msgstr "Abandonner" -+ -+#: MainWindow#59 -+msgid "no such option: %1" -+msgstr "'%1' n'est pas une option" -+ -+#: MainWindow#60 -+msgid "Import PEM data" -+msgstr "Importer les données PEM" -+ -+#: MainWindow#61 -+msgid "Please enter the original SO PIN (PUK) of the token '%1'" -+msgstr "SVP saisir le PUK original du jeton '%1'" -+ -+#: MainWindow#62 -+msgid "Please enter the new SO PIN (PUK) of the token '%1'" -+msgstr "SVP saisir le nouveau PUK du jeton '%1'" -+ -+#: MainWindow#63 -+msgid "The new label of the token '%1'" -+msgstr "La nouvelle étiquette du jeton '%1'" -+ -+#: MainWindow#64 -+msgid "The token '%1' did not contain any keys or certificates" -+msgstr "Le jeton '%1' ne contient aucune clé ni aucun certificat" -+ -+#: MainWindow#65 -+msgid "New Password" -+msgstr "Nouveau mot de passe" -+ -+#: MainWindow#66 -+msgid "" -+"Please enter the new password to encrypt your private keys in the database-" -+"file" -+msgstr "" -+"SVP saisir le nouveau mot de passe pour encrypter les clés privées dans le " -+"fichier de base de données" -+ -+#: MainWindow#67 -+msgid "" -+"Please enter a password, that will be used to encrypt your private keys in " -+"the database file: '%1'" -+msgstr "" -+"SVP saisir un mot de passe qui sera utilisé pour encrypter les clés privées " -+"dans le fichier de base de données: '%1'" -+ -+#: MainWindow#68 -+msgid "Password verify error, please try again" -+msgstr "La vérification du mot de passe a échoué. SVP essayez encore" -+ -+#: MainWindow#69 -+msgctxt "MainWindow#69" -+msgid "Password" -+msgstr "Mot de passe" -+ -+#: MainWindow#70 -+msgid "Please enter the password for unlocking the database: '%1'" -+msgstr "SVP saisir le mot de passe pour débloquer la base de données: '%1'" -+ -+#: MainWindow#71 -+msgid "" -+"Hex password must only contain the characters '0' - '9' and 'a' - 'f' and it " -+"must consist of an even number of characters" -+msgstr "" -+"Un mot de passe hexadécimal peut seulement contenir les caractères '0' à '9' " -+"et 'a' à 'f' et il doit consister en un nombre pair de caractères" -+ -+#: MainWindow#72 -+msgid "Repeat %1" -+msgstr "Répéter %1" -+ -+#: MainWindow#73 -+msgid "%1 missmatch" -+msgstr "%1 ne correspond pas" -+ -+#: MainWindow#74 -+msgid "The following error occured:" -+msgstr "L'erreur suivante s'est produite:" -+ -+#: MainWindow#75 -+msgid "Copy to Clipboard" -+msgstr "Copier dans le presse-papier" -+ -+#: MainWindow#76 -+msgid "DH parameter bits" -+msgstr "Bits du paramètre DH" -+ -+#: MainWindow#77 -+msgctxt "MainWindow#77" -+msgid "Error opening file: '%1': %2" -+msgstr "Erreur à l'ouverture du fichier '%1': %2" -+ -+#: NewCrl#1 -+msgid "Create CRL" -+msgstr "Créer une liste de révocation" -+ -+#: NewCrl#2 -+msgid "Dates" -+msgstr "Dates" -+ -+#: NewCrl#3 -+msgid "last update" -+msgstr "dernière mise-à-jour" -+ -+#: NewCrl#4 -+msgid "next update" -+msgstr "prochaine mise-à-jour" -+ -+#: NewCrl#5 -+msgctxt "NewCrl#5" -+msgid "Days" -+msgstr "Jours" -+ -+#: NewCrl#6 -+msgctxt "NewCrl#6" -+msgid "Months" -+msgstr "Mois" -+ -+#: NewCrl#7 -+msgctxt "NewCrl#7" -+msgid "Years" -+msgstr "Années" -+ -+#: NewCrl#8 -+msgctxt "NewCrl#8" -+msgid "Midnight" -+msgstr "Minuit" -+ -+#: NewCrl#9 -+msgctxt "NewCrl#9" -+msgid "Apply" -+msgstr "Appliquer" -+ -+#: NewCrl#10 -+msgid "Hashing algorithm" -+msgstr "Algorithme de hachage" -+ -+#: NewCrl#11 -+msgctxt "NewCrl#11" -+msgid "Extensions" -+msgstr "Extensions" -+ -+#: NewCrl#12 -+msgid "Authority key identifier" -+msgstr "Identifiant de clé de l'autorité" -+ -+#: NewCrl#13 -+msgid "Subject alternative name" -+msgstr "Nom alternatif du sujet" -+ -+#: NewCrl#14 -+msgid "CRL Number" -+msgstr "Numéro de la liste de révocation" -+ -+#: NewCrl#15 -+msgid "Revokation reasons" -+msgstr "Raisons de la révocation" -+ -+#: NewKey#1 -+msgid "New key" -+msgstr "Nouvelle clé" -+ -+#: NewKey#2 -+msgid "Please give a name to the new key and select the desired keysize" -+msgstr "" -+"SVP donner un nom à la nouvelle clé et sélectionner la taille de clé désirée" -+ -+#: NewKey#3 -+msgid "Key properties" -+msgstr "Propriétés de la clé" -+ -+#: NewKey#4 -+msgctxt "NewKey#4" -+msgid "Name" -+msgstr "Nom" -+ -+#: NewKey#5 -+msgid "The internal name of the new key" -+msgstr "Le nom interne de la nouvelle clé" -+ -+#: NewKey#6 -+msgctxt "NewKey#6" -+msgid "New Key" -+msgstr "Nouvelle Clé" -+ -+#: NewKey#7 -+msgid "Curve" -+msgstr "Courbe" -+ -+#: NewKey#8 -+msgctxt "NewKey#8" -+msgid "Keysize" -+msgstr "Taille de la clé" -+ -+#: NewKey#9 -+msgid "Usually 1024 or 2048 bit keys are used" -+msgstr "1024 et 2048 bits sont les tailles de clé les plus usitées" -+ -+#: NewKey#10 -+msgid "Keytype" -+msgstr "Type de clé" -+ -+#: NewKey#11 -+msgctxt "NewKey#11" -+msgid "Create" -+msgstr "Créer" -+ -+#: NewX509#1 -+msgctxt "NewX509#1" -+msgid "Create" -+msgstr "Créer" -+ -+#: NewX509#2 -+msgid "Source" -+msgstr "Source" -+ -+#: NewX509#3 -+msgid "Signing request" -+msgstr "Requête de signature" -+ -+#: NewX509#4 -+msgid "" -+"A certificate signing request can be signed, even if the private key of the " -+"request is not available. This is the intention of a CSR:\n" -+"Getting signed by a CA certificate, whoes certificate of course must be in " -+"the database\n" -+"Of course you need the private key of the CSR if you want to create a self-" -+"signed cert from it." -+msgstr "" -+"Un requête de signature de certificat peut être signée même si la clé privée " -+"de la requête n'est pas disponible. C'est l'intention\n" -+"d'une requête de signature: être signée par un certificat d'autorité (CA) " -+"qui lui bien-sûr, doit être dans la base de donnée.\n" -+"Par contre, la clé privée d'une requête est nécessaire pour créer un " -+"certificat auto-signé à partir de celle-ci." -+ -+#: NewX509#5 -+msgid "Show request" -+msgstr "Afficher la requête" -+ -+#: NewX509#6 -+msgid "Sign this Certificate signing &request" -+msgstr "Signer cette &requête" -+ -+#: NewX509#7 -+msgid "Copy extensions from the request" -+msgstr "Copier les extensions de la requête" -+ -+#: NewX509#8 -+msgid "Modify subject of the request" -+msgstr "Modifier le sujet de la requête" -+ -+#: NewX509#9 -+msgid "Signing" -+msgstr "Signer" -+ -+#: NewX509#10 -+msgid "Create a &self signed certificate with the serial" -+msgstr "Créer un certificat auto-&signé avec le numéro de série" -+ -+#: NewX509#11 -+msgid "If you leave this blank the serial 00 will be used" -+msgstr "Si ce champ est laissé vide, le numéro de série 00 sera utilisé" -+ -+#: NewX509#12 -+msgid "1" -+msgstr "1" -+ -+#: NewX509#13 -+msgid "Use &this Certificate for signing" -+msgstr "Utiliser &ce certificat pour signer" -+ -+#: NewX509#14 -+msgid "All certificates in your database that can create valid signatures" -+msgstr "" -+"Tous les certificats dans la base de données qui peuvent produire des " -+"signatures valables" -+ -+#: NewX509#15 -+msgid "" -+"This list contains all certificates with the CA-flag set to true and whoes " -+"private key is present in the key-database.\n" -+"If this list is disabled, you only can create a self-signed certificate." -+msgstr "" -+"Cette liste contient tous les certificats qui ont le drapeau CA levé et dont " -+"la clé privée est présente dans la base de données.\n" -+"Si cette liste est désactivée, seule la création d'un certificat auto-signé " -+"est possible." -+ -+#: NewX509#16 -+msgctxt "NewX509#16" -+msgid "Signature algorithm" -+msgstr "Algorithme de signature" -+ -+#: NewX509#17 -+msgid "Template for the new certificate" -+msgstr "Modèle pour le nouveau certificat" -+ -+#: NewX509#18 -+msgid "All available templates" -+msgstr "Tous les modèles disponibles" -+ -+#: NewX509#19 -+msgid "This list contains all templates from the toplevel template Tab" -+msgstr "Cette liste contient tous les modèles de l'onglet 'Modèles'" -+ -+#: NewX509#20 -+msgid "Apply extensions" -+msgstr "Appliquer les extensions" -+ -+#: NewX509#21 -+msgid "Apply subject" -+msgstr "Appliquer le sujet" -+ -+#: NewX509#22 -+msgid "Apply all" -+msgstr "Appliquer tout" -+ -+#: NewX509#23 -+msgctxt "NewX509#23" -+msgid "Subject" -+msgstr "Sujet" -+ -+#: NewX509#24 -+msgid "Organisation" -+msgstr "Organisation" -+ -+#: NewX509#25 -+msgid "" -+"This name is only used internally and does not appear in the resulting " -+"certificate" -+msgstr "" -+"Ce nom est seulement utilisé par xca et n'apparaît pas dans le certificat " -+"exporté" -+ -+#: NewX509#26 -+msgid "Must be exactly 2 letter of size (DE, UK)" -+msgstr "Doit contenir exactement deux lettres [FR, UK]" -+ -+#: NewX509#27 -+msgid "Country code" -+msgstr "Code du pays" -+ -+#: NewX509#28 -+msgid "State or Province" -+msgstr "Etat ou Province" -+ -+#: NewX509#29 -+msgid "Locality" -+msgstr "Ville" -+ -+#: NewX509#30 -+msgid "Organisational unit" -+msgstr "Unité organisationnlle" -+ -+#: NewX509#31 -+msgid "E-Mail address" -+msgstr "Adresse de courriel" -+ -+#: NewX509#32 -+msgctxt "NewX509#32" -+msgid "Internal name" -+msgstr "Nom interne" -+ -+#: NewX509#33 -+msgid "Common name" -+msgstr "Nom commun" -+ -+#: NewX509#34 -+msgctxt "NewX509#34" -+msgid "Add" -+msgstr "Ajouter" -+ -+#: NewX509#35 -+msgctxt "NewX509#35" -+msgid "Delete" -+msgstr "Enlever" -+ -+#: NewX509#36 -+msgctxt "NewX509#36" -+msgid "Private key" -+msgstr "Clé privée" -+ -+#: NewX509#37 -+msgid "This list only contains unused keys" -+msgstr "Cette liste ne contient que les clés inutilisées" -+ -+#: NewX509#38 -+msgid "Used keys too" -+msgstr "Inclure les clés utilisées" -+ -+#: NewX509#39 -+msgid "&Generate a new key" -+msgstr "&Générer une nouvelle clé" -+ -+#: NewX509#40 -+msgctxt "NewX509#40" -+msgid "Extensions" -+msgstr "Extensions" -+ -+#: NewX509#41 -+msgid "Basic constraints" -+msgstr "Contraintes basiques" -+ -+#: NewX509#42 -+msgctxt "NewX509#42" -+msgid "Type" -+msgstr "Type" -+ -+#: NewX509#43 -+msgid "If this will become a CA certificate or not" -+msgstr "Si un certificat d'autorité (CA) est en train d'être créé ou non" -+ -+#: NewX509#44 -+msgid "" -+"Set this to TRUE if you want to create a CA certificate that signs other " -+"certificates.\n" -+"This is always set to FALSE for client or server certificates. In most cases " -+"self-signed certificates are CA certificates.\n" -+"Self-signed non-CA certificates are unusual although they are possible." -+msgstr "" -+"Sélectionner \"VRAI\" si vous voulez créer un certificat d'autorité (CA) qui " -+"peut signer d'autres certificats.\n" -+"\"FAUX\" doit toujours être séléectionné pour des certificats de clients ou " -+"de serveurs. Dans la plupart des cas,\n" -+"les certificats auto-signés sont des certificats d'autorité: bien que " -+"possibles, les certificats auto-signés non-CA sont rares." -+ -+#: NewX509#45 -+msgid "Not defined" -+msgstr "Non défini" -+ -+#: NewX509#46 -+msgid "Certification Authority" -+msgstr "Autorité de Certification" -+ -+#: NewX509#47 -+msgid "End Entity" -+msgstr "Entité Finale" -+ -+#: NewX509#48 -+msgid "Path length" -+msgstr "Distance aux feuilles" -+ -+#: NewX509#49 -+msgid "How much CAs may be below this." -+msgstr "" -+"Combien de niveau de sous-CA peuvent apparaître jusqu'à une entité finale." -+ -+#: NewX509#50 -+msgid "" -+"If this is left empty the pathlen is not included in the certificate. " -+"Otherwise it distinguishes the count of chained CA certificates below this " -+"one.\n" -+"A pathlen of 0 means, that this certificate may not issue other sub-CA " -+"certificates. Although it can do it, all chain-checking algorithms in e.g. " -+"your browser or openssl will (should) fail." -+msgstr "" -+"Si ce champ est laissé vide, la distance aux peuilles n'est pas incluse dans " -+"le certificat. Sinon il limite le nombre de sous-CA en dessous de celui-ci.\n" -+"Une distance aux feuilles de 0 signifie que ce certificat ne peut pas signer " -+"de sous-CA. Bien qu'il puisse effectivement le faire, tous les algorithme de " -+"vérification de\n" -+"chaînage des certificats (p.ex: dans votre navigateur ou openssl) les " -+"refuseront." -+ -+#: NewX509#51 -+msgid "The basic constraints should always be critical" -+msgstr "Les contraintes basiques doivent toujours être critiques" -+ -+#: NewX509#52 -+msgid "Key identifier" -+msgstr "Identifiant de clé" -+ -+#: NewX509#53 -+msgid "Creates a hash of the key following the PKIX guidelines" -+msgstr "Crée un hachage de la clé conformément aux directives PKIX" -+ -+#: NewX509#54 -+msgid "Copy the Subject Key Identifier from the issuer" -+msgstr "Copie l'identifiant de clé du sujet du signataire" -+ -+#: NewX509#55 -+msgid "" -+"If this box is checked an attempt is made to copy the subject key identifier " -+"from the signing certificate.\n" -+"It also copies the issuer and serial number from the issuer certificate. " -+"Normally this will only be done if the keyid option fails." -+msgstr "" -+"Quand cette case est cochée, l'identifiant de clé est copiée du certificat " -+"signataire.\n" -+"L'emetteur et le numéro de série du certificat signataire sont aussi copiés: " -+"normalement cette copie n'est effectuée que si la copie de l'identifiant de " -+"clé échoue." -+ -+#: NewX509#56 -+msgctxt "NewX509#56" -+msgid "Validity" -+msgstr "Validité" -+ -+#: NewX509#57 -+msgctxt "NewX509#57" -+msgid "Not before" -+msgstr "Pas avant" -+ -+#: NewX509#58 -+msgctxt "NewX509#58" -+msgid "Not after" -+msgstr "Pas après" -+ -+#: NewX509#59 -+msgctxt "NewX509#59" -+msgid "Time range" -+msgstr "Intervalle de temps" -+ -+#: NewX509#60 -+msgctxt "NewX509#60" -+msgid "Days" -+msgstr "Jours" -+ -+#: NewX509#61 -+msgctxt "NewX509#61" -+msgid "Months" -+msgstr "Mois" -+ -+#: NewX509#62 -+msgctxt "NewX509#62" -+msgid "Years" -+msgstr "Années" -+ -+#: NewX509#63 -+msgctxt "NewX509#63" -+msgid "Apply" -+msgstr "Appliquer" -+ -+#: NewX509#64 -+msgid "Set the time to 00:00:00 and 23:59:59 respectively" -+msgstr "Définir les heures à 00:00:00 et 23:59:59 respectivement" -+ -+#: NewX509#65 -+msgctxt "NewX509#65" -+msgid "Midnight" -+msgstr "Minuit" -+ -+#: NewX509#66 -+msgctxt "NewX509#66" -+msgid "No well-defined expiration" -+msgstr "Date d'expiration mal définie" -+ -+#: NewX509#67 -+msgid "Authority Info Access" -+msgstr "Accès à l'information de l'autorité" -+ -+#: NewX509#68 -+msgid "CRL distribution point" -+msgstr "Point de distribution de la liste de révocation" -+ -+#: NewX509#69 -+msgid "issuer alternative name" -+msgstr "Nom alternatif du signataire" -+ -+#: NewX509#70 -+msgid "URI:" -+msgstr "URI:" -+ -+#: NewX509#71 -+msgid "" -+"This is a multi-valued extension that supports all the literal options of " -+"subject alternative name. Of the few software packages that currentlyi " -+"nterpret this extension most only interpret the URI option.\n" -+"Currently each option will set a new DistributionPoint with the fullName " -+"field set to the given value.\n" -+"Other fields like cRLissuer and reasons cannot currently be set or " -+"displayed: at this time no examples were available that used these fields.\n" -+"If you see this extension with when you attempt to print it " -+"out or it doesn't appear to display correctly then let steve know, including " -+"the certificate (mail steve at openssl dot org) .\n" -+"Examples:\n" -+"URI:http://www.myhost.com/myca.crl\n" -+"URI:http://www.my.com/my.crl, URI:http://www.oth.com/my.crl" -+msgstr "" -+"Cette extension est un agrégat de toutes les options littérales du nom " -+"alternatif du sujet. Parmi les quelques logiciels qui utilisent cette " -+"extension aujourd'hui, la plupart ne traitent uniquement l'option URI.\n" -+"Chaque option introduit un nouveau point de distribution qualifié par son " -+"nom complet.\n" -+"Pour l'instant, les autres champs comme 'CRLissuer' et 'reasons' ne peuvent " -+"pas être saisis ou affichés. Aucun exemple utilisant ces champs n'est " -+"disponible aujourd'hui.\n" -+"Si cette extension apparaît comme ou si le contenu ne semble " -+"pas affiché correctement, faites-le savoir a Steve (courriel: steve arobase " -+"openssl point org).\n" -+"Exemples:\n" -+"URI:http://www.monsite.com/monca.crl\n" -+"URI:http://www.moi.com/moi.crl, URI:http://www.lui.com/moi.crl" -+ -+#: NewX509#72 -+msgid "can be altered by the file \"aia.txt\"" -+msgstr "peut être altéré par le fichier \"aia.txt\"" -+ -+#: NewX509#73 -+msgid "Edit" -+msgstr "Modifier" -+ -+#: NewX509#74 -+msgid "DNS: IP: URI: email: RID:" -+msgstr "DNS: IP: URI: email: RID:" -+ -+#: NewX509#75 -+msgid "" -+"The authority information access extension gives details about how to access " -+"certain information relating to the CA. Its syntax is accessOID;location " -+"where 'location' has the same syntax as subject alternative name (except " -+"that email:copy is not supported). accessOID can be any valid OID but only " -+"certain values are meaningful for example OCSP and caIssuers. OCSP gives the " -+"location of an OCSP responder: this is used by Netscape PSM and other " -+"software.\n" -+"\n" -+"Example:\n" -+"\n" -+"OCSP;URI:http://ocsp.my.host/\n" -+"caIssuers;URI:http://my.ca/ca.html" -+msgstr "" -+"L'extension d'accès à l'information de l'autorité indique comment accéder à " -+"certaines informations concernant le certificat d'autorité. La syntaxe est " -+"accèsOID;emplacement où 'emplacement` à la même syntaxe que le nom " -+"alternatif du sujet (à part 'email:copy\" qui n'est pas supporté). N'importe " -+"quel OID valide peut être spécifié pour accèsOID, mais seules certaines " -+"valeurs ont un sens, par exemple OCSP et caIssuers. OCSP renseigne sur " -+"l'emplacement d'un répondeur OCSP; ceci est untilisé par les navigateurs Web " -+"et d'autres logiciels.\n" -+"\n" -+"Exemple:\n" -+"\n" -+"OCSP;URI:http://ocsp.mon.site/\n" -+"caIssuers;URI:http://moi.ca/ca.html" -+ -+#: NewX509#76 -+msgid "" -+"The subject alternative name extension allows various literal values to be " -+"used. These include \"email\" (an email address) , \"URI\" a uniform " -+"resource indicator, \"DNS\" (a DNS domain name) , RID (a registered ID: " -+"OBJECT IDENTIFIER) and IP (an IP address).\n" -+"Examples:\n" -+"email:my@other.address, IP: 1.1.1.1 , URI:http://my.url.here/\n" -+"email:my@other.address, RID:1.2.3.4, DNS: ns.server.tld" -+msgstr "" -+"Cette extension contient le nom alternatif du sujet et permet de regrouper " -+"plusieurs valeurs littérales. Celles-ci comprennent \"email\" (un adresse de " -+"courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS\" (un nom de " -+"domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP\" (une adresse " -+"IP).\n" -+"Exemples:\n" -+"email:mon@autre.adresse, IP: 1.1.1.1 , URI:http://mon.url.ici/\n" -+"email:mon@autre.adresse, RID:1.2.3.4, DNS: serveur.de.nom.tld" -+ -+#: NewX509#77 -+msgid "subject alternative name" -+msgstr "nom alternatif du sujet" -+ -+#: NewX509#78 -+msgid "" -+"The issuer alternative name extension allows various literal values to be " -+"used. These include \"email\" (an email address) , \"URI\" a uniform " -+"resource indicator, \"DNS\" (a DNS domain name), RID (a registered ID: " -+"OBJECT IDENTIFIER) and IP (an IP address).\n" -+"Examples:\n" -+"email:my@other.address, IP: 1.1.1.1 , URI:http://my.url.here/\n" -+"email:my@other.address, RID:1.2.3.4, DNS: ns.server.tld" -+msgstr "" -+"Cette extension contient le nom alternatif du signataire et permet de " -+"regrouper plusieurs valeurs littérales. Celles-ci comprennent \"email\" (un " -+"adresse de courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS" -+"\" (un nom de domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP" -+"\" (une adresse IP).\n" -+"Exemples:\n" -+"email:mon@autre.adresse, IP: 1.1.1.1 , URI:http://mon.url.ici/\n" -+"email:mon@autre.adresse, RID:1.2.3.4, DNS: serveur.de.nom.tld" -+ -+#: NewX509#79 -+msgid "Key usage" -+msgstr "Utilisation de la clé" -+ -+#: NewX509#80 -+msgid "Extended key usage" -+msgstr "Utilisation étendue de la clé" -+ -+#: NewX509#81 -+msgid "Netscape" -+msgstr "Netscape" -+ -+#: NewX509#82 -+msgid "CA Revocation URL" -+msgstr "URL de révocation du certificat CA" -+ -+#: NewX509#83 -+msgid "Revocation URL" -+msgstr "URL de révocation" -+ -+#: NewX509#84 -+msgid "SSL server name" -+msgstr "Nom du serveur SSL" -+ -+#: NewX509#85 -+msgid "Certificate renewal URL" -+msgstr "URL de renouvellement de certificat" -+ -+#: NewX509#86 -+msgid "Comment" -+msgstr "Commentaire" -+ -+#: NewX509#87 -+msgid "CA policy URL" -+msgstr "URL des conditions générales du CA" -+ -+#: NewX509#88 -+msgid "Base URL" -+msgstr "URL de base" -+ -+#: NewX509#89 -+msgid "If you know a more pretty one tell me" -+msgstr "Si vous en connaissez un plus joli, faites-le moi savoir" -+ -+#: NewX509#90 -+msgid "Advanced" -+msgstr "Avancé" -+ -+#: NewX509#91 -+msgctxt "NewX509#91" -+msgid "Validate" -+msgstr "Valider" -+ -+#: NewX509#92 -+msgid "Create a &self signed certificate with a MD5-hashed QA serial" -+msgstr "" -+"Créer un certificat auto-&signé avec un numéro de série QA basé sur MD5" -+ -+#: NewX509#93 -+msgid "Create Certificate signing request" -+msgstr "Créer une requête de signature de certificat" -+ -+#: NewX509#94 -+msgid "minimum size: %1" -+msgstr "taille minimale: %1" -+ -+#: NewX509#95 -+msgid "maximum size: %1" -+msgstr "taille maximale: %1" -+ -+#: NewX509#96 -+msgid "only a-z A-Z 0-9 '()+,-./:=?" -+msgstr "seulement a-z A-Z 0-9 '()+,-./:=?" -+ -+#: NewX509#97 -+msgid "only 7-bit clean characters" -+msgstr "seulement des caractères 7-bit ASCII imprimables" -+ -+#: NewX509#98 -+msgid "XCA template" -+msgstr "modèle XCA" -+ -+#: NewX509#99 -+msgid "Create x509 Certificate" -+msgstr "Créer un certificat x509" -+ -+#: NewX509#100 -+msgid "From PKCS#10 request" -+msgstr "A partir d'une requête en PKCS#10" -+ -+#: NewX509#101 -+msgid "Other Tabs" -+msgstr "Autres Onglets" -+ -+#: NewX509#102 -+msgid "Advanced Tab" -+msgstr "Onglet Avancé" -+ -+#: NewX509#103 -+msgid "Errors" -+msgstr "Erreurs" -+ -+#: NewX509#104 -+msgctxt "NewX509#104" -+msgid "Abort rollout" -+msgstr "Interrompre le déploiement" -+ -+#: NewX509#105 -+msgid "The following length restrictions of RFC3280 are violated:" -+msgstr "" -+"Pour être en conformité avec la RFC3280, les règles de restriction de " -+"longueur suivantes ne sont pas respectées:" -+ -+#: NewX509#106 -+msgid "Edit subject" -+msgstr "Modifier le sujet" -+ -+#: NewX509#107 -+msgctxt "NewX509#107" -+msgid "Continue rollout" -+msgstr "Continuer le déploiement" -+ -+#: NewX509#108 -+msgid "" -+"The verification of the Certificate request failed.\n" -+"The rollout should be aborted." -+msgstr "" -+"La vérification de la requête de signature à échoué.\n" -+"Le déploiement devrait être interrompu." -+ -+#: NewX509#109 -+msgid "Continue anyway" -+msgstr "Continuer quand-même" -+ -+#: NewX509#110 -+msgid "" -+"The internal name and the common name are empty.\n" -+"Please set at least the internal name." -+msgstr "" -+"Le nom interne et le nom commun sont vides.\n" -+"SVP saisir au moins le nom interne." -+ -+#: NewX509#111 -+msgid "Edit name" -+msgstr "Modifier le nom" -+ -+#: NewX509#112 -+msgid "There is no Key selected for signing." -+msgstr "Aucune clé n'est sélectionnée pour la signature." -+ -+#: NewX509#113 -+msgid "Select key" -+msgstr "Sélectionner la clé" -+ -+#: NewX509#114 -+msgid "" -+"The following distinguished name entries are empty:\n" -+"%1\n" -+"though you have declared them as mandatory in the options menu." -+msgstr "" -+"Les indications de nom distinctif suivantes sont vides:\n" -+"%1\n" -+"bien que vous les avez déclarées comme obligatoires dans le menu des options." -+ -+#: NewX509#115 -+msgctxt "NewX509#115" -+msgid "The key you selected for signing is not a private one." -+msgstr "La clé sélectionnée pour la signature n'est pas une clé privée." -+ -+#: NewX509#116 -+msgid "Select other signer" -+msgstr "Sélectionner un autre signataire" -+ -+#: NewX509#117 -+msgid "Select other key" -+msgstr "Sélectionner une autre clé" -+ -+#: NewX509#118 -+msgctxt "NewX509#118" -+msgid "" -+"The certificate will be earlier valid than the signer. This is probably not " -+"what you want." -+msgstr "" -+"Le certificat serait valide avant son signataire. Ce n'est probablement pas " -+"ce qui est désiré." -+ -+#: NewX509#119 -+msgid "Edit dates" -+msgstr "Modifier les limites de validité" -+ -+#: NewX509#120 -+msgctxt "NewX509#120" -+msgid "Adjust date and continue" -+msgstr "Ajuster la date et continuer" -+ -+#: NewX509#121 -+msgctxt "NewX509#121" -+msgid "" -+"The certificate will be longer valid than the signer. This is probably not " -+"what you want." -+msgstr "" -+"Le certificat serait valide plus longtemps que son signataire. Ce n'est " -+"probablement pas ce qui est désiré." -+ -+#: NewX509#122 -+msgid "" -+"The certificate will be out of date before it becomes valid. You most " -+"probably mixed up both dates." -+msgstr "" -+"Le certificat serait échu avant de devenir actif. Vous avez probablement " -+"interverti les deux dates." -+ -+#: NewX509#123 -+msgid "" -+"The certificate contains duplicated extensions. Check the validation on the " -+"advanced tab." -+msgstr "" -+"Le certificat contient des extensions dupliquées. Valider et vérifier sur " -+"l'onglet \"Avancé\"." -+ -+#: NewX509#124 -+msgid "Edit extensions" -+msgstr "Modifier les extensions" -+ -+#: NewX509#125 -+msgid "Configfile error on line %1\n" -+msgstr "Erreur dans le fichier de configuration à la ligne %1\n" -+ -+#: Options#1 -+msgid "XCA Options" -+msgstr "Options de XCA" -+ -+#: Options#2 -+msgid "Mandatory subject entries" -+msgstr "Inscriptions du sujet obligatoires" -+ -+#: Options#3 -+msgctxt "Options#3" -+msgid "Add" -+msgstr "Ajouter" -+ -+#: Options#4 -+msgctxt "Options#4" -+msgid "Delete" -+msgstr "Détruire" -+ -+#: Options#5 -+msgid "Default hash algorithm" -+msgstr "Algorithme de hachage par défaut" -+ -+#: Options#6 -+msgid "String types" -+msgstr "Types de chaînes" -+ -+#: Options#7 -+msgid "PKCS#11 provider" -+msgstr "Fournisseur PKCS#11" -+ -+#: Options#8 -+msgid "Remove" -+msgstr "Enlever" -+ -+#: Options#9 -+msgid "Printable string or UTF8 (default)" -+msgstr "Chaîne imprimable ou UTF8 (défaut)" -+ -+#: Options#10 -+msgid "PKIX recommendation in RFC2459" -+msgstr "La recommandation PKIX est dans la RFC2459" -+ -+#: Options#11 -+msgid "No BMP strings, only printable and T61" -+msgstr "Pas de chaîne BMP, seulement imprimable et T61" -+ -+#: Options#12 -+msgid "UTF8 strings only (RFC2459)" -+msgstr "Chaînes UTF8 uniquement (RFC2459)" -+ -+#: Options#13 -+msgid "All strings" -+msgstr "Toutes les chaînes" -+ -+#: Options#14 -+msgid "Load failed" -+msgstr "Le chargement a échoué" -+ -+#: PassRead#1 -+msgctxt "PassRead#1" -+msgid "Password" -+msgstr "Mot de passe" -+ -+#: PassRead#2 -+msgctxt "PassRead#2" -+msgid "" -+"The password is parsed as 2-digit hex code. It must have an equal number of " -+"digits (0-9 and a-f)" -+msgstr "" -+"Le mot de passe contient des codes hexadécimaux à deux chiffres. Il doit " -+"donc consiter en un nombre pair de chiffres (0-9 et a-f)" -+ -+#: PassRead#3 -+msgctxt "PassRead#3" -+msgid "Take as HEX string" -+msgstr "Comprendre comme chaîne hexadécimale" -+ -+#: PassWrite#1 -+msgctxt "PassWrite#1" -+msgid "Password" -+msgstr "Mot de passe" -+ -+#: PassWrite#2 -+msgctxt "PassWrite#2" -+msgid "" -+"The password is parsed as 2-digit hex code. It must have an equal number of " -+"digits (0-9 and a-f)" -+msgstr "" -+"Le mot de passe contient des codes hexadécimaux à deux chiffres. Il doit " -+"donc consiter en un nombre pair de chiffres (0-9 et a-f)" -+ -+#: PassWrite#3 -+msgctxt "PassWrite#3" -+msgid "Take as HEX string" -+msgstr "Comprendre comme chaîne hexadécimale" -+ -+#: QObject#1 -+msgid "Undefined" -+msgstr "Indéfini" -+ -+#: QObject#2 -+msgid "DB: Rename: '%1' already in use" -+msgstr "DB: Renommer: '%1' déjà en utilisation" -+ -+#: QObject#3 -+msgid "DB: Entry to rename not found: %1" -+msgstr "DB: l'inscription à renommer n'a pas été trouvée: '%1'" -+ -+#: QObject#4 -+msgid "DB: Write error %1 - %2" -+msgstr "DB: Erreur d'écriture %1 - %2" -+ -+#: QObject#5 -+msgid "Out of data" -+msgstr "A court de données" -+ -+#: QObject#6 -+msgid "Error finding endmarker of string" -+msgstr "Erreur: une marque de fin de chaîne n'a pas été trouvée" -+ -+#: QObject#7 -+msgid "Out of Memory at %1:%2" -+msgstr "A court de mémoire à %1:%2" -+ -+#: QObject#8 -+msgctxt "QObject#8" -+msgid "All files ( * )" -+msgstr "Tous les fichiers ( * )" -+ -+#: QObject#9 -+msgid "PKI Keys ( *.pem *.der *.key );;PKCS#8 Keys ( *.p8 *.pk8 );;" -+msgstr "Clés PKI ( *.pem *.der *.key );;Clés PKCS#8 ( *.p8 *.pk8 );;" -+ -+#: QObject#10 -+msgid "Import RSA key" -+msgstr "Importer une clé RSA" -+ -+#: QObject#11 -+msgid "PKCS#10 CSR ( *.pem *.der *.csr );;Netscape Request ( *.spkac *.spc );;" -+msgstr "" -+"Requête PKCS#10 ( *.pem *.der *.csr );;Requête Netscape ( *.spkac *.spc );;" -+ -+#: QObject#12 -+msgid "Import Request" -+msgstr "Importer une requête" -+ -+#: QObject#13 -+msgid "Certificates ( *.pem *.der *.crt *.cer );;" -+msgstr "Certificats ( *.pem *.der *.crt *.cer );;" -+ -+#: QObject#14 -+msgid "Import X.509 Certificate" -+msgstr "Importer un certificat X.509" -+ -+#: QObject#15 -+msgid "PKCS#7 data ( *.p7s *.p7m *.p7b );;" -+msgstr "Données PKCS#7 ( *.p7s *.p7m *.p7b );;" -+ -+#: QObject#16 -+msgid "Import PKCS#7 Certificates" -+msgstr "Importer un certificat PKCS#7" -+ -+#: QObject#17 -+msgid "PKCS#12 Certificates ( *.p12 *.pfx );;" -+msgstr "Certificats PKCS#12 ( *.p12 *.pfx );;" -+ -+#: QObject#18 -+msgid "Import PKCS#12 Private Certificate" -+msgstr "Importer un certificat privé PKCS#12" -+ -+#: QObject#19 -+msgid "XCA templates ( *.xca );;" -+msgstr "Modèles XCA ( *.xca );;" -+ -+#: QObject#20 -+msgid "Import XCA Templates" -+msgstr "Importer des modèles XCA" -+ -+#: QObject#21 -+msgid "Revocation lists ( *.pem *.der *.crl );;" -+msgstr "Listes de révocation ( *.pem *.der *.crl );;" -+ -+#: QObject#22 -+msgid "Import Certificate Revocation List" -+msgstr "Importer une liste de révocation de certificats" -+ -+#: QObject#23 -+msgid "XCA Databases ( *.xdb );;" -+msgstr "Bases de données XCA ( *.xdb );;" -+ -+#: QObject#24 -+msgid "Open XCA Database" -+msgstr "Ouvrir une Base de Données XCA" -+ -+#: QObject#25 -+msgid "PKCS#11 library ( *.dll );;" -+msgstr "Bibliothèque PKCS#11 ( *.dll );;" -+ -+#: QObject#26 -+msgid "PKCS#11 library ( *.dylib *.so );;" -+msgstr "Bibliothèque PKCS#11 ( *.dylib *.so );;" -+ -+#: QObject#27 -+msgid "PKCS#11 library ( *.so );;" -+msgstr "Bibliothèque PKCS#11 ( *.so );;" -+ -+#: QObject#28 -+msgid "Open PKCS#11 shared library" -+msgstr "Ouvrir une bibliothèque partagée PKCS#11" -+ -+#: QObject#29 -+msgid "PEM files ( *.pem );;" -+msgstr "Fichiers PEM ( *.pem );;" -+ -+#: QObject#30 -+msgid "Load PEM encoded file" -+msgstr "Charger un fichier encodé en PEM" -+ -+#: QObject#31 -+msgid "Please enter the SO PIN (PUK) of the token %1" -+msgstr "SVP saisir le PUK du jeton '%1'" -+ -+#: QObject#32 -+msgid "Please enter the PIN of the token %1" -+msgstr "SVP saisir le NIP du jeton '%1'" -+ -+#: QObject#33 -+msgid "No Security token found" -+msgstr "Aucun jeton de sécurité trouvé" -+ -+#: QObject#34 -+msgid "Select" -+msgstr "Sélectionner" -+ -+#: QObject#35 -+msgid "Please enter the new SO PIN (PUK) for the token: '%1'" -+msgstr "SVP saisir le nouveau PUK pour le jeton: '%1'" -+ -+#: QObject#36 -+msgid "Please enter the new PIN for the token: '%1'" -+msgstr "SVP saisir le nouveau NIP pour le jeton: '%1'" -+ -+#: QObject#37 -+msgid "Required PIN size: %1 - %2" -+msgstr "Taille du NIP requise: %1 - %2" -+ -+#: QObject#38 -+msgid "Failed to open PKCS11 library: %1" -+msgstr "L'ouverture de la bibliothèque PKCS#11 '%1' a échoué" -+ -+#: QObject#39 -+msgid "PKCS#11 function '%1' failed: %2" -+msgstr "La fonction PKCS#11 '%1' a échoué: %2" -+ -+#: QObject#40 -+msgid "" -+"PKCS#11 function '%1' failed: %2\n" -+"In library %3\n" -+"%4" -+msgstr "" -+"La fonction PKCS#11 '%1' a échoué: %2\n" -+"Dans la bibliothèque %3\n" -+"%4" -+ -+#: QObject#41 -+msgid "Please enter the password to decrypt the private key." -+msgstr "SVP saisir le mot de passe pour décrypter la clé privée" -+ -+#: QObject#42 -+msgid "Invalid" -+msgstr "Invalide" -+ -+#: QObject#43 -+msgid "%1 is shorter than %2 bytes: '%3'" -+msgstr "%1 est plus court que %2 octets: '%3'" -+ -+#: QObject#44 -+msgid "%1 is longer than %2 bytes: '%3'" -+msgstr "%1 est plus long que %2 octets: '%3'" -+ -+#: Revoke#1 -+msgid "Revokation details" -+msgstr "Détails de la révocation" -+ -+#: Revoke#2 -+msgid "Invalid since" -+msgstr "Non-valide depuis" -+ -+#: Revoke#3 -+msgid "Revokation reason" -+msgstr "Raison de la révocation" -+ -+#: SelectToken#1 -+msgid "Select Token" -+msgstr "Sélectionner un jeton" -+ -+#: SelectToken#2 -+msgctxt "SelectToken#2" -+msgid "Security token" -+msgstr "Jeton de sécurité" -+ -+#: SelectToken#3 -+msgid "Please select the security token" -+msgstr "SVP sélectionner le jeton de sécurité" -+ -+#: TrustState#1 -+msgid "Set trustment of the Certificate" -+msgstr "Ajuster le niveau de confiance du certificat" -+ -+#: TrustState#2 -+msgid "Trustment" -+msgstr "Niveau de confiance" -+ -+#: TrustState#3 -+msgid "&Never trust this certificate" -+msgstr "&Ne jamais se fier à ce certificat" -+ -+#: TrustState#4 -+msgid "Only &trust this certificate, if we trust the signer" -+msgstr "Ne &se fier à ce certificat qui si son signataire est de confiance" -+ -+#: TrustState#5 -+msgid "&Always trust this certificate" -+msgstr "&Toujours se fier à ce certificat" -+ -+#: Validity#1 -+msgid "yyyy-MM-dd hh:mm" -+msgstr "yyyy-MM-dd hh:mm" -+ -+#: db_base#1 -+msgctxt "db_base#1" -+msgid "Internal name" -+msgstr "Nom interne" -+ -+#: db_base#2 -+msgid "Reset" -+msgstr "Réinitialisation" -+ -+#: db_base#3 -+msgid "Subject entries" -+msgstr "Inscriptions du sujet" -+ -+#: db_base#4 -+msgid "Columns" -+msgstr "Colonnes" -+ -+#: db_crl#1 -+msgid "Signer" -+msgstr "Signataire" -+ -+#: db_crl#2 -+msgid "Internal name of the signer" -+msgstr "Nom interne du signataire" -+ -+#: db_crl#3 -+msgid "No. revoked" -+msgstr "Numéro révoqué" -+ -+#: db_crl#4 -+msgid "Number of revoked certificates" -+msgstr "Nombre de certificats révoqués" -+ -+#: db_crl#5 -+msgid "Last update" -+msgstr "Dernière mise-à-jour" -+ -+#: db_crl#6 -+msgid "Next update" -+msgstr "Prochaine mise-à-jour" -+ -+#: db_crl#7 -+msgid "CRL number" -+msgstr "Numéro de la liste de révocation" -+ -+#: db_crl#8 -+msgid "" -+"The revokation list already exists in the database as:\n" -+"'%1'\n" -+"and so it was not imported" -+msgstr "" -+"Cette liste de révocation figure déjà dans la base de données sous le nom:\n" -+"'%1'\n" -+"En conséquence, elle n'a pas été importée" -+ -+#: db_crl#9 -+msgid "CRL ( *.pem *.der *.crl )" -+msgstr "Listes de révocation ( *.pem *.der *.crl )" -+ -+#: db_crl#10 -+msgid "Revokation list export" -+msgstr "Exportation d'une liste de révocation" -+ -+#: db_crl#11 -+msgctxt "db_crl#11" -+msgid "Import" -+msgstr "Importer" -+ -+#: db_crl#12 -+msgctxt "db_crl#12" -+msgid "Rename" -+msgstr "Renommer" -+ -+#: db_crl#13 -+msgctxt "db_crl#13" -+msgid "Export" -+msgstr "Exporter" -+ -+#: db_crl#14 -+msgctxt "db_crl#14" -+msgid "Delete" -+msgstr "Détruire" -+ -+#: db_key#1 -+msgctxt "db_key#1" -+msgid "Type" -+msgstr "Type" -+ -+#: db_key#2 -+msgid "Size" -+msgstr "Taille" -+ -+#: db_key#3 -+msgid "Use" -+msgstr "Usage" -+ -+#: db_key#4 -+msgctxt "db_key#4" -+msgid "Password" -+msgstr "Mot de passe" -+ -+#: db_key#5 -+msgid "" -+"The key is already in the database as:\n" -+"'%1'\n" -+"and is not going to be imported" -+msgstr "" -+"Cette clé figure déjà dans la base de données sous le nom:\n" -+"'%1'\n" -+"En conséquence, elle ne va pas être importée" -+ -+#: db_key#6 -+msgid "" -+"The database already contains the public part of the imported key as\n" -+"'%1\n" -+"and will be completed by the new, private part of the key" -+msgstr "" -+"La base de donnée connait déjà la partie publique de la clé importée sous le " -+"nom\n" -+"'%1'\n" -+"En conséquence, cette dernière sera complétée par la partie privée de la clé " -+"importée" -+ -+#: db_key#7 -+msgid "Key size too small !" -+msgstr "Taille de clé trop petite !" -+ -+#: db_key#8 -+msgid "You are sure to create a key of the size: %1 ?" -+msgstr "Etes-vous sûr de couloir créer une clé de taille %1 ?" -+ -+#: db_key#9 -+msgid "" -+"Shall the original key '%1' be replaced by the key on the token?\n" -+"This will delete the key '%1' and make it unexportable" -+msgstr "" -+"La clé originale '%1' doit-elle être remplacée par la clé en provenance du " -+"jeton ?\n" -+"Cela détruirait la clé '%1' et la rendrait non-exportable." -+ -+#: db_key#10 -+msgctxt "db_key#10" -+msgid "New Key" -+msgstr "Nouvelle clé" -+ -+#: db_key#11 -+msgctxt "db_key#11" -+msgid "Import" -+msgstr "Importer" -+ -+#: db_key#12 -+msgctxt "db_key#12" -+msgid "Rename" -+msgstr "Renommer" -+ -+#: db_key#13 -+msgctxt "db_key#13" -+msgid "Show Details" -+msgstr "Afficher les Détails" -+ -+#: db_key#14 -+msgctxt "db_key#14" -+msgid "Delete" -+msgstr "Détruire" -+ -+#: db_key#15 -+msgctxt "db_key#15" -+msgid "Export" -+msgstr "Exporter" -+ -+#: db_key#16 -+msgid "Change password" -+msgstr "Changer le mot de passe" -+ -+#: db_key#17 -+msgid "Reset password" -+msgstr "Effacer le mot de passe" -+ -+#: db_key#18 -+msgid "Change PIN" -+msgstr "Changer le NIP" -+ -+#: db_key#19 -+msgid "Init PIN with SO PIN (PUK)" -+msgstr "Initialiser le NIP avec le PUK" -+ -+#: db_key#20 -+msgid "Change SO PIN (PUK)" -+msgstr "Changer le PUK" -+ -+#: db_key#21 -+msgid "Store on Security token" -+msgstr "Enregistrer dans le jeton de sécurité" -+ -+#: db_key#22 -+msgid "Tried to change password of a token" -+msgstr "Tentative de changement de mot de passe d'un jeton de sécurité" -+ -+#: db_key#23 -+msgid "Tried to change PIN of a key" -+msgstr "Tentative de changement de NIP d'une clé" -+ -+#: db_key#24 -+msgid "Tried to init PIN of a key" -+msgstr "Tentative d'initialisation du NIP d'une clé" -+ -+#: db_key#25 -+msgid "Tried to change SO PIN of a key" -+msgstr "Tentative de changement de PUK d'une clé" -+ -+#: db_temp#1 -+msgctxt "db_temp#1" -+msgid "Type" -+msgstr "Type" -+ -+#: db_temp#2 -+msgid "Bad template: %1" -+msgstr "Mauvais modèle: %1" -+ -+#: db_temp#3 -+msgid "Nothing" -+msgstr "Rien" -+ -+#: db_temp#4 -+msgid "Preset Template values" -+msgstr "Initaliser les valeurs du modèle" -+ -+#: db_temp#5 -+msgid "copy" -+msgstr "copier" -+ -+#: db_temp#6 -+msgid "Save template as" -+msgstr "Enregistrer le modèle sous" -+ -+#: db_temp#7 -+msgid "XCA templates ( *.xca);; All files ( * )" -+msgstr "Modèles XCA ( *.xca);; Tous les fichiers ( * )" -+ -+#: db_temp#8 -+msgid "New Template" -+msgstr "Nouveau modèle" -+ -+#: db_temp#9 -+msgctxt "db_temp#9" -+msgid "Import" -+msgstr "Importer" -+ -+#: db_temp#10 -+msgctxt "db_temp#10" -+msgid "Rename" -+msgstr "Renommer" -+ -+#: db_temp#11 -+msgctxt "db_temp#11" -+msgid "Export" -+msgstr "Exporter" -+ -+#: db_temp#12 -+msgid "Change" -+msgstr "Changer" -+ -+#: db_temp#13 -+msgctxt "db_temp#13" -+msgid "Delete" -+msgstr "Détruire" -+ -+#: db_temp#14 -+msgid "Duplicate" -+msgstr "Dupliquer" -+ -+#: db_temp#15 -+msgid "Create certificate" -+msgstr "Créer un certificat" -+ -+#: db_temp#16 -+msgid "Create request" -+msgstr "Créer une requête" -+ -+#: db_x509#1 -+msgid "CA" -+msgstr "CA" -+ -+#: db_x509#2 -+msgid "reflects the basic Constraints extension" -+msgstr "reflète l'extension des contraintes basiques" -+ -+#: db_x509#3 -+msgctxt "db_x509#3" -+msgid "Serial" -+msgstr "Numéro de série" -+ -+#: db_x509#4 -+msgid "md5 fingerprint" -+msgstr "Empreinte MD5" -+ -+#: db_x509#5 -+msgid "sha1 fingerprint" -+msgstr "Empreinte sha1" -+ -+#: db_x509#6 -+msgid "Start date" -+msgstr "Date de début" -+ -+#: db_x509#7 -+msgid "not Before" -+msgstr "pas Avant" -+ -+#: db_x509#8 -+msgid "Expiry date" -+msgstr "Date d'expiration" -+ -+#: db_x509#9 -+msgid "not After" -+msgstr "pas Après" -+ -+#: db_x509#10 -+msgid "Trust state" -+msgstr "État de confiance" -+ -+#: db_x509#11 -+msgctxt "db_x509#11" -+msgid "Revocation" -+msgstr "Révocation" -+ -+#: db_x509#12 -+msgctxt "db_x509#12" -+msgid "Plain View" -+msgstr "Vue à plat" -+ -+#: db_x509#13 -+msgid "Tree View" -+msgstr "Vue arborescente" -+ -+#: db_x509#14 -+msgid "" -+"The certificate already exists in the database as:\n" -+"'%1'\n" -+"and so it was not imported" -+msgstr "" -+"Ce certificat figure déjà dans la base de données sous le nom:\n" -+"'%1'\n" -+"En conséquence, il n'a pas été importé" -+ -+#: db_x509#15 -+msgid "Please enter the new hexadecimal secret number for the QA process." -+msgstr "SVP saisir le nouveau nombre secret hexadécimal pour le processus QA." -+ -+#: db_x509#16 -+msgid "The two secret numbers don't match." -+msgstr "Les deux nombres secrets ne sont pas les mêmes." -+ -+#: db_x509#17 -+msgid "The QA process has been terminated by the user." -+msgstr "Le processus QA a été arrêté par l'utilisateur." -+ -+#: db_x509#18 -+msgctxt "db_x509#18" -+msgid "The key you selected for signing is not a private one." -+msgstr "La clé sélectionnée pour la signature n'est pas une clé privée." -+ -+#: db_x509#19 -+msgid "Store the certificate to the key on the token '%1 (#%2)' ?" -+msgstr "Enregistrer le certificate avec la clé sur le jeton '%1 (#%2)' ?" -+ -+#: db_x509#20 -+msgid "New Certificate" -+msgstr "Nouveau Certificat" -+ -+#: db_x509#21 -+msgctxt "db_x509#21" -+msgid "Import" -+msgstr "Importer" -+ -+#: db_x509#22 -+msgid "Import PKCS#12" -+msgstr "Importer en PKCS#12" -+ -+#: db_x509#23 -+msgid "Import from PKCS#7" -+msgstr "Importer en PKCS#7" -+ -+#: db_x509#24 -+msgctxt "db_x509#24" -+msgid "Rename" -+msgstr "Renommer" -+ -+#: db_x509#25 -+msgctxt "db_x509#25" -+msgid "Show Details" -+msgstr "Afficher les Détails" -+ -+#: db_x509#26 -+msgctxt "db_x509#26" -+msgid "Extract public Key" -+msgstr "Extraire la clé publique" -+ -+#: db_x509#27 -+msgctxt "db_x509#27" -+msgid "Export" -+msgstr "Exporter" -+ -+#: db_x509#28 -+msgctxt "db_x509#28" -+msgid "File" -+msgstr "Fichier" -+ -+#: db_x509#29 -+msgid "Request" -+msgstr "Requête" -+ -+#: db_x509#30 -+msgctxt "db_x509#30" -+msgid "Security token" -+msgstr "Jeton de sécurité" -+ -+#: db_x509#31 -+msgid "Other token" -+msgstr "Autre jeton" -+ -+#: db_x509#32 -+msgctxt "db_x509#32" -+msgid "Template" -+msgstr "Modèle" -+ -+#: db_x509#33 -+msgctxt "db_x509#33" -+msgid "Delete" -+msgstr "Détruire" -+ -+#: db_x509#34 -+msgid "Delete from Security token" -+msgstr "Détruire sur le jeton de sécurité" -+ -+#: db_x509#35 -+msgid "Trust" -+msgstr "Niveau de confiance" -+ -+#: db_x509#36 -+msgid "Properties" -+msgstr "Propriétés" -+ -+#: db_x509#37 -+msgid "Generate CRL" -+msgstr "Générer la liste de révocation" -+ -+#: db_x509#38 -+msgctxt "db_x509#38" -+msgid "PKCS#7" -+msgstr "PKCS#7" -+ -+#: db_x509#39 -+msgctxt "db_x509#39" -+msgid "Sign" -+msgstr "Signer" -+ -+#: db_x509#40 -+msgid "Encrypt" -+msgstr "Encrypter" -+ -+#: db_x509#41 -+msgid "Renewal" -+msgstr "Renouvellement" -+ -+#: db_x509#42 -+msgid "Unrevoke" -+msgstr "Dé-révoquer" -+ -+#: db_x509#43 -+msgid "Revoke" -+msgstr "Révoquer" -+ -+#: db_x509#44 -+msgid "There was no key found for the Certificate: '%1'" -+msgstr "Aucune clé n'a été trouvée pour le Certificat. '%1'" -+ -+#: db_x509#45 -+msgid "Not possible for a token key: '%1'" -+msgstr "Impossible pour une clé d'un jeton de sécurité: '%1'" -+ -+#: db_x509#46 -+msgid "Not possible for the token-key Certificate '%1'" -+msgstr "Impossible pour le certificat d'une clé d'un jeton de sécurité: '%1'" -+ -+#: db_x509#47 -+msgid " days" -+msgstr " jours" -+ -+#: db_x509name#1 -+msgctxt "db_x509name#1" -+msgid "Subject" -+msgstr "Sujet" -+ -+#: db_x509name#2 -+msgid "Complete distinguished name" -+msgstr "Nom distinctif complet" -+ -+#: db_x509name#3 -+msgid "Subject hash" -+msgstr "Hachage du sujet" -+ -+#: db_x509name#4 -+msgid "Hash to lookup certs in directories" -+msgstr "Hachage de recherche dans un dossier" -+ -+#: db_x509req#1 -+msgctxt "db_x509req#1" -+msgid "Signed" -+msgstr "Signé" -+ -+#: db_x509req#2 -+msgid "whether the request is already signed or not" -+msgstr "si la requête a déjà été signée ou non" -+ -+#: db_x509req#3 -+msgid "Unstructured name" -+msgstr "Nom non-structuré" -+ -+#: db_x509req#4 -+msgid "Challange password" -+msgstr "Mot de passe opposable" -+ -+#: db_x509req#5 -+msgid "" -+"The certificate signing request already exists in the database as\n" -+"'%1'\n" -+"and thus was not stored" -+msgstr "" -+"Cette requête de signature figure déjà dans la base de données sous le nom\n" -+"'%1'\n" -+"En conséquence, elle n'a pas été chargée" -+ -+#: db_x509req#6 -+msgid "Certificate request ( *.pem *.der *.crl )" -+msgstr "Requête de signature de certificat ( *.pem *.der *.crl )" -+ -+#: db_x509req#7 -+msgid "Certificate request export" -+msgstr "Exporter la requête de signature" -+ -+#: db_x509req#8 -+msgid "New Request" -+msgstr "Nouvelle requête" -+ -+#: db_x509req#9 -+msgctxt "db_x509req#9" -+msgid "Import" -+msgstr "Importer" -+ -+#: db_x509req#10 -+msgctxt "db_x509req#10" -+msgid "Extract public Key" -+msgstr "Extraire la clé publique" -+ -+#: db_x509req#11 -+msgctxt "db_x509req#11" -+msgid "Rename" -+msgstr "Renommer" -+ -+#: db_x509req#12 -+msgctxt "db_x509req#12" -+msgid "Show Details" -+msgstr "Afficher les Détails" -+ -+#: db_x509req#13 -+msgctxt "db_x509req#13" -+msgid "Sign" -+msgstr "Signer" -+ -+#: db_x509req#14 -+msgctxt "db_x509req#14" -+msgid "Export" -+msgstr "Exporter" -+ -+#: db_x509req#15 -+msgctxt "db_x509req#15" -+msgid "File" -+msgstr "Fichier" -+ -+#: db_x509req#16 -+msgctxt "db_x509req#16" -+msgid "Template" -+msgstr "Modèle" -+ -+#: db_x509req#17 -+msgctxt "db_x509req#17" -+msgid "Delete" -+msgstr "Détruire" -+ -+#: db_x509super#1 -+msgid "Key name" -+msgstr "Nom de la clé" -+ -+#: db_x509super#2 -+msgid "Internal name of the key" -+msgstr "Nom interne de la clé" -+ -+#: db_x509super#3 -+msgid "The following extensions were not ported into the template" -+msgstr "Les extensions suivantes n'ont pas été enregistrées dans le modèle" -+ -+#: kvView#1 -+msgctxt "kvView#1" -+msgid "Type" -+msgstr "Type" -+ -+#: kvView#2 -+msgid "Content" -+msgstr "Contenu" -+ -+#: pass_info#1 -+msgctxt "pass_info#1" -+msgid "Password" -+msgstr "Mot de passe" -+ -+#: pass_info#2 -+msgctxt "pass_info#2" -+msgid "PIN" -+msgstr "NIP" -+ -+#: pki_base#1 -+msgctxt "pki_base#1" -+msgid "Error opening file: '%1': %2" -+msgstr "Erreur à l'ouverture du fichier '%1': %2" -+ -+#: pki_base#2 -+msgid "Error: " -+msgstr "Erreur: " -+ -+#: pki_base#3 -+msgid "Internal error: Unexpected message: %1 %2" -+msgstr "Erreur interne: message inattendu: %1 %2" -+ -+#: pki_crl#1 -+msgid "Successfully imported the revokation list '%1'" -+msgstr "La liste de révocation '%1' a été importée avec succès" -+ -+#: pki_crl#2 -+msgid "Delete the revokation list '%1'?" -+msgstr "Détruire la liste de révocation '%1' ?" -+ -+#: pki_crl#3 -+msgid "Successfully created the revokation list '%1'" -+msgstr "La liste de révocation '%1' a été créée avec succès" -+ -+#: pki_crl#4 -+msgid "Delete the %1 revokation lists: %2?" -+msgstr "Détruire les %1 listes de révocation: %2 ?" -+ -+#: pki_crl#5 -+msgid "" -+"Unable to load the revokation list in file %1. Tried PEM and DER formatted " -+"CRL." -+msgstr "" -+"Impossible de charger le liste de révocation du fichier %1. Les formats PEM " -+"et DER ont été essayés." -+ -+#: pki_crl#6 -+msgid "No issuer given" -+msgstr "Aucun signataire spécifié" -+ -+#: pki_crl#7 -+msgctxt "pki_crl#7" -+msgid "Wrong Size %1" -+msgstr "Taille fausse %1" -+ -+#: pki_crl#8 -+msgid "unknown" -+msgstr "inconnu" -+ -+#: pki_evp#1 -+msgid "Failed to decrypt the key (bad password) " -+msgstr "Le décryptage de la clé a échoué (mauvais mot de passe)." -+ -+#: pki_evp#2 -+msgid "" -+"Unable to load the private key in file %1. Tried PEM and DER private, public " -+"and PKCS#8 key types." -+msgstr "" -+"Impossible de charger la clé privée du fichier %1. Les formats PEM et DER " -+"ainsi que les types de clés privé, public et PKCS#8 ont été essayés." -+ -+#: pki_evp#3 -+msgid "Password input aborted" -+msgstr "Saisie du mot de passe abandonnée" -+ -+#: pki_evp#4 -+msgid "Please enter the database password for decrypting the key '%1'" -+msgstr "" -+"SVP saisir le mot de basse de la base de données pour décrypter la clé '%1'" -+ -+#: pki_evp#5 -+msgid "Please enter the password to protect the private key: '%1'" -+msgstr "SVP saisir le mot de pass pour protéger la clé privée: '%1'" -+ -+#: pki_evp#6 -+msgid "Please enter the database password for encrypting the key" -+msgstr "SVP saisir le mot de passe de la base de données pour encrypter la clé" -+ -+#: pki_evp#7 -+msgid "Please enter the password protecting the PKCS#8 key '%1'" -+msgstr "SVP saisir le mot de passe protégeant la clé en PKCS#8 '%1'" -+ -+#: pki_evp#8 -+msgid "Please enter the export password for the private key '%1'" -+msgstr "SVP saisir le mot de passe d'exportation pour la clé privée '%1'" -+ -+#: pki_key#1 -+msgid "Successfully imported the %1 public key '%2'" -+msgstr "Les %1 clés publiques '%2' ont été importées avec succès" -+ -+#: pki_key#2 -+msgid "Delete the %1 public key '%2'?" -+msgstr "Détruire les %1 clés publiques '%2' ?" -+ -+#: pki_key#3 -+msgid "Successfully imported the %1 private key '%2'" -+msgstr "Les %1 clés privées '%2' ont été importées avec succès" -+ -+#: pki_key#4 -+msgid "Delete the %1 private key '%2'?" -+msgstr "Détruire les %1 clés privées '%2' ?" -+ -+#: pki_key#5 -+msgid "Successfully created the %1 private key '%2'" -+msgstr "Les %1 clés privées '%2' ont été créées avec succès" -+ -+#: pki_key#6 -+msgctxt "pki_key#6" -+msgid "Delete the %1 keys: %2?" -+msgstr "Détruire les %1 clés: '%2' ?" -+ -+#: pki_key#7 -+msgid "public key" -+msgstr "clé publique" -+ -+#: pki_key#8 -+msgid "Common" -+msgstr "Commun" -+ -+#: pki_key#9 -+msgid "Private" -+msgstr "Privé" -+ -+#: pki_key#10 -+msgid "Bogus" -+msgstr "Erroné" -+ -+#: pki_key#11 -+msgctxt "pki_key#11" -+msgid "PIN" -+msgstr "NIP" -+ -+#: pki_key#12 -+msgid "No password" -+msgstr "Pas de mot de passe" -+ -+#: pki_multi#1 -+msgid "Seek failed" -+msgstr "Un \"seek\" a échoué" -+ -+#: pki_pkcs12#1 -+msgid "Please enter the password to decrypt the PKCS#12 file." -+msgstr "SVP saisir le mot de passe pour décrypter le fichier en PKCS#12." -+ -+#: pki_pkcs12#2 -+msgid "Unable to load the PKCS#12 (pfx) file %1." -+msgstr "Impossible de charger le fichier en PKCS#12 (pfx) %1." -+ -+#: pki_pkcs12#3 -+msgid "The supplied password was wrong (%1)" -+msgstr "Le mot de passe renseigné était faux (%1)" -+ -+#: pki_pkcs12#4 -+msgid "Please enter the password to encrypt the PKCS#12 file" -+msgstr "SVP saisir le mot de passe pour encrypter le fichier en PKCS#12" -+ -+#: pki_pkcs12#5 -+msgid "No key or no Cert and no pkcs12" -+msgstr "Pas de clé ou pas de certificat et pas en PKCS#12" -+ -+#: pki_pkcs7#1 -+msgid "Unable to load the PKCS#7 file %1. Tried PEM and DER format." -+msgstr "" -+"Impossible de charger le fichier en PKCS#7 %1. Les formats PEM et DER ont " -+"été essayés." -+ -+#: pki_scard#1 -+msgid "Successfully imported the token key '%1'" -+msgstr "La clé du jeton '%1' a été importée avec succès" -+ -+#: pki_scard#2 -+msgid "Delete the token key '%1'?" -+msgstr "Détruire la clé du jeton '%1' ?" -+ -+#: pki_scard#3 -+msgid "Successfully created the token key '%1'" -+msgstr "La clé du jeton '%1' a été créée avec succès" -+ -+#: pki_scard#4 -+msgctxt "pki_scard#4" -+msgid "Delete the %1 keys: %2?" -+msgstr "Détruire les %1 clés: '%2' ?" -+ -+#: pki_scard#5 -+msgid "Delete the private key '%1' from the token '%2 (#%3)' ?" -+msgstr "Détruire la clé privée '%1' sur le jeton '%2 (#%3)' ?" -+ -+#: pki_scard#6 -+msgid "only RSA keys can be stored on tokens" -+msgstr "Seules des clés RSA peuvent être enregistrées sur les jetons" -+ -+#: pki_scard#7 -+msgid "This Key is already on the token" -+msgstr "Cette clé est déjà sur le jeton" -+ -+#: pki_scard#8 -+msgid "PIN input aborted" -+msgstr "Saisie du NIP abandonnée" -+ -+#: pki_scard#9 -+msgid "Unable to find copied key on the token" -+msgstr "Impossible de trouver la clé copiée sur le jeton" -+ -+#: pki_scard#10 -+msgid "Please insert card: %1 %2 [%3] with Serial: %4" -+msgstr "SVP insérer la carte %1 %2 [%3] avec le numéro de série: %4" -+ -+#: pki_scard#11 -+msgid "Public Key missmatch. Please re-import card" -+msgstr "La clé publique ne correspond pas. Veuillez re-importer la carte" -+ -+#: pki_scard#12 -+msgid "Unable to find generated key on card" -+msgstr "Impossible de trouver la clé générée sur la carte" -+ -+#: pki_scard#13 -+msgctxt "pki_scard#13" -+msgid "Wrong Size %1" -+msgstr "Taille fausse %1" -+ -+#: pki_scard#14 -+msgid "Token %1" -+msgstr "Jeton %1" -+ -+#: pki_scard#15 -+msgid "Failed to find the key on the token" -+msgstr "Impossible de trouver la clé sur le jeton" -+ -+#: pki_scard#16 -+msgid "Invalid Pin for the token" -+msgstr "NIP invalide pour le jeton" -+ -+#: pki_temp#1 -+msgid "Successfully imported the XCA template '%1'" -+msgstr "Le modèle XCA '%1' a été importé avec succès" -+ -+#: pki_temp#2 -+msgid "Delete the XCA template '%1'?" -+msgstr "Détruire le modèle XCA '%1' ?" -+ -+#: pki_temp#3 -+msgid "Successfully created the XCA template '%1'" -+msgstr "Le modèle XCA '%1' a été créé avec succès" -+ -+#: pki_temp#4 -+msgid "Delete the %1 XCA templates: %2?" -+msgstr "Détruire les %1 modèles XCA: %2 ?" -+ -+#: pki_temp#5 -+msgctxt "pki_temp#5" -+msgid "Wrong Size %1" -+msgstr "Taille fausse %1" -+ -+#: pki_temp#6 -+msgid "Template file content error (too small): %1" -+msgstr "erreur de contenu du fichier de modèle (trop petit): %1" -+ -+#: pki_temp#7 -+msgid "Template file content error (bad size): %1 " -+msgstr "erreur de contenu du fichier de modèle (mauvaise taille): %1" -+ -+#: pki_temp#8 -+msgid "Template file content error (bad length) :%1" -+msgstr "erreur de contenu du fichier de modèle (mauvaise longueur): %1" -+ -+#: pki_x509#1 -+msgid "Successfully imported the certificate '%1'" -+msgstr "Le certificat '%1' a été importée avec succès" -+ -+#: pki_x509#2 -+msgid "Delete the certificate '%1'?" -+msgstr "Détruire le certificat '%1' ?" -+ -+#: pki_x509#3 -+msgid "Successfully created the certificate '%1'" -+msgstr "Le certificat '%1' a été créé avec succès" -+ -+#: pki_x509#4 -+msgid "Delete the %1 certificates: %2?" -+msgstr "Détruire les %1 certificats: '%2' ?" -+ -+#: pki_x509#5 -+msgid "" -+"Unable to load the certificate in file %1. Tried PEM and DER certificate." -+msgstr "" -+"Impossible de charge le certificat du fichier %1. Les formats PEM et DER ont " -+"été essayés." -+ -+#: pki_x509#6 -+msgid "This certificate is already on the security token" -+msgstr "Ce certificat est déjà dans le jeton de sécurité" -+ -+#: pki_x509#7 -+msgid "Delete the certificate '%1' from the token '%2 (#%3)'?" -+msgstr "Détruire le certificat '%1' sur le jeton '%2 (#%3)' ?" -+ -+#: pki_x509#8 -+msgid "There is no key for signing !" -+msgstr "Il n'y a pas de clé pour signer !" -+ -+#: pki_x509#9 -+msgctxt "pki_x509#9" -+msgid "Wrong Size %1" -+msgstr "Taille fausse %1" -+ -+#: pki_x509#10 -+msgctxt "pki_x509#10" -+msgid "Not trusted" -+msgstr "Pas sûr" -+ -+#: pki_x509#11 -+msgid "Trust inherited" -+msgstr "Confiance héritée" -+ -+#: pki_x509#12 -+msgid "Always Trusted" -+msgstr "Sûr" -+ -+#: pki_x509#13 -+msgid "CRL expires: %1" -+msgstr "La liste de révocation expire le %1" -+ -+#: pki_x509#14 -+msgid "No" -+msgstr "Non" -+ -+#: pki_x509#15 -+msgid "Yes" -+msgstr "Oui" -+ -+#: pki_x509req#1 -+msgid "Signing key not valid (public key)" -+msgstr "La clé de signature n'est pas valide (c'est une clé publique)" -+ -+#: pki_x509req#2 -+msgid "Successfully imported the %1 certificate request '%2'" -+msgstr "Les %1 requêtes de signature '%2' ont été importées avec succès" -+ -+#: pki_x509req#3 -+msgid "Delete the %1 certificate request '%2'?" -+msgstr "Détruire les %1 requêtes de signature '%2' ?" -+ -+#: pki_x509req#4 -+msgid "Successfully created the %1 certificate request '%2'" -+msgstr "Les %1 requêtes de signature '%2' ont été créées avec succès" -+ -+#: pki_x509req#5 -+msgid "Delete the %1 certificate requests: %2?" -+msgstr "Détruire les %1 requêtes de signature '%2' ?" -+ -+#: pki_x509req#6 -+msgid "" -+"Unable to load the certificate request in file %1. Tried PEM, DER and SPKAC " -+"format." -+msgstr "" -+"Impossible de charger la requête de signature du fichier %1. Les formats " -+"PEM, DER et SPKAC ont été essayés." -+ -+#: pki_x509req#7 -+msgctxt "pki_x509req#7" -+msgid "Signed" -+msgstr "Signé" -+ -+#: pki_x509req#8 -+msgid "Unhandled" -+msgstr "Non-géré" -+ -+#: pki_x509req#9 -+msgctxt "pki_x509req#9" -+msgid "Wrong Size %1" -+msgstr "Taille fausse %1" -+ -+#: v3ext#1 -+msgctxt "v3ext#1" -+msgid "Add" -+msgstr "Ajouter" -+ -+#: v3ext#2 -+msgctxt "v3ext#2" -+msgid "Delete" -+msgstr "Détruire" -+ -+#: v3ext#3 -+msgctxt "v3ext#3" -+msgid "Apply" -+msgstr "Appliquer" -+ -+#: v3ext#4 -+msgctxt "v3ext#4" -+msgid "Validate" -+msgstr "Valider" -+ -+#: v3ext#5 -+msgctxt "v3ext#5" -+msgid "Cancel" -+msgstr "Abandonner" -+ -+#: v3ext#6 -+msgid "An email address or 'copy'" -+msgstr "Une adresse de courriel ou 'copy'" -+ -+#: v3ext#7 -+msgid "An email address" -+msgstr "Une adresse de courriel" -+ -+#: v3ext#8 -+msgid "a registered ID: OBJECT IDENTIFIER" -+msgstr "un IDentifiant enregistré: IDENTIFICATEUR.OBJET" -+ -+#: v3ext#9 -+msgid "a uniform resource indicator" -+msgstr "un indicateur uniforme de ressource" -+ -+#: v3ext#10 -+msgid "a DNS domain name" -+msgstr "u nom de domaine DNS" -+ -+#: v3ext#11 -+msgid "an IP address" -+msgstr "une adresse IP" -+ -+#: v3ext#12 -+msgid "Syntax: ;TYPE:text like '1.2.3.4:UTF8:name'" -+msgstr "Syntaxe: ;TYPE:texte comme '1.2.3.4:UTF8:nom'" -+ -+#: v3ext#13 -+msgid "No editing. Only 'copy' allowed here" -+msgstr "Pas de modification possible. Seul 'copy' est permis ici" -+ -+#: v3ext#14 -+msgid "" -+"Validation failed:\n" -+"'%1'\n" -+"%2" -+msgstr "" -+"La validation a échoué:\n" -+"'%1'\n" -+"%2" -+ -+#: v3ext#15 -+msgid "" -+"Validation successfull:\n" -+"'%1'" -+msgstr "" -+"La validation a été effectuée avec succès:\n" -+"'%1'" -+ -+#: void#1 -+msgctxt "void#1" -+msgid "There was no key found for the Certificate: " -+msgstr "Aucune clé n'a été trouvée pour le Certificat: " -+ -+#: void#2 -+msgctxt "void#2" -+msgid "Import Certificate signing request" -+msgstr "Importer une requête de signature" -diff -Naur xca-0.9.0.orig/lang/Makefile xca-0.9.0.new/lang/Makefile ---- xca-0.9.0.orig/lang/Makefile 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/lang/Makefile 2011-02-25 16:42:38.063627556 +0100 -@@ -3,7 +3,7 @@ - TOPDIR=.. - endif - --PO_LANGUAGES=es -+PO_LANGUAGES=es fr - LANGUAGES=de ru $(PO_LANGUAGES) - QM_XCA=$(patsubst %, xca_%.qm, $(LANGUAGES)) - QM_QT=$(patsubst %, qt_%.qm, $(LANGUAGES)) -diff -Naur xca-0.9.0.orig/misc/xca.desktop xca-0.9.0.new/misc/xca.desktop ---- xca-0.9.0.orig/misc/xca.desktop 2011-02-24 16:58:29.000000000 +0100 -+++ xca-0.9.0.new/misc/xca.desktop 2011-02-25 17:10:17.513801650 +0100 -@@ -5,6 +5,7 @@ - Comment=A graphical user interface for handling and issuing X.509 compliant Certificates - Comment[de]=Eine graphische Oberfläche zur Erstellung von X.509 konformen Zertifikaten - Comment[fi]=Graafinen X.509-varmenteiden hallintatyökalu -+Comment[fr]=Création et gestion de certificats conformes à la norme X.509 - Exec=xca - Icon=xca-32x32.xpm - Terminal=false diff --git a/xca-0.9.0-locale.patch b/xca-0.9.0-locale.patch deleted file mode 100644 index 3685b75..0000000 --- a/xca-0.9.0-locale.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -Naur xca-0.9.0.orig/lib/main.cpp xca-0.9.0.new/lib/main.cpp ---- xca-0.9.0.orig/lib/main.cpp 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/lib/main.cpp 2011-02-28 13:22:24.083587071 +0100 -@@ -40,10 +40,15 @@ - locale = QLocale::system().name(); - - dirs << getPrefix() -+#ifdef XCA_DEFAULT_QT_TRANSLATE -+ << XCA_DEFAULT_QT_TRANSLATE -+#endif -+#ifndef WIN32 - << "/usr/local/share/qt4/translations/" - << "/usr/share/qt4/translations/" - << "/usr/share/qt/translations/" -- << "."; -+#endif -+ ; - - foreach(QString dir, dirs) { - if (qtTr.load(QString("qt_%1").arg(locale), dir)) { diff --git a/xca-0.9.0-noec.patch b/xca-0.9.0-noec.patch deleted file mode 100644 index bda0cc3..0000000 --- a/xca-0.9.0-noec.patch +++ /dev/null @@ -1,303 +0,0 @@ -diff -Naur xca-0.9.0.orig/configure xca-0.9.0.new/configure ---- xca-0.9.0.orig/configure 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/configure 2011-02-28 12:30:48.060564861 +0100 -@@ -140,14 +140,12 @@ - cat >conftest.c < - #include --//#include -+#include - #include - - int main(){ - printf("\nThe Versions of the used libraries are:\n\t%s 0x%lxL\n\tQT: %s\n", --// "\tOpenSC: %s\n", - OPENSSL_VERSION_TEXT, OPENSSL_VERSION_NUMBER, QT_VERSION_STR --// , sc_get_version() - ); - - if (QT_VERSION < 0x040300) { -@@ -158,6 +156,12 @@ - printf("You need OpenSSL >= 0.9.8 or higher\n"); - return 1; - } -+ -+#ifdef OPENSSL_NO_EC -+ printf("\n### This OpenSSL installation has no EC cryptography support\n"); -+#endif -+ -+ puts("\n"); - return 0; - } - EOF -diff -Naur xca-0.9.0.orig/lib/pki_evp.cpp xca-0.9.0.new/lib/pki_evp.cpp ---- xca-0.9.0.orig/lib/pki_evp.cpp 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/lib/pki_evp.cpp 2011-02-28 12:25:18.768851651 +0100 -@@ -27,9 +27,11 @@ - - QPixmap *pki_evp::icon[2]= { NULL, NULL }; - -+#ifndef OPENSSL_NO_EC - EC_builtin_curve *pki_evp::curves = NULL; - size_t pki_evp::num_curves = 0; - unsigned char *pki_evp::curve_flags = NULL; -+#endif - - void pki_evp::erasePasswd() - { -@@ -101,7 +103,9 @@ - { - RSA *rsakey; - DSA *dsakey; -+#ifndef OPENSSL_NO_EC - EC_KEY *eckey; -+#endif - - progress->setMinimum(0); - progress->setMaximum(100); -@@ -122,6 +126,7 @@ - if (dsakey) - EVP_PKEY_assign_DSA(key, dsakey); - break; -+#ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: - EC_GROUP *group = EC_GROUP_new_by_curve_name(curve_nid); - if (!group) -@@ -142,6 +147,7 @@ - EC_KEY_free(eckey); - EC_GROUP_free(group); - break; -+#endif - } - pki_openssl_error(); - encryptKey(); -@@ -180,8 +186,10 @@ - return key->pkey.rsa->d ? true: false; - case EVP_PKEY_DSA: - return key->pkey.dsa->priv_key ? true: false; -+#ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: - return EC_KEY_get0_private_key(key->pkey.ec) ? true: false; -+#endif - } - return false; - } -@@ -226,6 +234,7 @@ - openssl_error(name); - } - -+#ifndef OPENSSL_NO_EC - static void search_ec_oid(EC_KEY *ec) - { - const EC_GROUP *ec_group = EC_KEY_get0_group(ec); -@@ -250,6 +259,7 @@ - } - } - } -+#endif - - void pki_evp::fload(const QString fname) - { -@@ -311,8 +321,10 @@ - throw errorEx(tr("Unable to load the private key in file %1. Tried PEM and DER private, public and PKCS#8 key types.").arg(fname)); - } - if (pkey){ -+#ifndef OPENSSL_NO_EC - if (pkey->type == EVP_PKEY_EC) - search_ec_oid(pkey->pkey.ec); -+#endif - if (key) - EVP_PKEY_free(key); - key = pkey; -@@ -659,7 +671,9 @@ - switch (key->type) { - case EVP_PKEY_RSA: md = EVP_sha1(); break; - case EVP_PKEY_DSA: md = EVP_dss1(); break; -+#ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: md = EVP_ecdsa(); break; -+#endif - default: md = NULL; break; - } - return md; -diff -Naur xca-0.9.0.orig/lib/pki_evp.h xca-0.9.0.new/lib/pki_evp.h ---- xca-0.9.0.orig/lib/pki_evp.h 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/lib/pki_evp.h 2011-02-28 12:25:18.769851580 +0100 -@@ -37,9 +37,11 @@ - static void setOldPasswd(const char *pass); - static QString md5passwd(const char *pass); - static QString sha512passwd(QString pass, QString salt); -+#ifndef OPENSSL_NO_EC - static EC_builtin_curve *curves; - static size_t num_curves; - static unsigned char *curve_flags; -+#endif - - void generate(int bits, int type, QProgressBar *progress); - void generate(int bits, int type, QProgressBar *progress, -diff -Naur xca-0.9.0.orig/lib/pki_key.cpp xca-0.9.0.new/lib/pki_key.cpp ---- xca-0.9.0.orig/lib/pki_key.cpp 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/lib/pki_key.cpp 2011-02-28 12:25:18.769851580 +0100 -@@ -210,6 +210,7 @@ - return QString(); - } - -+#ifndef OPENSSL_NO_EC - int pki_key::ecParamNid() - { - if (key->type != EVP_PKEY_EC) -@@ -232,6 +233,7 @@ - } - return pub; - } -+#endif - - bool pki_key::compare(pki_base *ref) - { -diff -Naur xca-0.9.0.orig/lib/pki_scard.cpp xca-0.9.0.new/lib/pki_scard.cpp ---- xca-0.9.0.orig/lib/pki_scard.cpp 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/lib/pki_scard.cpp 2011-02-28 12:36:50.761408182 +0100 -@@ -113,6 +113,7 @@ - EVP_PKEY_assign_DSA(pkey, dsa); - break; - } -+#ifndef OPENSSL_NO_EC - case CKK_EC: { - EC_KEY *ec = EC_KEY_new(); - -@@ -137,6 +138,7 @@ - EVP_PKEY_assign_EC_KEY(pkey, ec); - break; - } -+#endif - default: - throw errorEx(QString("Unsupported CKA_KEY_TYPE: %1\n").arg(keytype)); - } -@@ -368,7 +370,9 @@ - switch (mech_list[i]) { - case CKM_MD5_RSA_PKCS: nids << NID_md5; break; - case CKM_DSA_SHA1: -+#ifndef OPENSSL_NO_EC - case CKM_ECDSA_SHA1: -+#endif - case CKM_SHA1_RSA_PKCS: nids << NID_sha1; break; - case CKM_SHA256_RSA_PKCS: nids << NID_sha256; break; - case CKM_SHA384_RSA_PKCS: nids << NID_sha384; break; -@@ -389,8 +393,10 @@ - return EVP_sha1(); - if (mech_list.contains(CKM_DSA_SHA1)) - return EVP_dss1(); -+#ifndef OPENSSL_NO_EC - if (mech_list.contains(CKM_ECDSA_SHA1)) - return EVP_ecdsa(); -+#endif - if (mech_list.contains(CKM_SHA512_RSA_PKCS)) - return EVP_sha512(); - if (mech_list.contains(CKM_SHA384_RSA_PKCS)) -diff -Naur xca-0.9.0.orig/widgets/hashBox.cpp xca-0.9.0.new/widgets/hashBox.cpp ---- xca-0.9.0.orig/widgets/hashBox.cpp 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/widgets/hashBox.cpp 2011-02-28 12:25:18.769851580 +0100 -@@ -40,8 +40,10 @@ - switch(key_type) { - case EVP_PKEY_DSA: - return EVP_dss1(); -+#ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: - return EVP_ecdsa(); -+#endif - default: - QString hash = currentText(); - for (unsigned i=0; isetReadOnly(true); - } - -+#ifndef OPENSSL_NO_EC - static QString CurveComment(int nid) - { - for (size_t i=0; isetText(key->subprime()); - keyModulus->setText(key->pubkey()); - break; -+#ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: - nid = key->ecParamNid(); - tlModulus->setText(tr("Public key")); -@@ -83,6 +86,7 @@ - keyPubEx->setToolTip(CurveComment(nid)); - keyModulus->setText(key->ecPubKey()); - break; -+#endif - default: - tlHeader->setText(tr("Unknown key")); - } -diff -Naur xca-0.9.0.orig/widgets/MainWindow.cpp xca-0.9.0.new/widgets/MainWindow.cpp ---- xca-0.9.0.orig/widgets/MainWindow.cpp 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/widgets/MainWindow.cpp 2011-02-28 12:39:47.453229550 +0100 -@@ -99,6 +99,7 @@ - NID_secp521r1 - }; - -+#ifndef OPENSSL_NO_EC - static void init_curves() - { - pki_evp::num_curves = EC_get_builtin_curves(NULL, 0); -@@ -130,6 +131,7 @@ - } - } - } -+#endif - - void MainWindow::enableTokenMenu(bool enable) - { -@@ -185,7 +187,9 @@ - init_images(); - homedir = getHomeDir(); - -+#ifndef OPENSSL_NO_EC - init_curves(); -+#endif - - #ifdef MDEBUG - CRYPTO_malloc_debug_init(); -diff -Naur xca-0.9.0.orig/widgets/NewKey.cpp xca-0.9.0.new/widgets/NewKey.cpp ---- xca-0.9.0.orig/widgets/NewKey.cpp 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/widgets/NewKey.cpp 2011-02-28 12:25:18.770851497 +0100 -@@ -24,7 +24,9 @@ - static const struct typelist typeList[] = { - { "RSA", EVP_PKEY_RSA }, - { "DSA", EVP_PKEY_DSA }, -+#ifndef OPENSSL_NO_EC - { "EC", EVP_PKEY_EC }, -+#endif - }; - - class keyListItem -@@ -98,6 +100,7 @@ - keytypes << gk; - } - -+#ifndef OPENSSL_NO_EC - for (i = 0; iaddItems(curve_x962); - curveBox->addItems(curve_other); -+#endif -+ - keyLength->setCurrentIndex(0); - keyDesc->setFocus(); - if (pkcs11::loaded()) try { diff --git a/xca.spec b/xca.spec index b8b9a32..7a30193 100644 --- a/xca.spec +++ b/xca.spec @@ -2,17 +2,14 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 0.9.0 -Release: %release_func 2 +Version: 0.9.1 +Release: %release_func 1 License: BSD Group: Applications/Productivity URL: http://www.hohnstaedt.de/xca.html Source0: http://downloads.sourceforge.net/sourceforge/xca/%{name}-%{version}.tar.gz Source1: README.update -Patch1: xca-0.9.0-locale.patch -Patch2: xca-0.9.0-noec.patch -Patch3: xca-0.9.0-french.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: qt4-devel openssl-devel BuildRequires: xdg-utils @@ -41,9 +38,6 @@ format, portable across operating systems. %prep %setup -q -%patch1 -p 1 -b .locale -%patch2 -p 1 -b .noec -%patch3 -p 1 -b .french mkdir -p _tmp_root/usr ln -s "/usr/%{_lib}" _tmp_root/usr/lib @@ -52,8 +46,6 @@ ln -s "%{_includedir}/Qt" _tmp_root/include install -p -m 644 "%{SOURCE1}" ./ -sed -i -e 's!^Exec=.*!\0 %%F!' misc/xca.desktop - %build #test -n "${QTDIR}" || . "%{_sysconfdir}/profile.d/qt.sh" @@ -79,7 +71,7 @@ mv AUTHORS.utf8 AUTHORS rm -rf "${RPM_BUILD_ROOT}" make destdir="${RPM_BUILD_ROOT}" mandir=share/man install -make destdir="${RPM_BUILD_ROOT}" mandir=share/man install -C misc TOPDIR=.. +make destdir="${RPM_BUILD_ROOT}" mandir=share/man install.misc # HACK: check whether workarounds below are still necessary if test ! -e "${RPM_BUILD_ROOT}%{_datadir}/xca/crl.png" @@ -139,6 +131,7 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %lang(es) %{_datadir}/xca/xca_es.qm %lang(fr) %{_datadir}/xca/xca_fr.qm %lang(ru) %{_datadir}/xca/xca_ru.qm +%lang(tr) %{_datadir}/xca/xca_tr.qm %{_datadir}/pixmaps/*.xpm %{_datadir}/icons/*/*/*/*.png %{_datadir}/mime/packages/%{name}.* @@ -147,6 +140,9 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Tue Nov 8 2011 Patrick Monnerat 0.9.1-1 +- New upstream release: all previous patches included in new code. + * Mon Feb 28 2011 Patrick Monnerat 0.9.0-2 - Fix Exec parameter in desktop file. From 28410f11cf050f8fb9826bb042bf085b47d07103 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Tue, 8 Nov 2011 14:30:53 +0100 Subject: [PATCH 06/72] * Tue Nov 8 2011 Patrick Monnerat 0.9.1-1 - New upstream release: all previous patches included in new code. --- .gitignore | 1 + sources | 2 +- xca-0.9.0-french.patch | 3250 ---------------------------------------- xca-0.9.0-locale.patch | 20 - xca-0.9.0-noec.patch | 303 ---- xca.spec | 18 +- 6 files changed, 9 insertions(+), 3585 deletions(-) delete mode 100644 xca-0.9.0-french.patch delete mode 100644 xca-0.9.0-locale.patch delete mode 100644 xca-0.9.0-noec.patch diff --git a/.gitignore b/.gitignore index 71e4422..bbd733a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ xca-0.8.1.tar.gz /xca-0.9.0.tar.gz /README.update +/xca-0.9.1.tar.gz diff --git a/sources b/sources index 64ab1af..4ad2aff 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -ff6e23a0aac6a6d9d10b47d3f9856f1a xca-0.9.0.tar.gz +53926d86ba9fc251b59f0dd154f2e3db xca-0.9.1.tar.gz 113ba37a89fe2de69338fcfe3b773a03 README.update diff --git a/xca-0.9.0-french.patch b/xca-0.9.0-french.patch deleted file mode 100644 index 2eaa0ed..0000000 --- a/xca-0.9.0-french.patch +++ /dev/null @@ -1,3250 +0,0 @@ -diff -Naur xca-0.9.0.orig/lang/fr.po xca-0.9.0.new/lang/fr.po ---- xca-0.9.0.orig/lang/fr.po 1970-01-01 01:00:00.000000000 +0100 -+++ xca-0.9.0.new/lang/fr.po 2011-02-25 17:08:33.620671679 +0100 -@@ -0,0 +1,3223 @@ -+# -+# Patrick Monnerat , 2011. -+# -+msgid "" -+msgstr "" -+"Project-Id-Version: xca 0.9.0\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2010-08-24 07:29+0200\n" -+"PO-Revision-Date: 2011-02-25 16:20+0100\n" -+"Last-Translator: Patrick Monnerat \n" -+"Language-Team: fr \n" -+"MIME-Version: 1.0\n" -+"Content-Type: text/plain; charset=UTF-8\n" -+"Content-Transfer-Encoding: 8bit\n" -+"X-Generator: Translate Toolkit 1.7.0\n" -+ -+#: About#1 -+msgid "Done" -+msgstr "OK" -+ -+#: CaProperties#1 -+msgid "CA Properties" -+msgstr "Propriétés du CA" -+ -+#: CaProperties#2 -+msgid "Use random Serial numbers" -+msgstr "Utiliser des numéros de série aléatoires" -+ -+#: CaProperties#3 -+msgid "Days until next CRL issuing" -+msgstr "" -+"Nombre de jours avant la génération de la prochaine liste de révocation" -+ -+#: CaProperties#4 -+msgid "Default template" -+msgstr "Modèle par défaut" -+ -+#: CaProperties#5 -+msgid "Next serial for signing" -+msgstr "Numéro de série suivant pour la signature" -+ -+#: CertDetail#1 -+msgid "Details of the Certificate" -+msgstr "Détails du Certificat" -+ -+#: CertDetail#2 -+msgid "S&tatus" -+msgstr "E&tat" -+ -+#: CertDetail#3 -+msgctxt "CertDetail#3" -+msgid "Serial" -+msgstr "Numéro de série" -+ -+#: CertDetail#4 -+msgid "The serial number of the certificate" -+msgstr "Le numéro de série du certificat" -+ -+#: CertDetail#5 -+msgid "The internal name of the certificate in the database" -+msgstr "Le nom interne du certificat dans la base de données" -+ -+#: CertDetail#6 -+msgctxt "CertDetail#6" -+msgid "Internal name" -+msgstr "Nom interne" -+ -+#: CertDetail#7 -+msgctxt "CertDetail#7" -+msgid "Signature algorithm" -+msgstr "Algorithme de signature" -+ -+#: CertDetail#8 -+msgctxt "CertDetail#8" -+msgid "Signature" -+msgstr "Signature" -+ -+#: CertDetail#9 -+msgctxt "CertDetail#9" -+msgid "Key" -+msgstr "Clé" -+ -+#: CertDetail#10 -+msgid "Fingerprints" -+msgstr "Empreinte" -+ -+#: CertDetail#11 -+msgid "SHA1" -+msgstr "SHA1" -+ -+#: CertDetail#12 -+msgid "MD5" -+msgstr "MD5" -+ -+#: CertDetail#13 -+msgid "A SHA-1 hashsum of the certificate" -+msgstr "La somme de hachage SHA-1 du certificat" -+ -+#: CertDetail#14 -+msgid "An md5 hashsum of the certificate" -+msgstr "La somme de hachage MD5 du certificat" -+ -+#: CertDetail#15 -+msgctxt "CertDetail#15" -+msgid "Validity" -+msgstr "Validité" -+ -+#: CertDetail#16 -+msgid "The time since the certificate is valid" -+msgstr "Le moment depuis lequel le certificat est valide" -+ -+#: CertDetail#17 -+msgid "The time until the certificate is valid" -+msgstr "Le moment auquel le certificat échoit" -+ -+#: CertDetail#18 -+msgid "&Subject" -+msgstr "&Sujet" -+ -+#: CertDetail#19 -+msgctxt "CertDetail#19" -+msgid "&Issuer" -+msgstr "&Emetteur" -+ -+#: CertDetail#20 -+msgid "Attributes" -+msgstr "Attributs" -+ -+#: CertDetail#21 -+msgctxt "CertDetail#21" -+msgid "&Extensions" -+msgstr "E&xtensions" -+ -+#: CertDetail#22 -+msgid "Show config" -+msgstr "Afficher la configuration" -+ -+#: CertDetail#23 -+msgid "Show extensions" -+msgstr "Afficher les extensions" -+ -+#: CertDetail#24 -+msgctxt "CertDetail#24" -+msgid "Not available" -+msgstr "Non disponible" -+ -+#: CertDetail#25 -+msgid "Details of the certificate" -+msgstr "Détails du certificat" -+ -+#: CertDetail#26 -+msgid "Signer unknown" -+msgstr "Signataire inconnu" -+ -+#: CertDetail#27 -+msgid "Self signed" -+msgstr "Auto-signé" -+ -+#: CertDetail#28 -+msgctxt "CertDetail#28" -+msgid "Not trusted" -+msgstr "Pas sûr" -+ -+#: CertDetail#29 -+msgid "Trusted" -+msgstr "Sûr" -+ -+#: CertDetail#30 -+msgid "Revoked: " -+msgstr "Révoqués: " -+ -+#: CertDetail#31 -+msgid "Not valid" -+msgstr "Echu" -+ -+#: CertDetail#32 -+msgid "Valid" -+msgstr "Valide" -+ -+#: CertDetail#33 -+msgid "Details of the certificate signing request" -+msgstr "Détails de la requête de signature" -+ -+#: CertExtend#1 -+msgid "Certificate renewal" -+msgstr "Renouvellement du certificat" -+ -+#: CertExtend#2 -+msgid "" -+"This will create a new certificate as a copy of the old one with a new " -+"serial number and adjusted validity values." -+msgstr "" -+"Créer un nouveau certificat conforme à l'ancien, mais avec un nouveau numéro " -+"de série et les limites de validité ajustées." -+ -+#: CertExtend#3 -+msgctxt "CertExtend#3" -+msgid "Validity" -+msgstr "Validité" -+ -+#: CertExtend#4 -+msgctxt "CertExtend#4" -+msgid "Not before" -+msgstr "Pas avant" -+ -+#: CertExtend#5 -+msgctxt "CertExtend#5" -+msgid "Not after" -+msgstr "Pas après" -+ -+#: CertExtend#6 -+msgctxt "CertExtend#6" -+msgid "Time range" -+msgstr "Intervalle de temps" -+ -+#: CertExtend#7 -+msgctxt "CertExtend#7" -+msgid "No well-defined expiration" -+msgstr "Date d'expiration mal définie" -+ -+#: CertExtend#8 -+msgctxt "CertExtend#8" -+msgid "Apply" -+msgstr "Appliquer" -+ -+#: CertExtend#9 -+msgctxt "CertExtend#9" -+msgid "Days" -+msgstr "Jours" -+ -+#: CertExtend#10 -+msgctxt "CertExtend#10" -+msgid "Months" -+msgstr "Mois" -+ -+#: CertExtend#11 -+msgctxt "CertExtend#11" -+msgid "Years" -+msgstr "Années" -+ -+#: CertExtend#12 -+msgctxt "CertExtend#12" -+msgid "Midnight" -+msgstr "Minuit" -+ -+#: CertExtend#13 -+msgctxt "CertExtend#13" -+msgid "" -+"The certificate will be earlier valid than the signer. This is probably not " -+"what you want." -+msgstr "" -+"Le certificat serait valide avant son signataire. Ce n'est probablement pas " -+"ce qui est désiré." -+ -+#: CertExtend#14 -+msgid "Edit times" -+msgstr "Modifier les limites de validité" -+ -+#: CertExtend#15 -+msgctxt "CertExtend#15" -+msgid "Abort rollout" -+msgstr "Interrompre le déploiement" -+ -+#: CertExtend#16 -+msgctxt "CertExtend#16" -+msgid "Continue rollout" -+msgstr "Continuer le déploiement" -+ -+#: CertExtend#17 -+msgctxt "CertExtend#17" -+msgid "Adjust date and continue" -+msgstr "Ajuster la date et continuer" -+ -+#: CertExtend#18 -+msgctxt "CertExtend#18" -+msgid "" -+"The certificate will be longer valid than the signer. This is probably not " -+"what you want." -+msgstr "" -+"Le certificat serait valide plus longtemps que son signataire. Ce n'est " -+"probablement pas ce qui est désiré." -+ -+#: CertView#1 -+msgctxt "CertView#1" -+msgid "There was no key found for the Certificate: " -+msgstr "Aucune clé n'a été trouvée pour ce certificat: " -+ -+#: CertView#2 -+msgctxt "CertView#2" -+msgid "Import Certificate signing request" -+msgstr "Importer une requête de signature" -+ -+#: ClickLabel#1 -+msgid "Double click for details" -+msgstr "Double-cliquer pour afficher les détails" -+ -+#: CrlDetail#1 -+msgid "Details of the Revocation list" -+msgstr "Détails de la liste de révocation" -+ -+#: CrlDetail#2 -+msgid "&Status" -+msgstr "&Etat" -+ -+#: CrlDetail#3 -+msgid "Version" -+msgstr "Version" -+ -+#: CrlDetail#4 -+msgctxt "CrlDetail#4" -+msgid "Signature" -+msgstr "Signature" -+ -+#: CrlDetail#5 -+msgid "Signed by" -+msgstr "Signé par" -+ -+#: CrlDetail#6 -+msgctxt "CrlDetail#6" -+msgid "Name" -+msgstr "Nom" -+ -+#: CrlDetail#7 -+msgid "The internal name of the CRL in the database" -+msgstr "Le nom interne de la liste de révocation dans la base de données" -+ -+#: CrlDetail#8 -+msgid "issuing dates" -+msgstr "date d'émission" -+ -+#: CrlDetail#9 -+msgid "Next Update" -+msgstr "Prochaine mise-à-jour" -+ -+#: CrlDetail#10 -+msgid "Last Update" -+msgstr "Dernière mise-à-jour" -+ -+#: CrlDetail#11 -+msgctxt "CrlDetail#11" -+msgid "&Issuer" -+msgstr "&Emetteur" -+ -+#: CrlDetail#12 -+msgctxt "CrlDetail#12" -+msgid "&Extensions" -+msgstr "E&xtensions" -+ -+#: CrlDetail#13 -+msgid "&Revocation list" -+msgstr "Liste de &révocation" -+ -+#: CrlDetail#14 -+msgid "0" -+msgstr "0" -+ -+#: CrlDetail#15 -+msgctxt "CrlDetail#15" -+msgid "Serial" -+msgstr "Numéro de série" -+ -+#: CrlDetail#16 -+msgctxt "CrlDetail#16" -+msgid "Revocation" -+msgstr "Révocation" -+ -+#: CrlDetail#17 -+msgid "Reason" -+msgstr "Raison" -+ -+#: CrlDetail#18 -+msgid "Invalidation" -+msgstr "Invalidation" -+ -+#: CrlDetail#19 -+msgid "Failed" -+msgstr "Echoué" -+ -+#: CrlDetail#20 -+msgid "Unknown signer" -+msgstr "Signataire inconnu" -+ -+#: CrlDetail#21 -+msgid "Verification not possible" -+msgstr "Vérification impossible" -+ -+#: CrlDetail#22 -+msgid "Unknown certificate" -+msgstr "Certificat inconnu" -+ -+#: ExportCert#1 -+msgid "X509 Certificates ( *.cer *.crt *.p12 *.p7b);;All files ( * )" -+msgstr "Certificats X509 ( *.cer *.crt *.p12 *.p7b);;Tous les fichiers ( * )" -+ -+#: ExportCert#2 -+msgid "" -+"DER is a binary format of the Certificate\n" -+"PEM is a base64 encoded Certificate\n" -+"PKCS#7 is an official Certificate exchange format\n" -+"PKCS#12 is an encrypted official Key-Certificate exchange format\n" -+msgstr "" -+"DER est un format binaire de certificat\n" -+"PEM encode le certificat en base64\n" -+"PKCS#7 est un format officiel d'échange de certificat\n" -+"PKCS#12 est un format officiel encrypté d'échange de certificat et de clé\n" -+ -+#: ExportCert#3 -+msgid "Please enter the filename for the certificate." -+msgstr "SVP entrer le nom du fichier pour le certificat." -+ -+#: ExportCert#4 -+msgid "Certifikate export" -+msgstr "Exportation de certificat" -+ -+#: ExportDer#1 -+msgctxt "ExportDer#1" -+msgid "All files ( * )" -+msgstr "Tous les fichiers ( * )" -+ -+#: ExportDer#2 -+msgid "" -+"DER is a binary format\n" -+"PEM is a base64 encoded DER file\n" -+msgstr "" -+"DER est un format binaire\n" -+"PEM est un format encodé en base64\n" -+ -+#: ExportDialog#1 -+msgid "..." -+msgstr "..." -+ -+#: ExportDialog#2 -+msgid "Filename" -+msgstr "Nom du fichier" -+ -+#: ExportDialog#3 -+msgid "Please enter the filename" -+msgstr "SVP saisir le nom du fichier" -+ -+#: ExportDialog#4 -+msgid "Export Format" -+msgstr "Format d'exportation" -+ -+#: ExportDialog#5 -+msgid "The file: '%1' already exists!" -+msgstr "Le fichier '%1' existe déjà!" -+ -+#: ExportDialog#6 -+msgid "Overwrite" -+msgstr "Ecraser" -+ -+#: ExportDialog#7 -+msgid "Do not overwrite" -+msgstr "Ne pas écraser" -+ -+#: ExportKey#1 -+msgid "When exporting the private key it should be encrypted." -+msgstr "Il est conseillé d'encrypter la clé privée lors de son exportation." -+ -+#: ExportKey#2 -+msgid "When exporting the private part, it should be encrypted." -+msgstr "Il est conseillé d'encrypter la partie privée lors de son exportation." -+ -+#: ExportKey#3 -+msgid "E&xport the private part of the Key too" -+msgstr "E&xporter aussi la partie privée de la clé" -+ -+#: ExportKey#4 -+msgid "Export as PKCS#8" -+msgstr "Exporter en PKCS#8" -+ -+#: ExportKey#5 -+msgid "&Encrypt the Key with a password" -+msgstr "&Encrypter la clé avec un mot de passe" -+ -+#: ExportKey#6 -+msgid "Private keys ( *.pem *.der *.pk8 );;All files ( * )" -+msgstr "Clés privées ( *.pem *.der *.pk8 );;Tous les fichiers ( * )" -+ -+#: ExportKey#7 -+msgid "" -+"DER is a binary format of the key without encryption\n" -+"PEM is a base64 encoded key with optional encryption\n" -+"PKCS#8 is an encrypted official Key-exchange format" -+msgstr "" -+"DER est un format binaire de clé sans encryption\n" -+"PEM encode la clé en base64 avec une encryption facultative\n" -+"PKCS#8 est un format officiel d'échange de clé" -+ -+#: ExportKey#8 -+msgid "Please enter the filename for the key." -+msgstr "SVP saisir le nom du fichier pour la clé." -+ -+#: ExportKey#9 -+msgid "Public key export" -+msgstr "Exporter la clé publique" -+ -+#: ExportKey#10 -+msgid "Key export" -+msgstr "Exporter la clé" -+ -+#: Help#1 -+msgid "<<" -+msgstr "<<" -+ -+#: Help#2 -+msgid ">>" -+msgstr "<<" -+ -+#: Help#3 -+msgctxt "Help#3" -+msgid "&Done" -+msgstr "&OK" -+ -+#: ImportMulti#1 -+msgid "Import PKI Items" -+msgstr "Importer des objets PKI" -+ -+#: ImportMulti#2 -+msgid "Import &All" -+msgstr "Importer &tout" -+ -+#: ImportMulti#3 -+msgctxt "ImportMulti#3" -+msgid "&Import" -+msgstr "&Importer" -+ -+#: ImportMulti#4 -+msgctxt "ImportMulti#4" -+msgid "&Done" -+msgstr "&OK" -+ -+#: ImportMulti#5 -+msgid "&Remove" -+msgstr "&Enlever" -+ -+#: ImportMulti#6 -+msgid "Details" -+msgstr "Détails" -+ -+#: ImportMulti#7 -+msgid "Delete from token" -+msgstr "Enlever du jeton" -+ -+#: ImportMulti#8 -+msgid "Rename on token" -+msgstr "Renommer dans le jeton" -+ -+#: ImportMulti#9 -+msgid "" -+"\n" -+"Name: %1\n" -+"Model: %2\n" -+"Serial: %3" -+msgstr "" -+"\n" -+"Nom: %1\n" -+"Modèle: %2\n" -+"Numéro de série: %3" -+ -+#: ImportMulti#10 -+msgid "Manage security token" -+msgstr "Gérer les jetons de sécurité" -+ -+#: ImportMulti#11 -+msgid "The type of the Item '%1' is not recognized" -+msgstr "Le type de l'objet '%1' n'est pas reconnu" -+ -+#: ImportMulti#12 -+msgid "Details of the item '%1' cannot be shown" -+msgstr "Les détails de l'objet '%1' ne peuvent pas être affichés" -+ -+#: ImportMulti#13 -+msgid "The type of the item '%1' is not recognized" -+msgstr "Le type de l'objet '%1' n'est pas reconnu" -+ -+#: ImportMulti#14 -+msgid "The file '%1' did not contain PKI data" -+msgstr "Le fichier '%1' ne contient pas de données PKI" -+ -+#: ImportMulti#15 -+msgid "The %1 files: '%2' did not contain PKI data" -+msgstr "Les %1 fichiers: '%2' ne contiennent pas de données PKI" -+ -+#: KeyDetail#1 -+msgctxt "KeyDetail#1" -+msgid "Name" -+msgstr "Nom" -+ -+#: KeyDetail#2 -+msgid "The internal name of the key used by xca" -+msgstr "Le nom interne de la clé utilisé par xca" -+ -+#: KeyDetail#3 -+msgctxt "KeyDetail#3" -+msgid "Security token" -+msgstr "Jeton de sécurité" -+ -+#: KeyDetail#4 -+msgid "Manufacturer" -+msgstr "Fabricant" -+ -+#: KeyDetail#5 -+msgctxt "KeyDetail#5" -+msgid "Serial" -+msgstr "Numéro de série" -+ -+#: KeyDetail#6 -+msgctxt "KeyDetail#6" -+msgid "Key" -+msgstr "Clé" -+ -+#: KeyDetail#7 -+msgid "Public Exponent" -+msgstr "Exposant public" -+ -+#: KeyDetail#8 -+msgctxt "KeyDetail#8" -+msgid "Keysize" -+msgstr "Taille de la clé" -+ -+#: KeyDetail#9 -+msgid "Private Exponent" -+msgstr "Exposant privé" -+ -+#: KeyDetail#10 -+msgid "Modulus" -+msgstr "Modulo" -+ -+#: KeyDetail#11 -+msgid "Details of the %1 key" -+msgstr "Détails de la clé %1" -+ -+#: KeyDetail#12 -+msgctxt "KeyDetail#12" -+msgid "Not available" -+msgstr "Non disponible" -+ -+#: KeyDetail#13 -+msgid "Token" -+msgstr "Jeton" -+ -+#: KeyDetail#14 -+msgid "Security token ID:%1" -+msgstr "Identifiant de jeton de sécurité: %1" -+ -+#: KeyDetail#15 -+msgid "Available" -+msgstr "Disponible" -+ -+#: KeyDetail#16 -+msgid "Sub prime" -+msgstr "Sous-premier" -+ -+#: KeyDetail#17 -+msgid "Public key" -+msgstr "Clé publique" -+ -+#: KeyDetail#18 -+msgctxt "KeyDetail#18" -+msgid "Private key" -+msgstr "Clé privée" -+ -+#: KeyDetail#19 -+msgid "Curve name" -+msgstr "Nom de la courbe" -+ -+#: KeyDetail#20 -+msgid "Unknown key" -+msgstr "Clé inconnue" -+ -+#: MainWindow#1 -+msgid "Private Keys" -+msgstr "Clés privées" -+ -+#: MainWindow#2 -+msgid "&New Key" -+msgstr "&Nouvelle clé" -+ -+#: MainWindow#3 -+msgid "&Export" -+msgstr "&Exporter" -+ -+#: MainWindow#4 -+msgctxt "MainWindow#4" -+msgid "&Import" -+msgstr "&Importer" -+ -+#: MainWindow#5 -+msgid "Import PFX (PKCS#12)" -+msgstr "Importer en PFX (PKCS#12)" -+ -+#: MainWindow#6 -+msgid "&Show Details" -+msgstr "&Afficher les Détails" -+ -+#: MainWindow#7 -+msgid "&Delete" -+msgstr "&Détruire" -+ -+#: MainWindow#8 -+msgid "Certificate signing requests" -+msgstr "Requêtes de signature de certificat" -+ -+#: MainWindow#9 -+msgid "&New Request" -+msgstr "&Nouvelle requête" -+ -+#: MainWindow#10 -+msgid "Certificates" -+msgstr "Certificats" -+ -+#: MainWindow#11 -+msgid "&New Certificate" -+msgstr "&Nouveau Certificat" -+ -+#: MainWindow#12 -+msgid "Import &PKCS#12" -+msgstr "Importer en &PKCS#12" -+ -+#: MainWindow#13 -+msgid "Import P&KCS#7" -+msgstr "Importer en P&KCS#7" -+ -+#: MainWindow#14 -+msgctxt "MainWindow#14" -+msgid "Plain View" -+msgstr "Vue à plat" -+ -+#: MainWindow#15 -+msgid "Templates" -+msgstr "Modèles" -+ -+#: MainWindow#16 -+msgid "&New template" -+msgstr "&Nouveau modèle" -+ -+#: MainWindow#17 -+msgid "Ch&ange Template" -+msgstr "&Modifier le Modèle" -+ -+#: MainWindow#18 -+msgid "Revocation lists" -+msgstr "Listes de révocation" -+ -+#: MainWindow#19 -+msgid "Please enter the password to decrypt the private key: '%1'" -+msgstr "SVP saisir le mot de passe pour décrypter la clé privée: '%1'" -+ -+#: MainWindow#20 -+msgid "" -+"Using or exporting private keys will not be possible without providing the " -+"correct password" -+msgstr "" -+"L'usage ou l'exportation de clés privées seront impossible sans fournir le " -+"mot de passe correct." -+ -+#: MainWindow#21 -+msgid "Database" -+msgstr "Base de donnée" -+ -+#: MainWindow#22 -+msgid "No deleted items found" -+msgstr "Aucun objet détruit n'a été trouvé" -+ -+#: MainWindow#23 -+msgid "&File" -+msgstr "&Fichier" -+ -+#: MainWindow#24 -+msgid "&New DataBase" -+msgstr "&Nouvelle base de données" -+ -+#: MainWindow#25 -+msgid "&Open DataBase" -+msgstr "&Ouvrir une base de données" -+ -+#: MainWindow#26 -+msgid "Generate DH parameter" -+msgstr "Générer le paramètre DH" -+ -+#: MainWindow#27 -+msgid "&Close DataBase" -+msgstr "&Fermer la base de données" -+ -+#: MainWindow#28 -+msgid "&Dump DataBase" -+msgstr "C&licher la base de données" -+ -+#: MainWindow#29 -+msgid "C&hange DataBase password" -+msgstr "C&hanger le mot de passe de la base de données" -+ -+#: MainWindow#30 -+msgid "&Import old db_dump" -+msgstr "&Importer un cliché de base de données en ancien format (db_dump)" -+ -+#: MainWindow#31 -+msgid "&Undelete items" -+msgstr "&Récupérer des objets détruits" -+ -+#: MainWindow#32 -+msgid "Options" -+msgstr "Options" -+ -+#: MainWindow#33 -+msgid "Exit" -+msgstr "Quitter" -+ -+#: MainWindow#34 -+msgid "I&mport" -+msgstr "I&mporter" -+ -+#: MainWindow#35 -+msgid "Keys" -+msgstr "Clés" -+ -+#: MainWindow#36 -+msgid "Requests" -+msgstr "Requêtes" -+ -+#: MainWindow#37 -+msgid "PKCS#12" -+msgstr "PKCS#12" -+ -+#: MainWindow#38 -+msgctxt "MainWindow#38" -+msgid "PKCS#7" -+msgstr "PKCS#7" -+ -+#: MainWindow#39 -+msgctxt "MainWindow#39" -+msgid "Template" -+msgstr "Modèle" -+ -+#: MainWindow#40 -+msgid "Revocation list" -+msgstr "Liste de révocation" -+ -+#: MainWindow#41 -+msgid "PEM file" -+msgstr "Fichier PEM" -+ -+#: MainWindow#42 -+msgid "paste PEM file" -+msgstr "Coller un fichier PEM" -+ -+#: MainWindow#43 -+msgid "&Token" -+msgstr "&Jeton" -+ -+#: MainWindow#44 -+msgid "&Manage Security token" -+msgstr "&Gérer le jeton de sécurité" -+ -+#: MainWindow#45 -+msgid "&Init Security token" -+msgstr "&Initialiser le jeton de sécurité" -+ -+#: MainWindow#46 -+msgid "&Change PIN" -+msgstr "&Changer le NIP" -+ -+#: MainWindow#47 -+msgid "Change &SO PIN" -+msgstr "Changer le P&UK" -+ -+#: MainWindow#48 -+msgid "Init PIN" -+msgstr "Initialiser le NIP" -+ -+#: MainWindow#49 -+msgid "&Help" -+msgstr "&Aide" -+ -+#: MainWindow#50 -+msgid "&Content" -+msgstr "&Contenu" -+ -+#: MainWindow#51 -+msgid "&About" -+msgstr "&A propos" -+ -+#: MainWindow#52 -+msgid "Donations" -+msgstr "Dons" -+ -+#: MainWindow#53 -+msgid "Database dump ( *.dump );;All files ( * )" -+msgstr "Cliché de base de données ( *.dump );;Tous les fichiers ( * )" -+ -+#: MainWindow#54 -+msgid "Import password" -+msgstr "Mot de passe d'importation" -+ -+#: MainWindow#55 -+msgid "Please enter the password of the old database" -+msgstr "SVP saisir le mot de passe de l'ancienne base de données" -+ -+#: MainWindow#56 -+msgid "Password verification error. Ignore keys ?" -+msgstr "La vérification du mot de passe a écoué. Ignorer les clés ?" -+ -+#: MainWindow#57 -+msgid "Import anyway" -+msgstr "Importer quand-même" -+ -+#: MainWindow#58 -+msgctxt "MainWindow#58" -+msgid "Cancel" -+msgstr "Abandonner" -+ -+#: MainWindow#59 -+msgid "no such option: %1" -+msgstr "'%1' n'est pas une option" -+ -+#: MainWindow#60 -+msgid "Import PEM data" -+msgstr "Importer les données PEM" -+ -+#: MainWindow#61 -+msgid "Please enter the original SO PIN (PUK) of the token '%1'" -+msgstr "SVP saisir le PUK original du jeton '%1'" -+ -+#: MainWindow#62 -+msgid "Please enter the new SO PIN (PUK) of the token '%1'" -+msgstr "SVP saisir le nouveau PUK du jeton '%1'" -+ -+#: MainWindow#63 -+msgid "The new label of the token '%1'" -+msgstr "La nouvelle étiquette du jeton '%1'" -+ -+#: MainWindow#64 -+msgid "The token '%1' did not contain any keys or certificates" -+msgstr "Le jeton '%1' ne contient aucune clé ni aucun certificat" -+ -+#: MainWindow#65 -+msgid "New Password" -+msgstr "Nouveau mot de passe" -+ -+#: MainWindow#66 -+msgid "" -+"Please enter the new password to encrypt your private keys in the database-" -+"file" -+msgstr "" -+"SVP saisir le nouveau mot de passe pour encrypter les clés privées dans le " -+"fichier de base de données" -+ -+#: MainWindow#67 -+msgid "" -+"Please enter a password, that will be used to encrypt your private keys in " -+"the database file: '%1'" -+msgstr "" -+"SVP saisir un mot de passe qui sera utilisé pour encrypter les clés privées " -+"dans le fichier de base de données: '%1'" -+ -+#: MainWindow#68 -+msgid "Password verify error, please try again" -+msgstr "La vérification du mot de passe a échoué. SVP essayez encore" -+ -+#: MainWindow#69 -+msgctxt "MainWindow#69" -+msgid "Password" -+msgstr "Mot de passe" -+ -+#: MainWindow#70 -+msgid "Please enter the password for unlocking the database: '%1'" -+msgstr "SVP saisir le mot de passe pour débloquer la base de données: '%1'" -+ -+#: MainWindow#71 -+msgid "" -+"Hex password must only contain the characters '0' - '9' and 'a' - 'f' and it " -+"must consist of an even number of characters" -+msgstr "" -+"Un mot de passe hexadécimal peut seulement contenir les caractères '0' à '9' " -+"et 'a' à 'f' et il doit consister en un nombre pair de caractères" -+ -+#: MainWindow#72 -+msgid "Repeat %1" -+msgstr "Répéter %1" -+ -+#: MainWindow#73 -+msgid "%1 missmatch" -+msgstr "%1 ne correspond pas" -+ -+#: MainWindow#74 -+msgid "The following error occured:" -+msgstr "L'erreur suivante s'est produite:" -+ -+#: MainWindow#75 -+msgid "Copy to Clipboard" -+msgstr "Copier dans le presse-papier" -+ -+#: MainWindow#76 -+msgid "DH parameter bits" -+msgstr "Bits du paramètre DH" -+ -+#: MainWindow#77 -+msgctxt "MainWindow#77" -+msgid "Error opening file: '%1': %2" -+msgstr "Erreur à l'ouverture du fichier '%1': %2" -+ -+#: NewCrl#1 -+msgid "Create CRL" -+msgstr "Créer une liste de révocation" -+ -+#: NewCrl#2 -+msgid "Dates" -+msgstr "Dates" -+ -+#: NewCrl#3 -+msgid "last update" -+msgstr "dernière mise-à-jour" -+ -+#: NewCrl#4 -+msgid "next update" -+msgstr "prochaine mise-à-jour" -+ -+#: NewCrl#5 -+msgctxt "NewCrl#5" -+msgid "Days" -+msgstr "Jours" -+ -+#: NewCrl#6 -+msgctxt "NewCrl#6" -+msgid "Months" -+msgstr "Mois" -+ -+#: NewCrl#7 -+msgctxt "NewCrl#7" -+msgid "Years" -+msgstr "Années" -+ -+#: NewCrl#8 -+msgctxt "NewCrl#8" -+msgid "Midnight" -+msgstr "Minuit" -+ -+#: NewCrl#9 -+msgctxt "NewCrl#9" -+msgid "Apply" -+msgstr "Appliquer" -+ -+#: NewCrl#10 -+msgid "Hashing algorithm" -+msgstr "Algorithme de hachage" -+ -+#: NewCrl#11 -+msgctxt "NewCrl#11" -+msgid "Extensions" -+msgstr "Extensions" -+ -+#: NewCrl#12 -+msgid "Authority key identifier" -+msgstr "Identifiant de clé de l'autorité" -+ -+#: NewCrl#13 -+msgid "Subject alternative name" -+msgstr "Nom alternatif du sujet" -+ -+#: NewCrl#14 -+msgid "CRL Number" -+msgstr "Numéro de la liste de révocation" -+ -+#: NewCrl#15 -+msgid "Revokation reasons" -+msgstr "Raisons de la révocation" -+ -+#: NewKey#1 -+msgid "New key" -+msgstr "Nouvelle clé" -+ -+#: NewKey#2 -+msgid "Please give a name to the new key and select the desired keysize" -+msgstr "" -+"SVP donner un nom à la nouvelle clé et sélectionner la taille de clé désirée" -+ -+#: NewKey#3 -+msgid "Key properties" -+msgstr "Propriétés de la clé" -+ -+#: NewKey#4 -+msgctxt "NewKey#4" -+msgid "Name" -+msgstr "Nom" -+ -+#: NewKey#5 -+msgid "The internal name of the new key" -+msgstr "Le nom interne de la nouvelle clé" -+ -+#: NewKey#6 -+msgctxt "NewKey#6" -+msgid "New Key" -+msgstr "Nouvelle Clé" -+ -+#: NewKey#7 -+msgid "Curve" -+msgstr "Courbe" -+ -+#: NewKey#8 -+msgctxt "NewKey#8" -+msgid "Keysize" -+msgstr "Taille de la clé" -+ -+#: NewKey#9 -+msgid "Usually 1024 or 2048 bit keys are used" -+msgstr "1024 et 2048 bits sont les tailles de clé les plus usitées" -+ -+#: NewKey#10 -+msgid "Keytype" -+msgstr "Type de clé" -+ -+#: NewKey#11 -+msgctxt "NewKey#11" -+msgid "Create" -+msgstr "Créer" -+ -+#: NewX509#1 -+msgctxt "NewX509#1" -+msgid "Create" -+msgstr "Créer" -+ -+#: NewX509#2 -+msgid "Source" -+msgstr "Source" -+ -+#: NewX509#3 -+msgid "Signing request" -+msgstr "Requête de signature" -+ -+#: NewX509#4 -+msgid "" -+"A certificate signing request can be signed, even if the private key of the " -+"request is not available. This is the intention of a CSR:\n" -+"Getting signed by a CA certificate, whoes certificate of course must be in " -+"the database\n" -+"Of course you need the private key of the CSR if you want to create a self-" -+"signed cert from it." -+msgstr "" -+"Un requête de signature de certificat peut être signée même si la clé privée " -+"de la requête n'est pas disponible. C'est l'intention\n" -+"d'une requête de signature: être signée par un certificat d'autorité (CA) " -+"qui lui bien-sûr, doit être dans la base de donnée.\n" -+"Par contre, la clé privée d'une requête est nécessaire pour créer un " -+"certificat auto-signé à partir de celle-ci." -+ -+#: NewX509#5 -+msgid "Show request" -+msgstr "Afficher la requête" -+ -+#: NewX509#6 -+msgid "Sign this Certificate signing &request" -+msgstr "Signer cette &requête" -+ -+#: NewX509#7 -+msgid "Copy extensions from the request" -+msgstr "Copier les extensions de la requête" -+ -+#: NewX509#8 -+msgid "Modify subject of the request" -+msgstr "Modifier le sujet de la requête" -+ -+#: NewX509#9 -+msgid "Signing" -+msgstr "Signer" -+ -+#: NewX509#10 -+msgid "Create a &self signed certificate with the serial" -+msgstr "Créer un certificat auto-&signé avec le numéro de série" -+ -+#: NewX509#11 -+msgid "If you leave this blank the serial 00 will be used" -+msgstr "Si ce champ est laissé vide, le numéro de série 00 sera utilisé" -+ -+#: NewX509#12 -+msgid "1" -+msgstr "1" -+ -+#: NewX509#13 -+msgid "Use &this Certificate for signing" -+msgstr "Utiliser &ce certificat pour signer" -+ -+#: NewX509#14 -+msgid "All certificates in your database that can create valid signatures" -+msgstr "" -+"Tous les certificats dans la base de données qui peuvent produire des " -+"signatures valables" -+ -+#: NewX509#15 -+msgid "" -+"This list contains all certificates with the CA-flag set to true and whoes " -+"private key is present in the key-database.\n" -+"If this list is disabled, you only can create a self-signed certificate." -+msgstr "" -+"Cette liste contient tous les certificats qui ont le drapeau CA levé et dont " -+"la clé privée est présente dans la base de données.\n" -+"Si cette liste est désactivée, seule la création d'un certificat auto-signé " -+"est possible." -+ -+#: NewX509#16 -+msgctxt "NewX509#16" -+msgid "Signature algorithm" -+msgstr "Algorithme de signature" -+ -+#: NewX509#17 -+msgid "Template for the new certificate" -+msgstr "Modèle pour le nouveau certificat" -+ -+#: NewX509#18 -+msgid "All available templates" -+msgstr "Tous les modèles disponibles" -+ -+#: NewX509#19 -+msgid "This list contains all templates from the toplevel template Tab" -+msgstr "Cette liste contient tous les modèles de l'onglet 'Modèles'" -+ -+#: NewX509#20 -+msgid "Apply extensions" -+msgstr "Appliquer les extensions" -+ -+#: NewX509#21 -+msgid "Apply subject" -+msgstr "Appliquer le sujet" -+ -+#: NewX509#22 -+msgid "Apply all" -+msgstr "Appliquer tout" -+ -+#: NewX509#23 -+msgctxt "NewX509#23" -+msgid "Subject" -+msgstr "Sujet" -+ -+#: NewX509#24 -+msgid "Organisation" -+msgstr "Organisation" -+ -+#: NewX509#25 -+msgid "" -+"This name is only used internally and does not appear in the resulting " -+"certificate" -+msgstr "" -+"Ce nom est seulement utilisé par xca et n'apparaît pas dans le certificat " -+"exporté" -+ -+#: NewX509#26 -+msgid "Must be exactly 2 letter of size (DE, UK)" -+msgstr "Doit contenir exactement deux lettres [FR, UK]" -+ -+#: NewX509#27 -+msgid "Country code" -+msgstr "Code du pays" -+ -+#: NewX509#28 -+msgid "State or Province" -+msgstr "Etat ou Province" -+ -+#: NewX509#29 -+msgid "Locality" -+msgstr "Ville" -+ -+#: NewX509#30 -+msgid "Organisational unit" -+msgstr "Unité organisationnlle" -+ -+#: NewX509#31 -+msgid "E-Mail address" -+msgstr "Adresse de courriel" -+ -+#: NewX509#32 -+msgctxt "NewX509#32" -+msgid "Internal name" -+msgstr "Nom interne" -+ -+#: NewX509#33 -+msgid "Common name" -+msgstr "Nom commun" -+ -+#: NewX509#34 -+msgctxt "NewX509#34" -+msgid "Add" -+msgstr "Ajouter" -+ -+#: NewX509#35 -+msgctxt "NewX509#35" -+msgid "Delete" -+msgstr "Enlever" -+ -+#: NewX509#36 -+msgctxt "NewX509#36" -+msgid "Private key" -+msgstr "Clé privée" -+ -+#: NewX509#37 -+msgid "This list only contains unused keys" -+msgstr "Cette liste ne contient que les clés inutilisées" -+ -+#: NewX509#38 -+msgid "Used keys too" -+msgstr "Inclure les clés utilisées" -+ -+#: NewX509#39 -+msgid "&Generate a new key" -+msgstr "&Générer une nouvelle clé" -+ -+#: NewX509#40 -+msgctxt "NewX509#40" -+msgid "Extensions" -+msgstr "Extensions" -+ -+#: NewX509#41 -+msgid "Basic constraints" -+msgstr "Contraintes basiques" -+ -+#: NewX509#42 -+msgctxt "NewX509#42" -+msgid "Type" -+msgstr "Type" -+ -+#: NewX509#43 -+msgid "If this will become a CA certificate or not" -+msgstr "Si un certificat d'autorité (CA) est en train d'être créé ou non" -+ -+#: NewX509#44 -+msgid "" -+"Set this to TRUE if you want to create a CA certificate that signs other " -+"certificates.\n" -+"This is always set to FALSE for client or server certificates. In most cases " -+"self-signed certificates are CA certificates.\n" -+"Self-signed non-CA certificates are unusual although they are possible." -+msgstr "" -+"Sélectionner \"VRAI\" si vous voulez créer un certificat d'autorité (CA) qui " -+"peut signer d'autres certificats.\n" -+"\"FAUX\" doit toujours être séléectionné pour des certificats de clients ou " -+"de serveurs. Dans la plupart des cas,\n" -+"les certificats auto-signés sont des certificats d'autorité: bien que " -+"possibles, les certificats auto-signés non-CA sont rares." -+ -+#: NewX509#45 -+msgid "Not defined" -+msgstr "Non défini" -+ -+#: NewX509#46 -+msgid "Certification Authority" -+msgstr "Autorité de Certification" -+ -+#: NewX509#47 -+msgid "End Entity" -+msgstr "Entité Finale" -+ -+#: NewX509#48 -+msgid "Path length" -+msgstr "Distance aux feuilles" -+ -+#: NewX509#49 -+msgid "How much CAs may be below this." -+msgstr "" -+"Combien de niveau de sous-CA peuvent apparaître jusqu'à une entité finale." -+ -+#: NewX509#50 -+msgid "" -+"If this is left empty the pathlen is not included in the certificate. " -+"Otherwise it distinguishes the count of chained CA certificates below this " -+"one.\n" -+"A pathlen of 0 means, that this certificate may not issue other sub-CA " -+"certificates. Although it can do it, all chain-checking algorithms in e.g. " -+"your browser or openssl will (should) fail." -+msgstr "" -+"Si ce champ est laissé vide, la distance aux peuilles n'est pas incluse dans " -+"le certificat. Sinon il limite le nombre de sous-CA en dessous de celui-ci.\n" -+"Une distance aux feuilles de 0 signifie que ce certificat ne peut pas signer " -+"de sous-CA. Bien qu'il puisse effectivement le faire, tous les algorithme de " -+"vérification de\n" -+"chaînage des certificats (p.ex: dans votre navigateur ou openssl) les " -+"refuseront." -+ -+#: NewX509#51 -+msgid "The basic constraints should always be critical" -+msgstr "Les contraintes basiques doivent toujours être critiques" -+ -+#: NewX509#52 -+msgid "Key identifier" -+msgstr "Identifiant de clé" -+ -+#: NewX509#53 -+msgid "Creates a hash of the key following the PKIX guidelines" -+msgstr "Crée un hachage de la clé conformément aux directives PKIX" -+ -+#: NewX509#54 -+msgid "Copy the Subject Key Identifier from the issuer" -+msgstr "Copie l'identifiant de clé du sujet du signataire" -+ -+#: NewX509#55 -+msgid "" -+"If this box is checked an attempt is made to copy the subject key identifier " -+"from the signing certificate.\n" -+"It also copies the issuer and serial number from the issuer certificate. " -+"Normally this will only be done if the keyid option fails." -+msgstr "" -+"Quand cette case est cochée, l'identifiant de clé est copiée du certificat " -+"signataire.\n" -+"L'emetteur et le numéro de série du certificat signataire sont aussi copiés: " -+"normalement cette copie n'est effectuée que si la copie de l'identifiant de " -+"clé échoue." -+ -+#: NewX509#56 -+msgctxt "NewX509#56" -+msgid "Validity" -+msgstr "Validité" -+ -+#: NewX509#57 -+msgctxt "NewX509#57" -+msgid "Not before" -+msgstr "Pas avant" -+ -+#: NewX509#58 -+msgctxt "NewX509#58" -+msgid "Not after" -+msgstr "Pas après" -+ -+#: NewX509#59 -+msgctxt "NewX509#59" -+msgid "Time range" -+msgstr "Intervalle de temps" -+ -+#: NewX509#60 -+msgctxt "NewX509#60" -+msgid "Days" -+msgstr "Jours" -+ -+#: NewX509#61 -+msgctxt "NewX509#61" -+msgid "Months" -+msgstr "Mois" -+ -+#: NewX509#62 -+msgctxt "NewX509#62" -+msgid "Years" -+msgstr "Années" -+ -+#: NewX509#63 -+msgctxt "NewX509#63" -+msgid "Apply" -+msgstr "Appliquer" -+ -+#: NewX509#64 -+msgid "Set the time to 00:00:00 and 23:59:59 respectively" -+msgstr "Définir les heures à 00:00:00 et 23:59:59 respectivement" -+ -+#: NewX509#65 -+msgctxt "NewX509#65" -+msgid "Midnight" -+msgstr "Minuit" -+ -+#: NewX509#66 -+msgctxt "NewX509#66" -+msgid "No well-defined expiration" -+msgstr "Date d'expiration mal définie" -+ -+#: NewX509#67 -+msgid "Authority Info Access" -+msgstr "Accès à l'information de l'autorité" -+ -+#: NewX509#68 -+msgid "CRL distribution point" -+msgstr "Point de distribution de la liste de révocation" -+ -+#: NewX509#69 -+msgid "issuer alternative name" -+msgstr "Nom alternatif du signataire" -+ -+#: NewX509#70 -+msgid "URI:" -+msgstr "URI:" -+ -+#: NewX509#71 -+msgid "" -+"This is a multi-valued extension that supports all the literal options of " -+"subject alternative name. Of the few software packages that currentlyi " -+"nterpret this extension most only interpret the URI option.\n" -+"Currently each option will set a new DistributionPoint with the fullName " -+"field set to the given value.\n" -+"Other fields like cRLissuer and reasons cannot currently be set or " -+"displayed: at this time no examples were available that used these fields.\n" -+"If you see this extension with when you attempt to print it " -+"out or it doesn't appear to display correctly then let steve know, including " -+"the certificate (mail steve at openssl dot org) .\n" -+"Examples:\n" -+"URI:http://www.myhost.com/myca.crl\n" -+"URI:http://www.my.com/my.crl, URI:http://www.oth.com/my.crl" -+msgstr "" -+"Cette extension est un agrégat de toutes les options littérales du nom " -+"alternatif du sujet. Parmi les quelques logiciels qui utilisent cette " -+"extension aujourd'hui, la plupart ne traitent uniquement l'option URI.\n" -+"Chaque option introduit un nouveau point de distribution qualifié par son " -+"nom complet.\n" -+"Pour l'instant, les autres champs comme 'CRLissuer' et 'reasons' ne peuvent " -+"pas être saisis ou affichés. Aucun exemple utilisant ces champs n'est " -+"disponible aujourd'hui.\n" -+"Si cette extension apparaît comme ou si le contenu ne semble " -+"pas affiché correctement, faites-le savoir a Steve (courriel: steve arobase " -+"openssl point org).\n" -+"Exemples:\n" -+"URI:http://www.monsite.com/monca.crl\n" -+"URI:http://www.moi.com/moi.crl, URI:http://www.lui.com/moi.crl" -+ -+#: NewX509#72 -+msgid "can be altered by the file \"aia.txt\"" -+msgstr "peut être altéré par le fichier \"aia.txt\"" -+ -+#: NewX509#73 -+msgid "Edit" -+msgstr "Modifier" -+ -+#: NewX509#74 -+msgid "DNS: IP: URI: email: RID:" -+msgstr "DNS: IP: URI: email: RID:" -+ -+#: NewX509#75 -+msgid "" -+"The authority information access extension gives details about how to access " -+"certain information relating to the CA. Its syntax is accessOID;location " -+"where 'location' has the same syntax as subject alternative name (except " -+"that email:copy is not supported). accessOID can be any valid OID but only " -+"certain values are meaningful for example OCSP and caIssuers. OCSP gives the " -+"location of an OCSP responder: this is used by Netscape PSM and other " -+"software.\n" -+"\n" -+"Example:\n" -+"\n" -+"OCSP;URI:http://ocsp.my.host/\n" -+"caIssuers;URI:http://my.ca/ca.html" -+msgstr "" -+"L'extension d'accès à l'information de l'autorité indique comment accéder à " -+"certaines informations concernant le certificat d'autorité. La syntaxe est " -+"accèsOID;emplacement où 'emplacement` à la même syntaxe que le nom " -+"alternatif du sujet (à part 'email:copy\" qui n'est pas supporté). N'importe " -+"quel OID valide peut être spécifié pour accèsOID, mais seules certaines " -+"valeurs ont un sens, par exemple OCSP et caIssuers. OCSP renseigne sur " -+"l'emplacement d'un répondeur OCSP; ceci est untilisé par les navigateurs Web " -+"et d'autres logiciels.\n" -+"\n" -+"Exemple:\n" -+"\n" -+"OCSP;URI:http://ocsp.mon.site/\n" -+"caIssuers;URI:http://moi.ca/ca.html" -+ -+#: NewX509#76 -+msgid "" -+"The subject alternative name extension allows various literal values to be " -+"used. These include \"email\" (an email address) , \"URI\" a uniform " -+"resource indicator, \"DNS\" (a DNS domain name) , RID (a registered ID: " -+"OBJECT IDENTIFIER) and IP (an IP address).\n" -+"Examples:\n" -+"email:my@other.address, IP: 1.1.1.1 , URI:http://my.url.here/\n" -+"email:my@other.address, RID:1.2.3.4, DNS: ns.server.tld" -+msgstr "" -+"Cette extension contient le nom alternatif du sujet et permet de regrouper " -+"plusieurs valeurs littérales. Celles-ci comprennent \"email\" (un adresse de " -+"courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS\" (un nom de " -+"domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP\" (une adresse " -+"IP).\n" -+"Exemples:\n" -+"email:mon@autre.adresse, IP: 1.1.1.1 , URI:http://mon.url.ici/\n" -+"email:mon@autre.adresse, RID:1.2.3.4, DNS: serveur.de.nom.tld" -+ -+#: NewX509#77 -+msgid "subject alternative name" -+msgstr "nom alternatif du sujet" -+ -+#: NewX509#78 -+msgid "" -+"The issuer alternative name extension allows various literal values to be " -+"used. These include \"email\" (an email address) , \"URI\" a uniform " -+"resource indicator, \"DNS\" (a DNS domain name), RID (a registered ID: " -+"OBJECT IDENTIFIER) and IP (an IP address).\n" -+"Examples:\n" -+"email:my@other.address, IP: 1.1.1.1 , URI:http://my.url.here/\n" -+"email:my@other.address, RID:1.2.3.4, DNS: ns.server.tld" -+msgstr "" -+"Cette extension contient le nom alternatif du signataire et permet de " -+"regrouper plusieurs valeurs littérales. Celles-ci comprennent \"email\" (un " -+"adresse de courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS" -+"\" (un nom de domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP" -+"\" (une adresse IP).\n" -+"Exemples:\n" -+"email:mon@autre.adresse, IP: 1.1.1.1 , URI:http://mon.url.ici/\n" -+"email:mon@autre.adresse, RID:1.2.3.4, DNS: serveur.de.nom.tld" -+ -+#: NewX509#79 -+msgid "Key usage" -+msgstr "Utilisation de la clé" -+ -+#: NewX509#80 -+msgid "Extended key usage" -+msgstr "Utilisation étendue de la clé" -+ -+#: NewX509#81 -+msgid "Netscape" -+msgstr "Netscape" -+ -+#: NewX509#82 -+msgid "CA Revocation URL" -+msgstr "URL de révocation du certificat CA" -+ -+#: NewX509#83 -+msgid "Revocation URL" -+msgstr "URL de révocation" -+ -+#: NewX509#84 -+msgid "SSL server name" -+msgstr "Nom du serveur SSL" -+ -+#: NewX509#85 -+msgid "Certificate renewal URL" -+msgstr "URL de renouvellement de certificat" -+ -+#: NewX509#86 -+msgid "Comment" -+msgstr "Commentaire" -+ -+#: NewX509#87 -+msgid "CA policy URL" -+msgstr "URL des conditions générales du CA" -+ -+#: NewX509#88 -+msgid "Base URL" -+msgstr "URL de base" -+ -+#: NewX509#89 -+msgid "If you know a more pretty one tell me" -+msgstr "Si vous en connaissez un plus joli, faites-le moi savoir" -+ -+#: NewX509#90 -+msgid "Advanced" -+msgstr "Avancé" -+ -+#: NewX509#91 -+msgctxt "NewX509#91" -+msgid "Validate" -+msgstr "Valider" -+ -+#: NewX509#92 -+msgid "Create a &self signed certificate with a MD5-hashed QA serial" -+msgstr "" -+"Créer un certificat auto-&signé avec un numéro de série QA basé sur MD5" -+ -+#: NewX509#93 -+msgid "Create Certificate signing request" -+msgstr "Créer une requête de signature de certificat" -+ -+#: NewX509#94 -+msgid "minimum size: %1" -+msgstr "taille minimale: %1" -+ -+#: NewX509#95 -+msgid "maximum size: %1" -+msgstr "taille maximale: %1" -+ -+#: NewX509#96 -+msgid "only a-z A-Z 0-9 '()+,-./:=?" -+msgstr "seulement a-z A-Z 0-9 '()+,-./:=?" -+ -+#: NewX509#97 -+msgid "only 7-bit clean characters" -+msgstr "seulement des caractères 7-bit ASCII imprimables" -+ -+#: NewX509#98 -+msgid "XCA template" -+msgstr "modèle XCA" -+ -+#: NewX509#99 -+msgid "Create x509 Certificate" -+msgstr "Créer un certificat x509" -+ -+#: NewX509#100 -+msgid "From PKCS#10 request" -+msgstr "A partir d'une requête en PKCS#10" -+ -+#: NewX509#101 -+msgid "Other Tabs" -+msgstr "Autres Onglets" -+ -+#: NewX509#102 -+msgid "Advanced Tab" -+msgstr "Onglet Avancé" -+ -+#: NewX509#103 -+msgid "Errors" -+msgstr "Erreurs" -+ -+#: NewX509#104 -+msgctxt "NewX509#104" -+msgid "Abort rollout" -+msgstr "Interrompre le déploiement" -+ -+#: NewX509#105 -+msgid "The following length restrictions of RFC3280 are violated:" -+msgstr "" -+"Pour être en conformité avec la RFC3280, les règles de restriction de " -+"longueur suivantes ne sont pas respectées:" -+ -+#: NewX509#106 -+msgid "Edit subject" -+msgstr "Modifier le sujet" -+ -+#: NewX509#107 -+msgctxt "NewX509#107" -+msgid "Continue rollout" -+msgstr "Continuer le déploiement" -+ -+#: NewX509#108 -+msgid "" -+"The verification of the Certificate request failed.\n" -+"The rollout should be aborted." -+msgstr "" -+"La vérification de la requête de signature à échoué.\n" -+"Le déploiement devrait être interrompu." -+ -+#: NewX509#109 -+msgid "Continue anyway" -+msgstr "Continuer quand-même" -+ -+#: NewX509#110 -+msgid "" -+"The internal name and the common name are empty.\n" -+"Please set at least the internal name." -+msgstr "" -+"Le nom interne et le nom commun sont vides.\n" -+"SVP saisir au moins le nom interne." -+ -+#: NewX509#111 -+msgid "Edit name" -+msgstr "Modifier le nom" -+ -+#: NewX509#112 -+msgid "There is no Key selected for signing." -+msgstr "Aucune clé n'est sélectionnée pour la signature." -+ -+#: NewX509#113 -+msgid "Select key" -+msgstr "Sélectionner la clé" -+ -+#: NewX509#114 -+msgid "" -+"The following distinguished name entries are empty:\n" -+"%1\n" -+"though you have declared them as mandatory in the options menu." -+msgstr "" -+"Les indications de nom distinctif suivantes sont vides:\n" -+"%1\n" -+"bien que vous les avez déclarées comme obligatoires dans le menu des options." -+ -+#: NewX509#115 -+msgctxt "NewX509#115" -+msgid "The key you selected for signing is not a private one." -+msgstr "La clé sélectionnée pour la signature n'est pas une clé privée." -+ -+#: NewX509#116 -+msgid "Select other signer" -+msgstr "Sélectionner un autre signataire" -+ -+#: NewX509#117 -+msgid "Select other key" -+msgstr "Sélectionner une autre clé" -+ -+#: NewX509#118 -+msgctxt "NewX509#118" -+msgid "" -+"The certificate will be earlier valid than the signer. This is probably not " -+"what you want." -+msgstr "" -+"Le certificat serait valide avant son signataire. Ce n'est probablement pas " -+"ce qui est désiré." -+ -+#: NewX509#119 -+msgid "Edit dates" -+msgstr "Modifier les limites de validité" -+ -+#: NewX509#120 -+msgctxt "NewX509#120" -+msgid "Adjust date and continue" -+msgstr "Ajuster la date et continuer" -+ -+#: NewX509#121 -+msgctxt "NewX509#121" -+msgid "" -+"The certificate will be longer valid than the signer. This is probably not " -+"what you want." -+msgstr "" -+"Le certificat serait valide plus longtemps que son signataire. Ce n'est " -+"probablement pas ce qui est désiré." -+ -+#: NewX509#122 -+msgid "" -+"The certificate will be out of date before it becomes valid. You most " -+"probably mixed up both dates." -+msgstr "" -+"Le certificat serait échu avant de devenir actif. Vous avez probablement " -+"interverti les deux dates." -+ -+#: NewX509#123 -+msgid "" -+"The certificate contains duplicated extensions. Check the validation on the " -+"advanced tab." -+msgstr "" -+"Le certificat contient des extensions dupliquées. Valider et vérifier sur " -+"l'onglet \"Avancé\"." -+ -+#: NewX509#124 -+msgid "Edit extensions" -+msgstr "Modifier les extensions" -+ -+#: NewX509#125 -+msgid "Configfile error on line %1\n" -+msgstr "Erreur dans le fichier de configuration à la ligne %1\n" -+ -+#: Options#1 -+msgid "XCA Options" -+msgstr "Options de XCA" -+ -+#: Options#2 -+msgid "Mandatory subject entries" -+msgstr "Inscriptions du sujet obligatoires" -+ -+#: Options#3 -+msgctxt "Options#3" -+msgid "Add" -+msgstr "Ajouter" -+ -+#: Options#4 -+msgctxt "Options#4" -+msgid "Delete" -+msgstr "Détruire" -+ -+#: Options#5 -+msgid "Default hash algorithm" -+msgstr "Algorithme de hachage par défaut" -+ -+#: Options#6 -+msgid "String types" -+msgstr "Types de chaînes" -+ -+#: Options#7 -+msgid "PKCS#11 provider" -+msgstr "Fournisseur PKCS#11" -+ -+#: Options#8 -+msgid "Remove" -+msgstr "Enlever" -+ -+#: Options#9 -+msgid "Printable string or UTF8 (default)" -+msgstr "Chaîne imprimable ou UTF8 (défaut)" -+ -+#: Options#10 -+msgid "PKIX recommendation in RFC2459" -+msgstr "La recommandation PKIX est dans la RFC2459" -+ -+#: Options#11 -+msgid "No BMP strings, only printable and T61" -+msgstr "Pas de chaîne BMP, seulement imprimable et T61" -+ -+#: Options#12 -+msgid "UTF8 strings only (RFC2459)" -+msgstr "Chaînes UTF8 uniquement (RFC2459)" -+ -+#: Options#13 -+msgid "All strings" -+msgstr "Toutes les chaînes" -+ -+#: Options#14 -+msgid "Load failed" -+msgstr "Le chargement a échoué" -+ -+#: PassRead#1 -+msgctxt "PassRead#1" -+msgid "Password" -+msgstr "Mot de passe" -+ -+#: PassRead#2 -+msgctxt "PassRead#2" -+msgid "" -+"The password is parsed as 2-digit hex code. It must have an equal number of " -+"digits (0-9 and a-f)" -+msgstr "" -+"Le mot de passe contient des codes hexadécimaux à deux chiffres. Il doit " -+"donc consiter en un nombre pair de chiffres (0-9 et a-f)" -+ -+#: PassRead#3 -+msgctxt "PassRead#3" -+msgid "Take as HEX string" -+msgstr "Comprendre comme chaîne hexadécimale" -+ -+#: PassWrite#1 -+msgctxt "PassWrite#1" -+msgid "Password" -+msgstr "Mot de passe" -+ -+#: PassWrite#2 -+msgctxt "PassWrite#2" -+msgid "" -+"The password is parsed as 2-digit hex code. It must have an equal number of " -+"digits (0-9 and a-f)" -+msgstr "" -+"Le mot de passe contient des codes hexadécimaux à deux chiffres. Il doit " -+"donc consiter en un nombre pair de chiffres (0-9 et a-f)" -+ -+#: PassWrite#3 -+msgctxt "PassWrite#3" -+msgid "Take as HEX string" -+msgstr "Comprendre comme chaîne hexadécimale" -+ -+#: QObject#1 -+msgid "Undefined" -+msgstr "Indéfini" -+ -+#: QObject#2 -+msgid "DB: Rename: '%1' already in use" -+msgstr "DB: Renommer: '%1' déjà en utilisation" -+ -+#: QObject#3 -+msgid "DB: Entry to rename not found: %1" -+msgstr "DB: l'inscription à renommer n'a pas été trouvée: '%1'" -+ -+#: QObject#4 -+msgid "DB: Write error %1 - %2" -+msgstr "DB: Erreur d'écriture %1 - %2" -+ -+#: QObject#5 -+msgid "Out of data" -+msgstr "A court de données" -+ -+#: QObject#6 -+msgid "Error finding endmarker of string" -+msgstr "Erreur: une marque de fin de chaîne n'a pas été trouvée" -+ -+#: QObject#7 -+msgid "Out of Memory at %1:%2" -+msgstr "A court de mémoire à %1:%2" -+ -+#: QObject#8 -+msgctxt "QObject#8" -+msgid "All files ( * )" -+msgstr "Tous les fichiers ( * )" -+ -+#: QObject#9 -+msgid "PKI Keys ( *.pem *.der *.key );;PKCS#8 Keys ( *.p8 *.pk8 );;" -+msgstr "Clés PKI ( *.pem *.der *.key );;Clés PKCS#8 ( *.p8 *.pk8 );;" -+ -+#: QObject#10 -+msgid "Import RSA key" -+msgstr "Importer une clé RSA" -+ -+#: QObject#11 -+msgid "PKCS#10 CSR ( *.pem *.der *.csr );;Netscape Request ( *.spkac *.spc );;" -+msgstr "" -+"Requête PKCS#10 ( *.pem *.der *.csr );;Requête Netscape ( *.spkac *.spc );;" -+ -+#: QObject#12 -+msgid "Import Request" -+msgstr "Importer une requête" -+ -+#: QObject#13 -+msgid "Certificates ( *.pem *.der *.crt *.cer );;" -+msgstr "Certificats ( *.pem *.der *.crt *.cer );;" -+ -+#: QObject#14 -+msgid "Import X.509 Certificate" -+msgstr "Importer un certificat X.509" -+ -+#: QObject#15 -+msgid "PKCS#7 data ( *.p7s *.p7m *.p7b );;" -+msgstr "Données PKCS#7 ( *.p7s *.p7m *.p7b );;" -+ -+#: QObject#16 -+msgid "Import PKCS#7 Certificates" -+msgstr "Importer un certificat PKCS#7" -+ -+#: QObject#17 -+msgid "PKCS#12 Certificates ( *.p12 *.pfx );;" -+msgstr "Certificats PKCS#12 ( *.p12 *.pfx );;" -+ -+#: QObject#18 -+msgid "Import PKCS#12 Private Certificate" -+msgstr "Importer un certificat privé PKCS#12" -+ -+#: QObject#19 -+msgid "XCA templates ( *.xca );;" -+msgstr "Modèles XCA ( *.xca );;" -+ -+#: QObject#20 -+msgid "Import XCA Templates" -+msgstr "Importer des modèles XCA" -+ -+#: QObject#21 -+msgid "Revocation lists ( *.pem *.der *.crl );;" -+msgstr "Listes de révocation ( *.pem *.der *.crl );;" -+ -+#: QObject#22 -+msgid "Import Certificate Revocation List" -+msgstr "Importer une liste de révocation de certificats" -+ -+#: QObject#23 -+msgid "XCA Databases ( *.xdb );;" -+msgstr "Bases de données XCA ( *.xdb );;" -+ -+#: QObject#24 -+msgid "Open XCA Database" -+msgstr "Ouvrir une Base de Données XCA" -+ -+#: QObject#25 -+msgid "PKCS#11 library ( *.dll );;" -+msgstr "Bibliothèque PKCS#11 ( *.dll );;" -+ -+#: QObject#26 -+msgid "PKCS#11 library ( *.dylib *.so );;" -+msgstr "Bibliothèque PKCS#11 ( *.dylib *.so );;" -+ -+#: QObject#27 -+msgid "PKCS#11 library ( *.so );;" -+msgstr "Bibliothèque PKCS#11 ( *.so );;" -+ -+#: QObject#28 -+msgid "Open PKCS#11 shared library" -+msgstr "Ouvrir une bibliothèque partagée PKCS#11" -+ -+#: QObject#29 -+msgid "PEM files ( *.pem );;" -+msgstr "Fichiers PEM ( *.pem );;" -+ -+#: QObject#30 -+msgid "Load PEM encoded file" -+msgstr "Charger un fichier encodé en PEM" -+ -+#: QObject#31 -+msgid "Please enter the SO PIN (PUK) of the token %1" -+msgstr "SVP saisir le PUK du jeton '%1'" -+ -+#: QObject#32 -+msgid "Please enter the PIN of the token %1" -+msgstr "SVP saisir le NIP du jeton '%1'" -+ -+#: QObject#33 -+msgid "No Security token found" -+msgstr "Aucun jeton de sécurité trouvé" -+ -+#: QObject#34 -+msgid "Select" -+msgstr "Sélectionner" -+ -+#: QObject#35 -+msgid "Please enter the new SO PIN (PUK) for the token: '%1'" -+msgstr "SVP saisir le nouveau PUK pour le jeton: '%1'" -+ -+#: QObject#36 -+msgid "Please enter the new PIN for the token: '%1'" -+msgstr "SVP saisir le nouveau NIP pour le jeton: '%1'" -+ -+#: QObject#37 -+msgid "Required PIN size: %1 - %2" -+msgstr "Taille du NIP requise: %1 - %2" -+ -+#: QObject#38 -+msgid "Failed to open PKCS11 library: %1" -+msgstr "L'ouverture de la bibliothèque PKCS#11 '%1' a échoué" -+ -+#: QObject#39 -+msgid "PKCS#11 function '%1' failed: %2" -+msgstr "La fonction PKCS#11 '%1' a échoué: %2" -+ -+#: QObject#40 -+msgid "" -+"PKCS#11 function '%1' failed: %2\n" -+"In library %3\n" -+"%4" -+msgstr "" -+"La fonction PKCS#11 '%1' a échoué: %2\n" -+"Dans la bibliothèque %3\n" -+"%4" -+ -+#: QObject#41 -+msgid "Please enter the password to decrypt the private key." -+msgstr "SVP saisir le mot de passe pour décrypter la clé privée" -+ -+#: QObject#42 -+msgid "Invalid" -+msgstr "Invalide" -+ -+#: QObject#43 -+msgid "%1 is shorter than %2 bytes: '%3'" -+msgstr "%1 est plus court que %2 octets: '%3'" -+ -+#: QObject#44 -+msgid "%1 is longer than %2 bytes: '%3'" -+msgstr "%1 est plus long que %2 octets: '%3'" -+ -+#: Revoke#1 -+msgid "Revokation details" -+msgstr "Détails de la révocation" -+ -+#: Revoke#2 -+msgid "Invalid since" -+msgstr "Non-valide depuis" -+ -+#: Revoke#3 -+msgid "Revokation reason" -+msgstr "Raison de la révocation" -+ -+#: SelectToken#1 -+msgid "Select Token" -+msgstr "Sélectionner un jeton" -+ -+#: SelectToken#2 -+msgctxt "SelectToken#2" -+msgid "Security token" -+msgstr "Jeton de sécurité" -+ -+#: SelectToken#3 -+msgid "Please select the security token" -+msgstr "SVP sélectionner le jeton de sécurité" -+ -+#: TrustState#1 -+msgid "Set trustment of the Certificate" -+msgstr "Ajuster le niveau de confiance du certificat" -+ -+#: TrustState#2 -+msgid "Trustment" -+msgstr "Niveau de confiance" -+ -+#: TrustState#3 -+msgid "&Never trust this certificate" -+msgstr "&Ne jamais se fier à ce certificat" -+ -+#: TrustState#4 -+msgid "Only &trust this certificate, if we trust the signer" -+msgstr "Ne &se fier à ce certificat qui si son signataire est de confiance" -+ -+#: TrustState#5 -+msgid "&Always trust this certificate" -+msgstr "&Toujours se fier à ce certificat" -+ -+#: Validity#1 -+msgid "yyyy-MM-dd hh:mm" -+msgstr "yyyy-MM-dd hh:mm" -+ -+#: db_base#1 -+msgctxt "db_base#1" -+msgid "Internal name" -+msgstr "Nom interne" -+ -+#: db_base#2 -+msgid "Reset" -+msgstr "Réinitialisation" -+ -+#: db_base#3 -+msgid "Subject entries" -+msgstr "Inscriptions du sujet" -+ -+#: db_base#4 -+msgid "Columns" -+msgstr "Colonnes" -+ -+#: db_crl#1 -+msgid "Signer" -+msgstr "Signataire" -+ -+#: db_crl#2 -+msgid "Internal name of the signer" -+msgstr "Nom interne du signataire" -+ -+#: db_crl#3 -+msgid "No. revoked" -+msgstr "Numéro révoqué" -+ -+#: db_crl#4 -+msgid "Number of revoked certificates" -+msgstr "Nombre de certificats révoqués" -+ -+#: db_crl#5 -+msgid "Last update" -+msgstr "Dernière mise-à-jour" -+ -+#: db_crl#6 -+msgid "Next update" -+msgstr "Prochaine mise-à-jour" -+ -+#: db_crl#7 -+msgid "CRL number" -+msgstr "Numéro de la liste de révocation" -+ -+#: db_crl#8 -+msgid "" -+"The revokation list already exists in the database as:\n" -+"'%1'\n" -+"and so it was not imported" -+msgstr "" -+"Cette liste de révocation figure déjà dans la base de données sous le nom:\n" -+"'%1'\n" -+"En conséquence, elle n'a pas été importée" -+ -+#: db_crl#9 -+msgid "CRL ( *.pem *.der *.crl )" -+msgstr "Listes de révocation ( *.pem *.der *.crl )" -+ -+#: db_crl#10 -+msgid "Revokation list export" -+msgstr "Exportation d'une liste de révocation" -+ -+#: db_crl#11 -+msgctxt "db_crl#11" -+msgid "Import" -+msgstr "Importer" -+ -+#: db_crl#12 -+msgctxt "db_crl#12" -+msgid "Rename" -+msgstr "Renommer" -+ -+#: db_crl#13 -+msgctxt "db_crl#13" -+msgid "Export" -+msgstr "Exporter" -+ -+#: db_crl#14 -+msgctxt "db_crl#14" -+msgid "Delete" -+msgstr "Détruire" -+ -+#: db_key#1 -+msgctxt "db_key#1" -+msgid "Type" -+msgstr "Type" -+ -+#: db_key#2 -+msgid "Size" -+msgstr "Taille" -+ -+#: db_key#3 -+msgid "Use" -+msgstr "Usage" -+ -+#: db_key#4 -+msgctxt "db_key#4" -+msgid "Password" -+msgstr "Mot de passe" -+ -+#: db_key#5 -+msgid "" -+"The key is already in the database as:\n" -+"'%1'\n" -+"and is not going to be imported" -+msgstr "" -+"Cette clé figure déjà dans la base de données sous le nom:\n" -+"'%1'\n" -+"En conséquence, elle ne va pas être importée" -+ -+#: db_key#6 -+msgid "" -+"The database already contains the public part of the imported key as\n" -+"'%1\n" -+"and will be completed by the new, private part of the key" -+msgstr "" -+"La base de donnée connait déjà la partie publique de la clé importée sous le " -+"nom\n" -+"'%1'\n" -+"En conséquence, cette dernière sera complétée par la partie privée de la clé " -+"importée" -+ -+#: db_key#7 -+msgid "Key size too small !" -+msgstr "Taille de clé trop petite !" -+ -+#: db_key#8 -+msgid "You are sure to create a key of the size: %1 ?" -+msgstr "Etes-vous sûr de couloir créer une clé de taille %1 ?" -+ -+#: db_key#9 -+msgid "" -+"Shall the original key '%1' be replaced by the key on the token?\n" -+"This will delete the key '%1' and make it unexportable" -+msgstr "" -+"La clé originale '%1' doit-elle être remplacée par la clé en provenance du " -+"jeton ?\n" -+"Cela détruirait la clé '%1' et la rendrait non-exportable." -+ -+#: db_key#10 -+msgctxt "db_key#10" -+msgid "New Key" -+msgstr "Nouvelle clé" -+ -+#: db_key#11 -+msgctxt "db_key#11" -+msgid "Import" -+msgstr "Importer" -+ -+#: db_key#12 -+msgctxt "db_key#12" -+msgid "Rename" -+msgstr "Renommer" -+ -+#: db_key#13 -+msgctxt "db_key#13" -+msgid "Show Details" -+msgstr "Afficher les Détails" -+ -+#: db_key#14 -+msgctxt "db_key#14" -+msgid "Delete" -+msgstr "Détruire" -+ -+#: db_key#15 -+msgctxt "db_key#15" -+msgid "Export" -+msgstr "Exporter" -+ -+#: db_key#16 -+msgid "Change password" -+msgstr "Changer le mot de passe" -+ -+#: db_key#17 -+msgid "Reset password" -+msgstr "Effacer le mot de passe" -+ -+#: db_key#18 -+msgid "Change PIN" -+msgstr "Changer le NIP" -+ -+#: db_key#19 -+msgid "Init PIN with SO PIN (PUK)" -+msgstr "Initialiser le NIP avec le PUK" -+ -+#: db_key#20 -+msgid "Change SO PIN (PUK)" -+msgstr "Changer le PUK" -+ -+#: db_key#21 -+msgid "Store on Security token" -+msgstr "Enregistrer dans le jeton de sécurité" -+ -+#: db_key#22 -+msgid "Tried to change password of a token" -+msgstr "Tentative de changement de mot de passe d'un jeton de sécurité" -+ -+#: db_key#23 -+msgid "Tried to change PIN of a key" -+msgstr "Tentative de changement de NIP d'une clé" -+ -+#: db_key#24 -+msgid "Tried to init PIN of a key" -+msgstr "Tentative d'initialisation du NIP d'une clé" -+ -+#: db_key#25 -+msgid "Tried to change SO PIN of a key" -+msgstr "Tentative de changement de PUK d'une clé" -+ -+#: db_temp#1 -+msgctxt "db_temp#1" -+msgid "Type" -+msgstr "Type" -+ -+#: db_temp#2 -+msgid "Bad template: %1" -+msgstr "Mauvais modèle: %1" -+ -+#: db_temp#3 -+msgid "Nothing" -+msgstr "Rien" -+ -+#: db_temp#4 -+msgid "Preset Template values" -+msgstr "Initaliser les valeurs du modèle" -+ -+#: db_temp#5 -+msgid "copy" -+msgstr "copier" -+ -+#: db_temp#6 -+msgid "Save template as" -+msgstr "Enregistrer le modèle sous" -+ -+#: db_temp#7 -+msgid "XCA templates ( *.xca);; All files ( * )" -+msgstr "Modèles XCA ( *.xca);; Tous les fichiers ( * )" -+ -+#: db_temp#8 -+msgid "New Template" -+msgstr "Nouveau modèle" -+ -+#: db_temp#9 -+msgctxt "db_temp#9" -+msgid "Import" -+msgstr "Importer" -+ -+#: db_temp#10 -+msgctxt "db_temp#10" -+msgid "Rename" -+msgstr "Renommer" -+ -+#: db_temp#11 -+msgctxt "db_temp#11" -+msgid "Export" -+msgstr "Exporter" -+ -+#: db_temp#12 -+msgid "Change" -+msgstr "Changer" -+ -+#: db_temp#13 -+msgctxt "db_temp#13" -+msgid "Delete" -+msgstr "Détruire" -+ -+#: db_temp#14 -+msgid "Duplicate" -+msgstr "Dupliquer" -+ -+#: db_temp#15 -+msgid "Create certificate" -+msgstr "Créer un certificat" -+ -+#: db_temp#16 -+msgid "Create request" -+msgstr "Créer une requête" -+ -+#: db_x509#1 -+msgid "CA" -+msgstr "CA" -+ -+#: db_x509#2 -+msgid "reflects the basic Constraints extension" -+msgstr "reflète l'extension des contraintes basiques" -+ -+#: db_x509#3 -+msgctxt "db_x509#3" -+msgid "Serial" -+msgstr "Numéro de série" -+ -+#: db_x509#4 -+msgid "md5 fingerprint" -+msgstr "Empreinte MD5" -+ -+#: db_x509#5 -+msgid "sha1 fingerprint" -+msgstr "Empreinte sha1" -+ -+#: db_x509#6 -+msgid "Start date" -+msgstr "Date de début" -+ -+#: db_x509#7 -+msgid "not Before" -+msgstr "pas Avant" -+ -+#: db_x509#8 -+msgid "Expiry date" -+msgstr "Date d'expiration" -+ -+#: db_x509#9 -+msgid "not After" -+msgstr "pas Après" -+ -+#: db_x509#10 -+msgid "Trust state" -+msgstr "État de confiance" -+ -+#: db_x509#11 -+msgctxt "db_x509#11" -+msgid "Revocation" -+msgstr "Révocation" -+ -+#: db_x509#12 -+msgctxt "db_x509#12" -+msgid "Plain View" -+msgstr "Vue à plat" -+ -+#: db_x509#13 -+msgid "Tree View" -+msgstr "Vue arborescente" -+ -+#: db_x509#14 -+msgid "" -+"The certificate already exists in the database as:\n" -+"'%1'\n" -+"and so it was not imported" -+msgstr "" -+"Ce certificat figure déjà dans la base de données sous le nom:\n" -+"'%1'\n" -+"En conséquence, il n'a pas été importé" -+ -+#: db_x509#15 -+msgid "Please enter the new hexadecimal secret number for the QA process." -+msgstr "SVP saisir le nouveau nombre secret hexadécimal pour le processus QA." -+ -+#: db_x509#16 -+msgid "The two secret numbers don't match." -+msgstr "Les deux nombres secrets ne sont pas les mêmes." -+ -+#: db_x509#17 -+msgid "The QA process has been terminated by the user." -+msgstr "Le processus QA a été arrêté par l'utilisateur." -+ -+#: db_x509#18 -+msgctxt "db_x509#18" -+msgid "The key you selected for signing is not a private one." -+msgstr "La clé sélectionnée pour la signature n'est pas une clé privée." -+ -+#: db_x509#19 -+msgid "Store the certificate to the key on the token '%1 (#%2)' ?" -+msgstr "Enregistrer le certificate avec la clé sur le jeton '%1 (#%2)' ?" -+ -+#: db_x509#20 -+msgid "New Certificate" -+msgstr "Nouveau Certificat" -+ -+#: db_x509#21 -+msgctxt "db_x509#21" -+msgid "Import" -+msgstr "Importer" -+ -+#: db_x509#22 -+msgid "Import PKCS#12" -+msgstr "Importer en PKCS#12" -+ -+#: db_x509#23 -+msgid "Import from PKCS#7" -+msgstr "Importer en PKCS#7" -+ -+#: db_x509#24 -+msgctxt "db_x509#24" -+msgid "Rename" -+msgstr "Renommer" -+ -+#: db_x509#25 -+msgctxt "db_x509#25" -+msgid "Show Details" -+msgstr "Afficher les Détails" -+ -+#: db_x509#26 -+msgctxt "db_x509#26" -+msgid "Extract public Key" -+msgstr "Extraire la clé publique" -+ -+#: db_x509#27 -+msgctxt "db_x509#27" -+msgid "Export" -+msgstr "Exporter" -+ -+#: db_x509#28 -+msgctxt "db_x509#28" -+msgid "File" -+msgstr "Fichier" -+ -+#: db_x509#29 -+msgid "Request" -+msgstr "Requête" -+ -+#: db_x509#30 -+msgctxt "db_x509#30" -+msgid "Security token" -+msgstr "Jeton de sécurité" -+ -+#: db_x509#31 -+msgid "Other token" -+msgstr "Autre jeton" -+ -+#: db_x509#32 -+msgctxt "db_x509#32" -+msgid "Template" -+msgstr "Modèle" -+ -+#: db_x509#33 -+msgctxt "db_x509#33" -+msgid "Delete" -+msgstr "Détruire" -+ -+#: db_x509#34 -+msgid "Delete from Security token" -+msgstr "Détruire sur le jeton de sécurité" -+ -+#: db_x509#35 -+msgid "Trust" -+msgstr "Niveau de confiance" -+ -+#: db_x509#36 -+msgid "Properties" -+msgstr "Propriétés" -+ -+#: db_x509#37 -+msgid "Generate CRL" -+msgstr "Générer la liste de révocation" -+ -+#: db_x509#38 -+msgctxt "db_x509#38" -+msgid "PKCS#7" -+msgstr "PKCS#7" -+ -+#: db_x509#39 -+msgctxt "db_x509#39" -+msgid "Sign" -+msgstr "Signer" -+ -+#: db_x509#40 -+msgid "Encrypt" -+msgstr "Encrypter" -+ -+#: db_x509#41 -+msgid "Renewal" -+msgstr "Renouvellement" -+ -+#: db_x509#42 -+msgid "Unrevoke" -+msgstr "Dé-révoquer" -+ -+#: db_x509#43 -+msgid "Revoke" -+msgstr "Révoquer" -+ -+#: db_x509#44 -+msgid "There was no key found for the Certificate: '%1'" -+msgstr "Aucune clé n'a été trouvée pour le Certificat. '%1'" -+ -+#: db_x509#45 -+msgid "Not possible for a token key: '%1'" -+msgstr "Impossible pour une clé d'un jeton de sécurité: '%1'" -+ -+#: db_x509#46 -+msgid "Not possible for the token-key Certificate '%1'" -+msgstr "Impossible pour le certificat d'une clé d'un jeton de sécurité: '%1'" -+ -+#: db_x509#47 -+msgid " days" -+msgstr " jours" -+ -+#: db_x509name#1 -+msgctxt "db_x509name#1" -+msgid "Subject" -+msgstr "Sujet" -+ -+#: db_x509name#2 -+msgid "Complete distinguished name" -+msgstr "Nom distinctif complet" -+ -+#: db_x509name#3 -+msgid "Subject hash" -+msgstr "Hachage du sujet" -+ -+#: db_x509name#4 -+msgid "Hash to lookup certs in directories" -+msgstr "Hachage de recherche dans un dossier" -+ -+#: db_x509req#1 -+msgctxt "db_x509req#1" -+msgid "Signed" -+msgstr "Signé" -+ -+#: db_x509req#2 -+msgid "whether the request is already signed or not" -+msgstr "si la requête a déjà été signée ou non" -+ -+#: db_x509req#3 -+msgid "Unstructured name" -+msgstr "Nom non-structuré" -+ -+#: db_x509req#4 -+msgid "Challange password" -+msgstr "Mot de passe opposable" -+ -+#: db_x509req#5 -+msgid "" -+"The certificate signing request already exists in the database as\n" -+"'%1'\n" -+"and thus was not stored" -+msgstr "" -+"Cette requête de signature figure déjà dans la base de données sous le nom\n" -+"'%1'\n" -+"En conséquence, elle n'a pas été chargée" -+ -+#: db_x509req#6 -+msgid "Certificate request ( *.pem *.der *.crl )" -+msgstr "Requête de signature de certificat ( *.pem *.der *.crl )" -+ -+#: db_x509req#7 -+msgid "Certificate request export" -+msgstr "Exporter la requête de signature" -+ -+#: db_x509req#8 -+msgid "New Request" -+msgstr "Nouvelle requête" -+ -+#: db_x509req#9 -+msgctxt "db_x509req#9" -+msgid "Import" -+msgstr "Importer" -+ -+#: db_x509req#10 -+msgctxt "db_x509req#10" -+msgid "Extract public Key" -+msgstr "Extraire la clé publique" -+ -+#: db_x509req#11 -+msgctxt "db_x509req#11" -+msgid "Rename" -+msgstr "Renommer" -+ -+#: db_x509req#12 -+msgctxt "db_x509req#12" -+msgid "Show Details" -+msgstr "Afficher les Détails" -+ -+#: db_x509req#13 -+msgctxt "db_x509req#13" -+msgid "Sign" -+msgstr "Signer" -+ -+#: db_x509req#14 -+msgctxt "db_x509req#14" -+msgid "Export" -+msgstr "Exporter" -+ -+#: db_x509req#15 -+msgctxt "db_x509req#15" -+msgid "File" -+msgstr "Fichier" -+ -+#: db_x509req#16 -+msgctxt "db_x509req#16" -+msgid "Template" -+msgstr "Modèle" -+ -+#: db_x509req#17 -+msgctxt "db_x509req#17" -+msgid "Delete" -+msgstr "Détruire" -+ -+#: db_x509super#1 -+msgid "Key name" -+msgstr "Nom de la clé" -+ -+#: db_x509super#2 -+msgid "Internal name of the key" -+msgstr "Nom interne de la clé" -+ -+#: db_x509super#3 -+msgid "The following extensions were not ported into the template" -+msgstr "Les extensions suivantes n'ont pas été enregistrées dans le modèle" -+ -+#: kvView#1 -+msgctxt "kvView#1" -+msgid "Type" -+msgstr "Type" -+ -+#: kvView#2 -+msgid "Content" -+msgstr "Contenu" -+ -+#: pass_info#1 -+msgctxt "pass_info#1" -+msgid "Password" -+msgstr "Mot de passe" -+ -+#: pass_info#2 -+msgctxt "pass_info#2" -+msgid "PIN" -+msgstr "NIP" -+ -+#: pki_base#1 -+msgctxt "pki_base#1" -+msgid "Error opening file: '%1': %2" -+msgstr "Erreur à l'ouverture du fichier '%1': %2" -+ -+#: pki_base#2 -+msgid "Error: " -+msgstr "Erreur: " -+ -+#: pki_base#3 -+msgid "Internal error: Unexpected message: %1 %2" -+msgstr "Erreur interne: message inattendu: %1 %2" -+ -+#: pki_crl#1 -+msgid "Successfully imported the revokation list '%1'" -+msgstr "La liste de révocation '%1' a été importée avec succès" -+ -+#: pki_crl#2 -+msgid "Delete the revokation list '%1'?" -+msgstr "Détruire la liste de révocation '%1' ?" -+ -+#: pki_crl#3 -+msgid "Successfully created the revokation list '%1'" -+msgstr "La liste de révocation '%1' a été créée avec succès" -+ -+#: pki_crl#4 -+msgid "Delete the %1 revokation lists: %2?" -+msgstr "Détruire les %1 listes de révocation: %2 ?" -+ -+#: pki_crl#5 -+msgid "" -+"Unable to load the revokation list in file %1. Tried PEM and DER formatted " -+"CRL." -+msgstr "" -+"Impossible de charger le liste de révocation du fichier %1. Les formats PEM " -+"et DER ont été essayés." -+ -+#: pki_crl#6 -+msgid "No issuer given" -+msgstr "Aucun signataire spécifié" -+ -+#: pki_crl#7 -+msgctxt "pki_crl#7" -+msgid "Wrong Size %1" -+msgstr "Taille fausse %1" -+ -+#: pki_crl#8 -+msgid "unknown" -+msgstr "inconnu" -+ -+#: pki_evp#1 -+msgid "Failed to decrypt the key (bad password) " -+msgstr "Le décryptage de la clé a échoué (mauvais mot de passe)." -+ -+#: pki_evp#2 -+msgid "" -+"Unable to load the private key in file %1. Tried PEM and DER private, public " -+"and PKCS#8 key types." -+msgstr "" -+"Impossible de charger la clé privée du fichier %1. Les formats PEM et DER " -+"ainsi que les types de clés privé, public et PKCS#8 ont été essayés." -+ -+#: pki_evp#3 -+msgid "Password input aborted" -+msgstr "Saisie du mot de passe abandonnée" -+ -+#: pki_evp#4 -+msgid "Please enter the database password for decrypting the key '%1'" -+msgstr "" -+"SVP saisir le mot de basse de la base de données pour décrypter la clé '%1'" -+ -+#: pki_evp#5 -+msgid "Please enter the password to protect the private key: '%1'" -+msgstr "SVP saisir le mot de pass pour protéger la clé privée: '%1'" -+ -+#: pki_evp#6 -+msgid "Please enter the database password for encrypting the key" -+msgstr "SVP saisir le mot de passe de la base de données pour encrypter la clé" -+ -+#: pki_evp#7 -+msgid "Please enter the password protecting the PKCS#8 key '%1'" -+msgstr "SVP saisir le mot de passe protégeant la clé en PKCS#8 '%1'" -+ -+#: pki_evp#8 -+msgid "Please enter the export password for the private key '%1'" -+msgstr "SVP saisir le mot de passe d'exportation pour la clé privée '%1'" -+ -+#: pki_key#1 -+msgid "Successfully imported the %1 public key '%2'" -+msgstr "Les %1 clés publiques '%2' ont été importées avec succès" -+ -+#: pki_key#2 -+msgid "Delete the %1 public key '%2'?" -+msgstr "Détruire les %1 clés publiques '%2' ?" -+ -+#: pki_key#3 -+msgid "Successfully imported the %1 private key '%2'" -+msgstr "Les %1 clés privées '%2' ont été importées avec succès" -+ -+#: pki_key#4 -+msgid "Delete the %1 private key '%2'?" -+msgstr "Détruire les %1 clés privées '%2' ?" -+ -+#: pki_key#5 -+msgid "Successfully created the %1 private key '%2'" -+msgstr "Les %1 clés privées '%2' ont été créées avec succès" -+ -+#: pki_key#6 -+msgctxt "pki_key#6" -+msgid "Delete the %1 keys: %2?" -+msgstr "Détruire les %1 clés: '%2' ?" -+ -+#: pki_key#7 -+msgid "public key" -+msgstr "clé publique" -+ -+#: pki_key#8 -+msgid "Common" -+msgstr "Commun" -+ -+#: pki_key#9 -+msgid "Private" -+msgstr "Privé" -+ -+#: pki_key#10 -+msgid "Bogus" -+msgstr "Erroné" -+ -+#: pki_key#11 -+msgctxt "pki_key#11" -+msgid "PIN" -+msgstr "NIP" -+ -+#: pki_key#12 -+msgid "No password" -+msgstr "Pas de mot de passe" -+ -+#: pki_multi#1 -+msgid "Seek failed" -+msgstr "Un \"seek\" a échoué" -+ -+#: pki_pkcs12#1 -+msgid "Please enter the password to decrypt the PKCS#12 file." -+msgstr "SVP saisir le mot de passe pour décrypter le fichier en PKCS#12." -+ -+#: pki_pkcs12#2 -+msgid "Unable to load the PKCS#12 (pfx) file %1." -+msgstr "Impossible de charger le fichier en PKCS#12 (pfx) %1." -+ -+#: pki_pkcs12#3 -+msgid "The supplied password was wrong (%1)" -+msgstr "Le mot de passe renseigné était faux (%1)" -+ -+#: pki_pkcs12#4 -+msgid "Please enter the password to encrypt the PKCS#12 file" -+msgstr "SVP saisir le mot de passe pour encrypter le fichier en PKCS#12" -+ -+#: pki_pkcs12#5 -+msgid "No key or no Cert and no pkcs12" -+msgstr "Pas de clé ou pas de certificat et pas en PKCS#12" -+ -+#: pki_pkcs7#1 -+msgid "Unable to load the PKCS#7 file %1. Tried PEM and DER format." -+msgstr "" -+"Impossible de charger le fichier en PKCS#7 %1. Les formats PEM et DER ont " -+"été essayés." -+ -+#: pki_scard#1 -+msgid "Successfully imported the token key '%1'" -+msgstr "La clé du jeton '%1' a été importée avec succès" -+ -+#: pki_scard#2 -+msgid "Delete the token key '%1'?" -+msgstr "Détruire la clé du jeton '%1' ?" -+ -+#: pki_scard#3 -+msgid "Successfully created the token key '%1'" -+msgstr "La clé du jeton '%1' a été créée avec succès" -+ -+#: pki_scard#4 -+msgctxt "pki_scard#4" -+msgid "Delete the %1 keys: %2?" -+msgstr "Détruire les %1 clés: '%2' ?" -+ -+#: pki_scard#5 -+msgid "Delete the private key '%1' from the token '%2 (#%3)' ?" -+msgstr "Détruire la clé privée '%1' sur le jeton '%2 (#%3)' ?" -+ -+#: pki_scard#6 -+msgid "only RSA keys can be stored on tokens" -+msgstr "Seules des clés RSA peuvent être enregistrées sur les jetons" -+ -+#: pki_scard#7 -+msgid "This Key is already on the token" -+msgstr "Cette clé est déjà sur le jeton" -+ -+#: pki_scard#8 -+msgid "PIN input aborted" -+msgstr "Saisie du NIP abandonnée" -+ -+#: pki_scard#9 -+msgid "Unable to find copied key on the token" -+msgstr "Impossible de trouver la clé copiée sur le jeton" -+ -+#: pki_scard#10 -+msgid "Please insert card: %1 %2 [%3] with Serial: %4" -+msgstr "SVP insérer la carte %1 %2 [%3] avec le numéro de série: %4" -+ -+#: pki_scard#11 -+msgid "Public Key missmatch. Please re-import card" -+msgstr "La clé publique ne correspond pas. Veuillez re-importer la carte" -+ -+#: pki_scard#12 -+msgid "Unable to find generated key on card" -+msgstr "Impossible de trouver la clé générée sur la carte" -+ -+#: pki_scard#13 -+msgctxt "pki_scard#13" -+msgid "Wrong Size %1" -+msgstr "Taille fausse %1" -+ -+#: pki_scard#14 -+msgid "Token %1" -+msgstr "Jeton %1" -+ -+#: pki_scard#15 -+msgid "Failed to find the key on the token" -+msgstr "Impossible de trouver la clé sur le jeton" -+ -+#: pki_scard#16 -+msgid "Invalid Pin for the token" -+msgstr "NIP invalide pour le jeton" -+ -+#: pki_temp#1 -+msgid "Successfully imported the XCA template '%1'" -+msgstr "Le modèle XCA '%1' a été importé avec succès" -+ -+#: pki_temp#2 -+msgid "Delete the XCA template '%1'?" -+msgstr "Détruire le modèle XCA '%1' ?" -+ -+#: pki_temp#3 -+msgid "Successfully created the XCA template '%1'" -+msgstr "Le modèle XCA '%1' a été créé avec succès" -+ -+#: pki_temp#4 -+msgid "Delete the %1 XCA templates: %2?" -+msgstr "Détruire les %1 modèles XCA: %2 ?" -+ -+#: pki_temp#5 -+msgctxt "pki_temp#5" -+msgid "Wrong Size %1" -+msgstr "Taille fausse %1" -+ -+#: pki_temp#6 -+msgid "Template file content error (too small): %1" -+msgstr "erreur de contenu du fichier de modèle (trop petit): %1" -+ -+#: pki_temp#7 -+msgid "Template file content error (bad size): %1 " -+msgstr "erreur de contenu du fichier de modèle (mauvaise taille): %1" -+ -+#: pki_temp#8 -+msgid "Template file content error (bad length) :%1" -+msgstr "erreur de contenu du fichier de modèle (mauvaise longueur): %1" -+ -+#: pki_x509#1 -+msgid "Successfully imported the certificate '%1'" -+msgstr "Le certificat '%1' a été importée avec succès" -+ -+#: pki_x509#2 -+msgid "Delete the certificate '%1'?" -+msgstr "Détruire le certificat '%1' ?" -+ -+#: pki_x509#3 -+msgid "Successfully created the certificate '%1'" -+msgstr "Le certificat '%1' a été créé avec succès" -+ -+#: pki_x509#4 -+msgid "Delete the %1 certificates: %2?" -+msgstr "Détruire les %1 certificats: '%2' ?" -+ -+#: pki_x509#5 -+msgid "" -+"Unable to load the certificate in file %1. Tried PEM and DER certificate." -+msgstr "" -+"Impossible de charge le certificat du fichier %1. Les formats PEM et DER ont " -+"été essayés." -+ -+#: pki_x509#6 -+msgid "This certificate is already on the security token" -+msgstr "Ce certificat est déjà dans le jeton de sécurité" -+ -+#: pki_x509#7 -+msgid "Delete the certificate '%1' from the token '%2 (#%3)'?" -+msgstr "Détruire le certificat '%1' sur le jeton '%2 (#%3)' ?" -+ -+#: pki_x509#8 -+msgid "There is no key for signing !" -+msgstr "Il n'y a pas de clé pour signer !" -+ -+#: pki_x509#9 -+msgctxt "pki_x509#9" -+msgid "Wrong Size %1" -+msgstr "Taille fausse %1" -+ -+#: pki_x509#10 -+msgctxt "pki_x509#10" -+msgid "Not trusted" -+msgstr "Pas sûr" -+ -+#: pki_x509#11 -+msgid "Trust inherited" -+msgstr "Confiance héritée" -+ -+#: pki_x509#12 -+msgid "Always Trusted" -+msgstr "Sûr" -+ -+#: pki_x509#13 -+msgid "CRL expires: %1" -+msgstr "La liste de révocation expire le %1" -+ -+#: pki_x509#14 -+msgid "No" -+msgstr "Non" -+ -+#: pki_x509#15 -+msgid "Yes" -+msgstr "Oui" -+ -+#: pki_x509req#1 -+msgid "Signing key not valid (public key)" -+msgstr "La clé de signature n'est pas valide (c'est une clé publique)" -+ -+#: pki_x509req#2 -+msgid "Successfully imported the %1 certificate request '%2'" -+msgstr "Les %1 requêtes de signature '%2' ont été importées avec succès" -+ -+#: pki_x509req#3 -+msgid "Delete the %1 certificate request '%2'?" -+msgstr "Détruire les %1 requêtes de signature '%2' ?" -+ -+#: pki_x509req#4 -+msgid "Successfully created the %1 certificate request '%2'" -+msgstr "Les %1 requêtes de signature '%2' ont été créées avec succès" -+ -+#: pki_x509req#5 -+msgid "Delete the %1 certificate requests: %2?" -+msgstr "Détruire les %1 requêtes de signature '%2' ?" -+ -+#: pki_x509req#6 -+msgid "" -+"Unable to load the certificate request in file %1. Tried PEM, DER and SPKAC " -+"format." -+msgstr "" -+"Impossible de charger la requête de signature du fichier %1. Les formats " -+"PEM, DER et SPKAC ont été essayés." -+ -+#: pki_x509req#7 -+msgctxt "pki_x509req#7" -+msgid "Signed" -+msgstr "Signé" -+ -+#: pki_x509req#8 -+msgid "Unhandled" -+msgstr "Non-géré" -+ -+#: pki_x509req#9 -+msgctxt "pki_x509req#9" -+msgid "Wrong Size %1" -+msgstr "Taille fausse %1" -+ -+#: v3ext#1 -+msgctxt "v3ext#1" -+msgid "Add" -+msgstr "Ajouter" -+ -+#: v3ext#2 -+msgctxt "v3ext#2" -+msgid "Delete" -+msgstr "Détruire" -+ -+#: v3ext#3 -+msgctxt "v3ext#3" -+msgid "Apply" -+msgstr "Appliquer" -+ -+#: v3ext#4 -+msgctxt "v3ext#4" -+msgid "Validate" -+msgstr "Valider" -+ -+#: v3ext#5 -+msgctxt "v3ext#5" -+msgid "Cancel" -+msgstr "Abandonner" -+ -+#: v3ext#6 -+msgid "An email address or 'copy'" -+msgstr "Une adresse de courriel ou 'copy'" -+ -+#: v3ext#7 -+msgid "An email address" -+msgstr "Une adresse de courriel" -+ -+#: v3ext#8 -+msgid "a registered ID: OBJECT IDENTIFIER" -+msgstr "un IDentifiant enregistré: IDENTIFICATEUR.OBJET" -+ -+#: v3ext#9 -+msgid "a uniform resource indicator" -+msgstr "un indicateur uniforme de ressource" -+ -+#: v3ext#10 -+msgid "a DNS domain name" -+msgstr "u nom de domaine DNS" -+ -+#: v3ext#11 -+msgid "an IP address" -+msgstr "une adresse IP" -+ -+#: v3ext#12 -+msgid "Syntax: ;TYPE:text like '1.2.3.4:UTF8:name'" -+msgstr "Syntaxe: ;TYPE:texte comme '1.2.3.4:UTF8:nom'" -+ -+#: v3ext#13 -+msgid "No editing. Only 'copy' allowed here" -+msgstr "Pas de modification possible. Seul 'copy' est permis ici" -+ -+#: v3ext#14 -+msgid "" -+"Validation failed:\n" -+"'%1'\n" -+"%2" -+msgstr "" -+"La validation a échoué:\n" -+"'%1'\n" -+"%2" -+ -+#: v3ext#15 -+msgid "" -+"Validation successfull:\n" -+"'%1'" -+msgstr "" -+"La validation a été effectuée avec succès:\n" -+"'%1'" -+ -+#: void#1 -+msgctxt "void#1" -+msgid "There was no key found for the Certificate: " -+msgstr "Aucune clé n'a été trouvée pour le Certificat: " -+ -+#: void#2 -+msgctxt "void#2" -+msgid "Import Certificate signing request" -+msgstr "Importer une requête de signature" -diff -Naur xca-0.9.0.orig/lang/Makefile xca-0.9.0.new/lang/Makefile ---- xca-0.9.0.orig/lang/Makefile 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/lang/Makefile 2011-02-25 16:42:38.063627556 +0100 -@@ -3,7 +3,7 @@ - TOPDIR=.. - endif - --PO_LANGUAGES=es -+PO_LANGUAGES=es fr - LANGUAGES=de ru $(PO_LANGUAGES) - QM_XCA=$(patsubst %, xca_%.qm, $(LANGUAGES)) - QM_QT=$(patsubst %, qt_%.qm, $(LANGUAGES)) -diff -Naur xca-0.9.0.orig/misc/xca.desktop xca-0.9.0.new/misc/xca.desktop ---- xca-0.9.0.orig/misc/xca.desktop 2011-02-24 16:58:29.000000000 +0100 -+++ xca-0.9.0.new/misc/xca.desktop 2011-02-25 17:10:17.513801650 +0100 -@@ -5,6 +5,7 @@ - Comment=A graphical user interface for handling and issuing X.509 compliant Certificates - Comment[de]=Eine graphische Oberfläche zur Erstellung von X.509 konformen Zertifikaten - Comment[fi]=Graafinen X.509-varmenteiden hallintatyökalu -+Comment[fr]=Création et gestion de certificats conformes à la norme X.509 - Exec=xca - Icon=xca-32x32.xpm - Terminal=false diff --git a/xca-0.9.0-locale.patch b/xca-0.9.0-locale.patch deleted file mode 100644 index 3685b75..0000000 --- a/xca-0.9.0-locale.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -Naur xca-0.9.0.orig/lib/main.cpp xca-0.9.0.new/lib/main.cpp ---- xca-0.9.0.orig/lib/main.cpp 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/lib/main.cpp 2011-02-28 13:22:24.083587071 +0100 -@@ -40,10 +40,15 @@ - locale = QLocale::system().name(); - - dirs << getPrefix() -+#ifdef XCA_DEFAULT_QT_TRANSLATE -+ << XCA_DEFAULT_QT_TRANSLATE -+#endif -+#ifndef WIN32 - << "/usr/local/share/qt4/translations/" - << "/usr/share/qt4/translations/" - << "/usr/share/qt/translations/" -- << "."; -+#endif -+ ; - - foreach(QString dir, dirs) { - if (qtTr.load(QString("qt_%1").arg(locale), dir)) { diff --git a/xca-0.9.0-noec.patch b/xca-0.9.0-noec.patch deleted file mode 100644 index bda0cc3..0000000 --- a/xca-0.9.0-noec.patch +++ /dev/null @@ -1,303 +0,0 @@ -diff -Naur xca-0.9.0.orig/configure xca-0.9.0.new/configure ---- xca-0.9.0.orig/configure 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/configure 2011-02-28 12:30:48.060564861 +0100 -@@ -140,14 +140,12 @@ - cat >conftest.c < - #include --//#include -+#include - #include - - int main(){ - printf("\nThe Versions of the used libraries are:\n\t%s 0x%lxL\n\tQT: %s\n", --// "\tOpenSC: %s\n", - OPENSSL_VERSION_TEXT, OPENSSL_VERSION_NUMBER, QT_VERSION_STR --// , sc_get_version() - ); - - if (QT_VERSION < 0x040300) { -@@ -158,6 +156,12 @@ - printf("You need OpenSSL >= 0.9.8 or higher\n"); - return 1; - } -+ -+#ifdef OPENSSL_NO_EC -+ printf("\n### This OpenSSL installation has no EC cryptography support\n"); -+#endif -+ -+ puts("\n"); - return 0; - } - EOF -diff -Naur xca-0.9.0.orig/lib/pki_evp.cpp xca-0.9.0.new/lib/pki_evp.cpp ---- xca-0.9.0.orig/lib/pki_evp.cpp 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/lib/pki_evp.cpp 2011-02-28 12:25:18.768851651 +0100 -@@ -27,9 +27,11 @@ - - QPixmap *pki_evp::icon[2]= { NULL, NULL }; - -+#ifndef OPENSSL_NO_EC - EC_builtin_curve *pki_evp::curves = NULL; - size_t pki_evp::num_curves = 0; - unsigned char *pki_evp::curve_flags = NULL; -+#endif - - void pki_evp::erasePasswd() - { -@@ -101,7 +103,9 @@ - { - RSA *rsakey; - DSA *dsakey; -+#ifndef OPENSSL_NO_EC - EC_KEY *eckey; -+#endif - - progress->setMinimum(0); - progress->setMaximum(100); -@@ -122,6 +126,7 @@ - if (dsakey) - EVP_PKEY_assign_DSA(key, dsakey); - break; -+#ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: - EC_GROUP *group = EC_GROUP_new_by_curve_name(curve_nid); - if (!group) -@@ -142,6 +147,7 @@ - EC_KEY_free(eckey); - EC_GROUP_free(group); - break; -+#endif - } - pki_openssl_error(); - encryptKey(); -@@ -180,8 +186,10 @@ - return key->pkey.rsa->d ? true: false; - case EVP_PKEY_DSA: - return key->pkey.dsa->priv_key ? true: false; -+#ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: - return EC_KEY_get0_private_key(key->pkey.ec) ? true: false; -+#endif - } - return false; - } -@@ -226,6 +234,7 @@ - openssl_error(name); - } - -+#ifndef OPENSSL_NO_EC - static void search_ec_oid(EC_KEY *ec) - { - const EC_GROUP *ec_group = EC_KEY_get0_group(ec); -@@ -250,6 +259,7 @@ - } - } - } -+#endif - - void pki_evp::fload(const QString fname) - { -@@ -311,8 +321,10 @@ - throw errorEx(tr("Unable to load the private key in file %1. Tried PEM and DER private, public and PKCS#8 key types.").arg(fname)); - } - if (pkey){ -+#ifndef OPENSSL_NO_EC - if (pkey->type == EVP_PKEY_EC) - search_ec_oid(pkey->pkey.ec); -+#endif - if (key) - EVP_PKEY_free(key); - key = pkey; -@@ -659,7 +671,9 @@ - switch (key->type) { - case EVP_PKEY_RSA: md = EVP_sha1(); break; - case EVP_PKEY_DSA: md = EVP_dss1(); break; -+#ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: md = EVP_ecdsa(); break; -+#endif - default: md = NULL; break; - } - return md; -diff -Naur xca-0.9.0.orig/lib/pki_evp.h xca-0.9.0.new/lib/pki_evp.h ---- xca-0.9.0.orig/lib/pki_evp.h 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/lib/pki_evp.h 2011-02-28 12:25:18.769851580 +0100 -@@ -37,9 +37,11 @@ - static void setOldPasswd(const char *pass); - static QString md5passwd(const char *pass); - static QString sha512passwd(QString pass, QString salt); -+#ifndef OPENSSL_NO_EC - static EC_builtin_curve *curves; - static size_t num_curves; - static unsigned char *curve_flags; -+#endif - - void generate(int bits, int type, QProgressBar *progress); - void generate(int bits, int type, QProgressBar *progress, -diff -Naur xca-0.9.0.orig/lib/pki_key.cpp xca-0.9.0.new/lib/pki_key.cpp ---- xca-0.9.0.orig/lib/pki_key.cpp 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/lib/pki_key.cpp 2011-02-28 12:25:18.769851580 +0100 -@@ -210,6 +210,7 @@ - return QString(); - } - -+#ifndef OPENSSL_NO_EC - int pki_key::ecParamNid() - { - if (key->type != EVP_PKEY_EC) -@@ -232,6 +233,7 @@ - } - return pub; - } -+#endif - - bool pki_key::compare(pki_base *ref) - { -diff -Naur xca-0.9.0.orig/lib/pki_scard.cpp xca-0.9.0.new/lib/pki_scard.cpp ---- xca-0.9.0.orig/lib/pki_scard.cpp 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/lib/pki_scard.cpp 2011-02-28 12:36:50.761408182 +0100 -@@ -113,6 +113,7 @@ - EVP_PKEY_assign_DSA(pkey, dsa); - break; - } -+#ifndef OPENSSL_NO_EC - case CKK_EC: { - EC_KEY *ec = EC_KEY_new(); - -@@ -137,6 +138,7 @@ - EVP_PKEY_assign_EC_KEY(pkey, ec); - break; - } -+#endif - default: - throw errorEx(QString("Unsupported CKA_KEY_TYPE: %1\n").arg(keytype)); - } -@@ -368,7 +370,9 @@ - switch (mech_list[i]) { - case CKM_MD5_RSA_PKCS: nids << NID_md5; break; - case CKM_DSA_SHA1: -+#ifndef OPENSSL_NO_EC - case CKM_ECDSA_SHA1: -+#endif - case CKM_SHA1_RSA_PKCS: nids << NID_sha1; break; - case CKM_SHA256_RSA_PKCS: nids << NID_sha256; break; - case CKM_SHA384_RSA_PKCS: nids << NID_sha384; break; -@@ -389,8 +393,10 @@ - return EVP_sha1(); - if (mech_list.contains(CKM_DSA_SHA1)) - return EVP_dss1(); -+#ifndef OPENSSL_NO_EC - if (mech_list.contains(CKM_ECDSA_SHA1)) - return EVP_ecdsa(); -+#endif - if (mech_list.contains(CKM_SHA512_RSA_PKCS)) - return EVP_sha512(); - if (mech_list.contains(CKM_SHA384_RSA_PKCS)) -diff -Naur xca-0.9.0.orig/widgets/hashBox.cpp xca-0.9.0.new/widgets/hashBox.cpp ---- xca-0.9.0.orig/widgets/hashBox.cpp 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/widgets/hashBox.cpp 2011-02-28 12:25:18.769851580 +0100 -@@ -40,8 +40,10 @@ - switch(key_type) { - case EVP_PKEY_DSA: - return EVP_dss1(); -+#ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: - return EVP_ecdsa(); -+#endif - default: - QString hash = currentText(); - for (unsigned i=0; isetReadOnly(true); - } - -+#ifndef OPENSSL_NO_EC - static QString CurveComment(int nid) - { - for (size_t i=0; isetText(key->subprime()); - keyModulus->setText(key->pubkey()); - break; -+#ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: - nid = key->ecParamNid(); - tlModulus->setText(tr("Public key")); -@@ -83,6 +86,7 @@ - keyPubEx->setToolTip(CurveComment(nid)); - keyModulus->setText(key->ecPubKey()); - break; -+#endif - default: - tlHeader->setText(tr("Unknown key")); - } -diff -Naur xca-0.9.0.orig/widgets/MainWindow.cpp xca-0.9.0.new/widgets/MainWindow.cpp ---- xca-0.9.0.orig/widgets/MainWindow.cpp 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/widgets/MainWindow.cpp 2011-02-28 12:39:47.453229550 +0100 -@@ -99,6 +99,7 @@ - NID_secp521r1 - }; - -+#ifndef OPENSSL_NO_EC - static void init_curves() - { - pki_evp::num_curves = EC_get_builtin_curves(NULL, 0); -@@ -130,6 +131,7 @@ - } - } - } -+#endif - - void MainWindow::enableTokenMenu(bool enable) - { -@@ -185,7 +187,9 @@ - init_images(); - homedir = getHomeDir(); - -+#ifndef OPENSSL_NO_EC - init_curves(); -+#endif - - #ifdef MDEBUG - CRYPTO_malloc_debug_init(); -diff -Naur xca-0.9.0.orig/widgets/NewKey.cpp xca-0.9.0.new/widgets/NewKey.cpp ---- xca-0.9.0.orig/widgets/NewKey.cpp 2010-08-29 10:28:32.000000000 +0200 -+++ xca-0.9.0.new/widgets/NewKey.cpp 2011-02-28 12:25:18.770851497 +0100 -@@ -24,7 +24,9 @@ - static const struct typelist typeList[] = { - { "RSA", EVP_PKEY_RSA }, - { "DSA", EVP_PKEY_DSA }, -+#ifndef OPENSSL_NO_EC - { "EC", EVP_PKEY_EC }, -+#endif - }; - - class keyListItem -@@ -98,6 +100,7 @@ - keytypes << gk; - } - -+#ifndef OPENSSL_NO_EC - for (i = 0; iaddItems(curve_x962); - curveBox->addItems(curve_other); -+#endif -+ - keyLength->setCurrentIndex(0); - keyDesc->setFocus(); - if (pkcs11::loaded()) try { diff --git a/xca.spec b/xca.spec index b8b9a32..7a30193 100644 --- a/xca.spec +++ b/xca.spec @@ -2,17 +2,14 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 0.9.0 -Release: %release_func 2 +Version: 0.9.1 +Release: %release_func 1 License: BSD Group: Applications/Productivity URL: http://www.hohnstaedt.de/xca.html Source0: http://downloads.sourceforge.net/sourceforge/xca/%{name}-%{version}.tar.gz Source1: README.update -Patch1: xca-0.9.0-locale.patch -Patch2: xca-0.9.0-noec.patch -Patch3: xca-0.9.0-french.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: qt4-devel openssl-devel BuildRequires: xdg-utils @@ -41,9 +38,6 @@ format, portable across operating systems. %prep %setup -q -%patch1 -p 1 -b .locale -%patch2 -p 1 -b .noec -%patch3 -p 1 -b .french mkdir -p _tmp_root/usr ln -s "/usr/%{_lib}" _tmp_root/usr/lib @@ -52,8 +46,6 @@ ln -s "%{_includedir}/Qt" _tmp_root/include install -p -m 644 "%{SOURCE1}" ./ -sed -i -e 's!^Exec=.*!\0 %%F!' misc/xca.desktop - %build #test -n "${QTDIR}" || . "%{_sysconfdir}/profile.d/qt.sh" @@ -79,7 +71,7 @@ mv AUTHORS.utf8 AUTHORS rm -rf "${RPM_BUILD_ROOT}" make destdir="${RPM_BUILD_ROOT}" mandir=share/man install -make destdir="${RPM_BUILD_ROOT}" mandir=share/man install -C misc TOPDIR=.. +make destdir="${RPM_BUILD_ROOT}" mandir=share/man install.misc # HACK: check whether workarounds below are still necessary if test ! -e "${RPM_BUILD_ROOT}%{_datadir}/xca/crl.png" @@ -139,6 +131,7 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %lang(es) %{_datadir}/xca/xca_es.qm %lang(fr) %{_datadir}/xca/xca_fr.qm %lang(ru) %{_datadir}/xca/xca_ru.qm +%lang(tr) %{_datadir}/xca/xca_tr.qm %{_datadir}/pixmaps/*.xpm %{_datadir}/icons/*/*/*/*.png %{_datadir}/mime/packages/%{name}.* @@ -147,6 +140,9 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Tue Nov 8 2011 Patrick Monnerat 0.9.1-1 +- New upstream release: all previous patches included in new code. + * Mon Feb 28 2011 Patrick Monnerat 0.9.0-2 - Fix Exec parameter in desktop file. From 6223b71591626a2dd4d7dcd4efd1628c77f78803 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sat, 14 Jan 2012 02:38:56 -0600 Subject: [PATCH 07/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 7a30193..c8767cb 100644 --- a/xca.spec +++ b/xca.spec @@ -3,7 +3,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 0.9.1 -Release: %release_func 1 +Release: %release_func 2 License: BSD Group: Applications/Productivity @@ -140,6 +140,9 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Sat Jan 14 2012 Fedora Release Engineering - 0.9.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + * Tue Nov 8 2011 Patrick Monnerat 0.9.1-1 - New upstream release: all previous patches included in new code. From 5eb989c9f108d025686d3a86d77948a3e1528a83 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 7 May 2012 13:51:13 +0200 Subject: [PATCH 08/72] * Mon May 7 2012 Patrick Monnerat 0.9.2-1 - New upstream release. - Patch "french" to update french translation. --- .gitignore | 1 + Makefile | 2 - lastver | 1 - sources | 2 +- verinfo | 2 - xca-0.9.2-french.patch | 202 +++++++++++++++++++++++++++++++++++++++++ xca.spec | 10 +- 7 files changed, 212 insertions(+), 8 deletions(-) delete mode 100644 Makefile delete mode 100644 lastver delete mode 100644 verinfo create mode 100644 xca-0.9.2-french.patch diff --git a/.gitignore b/.gitignore index bbd733a..6a595b0 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ xca-0.8.1.tar.gz /xca-0.9.0.tar.gz /README.update /xca-0.9.1.tar.gz +/xca-0.9.2.tar.gz diff --git a/Makefile b/Makefile deleted file mode 100644 index e5461e3..0000000 --- a/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_COMMON = $(HOME)/.fedora/common.mk --include $(MAKEFILE_COMMON) diff --git a/lastver b/lastver deleted file mode 100644 index ac39a10..0000000 --- a/lastver +++ /dev/null @@ -1 +0,0 @@ -0.9.0 diff --git a/sources b/sources index 4ad2aff..81e7058 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -53926d86ba9fc251b59f0dd154f2e3db xca-0.9.1.tar.gz +bd1aeb8c291486adaa8da750528828d9 xca-0.9.2.tar.gz 113ba37a89fe2de69338fcfe3b773a03 README.update diff --git a/verinfo b/verinfo deleted file mode 100644 index 2d6d9c7..0000000 --- a/verinfo +++ /dev/null @@ -1,2 +0,0 @@ -http://sourceforge.net/project/showfiles.php?group_id=62274 -xca-(.*?)\.tar\. diff --git a/xca-0.9.2-french.patch b/xca-0.9.2-french.patch new file mode 100644 index 0000000..aa1713d --- /dev/null +++ b/xca-0.9.2-french.patch @@ -0,0 +1,202 @@ +diff -Naur xca-0.9.2.orig/lang/fr.po xca-0.9.2.new/lang/fr.po +--- xca-0.9.2.orig/lang/fr.po 2012-05-06 11:16:45.000000000 +0200 ++++ xca-0.9.2.new/lang/fr.po 2012-05-07 12:45:51.115602877 +0200 +@@ -1,12 +1,13 @@ + # + # Patrick Monnerat , 2011. ++# demonipuch , 2012. + # + msgid "" + msgstr "" + "Project-Id-Version: xca 0.9.0\n" + "Report-Msgid-Bugs-To: \n" + "POT-Creation-Date: 2011-05-02 06:51+0200\n" +-"PO-Revision-Date: 2012-01-12 20:18+0000\n" ++"PO-Revision-Date: 2012-05-07 12:37+0200\n" + "Last-Translator: demonipuch \n" + "Language-Team: fr \n" + "MIME-Version: 1.0\n" +@@ -461,8 +462,7 @@ + + #: ExportKey#2 + msgid "When exporting the private part, it should be encrypted." +-msgstr "" +-"Il est conseillé d'encrypter la partie privée lors de son exportation." ++msgstr "Il est conseillé d'encrypter la partie privée lors de son exportation." + + #: ExportKey#3 + msgid "E&xport the private part of the Key too" +@@ -990,6 +990,9 @@ + "handled by XCA.\n" + "Please enter the DH parameter bits" + msgstr "" ++"Les paramètres de Diffie-Hellman sont nécessaires à certaines applications " ++"mais ne sont pas gérés par XCA.\n" ++"Saisir le nombre de bits du paramètre de Diffie-Hellman SVP" + + #: MainWindow#74 + msgctxt "MainWindow#74" +@@ -1576,9 +1579,9 @@ + msgstr "" + "Cette extension contient le nom alternatif du signataire et permet de " + "regrouper plusieurs valeurs littérales. Celles-ci comprennent \"email\" (un " +-"adresse de courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS\" " +-"(un nom de domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP\" " +-"(une adresse IP).\n" ++"adresse de courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS" ++"\" (un nom de domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP" ++"\" (une adresse IP).\n" + "Exemples:\n" + "email:mon@autre.adresse, IP: 1.1.1.1 , URI:http://mon.url.ici/\n" + "email:mon@autre.adresse, RID:1.2.3.4, DNS: serveur.de.nom.tld" +@@ -1839,7 +1842,7 @@ + + #: Options#7 + msgid "Suppress success messages" +-msgstr "" ++msgstr "Supprimer les messages en cas de succès" + + #: Options#8 + msgid "PKCS#11 provider" +@@ -1883,10 +1886,12 @@ + "The password is parsed as 2-digit hex code. It must have an equal number of " + "digits (0-9 and a-f)" + msgstr "" ++"Le mot de passe doit être exprimé sous forme d'une suite de chiffres " ++"hexadécimaux. Il doit contenir un nombre pair de chiffres (0-9 et a-f)" + + #: PwDialog#3 + msgid "Take as HEX string" +-msgstr "" ++msgstr "Exprimé en hexadécimal" + + #: PwDialog#4 + msgid "Repeat %1" +@@ -1906,7 +1911,7 @@ + + #: PwDialog#7 + msgid "E&xit" +-msgstr "" ++msgstr "&Quitter" + + #: QObject#1 + msgid "Undefined" +@@ -1950,8 +1955,7 @@ + msgstr "Importer une clé RSA" + + #: QObject#11 +-msgid "" +-"PKCS#10 CSR ( *.pem *.der *.csr );;Netscape Request ( *.spkac *.spc );;" ++msgid "PKCS#10 CSR ( *.pem *.der *.csr );;Netscape Request ( *.spkac *.spc );;" + msgstr "" + "Requête PKCS#10 ( *.pem *.der *.csr );;Requête Netscape ( *.spkac *.spc );;" + +@@ -2033,7 +2037,7 @@ + + #: QObject#31 + msgid "Please enter the PIN on the PinPad" +-msgstr "" ++msgstr "Saisir le NIP sur le pavé prévu à cet effet SVP" + + #: QObject#32 + msgid "Please enter the SO PIN (PUK) of the token %1" +@@ -2157,7 +2161,7 @@ + + #: db_base#4 + msgid "Paste PEM data" +-msgstr "" ++msgstr "Coller les données en format PEM" + + #: db_base#5 + msgid "Columns" +@@ -2506,8 +2510,7 @@ + + #: db_x509#16 + msgid "Please enter the new hexadecimal secret number for the QA process." +-msgstr "" +-"SVP saisir le nouveau nombre secret hexadécimal pour le processus QA." ++msgstr "SVP saisir le nouveau nombre secret hexadécimal pour le processus QA." + + #: db_x509#17 + msgid "The QA process has been terminated by the user." +@@ -2687,7 +2690,7 @@ + + #: db_x509req#4 + msgid "Challenge password" +-msgstr "" ++msgstr "Mot de passe challenge" + + #: db_x509req#5 + msgid "" +@@ -2754,17 +2757,17 @@ + #: db_x509req#17 + msgctxt "db_x509req#17" + msgid "Template" +-msgstr "" ++msgstr "Modèle" + + #: db_x509req#18 + msgctxt "db_x509req#18" + msgid "OpenSSL config" +-msgstr "" ++msgstr "Configuration OpenSSL" + + #: db_x509req#19 + msgctxt "db_x509req#19" + msgid "Delete" +-msgstr "" ++msgstr "Détruire" + + #: db_x509super#1 + msgid "Key name" +@@ -2776,11 +2779,11 @@ + + #: db_x509super#3 + msgid "Save as OpenSSL config" +-msgstr "" ++msgstr "Enregistrer en format de configuration OpenSSL" + + #: db_x509super#4 + msgid "Config files ( *.conf *.cnf);; All files ( * )" +-msgstr "" ++msgstr "Fichiers de configuration (*.conf *.cnf);; Tous les fichiers ( * )" + + #: db_x509super#5 + msgid "The following extensions were not ported into the template" +@@ -2812,7 +2815,7 @@ + + #: pki_base#2 + msgid "Error writing to file: '%1': %2" +-msgstr "" ++msgstr "Erreur à l'écriture du fichier '%1': %2" + + #: pki_base#3 + msgid "Error: " +@@ -2872,6 +2875,8 @@ + "Please enter the password to decrypt the private key from file:\n" + "%1" + msgstr "" ++"SVP saisir le mot de passe pour décrypter la clé privée du fichier:\n" ++"%1" + + #: pki_evp#4 + msgid "" +@@ -2900,8 +2905,7 @@ + + #: pki_evp#9 + msgid "Please enter the database password for encrypting the key" +-msgstr "" +-"SVP saisir le mot de passe de la base de données pour encrypter la clé" ++msgstr "SVP saisir le mot de passe de la base de données pour encrypter la clé" + + #: pki_evp#10 + msgid "Please enter the password protecting the PKCS#8 key '%1'" +@@ -2970,6 +2974,8 @@ + "Please enter the password to decrypt the PKCS#12 file:\n" + "%1" + msgstr "" ++"SVP saisir le mot de passe pour décrypter le fichier en PKCS#12:\n" ++"%1" + + #: pki_pkcs12#2 + msgid "Unable to load the PKCS#12 (pfx) file %1." diff --git a/xca.spec b/xca.spec index c8767cb..e5f87eb 100644 --- a/xca.spec +++ b/xca.spec @@ -2,14 +2,15 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 0.9.1 -Release: %release_func 2 +Version: 0.9.2 +Release: %release_func 1 License: BSD Group: Applications/Productivity URL: http://www.hohnstaedt.de/xca.html Source0: http://downloads.sourceforge.net/sourceforge/xca/%{name}-%{version}.tar.gz Source1: README.update +Patch1: xca-0.9.2-french.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: qt4-devel openssl-devel BuildRequires: xdg-utils @@ -38,6 +39,7 @@ format, portable across operating systems. %prep %setup -q +%patch1 -p 1 -b .french mkdir -p _tmp_root/usr ln -s "/usr/%{_lib}" _tmp_root/usr/lib @@ -140,6 +142,10 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Mon May 7 2012 Patrick Monnerat 0.9.2-1 +- New upstream release. +- Patch "french" to update french translation. + * Sat Jan 14 2012 Fedora Release Engineering - 0.9.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild From 2d107f7b36ecb44c008329930832c3d451439d28 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 7 May 2012 14:12:38 +0200 Subject: [PATCH 09/72] * Mon May 7 2012 Patrick Monnerat 0.9.2-1 - New upstream release. - Patch "french" to update french translation. --- .gitignore | 1 + Makefile | 2 - lastver | 1 - sources | 2 +- verinfo | 2 - xca-0.9.2-french.patch | 202 +++++++++++++++++++++++++++++++++++++++++ xca.spec | 8 +- 7 files changed, 211 insertions(+), 7 deletions(-) delete mode 100644 Makefile delete mode 100644 lastver delete mode 100644 verinfo create mode 100644 xca-0.9.2-french.patch diff --git a/.gitignore b/.gitignore index bbd733a..6a595b0 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ xca-0.8.1.tar.gz /xca-0.9.0.tar.gz /README.update /xca-0.9.1.tar.gz +/xca-0.9.2.tar.gz diff --git a/Makefile b/Makefile deleted file mode 100644 index e5461e3..0000000 --- a/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -MAKEFILE_COMMON = $(HOME)/.fedora/common.mk --include $(MAKEFILE_COMMON) diff --git a/lastver b/lastver deleted file mode 100644 index ac39a10..0000000 --- a/lastver +++ /dev/null @@ -1 +0,0 @@ -0.9.0 diff --git a/sources b/sources index 4ad2aff..81e7058 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -53926d86ba9fc251b59f0dd154f2e3db xca-0.9.1.tar.gz +bd1aeb8c291486adaa8da750528828d9 xca-0.9.2.tar.gz 113ba37a89fe2de69338fcfe3b773a03 README.update diff --git a/verinfo b/verinfo deleted file mode 100644 index 2d6d9c7..0000000 --- a/verinfo +++ /dev/null @@ -1,2 +0,0 @@ -http://sourceforge.net/project/showfiles.php?group_id=62274 -xca-(.*?)\.tar\. diff --git a/xca-0.9.2-french.patch b/xca-0.9.2-french.patch new file mode 100644 index 0000000..aa1713d --- /dev/null +++ b/xca-0.9.2-french.patch @@ -0,0 +1,202 @@ +diff -Naur xca-0.9.2.orig/lang/fr.po xca-0.9.2.new/lang/fr.po +--- xca-0.9.2.orig/lang/fr.po 2012-05-06 11:16:45.000000000 +0200 ++++ xca-0.9.2.new/lang/fr.po 2012-05-07 12:45:51.115602877 +0200 +@@ -1,12 +1,13 @@ + # + # Patrick Monnerat , 2011. ++# demonipuch , 2012. + # + msgid "" + msgstr "" + "Project-Id-Version: xca 0.9.0\n" + "Report-Msgid-Bugs-To: \n" + "POT-Creation-Date: 2011-05-02 06:51+0200\n" +-"PO-Revision-Date: 2012-01-12 20:18+0000\n" ++"PO-Revision-Date: 2012-05-07 12:37+0200\n" + "Last-Translator: demonipuch \n" + "Language-Team: fr \n" + "MIME-Version: 1.0\n" +@@ -461,8 +462,7 @@ + + #: ExportKey#2 + msgid "When exporting the private part, it should be encrypted." +-msgstr "" +-"Il est conseillé d'encrypter la partie privée lors de son exportation." ++msgstr "Il est conseillé d'encrypter la partie privée lors de son exportation." + + #: ExportKey#3 + msgid "E&xport the private part of the Key too" +@@ -990,6 +990,9 @@ + "handled by XCA.\n" + "Please enter the DH parameter bits" + msgstr "" ++"Les paramètres de Diffie-Hellman sont nécessaires à certaines applications " ++"mais ne sont pas gérés par XCA.\n" ++"Saisir le nombre de bits du paramètre de Diffie-Hellman SVP" + + #: MainWindow#74 + msgctxt "MainWindow#74" +@@ -1576,9 +1579,9 @@ + msgstr "" + "Cette extension contient le nom alternatif du signataire et permet de " + "regrouper plusieurs valeurs littérales. Celles-ci comprennent \"email\" (un " +-"adresse de courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS\" " +-"(un nom de domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP\" " +-"(une adresse IP).\n" ++"adresse de courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS" ++"\" (un nom de domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP" ++"\" (une adresse IP).\n" + "Exemples:\n" + "email:mon@autre.adresse, IP: 1.1.1.1 , URI:http://mon.url.ici/\n" + "email:mon@autre.adresse, RID:1.2.3.4, DNS: serveur.de.nom.tld" +@@ -1839,7 +1842,7 @@ + + #: Options#7 + msgid "Suppress success messages" +-msgstr "" ++msgstr "Supprimer les messages en cas de succès" + + #: Options#8 + msgid "PKCS#11 provider" +@@ -1883,10 +1886,12 @@ + "The password is parsed as 2-digit hex code. It must have an equal number of " + "digits (0-9 and a-f)" + msgstr "" ++"Le mot de passe doit être exprimé sous forme d'une suite de chiffres " ++"hexadécimaux. Il doit contenir un nombre pair de chiffres (0-9 et a-f)" + + #: PwDialog#3 + msgid "Take as HEX string" +-msgstr "" ++msgstr "Exprimé en hexadécimal" + + #: PwDialog#4 + msgid "Repeat %1" +@@ -1906,7 +1911,7 @@ + + #: PwDialog#7 + msgid "E&xit" +-msgstr "" ++msgstr "&Quitter" + + #: QObject#1 + msgid "Undefined" +@@ -1950,8 +1955,7 @@ + msgstr "Importer une clé RSA" + + #: QObject#11 +-msgid "" +-"PKCS#10 CSR ( *.pem *.der *.csr );;Netscape Request ( *.spkac *.spc );;" ++msgid "PKCS#10 CSR ( *.pem *.der *.csr );;Netscape Request ( *.spkac *.spc );;" + msgstr "" + "Requête PKCS#10 ( *.pem *.der *.csr );;Requête Netscape ( *.spkac *.spc );;" + +@@ -2033,7 +2037,7 @@ + + #: QObject#31 + msgid "Please enter the PIN on the PinPad" +-msgstr "" ++msgstr "Saisir le NIP sur le pavé prévu à cet effet SVP" + + #: QObject#32 + msgid "Please enter the SO PIN (PUK) of the token %1" +@@ -2157,7 +2161,7 @@ + + #: db_base#4 + msgid "Paste PEM data" +-msgstr "" ++msgstr "Coller les données en format PEM" + + #: db_base#5 + msgid "Columns" +@@ -2506,8 +2510,7 @@ + + #: db_x509#16 + msgid "Please enter the new hexadecimal secret number for the QA process." +-msgstr "" +-"SVP saisir le nouveau nombre secret hexadécimal pour le processus QA." ++msgstr "SVP saisir le nouveau nombre secret hexadécimal pour le processus QA." + + #: db_x509#17 + msgid "The QA process has been terminated by the user." +@@ -2687,7 +2690,7 @@ + + #: db_x509req#4 + msgid "Challenge password" +-msgstr "" ++msgstr "Mot de passe challenge" + + #: db_x509req#5 + msgid "" +@@ -2754,17 +2757,17 @@ + #: db_x509req#17 + msgctxt "db_x509req#17" + msgid "Template" +-msgstr "" ++msgstr "Modèle" + + #: db_x509req#18 + msgctxt "db_x509req#18" + msgid "OpenSSL config" +-msgstr "" ++msgstr "Configuration OpenSSL" + + #: db_x509req#19 + msgctxt "db_x509req#19" + msgid "Delete" +-msgstr "" ++msgstr "Détruire" + + #: db_x509super#1 + msgid "Key name" +@@ -2776,11 +2779,11 @@ + + #: db_x509super#3 + msgid "Save as OpenSSL config" +-msgstr "" ++msgstr "Enregistrer en format de configuration OpenSSL" + + #: db_x509super#4 + msgid "Config files ( *.conf *.cnf);; All files ( * )" +-msgstr "" ++msgstr "Fichiers de configuration (*.conf *.cnf);; Tous les fichiers ( * )" + + #: db_x509super#5 + msgid "The following extensions were not ported into the template" +@@ -2812,7 +2815,7 @@ + + #: pki_base#2 + msgid "Error writing to file: '%1': %2" +-msgstr "" ++msgstr "Erreur à l'écriture du fichier '%1': %2" + + #: pki_base#3 + msgid "Error: " +@@ -2872,6 +2875,8 @@ + "Please enter the password to decrypt the private key from file:\n" + "%1" + msgstr "" ++"SVP saisir le mot de passe pour décrypter la clé privée du fichier:\n" ++"%1" + + #: pki_evp#4 + msgid "" +@@ -2900,8 +2905,7 @@ + + #: pki_evp#9 + msgid "Please enter the database password for encrypting the key" +-msgstr "" +-"SVP saisir le mot de passe de la base de données pour encrypter la clé" ++msgstr "SVP saisir le mot de passe de la base de données pour encrypter la clé" + + #: pki_evp#10 + msgid "Please enter the password protecting the PKCS#8 key '%1'" +@@ -2970,6 +2974,8 @@ + "Please enter the password to decrypt the PKCS#12 file:\n" + "%1" + msgstr "" ++"SVP saisir le mot de passe pour décrypter le fichier en PKCS#12:\n" ++"%1" + + #: pki_pkcs12#2 + msgid "Unable to load the PKCS#12 (pfx) file %1." diff --git a/xca.spec b/xca.spec index 7a30193..1ed1046 100644 --- a/xca.spec +++ b/xca.spec @@ -2,7 +2,7 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 0.9.1 +Version: 0.9.2 Release: %release_func 1 License: BSD @@ -10,6 +10,7 @@ Group: Applications/Productivity URL: http://www.hohnstaedt.de/xca.html Source0: http://downloads.sourceforge.net/sourceforge/xca/%{name}-%{version}.tar.gz Source1: README.update +Patch1: xca-0.9.2-french.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: qt4-devel openssl-devel BuildRequires: xdg-utils @@ -38,6 +39,7 @@ format, portable across operating systems. %prep %setup -q +%patch1 -p 1 -b .french mkdir -p _tmp_root/usr ln -s "/usr/%{_lib}" _tmp_root/usr/lib @@ -140,6 +142,10 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Mon May 7 2012 Patrick Monnerat 0.9.2-1 +- New upstream release. +- Patch "french" to update french translation. + * Tue Nov 8 2011 Patrick Monnerat 0.9.1-1 - New upstream release: all previous patches included in new code. From 05e258442b999c42b9cb7d047f4331fe60fa368e Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Tue, 29 May 2012 15:41:40 +0200 Subject: [PATCH 10/72] * Mon May 14 2012 Patrick Monnerat 0.9.3-1 - New upstream release. --- .gitignore | 1 + sources | 2 +- xca-0.9.2-french.patch | 202 ----------------------------------------- xca-0.9.3-french.patch | 12 +++ xca.spec | 8 +- 5 files changed, 20 insertions(+), 205 deletions(-) delete mode 100644 xca-0.9.2-french.patch create mode 100644 xca-0.9.3-french.patch diff --git a/.gitignore b/.gitignore index 6a595b0..de64401 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ xca-0.8.1.tar.gz /README.update /xca-0.9.1.tar.gz /xca-0.9.2.tar.gz +/xca-0.9.3.tar.gz diff --git a/sources b/sources index 81e7058..997fb6f 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -bd1aeb8c291486adaa8da750528828d9 xca-0.9.2.tar.gz +5e08cf8a93f023b1b3836c203bd0a694 xca-0.9.3.tar.gz 113ba37a89fe2de69338fcfe3b773a03 README.update diff --git a/xca-0.9.2-french.patch b/xca-0.9.2-french.patch deleted file mode 100644 index aa1713d..0000000 --- a/xca-0.9.2-french.patch +++ /dev/null @@ -1,202 +0,0 @@ -diff -Naur xca-0.9.2.orig/lang/fr.po xca-0.9.2.new/lang/fr.po ---- xca-0.9.2.orig/lang/fr.po 2012-05-06 11:16:45.000000000 +0200 -+++ xca-0.9.2.new/lang/fr.po 2012-05-07 12:45:51.115602877 +0200 -@@ -1,12 +1,13 @@ - # - # Patrick Monnerat , 2011. -+# demonipuch , 2012. - # - msgid "" - msgstr "" - "Project-Id-Version: xca 0.9.0\n" - "Report-Msgid-Bugs-To: \n" - "POT-Creation-Date: 2011-05-02 06:51+0200\n" --"PO-Revision-Date: 2012-01-12 20:18+0000\n" -+"PO-Revision-Date: 2012-05-07 12:37+0200\n" - "Last-Translator: demonipuch \n" - "Language-Team: fr \n" - "MIME-Version: 1.0\n" -@@ -461,8 +462,7 @@ - - #: ExportKey#2 - msgid "When exporting the private part, it should be encrypted." --msgstr "" --"Il est conseillé d'encrypter la partie privée lors de son exportation." -+msgstr "Il est conseillé d'encrypter la partie privée lors de son exportation." - - #: ExportKey#3 - msgid "E&xport the private part of the Key too" -@@ -990,6 +990,9 @@ - "handled by XCA.\n" - "Please enter the DH parameter bits" - msgstr "" -+"Les paramètres de Diffie-Hellman sont nécessaires à certaines applications " -+"mais ne sont pas gérés par XCA.\n" -+"Saisir le nombre de bits du paramètre de Diffie-Hellman SVP" - - #: MainWindow#74 - msgctxt "MainWindow#74" -@@ -1576,9 +1579,9 @@ - msgstr "" - "Cette extension contient le nom alternatif du signataire et permet de " - "regrouper plusieurs valeurs littérales. Celles-ci comprennent \"email\" (un " --"adresse de courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS\" " --"(un nom de domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP\" " --"(une adresse IP).\n" -+"adresse de courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS" -+"\" (un nom de domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP" -+"\" (une adresse IP).\n" - "Exemples:\n" - "email:mon@autre.adresse, IP: 1.1.1.1 , URI:http://mon.url.ici/\n" - "email:mon@autre.adresse, RID:1.2.3.4, DNS: serveur.de.nom.tld" -@@ -1839,7 +1842,7 @@ - - #: Options#7 - msgid "Suppress success messages" --msgstr "" -+msgstr "Supprimer les messages en cas de succès" - - #: Options#8 - msgid "PKCS#11 provider" -@@ -1883,10 +1886,12 @@ - "The password is parsed as 2-digit hex code. It must have an equal number of " - "digits (0-9 and a-f)" - msgstr "" -+"Le mot de passe doit être exprimé sous forme d'une suite de chiffres " -+"hexadécimaux. Il doit contenir un nombre pair de chiffres (0-9 et a-f)" - - #: PwDialog#3 - msgid "Take as HEX string" --msgstr "" -+msgstr "Exprimé en hexadécimal" - - #: PwDialog#4 - msgid "Repeat %1" -@@ -1906,7 +1911,7 @@ - - #: PwDialog#7 - msgid "E&xit" --msgstr "" -+msgstr "&Quitter" - - #: QObject#1 - msgid "Undefined" -@@ -1950,8 +1955,7 @@ - msgstr "Importer une clé RSA" - - #: QObject#11 --msgid "" --"PKCS#10 CSR ( *.pem *.der *.csr );;Netscape Request ( *.spkac *.spc );;" -+msgid "PKCS#10 CSR ( *.pem *.der *.csr );;Netscape Request ( *.spkac *.spc );;" - msgstr "" - "Requête PKCS#10 ( *.pem *.der *.csr );;Requête Netscape ( *.spkac *.spc );;" - -@@ -2033,7 +2037,7 @@ - - #: QObject#31 - msgid "Please enter the PIN on the PinPad" --msgstr "" -+msgstr "Saisir le NIP sur le pavé prévu à cet effet SVP" - - #: QObject#32 - msgid "Please enter the SO PIN (PUK) of the token %1" -@@ -2157,7 +2161,7 @@ - - #: db_base#4 - msgid "Paste PEM data" --msgstr "" -+msgstr "Coller les données en format PEM" - - #: db_base#5 - msgid "Columns" -@@ -2506,8 +2510,7 @@ - - #: db_x509#16 - msgid "Please enter the new hexadecimal secret number for the QA process." --msgstr "" --"SVP saisir le nouveau nombre secret hexadécimal pour le processus QA." -+msgstr "SVP saisir le nouveau nombre secret hexadécimal pour le processus QA." - - #: db_x509#17 - msgid "The QA process has been terminated by the user." -@@ -2687,7 +2690,7 @@ - - #: db_x509req#4 - msgid "Challenge password" --msgstr "" -+msgstr "Mot de passe challenge" - - #: db_x509req#5 - msgid "" -@@ -2754,17 +2757,17 @@ - #: db_x509req#17 - msgctxt "db_x509req#17" - msgid "Template" --msgstr "" -+msgstr "Modèle" - - #: db_x509req#18 - msgctxt "db_x509req#18" - msgid "OpenSSL config" --msgstr "" -+msgstr "Configuration OpenSSL" - - #: db_x509req#19 - msgctxt "db_x509req#19" - msgid "Delete" --msgstr "" -+msgstr "Détruire" - - #: db_x509super#1 - msgid "Key name" -@@ -2776,11 +2779,11 @@ - - #: db_x509super#3 - msgid "Save as OpenSSL config" --msgstr "" -+msgstr "Enregistrer en format de configuration OpenSSL" - - #: db_x509super#4 - msgid "Config files ( *.conf *.cnf);; All files ( * )" --msgstr "" -+msgstr "Fichiers de configuration (*.conf *.cnf);; Tous les fichiers ( * )" - - #: db_x509super#5 - msgid "The following extensions were not ported into the template" -@@ -2812,7 +2815,7 @@ - - #: pki_base#2 - msgid "Error writing to file: '%1': %2" --msgstr "" -+msgstr "Erreur à l'écriture du fichier '%1': %2" - - #: pki_base#3 - msgid "Error: " -@@ -2872,6 +2875,8 @@ - "Please enter the password to decrypt the private key from file:\n" - "%1" - msgstr "" -+"SVP saisir le mot de passe pour décrypter la clé privée du fichier:\n" -+"%1" - - #: pki_evp#4 - msgid "" -@@ -2900,8 +2905,7 @@ - - #: pki_evp#9 - msgid "Please enter the database password for encrypting the key" --msgstr "" --"SVP saisir le mot de passe de la base de données pour encrypter la clé" -+msgstr "SVP saisir le mot de passe de la base de données pour encrypter la clé" - - #: pki_evp#10 - msgid "Please enter the password protecting the PKCS#8 key '%1'" -@@ -2970,6 +2974,8 @@ - "Please enter the password to decrypt the PKCS#12 file:\n" - "%1" - msgstr "" -+"SVP saisir le mot de passe pour décrypter le fichier en PKCS#12:\n" -+"%1" - - #: pki_pkcs12#2 - msgid "Unable to load the PKCS#12 (pfx) file %1." diff --git a/xca-0.9.3-french.patch b/xca-0.9.3-french.patch new file mode 100644 index 0000000..bf879ed --- /dev/null +++ b/xca-0.9.3-french.patch @@ -0,0 +1,12 @@ +diff -Naur xca-0.9.3.orig/lang/fr.po xca-0.9.3.new/lang/fr.po +--- xca-0.9.3.orig/lang/fr.po 2012-05-12 11:37:14.000000000 +0200 ++++ xca-0.9.3.new/lang/fr.po 2012-05-14 14:33:27.386075980 +0200 +@@ -1883,7 +1883,7 @@ + + #: PwDialog#2 + msgid "" +-"The password is parsed as 2-digit hex code. It must have an equal number of " ++"The password is parsed as 2-digit hex code. It must have an even number of " + "digits (0-9 and a-f)" + msgstr "" + "Le mot de passe doit être exprimé sous forme d'une suite de chiffres " diff --git a/xca.spec b/xca.spec index e5f87eb..1074949 100644 --- a/xca.spec +++ b/xca.spec @@ -2,7 +2,7 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 0.9.2 +Version: 0.9.3 Release: %release_func 1 License: BSD @@ -10,7 +10,7 @@ Group: Applications/Productivity URL: http://www.hohnstaedt.de/xca.html Source0: http://downloads.sourceforge.net/sourceforge/xca/%{name}-%{version}.tar.gz Source1: README.update -Patch1: xca-0.9.2-french.patch +Patch1: xca-0.9.3-french.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: qt4-devel openssl-devel BuildRequires: xdg-utils @@ -39,6 +39,7 @@ format, portable across operating systems. %prep %setup -q + %patch1 -p 1 -b .french mkdir -p _tmp_root/usr @@ -142,6 +143,9 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Mon May 14 2012 Patrick Monnerat 0.9.3-1 +- New upstream release. + * Mon May 7 2012 Patrick Monnerat 0.9.2-1 - New upstream release. - Patch "french" to update french translation. From c5da0dbc5d76eb09dc1b3ff274f4c8d61a663aee Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Tue, 29 May 2012 16:19:08 +0200 Subject: [PATCH 11/72] * Mon May 14 2012 Patrick Monnerat 0.9.3-1 - New upstream release. --- .gitignore | 1 + sources | 2 +- xca-0.9.2-french.patch | 202 ----------------------------------------- xca-0.9.3-french.patch | 12 +++ xca.spec | 8 +- 5 files changed, 20 insertions(+), 205 deletions(-) delete mode 100644 xca-0.9.2-french.patch create mode 100644 xca-0.9.3-french.patch diff --git a/.gitignore b/.gitignore index 6a595b0..de64401 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ xca-0.8.1.tar.gz /README.update /xca-0.9.1.tar.gz /xca-0.9.2.tar.gz +/xca-0.9.3.tar.gz diff --git a/sources b/sources index 81e7058..997fb6f 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -bd1aeb8c291486adaa8da750528828d9 xca-0.9.2.tar.gz +5e08cf8a93f023b1b3836c203bd0a694 xca-0.9.3.tar.gz 113ba37a89fe2de69338fcfe3b773a03 README.update diff --git a/xca-0.9.2-french.patch b/xca-0.9.2-french.patch deleted file mode 100644 index aa1713d..0000000 --- a/xca-0.9.2-french.patch +++ /dev/null @@ -1,202 +0,0 @@ -diff -Naur xca-0.9.2.orig/lang/fr.po xca-0.9.2.new/lang/fr.po ---- xca-0.9.2.orig/lang/fr.po 2012-05-06 11:16:45.000000000 +0200 -+++ xca-0.9.2.new/lang/fr.po 2012-05-07 12:45:51.115602877 +0200 -@@ -1,12 +1,13 @@ - # - # Patrick Monnerat , 2011. -+# demonipuch , 2012. - # - msgid "" - msgstr "" - "Project-Id-Version: xca 0.9.0\n" - "Report-Msgid-Bugs-To: \n" - "POT-Creation-Date: 2011-05-02 06:51+0200\n" --"PO-Revision-Date: 2012-01-12 20:18+0000\n" -+"PO-Revision-Date: 2012-05-07 12:37+0200\n" - "Last-Translator: demonipuch \n" - "Language-Team: fr \n" - "MIME-Version: 1.0\n" -@@ -461,8 +462,7 @@ - - #: ExportKey#2 - msgid "When exporting the private part, it should be encrypted." --msgstr "" --"Il est conseillé d'encrypter la partie privée lors de son exportation." -+msgstr "Il est conseillé d'encrypter la partie privée lors de son exportation." - - #: ExportKey#3 - msgid "E&xport the private part of the Key too" -@@ -990,6 +990,9 @@ - "handled by XCA.\n" - "Please enter the DH parameter bits" - msgstr "" -+"Les paramètres de Diffie-Hellman sont nécessaires à certaines applications " -+"mais ne sont pas gérés par XCA.\n" -+"Saisir le nombre de bits du paramètre de Diffie-Hellman SVP" - - #: MainWindow#74 - msgctxt "MainWindow#74" -@@ -1576,9 +1579,9 @@ - msgstr "" - "Cette extension contient le nom alternatif du signataire et permet de " - "regrouper plusieurs valeurs littérales. Celles-ci comprennent \"email\" (un " --"adresse de courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS\" " --"(un nom de domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP\" " --"(une adresse IP).\n" -+"adresse de courriel), \"URI\" (un indicateur uniforme de ressource), \"DNS" -+"\" (un nom de domaine), \"RID\" (un identifiant d'objet enregistré) et \"IP" -+"\" (une adresse IP).\n" - "Exemples:\n" - "email:mon@autre.adresse, IP: 1.1.1.1 , URI:http://mon.url.ici/\n" - "email:mon@autre.adresse, RID:1.2.3.4, DNS: serveur.de.nom.tld" -@@ -1839,7 +1842,7 @@ - - #: Options#7 - msgid "Suppress success messages" --msgstr "" -+msgstr "Supprimer les messages en cas de succès" - - #: Options#8 - msgid "PKCS#11 provider" -@@ -1883,10 +1886,12 @@ - "The password is parsed as 2-digit hex code. It must have an equal number of " - "digits (0-9 and a-f)" - msgstr "" -+"Le mot de passe doit être exprimé sous forme d'une suite de chiffres " -+"hexadécimaux. Il doit contenir un nombre pair de chiffres (0-9 et a-f)" - - #: PwDialog#3 - msgid "Take as HEX string" --msgstr "" -+msgstr "Exprimé en hexadécimal" - - #: PwDialog#4 - msgid "Repeat %1" -@@ -1906,7 +1911,7 @@ - - #: PwDialog#7 - msgid "E&xit" --msgstr "" -+msgstr "&Quitter" - - #: QObject#1 - msgid "Undefined" -@@ -1950,8 +1955,7 @@ - msgstr "Importer une clé RSA" - - #: QObject#11 --msgid "" --"PKCS#10 CSR ( *.pem *.der *.csr );;Netscape Request ( *.spkac *.spc );;" -+msgid "PKCS#10 CSR ( *.pem *.der *.csr );;Netscape Request ( *.spkac *.spc );;" - msgstr "" - "Requête PKCS#10 ( *.pem *.der *.csr );;Requête Netscape ( *.spkac *.spc );;" - -@@ -2033,7 +2037,7 @@ - - #: QObject#31 - msgid "Please enter the PIN on the PinPad" --msgstr "" -+msgstr "Saisir le NIP sur le pavé prévu à cet effet SVP" - - #: QObject#32 - msgid "Please enter the SO PIN (PUK) of the token %1" -@@ -2157,7 +2161,7 @@ - - #: db_base#4 - msgid "Paste PEM data" --msgstr "" -+msgstr "Coller les données en format PEM" - - #: db_base#5 - msgid "Columns" -@@ -2506,8 +2510,7 @@ - - #: db_x509#16 - msgid "Please enter the new hexadecimal secret number for the QA process." --msgstr "" --"SVP saisir le nouveau nombre secret hexadécimal pour le processus QA." -+msgstr "SVP saisir le nouveau nombre secret hexadécimal pour le processus QA." - - #: db_x509#17 - msgid "The QA process has been terminated by the user." -@@ -2687,7 +2690,7 @@ - - #: db_x509req#4 - msgid "Challenge password" --msgstr "" -+msgstr "Mot de passe challenge" - - #: db_x509req#5 - msgid "" -@@ -2754,17 +2757,17 @@ - #: db_x509req#17 - msgctxt "db_x509req#17" - msgid "Template" --msgstr "" -+msgstr "Modèle" - - #: db_x509req#18 - msgctxt "db_x509req#18" - msgid "OpenSSL config" --msgstr "" -+msgstr "Configuration OpenSSL" - - #: db_x509req#19 - msgctxt "db_x509req#19" - msgid "Delete" --msgstr "" -+msgstr "Détruire" - - #: db_x509super#1 - msgid "Key name" -@@ -2776,11 +2779,11 @@ - - #: db_x509super#3 - msgid "Save as OpenSSL config" --msgstr "" -+msgstr "Enregistrer en format de configuration OpenSSL" - - #: db_x509super#4 - msgid "Config files ( *.conf *.cnf);; All files ( * )" --msgstr "" -+msgstr "Fichiers de configuration (*.conf *.cnf);; Tous les fichiers ( * )" - - #: db_x509super#5 - msgid "The following extensions were not ported into the template" -@@ -2812,7 +2815,7 @@ - - #: pki_base#2 - msgid "Error writing to file: '%1': %2" --msgstr "" -+msgstr "Erreur à l'écriture du fichier '%1': %2" - - #: pki_base#3 - msgid "Error: " -@@ -2872,6 +2875,8 @@ - "Please enter the password to decrypt the private key from file:\n" - "%1" - msgstr "" -+"SVP saisir le mot de passe pour décrypter la clé privée du fichier:\n" -+"%1" - - #: pki_evp#4 - msgid "" -@@ -2900,8 +2905,7 @@ - - #: pki_evp#9 - msgid "Please enter the database password for encrypting the key" --msgstr "" --"SVP saisir le mot de passe de la base de données pour encrypter la clé" -+msgstr "SVP saisir le mot de passe de la base de données pour encrypter la clé" - - #: pki_evp#10 - msgid "Please enter the password protecting the PKCS#8 key '%1'" -@@ -2970,6 +2974,8 @@ - "Please enter the password to decrypt the PKCS#12 file:\n" - "%1" - msgstr "" -+"SVP saisir le mot de passe pour décrypter le fichier en PKCS#12:\n" -+"%1" - - #: pki_pkcs12#2 - msgid "Unable to load the PKCS#12 (pfx) file %1." diff --git a/xca-0.9.3-french.patch b/xca-0.9.3-french.patch new file mode 100644 index 0000000..bf879ed --- /dev/null +++ b/xca-0.9.3-french.patch @@ -0,0 +1,12 @@ +diff -Naur xca-0.9.3.orig/lang/fr.po xca-0.9.3.new/lang/fr.po +--- xca-0.9.3.orig/lang/fr.po 2012-05-12 11:37:14.000000000 +0200 ++++ xca-0.9.3.new/lang/fr.po 2012-05-14 14:33:27.386075980 +0200 +@@ -1883,7 +1883,7 @@ + + #: PwDialog#2 + msgid "" +-"The password is parsed as 2-digit hex code. It must have an equal number of " ++"The password is parsed as 2-digit hex code. It must have an even number of " + "digits (0-9 and a-f)" + msgstr "" + "Le mot de passe doit être exprimé sous forme d'une suite de chiffres " diff --git a/xca.spec b/xca.spec index 1ed1046..ff281e1 100644 --- a/xca.spec +++ b/xca.spec @@ -2,7 +2,7 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 0.9.2 +Version: 0.9.3 Release: %release_func 1 License: BSD @@ -10,7 +10,7 @@ Group: Applications/Productivity URL: http://www.hohnstaedt.de/xca.html Source0: http://downloads.sourceforge.net/sourceforge/xca/%{name}-%{version}.tar.gz Source1: README.update -Patch1: xca-0.9.2-french.patch +Patch1: xca-0.9.3-french.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: qt4-devel openssl-devel BuildRequires: xdg-utils @@ -39,6 +39,7 @@ format, portable across operating systems. %prep %setup -q + %patch1 -p 1 -b .french mkdir -p _tmp_root/usr @@ -142,6 +143,9 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Mon May 14 2012 Patrick Monnerat 0.9.3-1 +- New upstream release. + * Mon May 7 2012 Patrick Monnerat 0.9.2-1 - New upstream release. - Patch "french" to update french translation. From 330f3d9315d97a4b9d5d6a36a33a3bef157f7260 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sat, 21 Jul 2012 23:28:57 -0500 Subject: [PATCH 12/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 1074949..f3d7ba5 100644 --- a/xca.spec +++ b/xca.spec @@ -3,7 +3,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 0.9.3 -Release: %release_func 1 +Release: %release_func 2 License: BSD Group: Applications/Productivity @@ -143,6 +143,9 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Sun Jul 22 2012 Fedora Release Engineering - 0.9.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + * Mon May 14 2012 Patrick Monnerat 0.9.3-1 - New upstream release. From b58dd480bd8ca219cc2b8ed8cb84516c199435a6 Mon Sep 17 00:00:00 2001 From: Parag Nemade Date: Sun, 10 Feb 2013 10:41:16 +0530 Subject: [PATCH 13/72] Remove vendor tag from desktop file as per https://fedorahosted.org/fesco/ticket/1077 - Cleanup spec as per recently changed packaging guidelines --- xca.spec | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/xca.spec b/xca.spec index f3d7ba5..e619f61 100644 --- a/xca.spec +++ b/xca.spec @@ -3,7 +3,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 0.9.3 -Release: %release_func 2 +Release: %release_func 3 License: BSD Group: Applications/Productivity @@ -11,7 +11,6 @@ URL: http://www.hohnstaedt.de/xca.html Source0: http://downloads.sourceforge.net/sourceforge/xca/%{name}-%{version}.tar.gz Source1: README.update Patch1: xca-0.9.3-french.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: qt4-devel openssl-devel BuildRequires: xdg-utils BuildRequires: ImageMagick @@ -71,8 +70,6 @@ mv AUTHORS.utf8 AUTHORS %install -rm -rf "${RPM_BUILD_ROOT}" - make destdir="${RPM_BUILD_ROOT}" mandir=share/man install make destdir="${RPM_BUILD_ROOT}" mandir=share/man install.misc @@ -92,7 +89,7 @@ xdg-icon-resource install --noupdate --context mimetypes \ --size 32 xdb.png application-x-xca-database xdg-icon-resource install --noupdate --size 32 xca.png fedora-xca -desktop-file-install --vendor fedora --mode 0644 \ +desktop-file-install --mode 0644 \ --dir "${RPM_BUILD_ROOT}%{_datadir}/applications" \ --delete-original \ --add-mime-type application/x-xca-database \ @@ -100,9 +97,6 @@ desktop-file-install --vendor fedora --mode 0644 \ "${RPM_BUILD_ROOT}%{_datadir}/applications/xca.desktop" -%clean -rm -rf "${RPM_BUILD_ROOT}" - %post touch --no-create "%{_datadir}/icons/hicolor" || : @@ -122,7 +116,6 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %files -%defattr(-, root, root, -) %doc AUTHORS COPYRIGHT README.update %{_bindir}/* %dir %{_datadir}/xca @@ -143,6 +136,10 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Sun Feb 10 2013 Parag Nemade - 0.9.3-3 +- Remove vendor tag from desktop file as per https://fedorahosted.org/fesco/ticket/1077 +- Cleanup spec as per recently changed packaging guidelines + * Sun Jul 22 2012 Fedora Release Engineering - 0.9.3-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild From 2489122509585ae10465894c4b048bda95e72cb6 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sun, 4 Aug 2013 02:38:22 -0500 Subject: [PATCH 14/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index e619f61..38eb160 100644 --- a/xca.spec +++ b/xca.spec @@ -3,7 +3,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 0.9.3 -Release: %release_func 3 +Release: %release_func 4 License: BSD Group: Applications/Productivity @@ -136,6 +136,9 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Sun Aug 04 2013 Fedora Release Engineering - 0.9.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + * Sun Feb 10 2013 Parag Nemade - 0.9.3-3 - Remove vendor tag from desktop file as per https://fedorahosted.org/fesco/ticket/1077 - Cleanup spec as per recently changed packaging guidelines From 5953d5e6060c2459eb7303b993484c59a926e4ab Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Tue, 22 Apr 2014 15:00:13 +0200 Subject: [PATCH 15/72] * Tue Apr 22 2014 Patrick Monnerat - 0.9.3-5 - Rebuild for elliptic curves inclusion. https://bugzilla.redhat.com/show_bug.cgi?id=1089245 --- xca.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 38eb160..4f3fb02 100644 --- a/xca.spec +++ b/xca.spec @@ -3,7 +3,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 0.9.3 -Release: %release_func 4 +Release: %release_func 5 License: BSD Group: Applications/Productivity @@ -136,6 +136,10 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Tue Apr 22 2014 Patrick Monnerat - 0.9.3-5 +- Rebuild for elliptic curves inclusion. + https://bugzilla.redhat.com/show_bug.cgi?id=1089245 + * Sun Aug 04 2013 Fedora Release Engineering - 0.9.3-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild From 8bef209bf9173a48899a6b5715faec2bf4f5646f Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sun, 8 Jun 2014 00:16:52 -0500 Subject: [PATCH 16/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 4f3fb02..4c76a46 100644 --- a/xca.spec +++ b/xca.spec @@ -3,7 +3,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 0.9.3 -Release: %release_func 5 +Release: %release_func 6 License: BSD Group: Applications/Productivity @@ -136,6 +136,9 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Sun Jun 08 2014 Fedora Release Engineering - 0.9.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + * Tue Apr 22 2014 Patrick Monnerat - 0.9.3-5 - Rebuild for elliptic curves inclusion. https://bugzilla.redhat.com/show_bug.cgi?id=1089245 From 951889f40dbc991fe97c055fabaf67c5cd5f14ba Mon Sep 17 00:00:00 2001 From: Rex Dieter Date: Tue, 12 Aug 2014 11:48:59 -0500 Subject: [PATCH 17/72] fix/update scriptlets --- xca.spec | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/xca.spec b/xca.spec index 4c76a46..9541f46 100644 --- a/xca.spec +++ b/xca.spec @@ -3,7 +3,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 0.9.3 -Release: %release_func 6 +Release: %release_func 7 License: BSD Group: Applications/Productivity @@ -18,8 +18,6 @@ BuildRequires: linuxdoc-tools BuildRequires: libtool-ltdl-devel BuildRequires: translate-toolkit Requires: hicolor-icon-theme -Requires(posttrans): shared-mime-info -Requires(postun): shared-mime-info %description @@ -99,21 +97,21 @@ desktop-file-install --mode 0644 \ %post -touch --no-create "%{_datadir}/icons/hicolor" || : - -%preun -touch --no-create "%{_datadir}/icons/hicolor" || : +touch --no-create %{_datadir}/icons/hicolor || : +touch --no-create %{_datadir}/mime/packages &> /dev/null || : %posttrans -gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : -update-mime-database "%{_datadir}/mime" &> /dev/null || : +gtk-update-icon-cache %{_datadir}/icons/hicolor &> /dev/null || : update-desktop-database &> /dev/null || : +update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || : %postun -update-desktop-database &> /dev/null || : -update-mime-database "%{_datadir}/mime" &> /dev/null || : -gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : - +if [ $1 -eq 0 ]; then +touch --no-create %{_datadir}/icons/hicolor || : +gtk-update-icon-cache %{_datadir}/icons/hicolor &> /dev/null || : +touch --no-create %{_datadir}/mime/packages &> /dev/null || : +update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || : +fi %files %doc AUTHORS COPYRIGHT README.update @@ -136,6 +134,9 @@ gtk-update-icon-cache "%{_datadir}/icons/hicolor" &> /dev/null || : %changelog +* Tue Aug 12 2014 Rex Dieter 0.9.3-7 +- fix/update scriptlets + * Sun Jun 08 2014 Fedora Release Engineering - 0.9.3-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild From 2ad6d536e8e62ddc8ed8db48673c88af17ec3f49 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 18 Aug 2014 09:19:04 +0000 Subject: [PATCH 18/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 9541f46..7e8c974 100644 --- a/xca.spec +++ b/xca.spec @@ -3,7 +3,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 0.9.3 -Release: %release_func 7 +Release: %release_func 8 License: BSD Group: Applications/Productivity @@ -134,6 +134,9 @@ fi %changelog +* Mon Aug 18 2014 Fedora Release Engineering - 0.9.3-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + * Tue Aug 12 2014 Rex Dieter 0.9.3-7 - fix/update scriptlets From 43a4d9edcb4ea1c7ebb2d4e204f937482caf5732 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Wed, 15 Oct 2014 18:44:57 +0200 Subject: [PATCH 19/72] Patch "openssl101i" for openssl-1.0.1i compatibility. --- xca-0.9.3-desktopicon.patch | 12 ++++++++++ xca-0.9.3-openssl101i.patch | 44 +++++++++++++++++++++++++++++++++++++ xca.spec | 20 +++++++++++------ 3 files changed, 69 insertions(+), 7 deletions(-) create mode 100644 xca-0.9.3-desktopicon.patch create mode 100644 xca-0.9.3-openssl101i.patch diff --git a/xca-0.9.3-desktopicon.patch b/xca-0.9.3-desktopicon.patch new file mode 100644 index 0000000..5fd97be --- /dev/null +++ b/xca-0.9.3-desktopicon.patch @@ -0,0 +1,12 @@ +diff -Naurp xca-0.9.3.orig/misc/xca.desktop xca-0.9.3.new/misc/xca.desktop +--- xca-0.9.3.orig/misc/xca.desktop 2012-05-12 11:37:14.000000000 +0200 ++++ xca-0.9.3.new/misc/xca.desktop 2014-10-15 14:46:33.113592955 +0200 +@@ -7,7 +7,7 @@ Comment[de]=Eine graphische Oberfläche + Comment[fi]=Graafinen X.509-varmenteiden hallintatyökalu + Comment[fr]=Création et gestion de certificats conformes à la norme X.509 + Exec=xca %F +-Icon=xca-32x32.xpm ++Icon=xca-32x32 + Terminal=false + Categories=Application;Utility;Qt; + MimeType=application/x-xca-database;application/x-xca-template;application/x-x509-ca-cert;application/pkcs10;application/x-pkcs7-certificates;application/x-pkcs12; diff --git a/xca-0.9.3-openssl101i.patch b/xca-0.9.3-openssl101i.patch new file mode 100644 index 0000000..828acdc --- /dev/null +++ b/xca-0.9.3-openssl101i.patch @@ -0,0 +1,44 @@ +From: Oliver Winker +Date: Tue, 12 Aug 2014 17:08:05 +0000 (+0200) +Subject: Fix for openssl 1.0.1i +X-Git-Url: http://gitweb.hohnstaedt.de/?p=projects%2Fxca.git;a=commitdiff_plain;h=4f7cd417320215c8ed3567536cbf2ca008946c38 + +Fix for openssl 1.0.1i + +Fixes following application error + +Errors +error:0D0C40D8:asn1 encoding routines:c2i_ASN1_OBJECT:invalid object encoding +error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error + +Due to openssl 1.0.1i change: + + commit 03b04ddac162c7b7fa3c57eadccc5a583a00d291 + Author: Emilia Kasper + Date: Wed Jul 2 19:02:33 2014 +0200 + +Commit messgae amended and +Signed-off-by: Christian Hohnstaedt +--- + +diff --git a/lib/x509v3ext.cpp b/lib/x509v3ext.cpp +index cf74c32..d94cbda 100644 +--- a/lib/x509v3ext.cpp ++++ b/lib/x509v3ext.cpp +@@ -27,6 +27,8 @@ x509v3ext::x509v3ext(const X509_EXTENSION *n) + x509v3ext::x509v3ext(const x509v3ext &n) + { + ext = NULL; ++ if (!n.isValid()) ++ return; + set(n.ext); + } + +@@ -743,7 +745,7 @@ X509_EXTENSION *x509v3ext::get() const + + bool x509v3ext::isValid() const + { +- return ext->value->length > 0 && ++ return ext && ext->value && ext->value->length > 0 && + OBJ_obj2nid(ext->object) != NID_undef; + } diff --git a/xca.spec b/xca.spec index 7e8c974..318b4d9 100644 --- a/xca.spec +++ b/xca.spec @@ -1,23 +1,22 @@ -%{!?release_func:%global release_func() %1%{?dist}} - Summary: Graphical X.509 certificate management tool Name: xca Version: 0.9.3 -Release: %release_func 8 - +Release: 9%{?dist} License: BSD Group: Applications/Productivity URL: http://www.hohnstaedt.de/xca.html Source0: http://downloads.sourceforge.net/sourceforge/xca/%{name}-%{version}.tar.gz Source1: README.update Patch1: xca-0.9.3-french.patch +Patch2: xca-0.9.3-openssl101i.patch +Patch3: xca-0.9.3-desktopicon.patch BuildRequires: qt4-devel openssl-devel BuildRequires: xdg-utils BuildRequires: ImageMagick BuildRequires: linuxdoc-tools BuildRequires: libtool-ltdl-devel BuildRequires: translate-toolkit -Requires: hicolor-icon-theme +Requires: hicolor-icon-theme %description @@ -38,6 +37,8 @@ format, portable across operating systems. %setup -q %patch1 -p 1 -b .french +%patch2 -p 1 -b .openssl101i +%patch3 -p 1 -b .desktopicon mkdir -p _tmp_root/usr ln -s "/usr/%{_lib}" _tmp_root/usr/lib @@ -48,7 +49,6 @@ install -p -m 644 "%{SOURCE1}" ./ %build -#test -n "${QTDIR}" || . "%{_sysconfdir}/profile.d/qt.sh" export QTDIR="%{_libdir}/qt4" CC='%{__cxx}' LD='%{__ld}' CFLAGS="${RPM_OPT_FLAGS} \ -DXCA_DEFAULT_QT_TRANSLATE=\"\\\"%{_datadir}/qt4/translations\\\"\"" \ @@ -134,6 +134,12 @@ fi %changelog +* Wed Oct 15 2014 Patrick Monnerat 0.9.3-9 +- Patch "openssl101i" for openssl-1.0.1i compatibility. + https://bugzilla.redhat.com/show_bug.cgi?id=1152043 +- Patch "desktopicon" removes the icon file extension in desktop entry file. + https://sourceforge.net/p/xca/patches/15/ + * Mon Aug 18 2014 Fedora Release Engineering - 0.9.3-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild @@ -256,7 +262,7 @@ fi * Thu May 19 2005 Enrico Scholz - 0.5.1-2 - use %%dist instead of %%disttag -* Fri Apr 7 2005 Michael Schwendt +* Thu Apr 7 2005 Michael Schwendt - rebuilt * Tue Mar 8 2005 Enrico Scholz - 0.5.1 From b937d0ef533cef35d4d32cd831ec50d5ddfe0b4f Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Tue, 28 Oct 2014 16:54:46 +0100 Subject: [PATCH 20/72] New upstream release. --- .gitignore | 1 + sources | 2 +- xca-0.9.3-desktopicon.patch | 12 ------- xca-0.9.3-french.patch | 12 ------- xca-0.9.3-openssl101i.patch | 44 ------------------------- xca.spec | 66 ++++++++++++++++++++++++++----------- 6 files changed, 48 insertions(+), 89 deletions(-) delete mode 100644 xca-0.9.3-desktopicon.patch delete mode 100644 xca-0.9.3-french.patch delete mode 100644 xca-0.9.3-openssl101i.patch diff --git a/.gitignore b/.gitignore index de64401..fcfe70b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ xca-0.8.1.tar.gz /xca-0.9.1.tar.gz /xca-0.9.2.tar.gz /xca-0.9.3.tar.gz +/xca-1.0.0.tar.gz diff --git a/sources b/sources index 997fb6f..86ed61a 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -5e08cf8a93f023b1b3836c203bd0a694 xca-0.9.3.tar.gz +e4e8b04047960cf984801e430a1703ab xca-1.0.0.tar.gz 113ba37a89fe2de69338fcfe3b773a03 README.update diff --git a/xca-0.9.3-desktopicon.patch b/xca-0.9.3-desktopicon.patch deleted file mode 100644 index 5fd97be..0000000 --- a/xca-0.9.3-desktopicon.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naurp xca-0.9.3.orig/misc/xca.desktop xca-0.9.3.new/misc/xca.desktop ---- xca-0.9.3.orig/misc/xca.desktop 2012-05-12 11:37:14.000000000 +0200 -+++ xca-0.9.3.new/misc/xca.desktop 2014-10-15 14:46:33.113592955 +0200 -@@ -7,7 +7,7 @@ Comment[de]=Eine graphische Oberfläche - Comment[fi]=Graafinen X.509-varmenteiden hallintatyökalu - Comment[fr]=Création et gestion de certificats conformes à la norme X.509 - Exec=xca %F --Icon=xca-32x32.xpm -+Icon=xca-32x32 - Terminal=false - Categories=Application;Utility;Qt; - MimeType=application/x-xca-database;application/x-xca-template;application/x-x509-ca-cert;application/pkcs10;application/x-pkcs7-certificates;application/x-pkcs12; diff --git a/xca-0.9.3-french.patch b/xca-0.9.3-french.patch deleted file mode 100644 index bf879ed..0000000 --- a/xca-0.9.3-french.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naur xca-0.9.3.orig/lang/fr.po xca-0.9.3.new/lang/fr.po ---- xca-0.9.3.orig/lang/fr.po 2012-05-12 11:37:14.000000000 +0200 -+++ xca-0.9.3.new/lang/fr.po 2012-05-14 14:33:27.386075980 +0200 -@@ -1883,7 +1883,7 @@ - - #: PwDialog#2 - msgid "" --"The password is parsed as 2-digit hex code. It must have an equal number of " -+"The password is parsed as 2-digit hex code. It must have an even number of " - "digits (0-9 and a-f)" - msgstr "" - "Le mot de passe doit être exprimé sous forme d'une suite de chiffres " diff --git a/xca-0.9.3-openssl101i.patch b/xca-0.9.3-openssl101i.patch deleted file mode 100644 index 828acdc..0000000 --- a/xca-0.9.3-openssl101i.patch +++ /dev/null @@ -1,44 +0,0 @@ -From: Oliver Winker -Date: Tue, 12 Aug 2014 17:08:05 +0000 (+0200) -Subject: Fix for openssl 1.0.1i -X-Git-Url: http://gitweb.hohnstaedt.de/?p=projects%2Fxca.git;a=commitdiff_plain;h=4f7cd417320215c8ed3567536cbf2ca008946c38 - -Fix for openssl 1.0.1i - -Fixes following application error - -Errors -error:0D0C40D8:asn1 encoding routines:c2i_ASN1_OBJECT:invalid object encoding -error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error - -Due to openssl 1.0.1i change: - - commit 03b04ddac162c7b7fa3c57eadccc5a583a00d291 - Author: Emilia Kasper - Date: Wed Jul 2 19:02:33 2014 +0200 - -Commit messgae amended and -Signed-off-by: Christian Hohnstaedt ---- - -diff --git a/lib/x509v3ext.cpp b/lib/x509v3ext.cpp -index cf74c32..d94cbda 100644 ---- a/lib/x509v3ext.cpp -+++ b/lib/x509v3ext.cpp -@@ -27,6 +27,8 @@ x509v3ext::x509v3ext(const X509_EXTENSION *n) - x509v3ext::x509v3ext(const x509v3ext &n) - { - ext = NULL; -+ if (!n.isValid()) -+ return; - set(n.ext); - } - -@@ -743,7 +745,7 @@ X509_EXTENSION *x509v3ext::get() const - - bool x509v3ext::isValid() const - { -- return ext->value->length > 0 && -+ return ext && ext->value && ext->value->length > 0 && - OBJ_obj2nid(ext->object) != NID_undef; - } diff --git a/xca.spec b/xca.spec index 318b4d9..cfe1fb4 100644 --- a/xca.spec +++ b/xca.spec @@ -1,15 +1,12 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 0.9.3 -Release: 9%{?dist} +Version: 1.0.0 +Release: 1%{?dist} License: BSD Group: Applications/Productivity -URL: http://www.hohnstaedt.de/xca.html +URL: http://xca.hohnstaedt.de/ Source0: http://downloads.sourceforge.net/sourceforge/xca/%{name}-%{version}.tar.gz Source1: README.update -Patch1: xca-0.9.3-french.patch -Patch2: xca-0.9.3-openssl101i.patch -Patch3: xca-0.9.3-desktopicon.patch BuildRequires: qt4-devel openssl-devel BuildRequires: xdg-utils BuildRequires: ImageMagick @@ -33,12 +30,11 @@ DER, PKCS#8. All cryptographic data are stored in a byte order agnostic file format, portable across operating systems. +#------------------------------------------------------------------------------- %prep -%setup -q +#------------------------------------------------------------------------------- -%patch1 -p 1 -b .french -%patch2 -p 1 -b .openssl101i -%patch3 -p 1 -b .desktopicon +%setup -q mkdir -p _tmp_root/usr ln -s "/usr/%{_lib}" _tmp_root/usr/lib @@ -48,7 +44,10 @@ ln -s "%{_includedir}/Qt" _tmp_root/include install -p -m 644 "%{SOURCE1}" ./ +#------------------------------------------------------------------------------- %build +#------------------------------------------------------------------------------- + export QTDIR="%{_libdir}/qt4" CC='%{__cxx}' LD='%{__ld}' CFLAGS="${RPM_OPT_FLAGS} \ -DXCA_DEFAULT_QT_TRANSLATE=\"\\\"%{_datadir}/qt4/translations\\\"\"" \ @@ -62,12 +61,11 @@ touch -r img/xca.ico xca.png convert img/xdb.ico xdb.png touch -r img/xdb.ico xdb.png -iconv -f iso8859-1 -t utf8 AUTHORS > AUTHORS.utf8 -touch -r AUTHORS AUTHORS.utf8 -mv AUTHORS.utf8 AUTHORS - +#------------------------------------------------------------------------------- %install +#------------------------------------------------------------------------------- + make destdir="${RPM_BUILD_ROOT}" mandir=share/man install make destdir="${RPM_BUILD_ROOT}" mandir=share/man install.misc @@ -87,33 +85,53 @@ xdg-icon-resource install --noupdate --context mimetypes \ --size 32 xdb.png application-x-xca-database xdg-icon-resource install --noupdate --size 32 xca.png fedora-xca +# Replace the desktop icon. +rm -rf "${RPM_BUILD_ROOT}%{_datadir}/pixmaps/xca-32x32.xpm" +cp -a img/key.xpm "${RPM_BUILD_ROOT}%{_datadir}/pixmaps/xca.xpm" + desktop-file-install --mode 0644 \ --dir "${RPM_BUILD_ROOT}%{_datadir}/applications" \ --delete-original \ --add-mime-type application/x-xca-database \ --remove-category QT \ + --set-icon=xca \ "${RPM_BUILD_ROOT}%{_datadir}/applications/xca.desktop" - +#------------------------------------------------------------------------------- %post +#------------------------------------------------------------------------------- + touch --no-create %{_datadir}/icons/hicolor || : touch --no-create %{_datadir}/mime/packages &> /dev/null || : + +#------------------------------------------------------------------------------- %posttrans +#------------------------------------------------------------------------------- + gtk-update-icon-cache %{_datadir}/icons/hicolor &> /dev/null || : update-desktop-database &> /dev/null || : update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || : + +#------------------------------------------------------------------------------- %postun -if [ $1 -eq 0 ]; then -touch --no-create %{_datadir}/icons/hicolor || : -gtk-update-icon-cache %{_datadir}/icons/hicolor &> /dev/null || : -touch --no-create %{_datadir}/mime/packages &> /dev/null || : -update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || : +#------------------------------------------------------------------------------- + +if [ "${1}" -eq 0 ] +then touch --no-create %{_datadir}/icons/hicolor || : + gtk-update-icon-cache %{_datadir}/icons/hicolor &> /dev/null || : + touch --no-create %{_datadir}/mime/packages &> /dev/null || : + update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || : fi + +#------------------------------------------------------------------------------- %files +#------------------------------------------------------------------------------- + +%defattr(-, root, root, -) %doc AUTHORS COPYRIGHT README.update %{_bindir}/* %dir %{_datadir}/xca @@ -124,6 +142,7 @@ fi %lang(de) %{_datadir}/xca/xca_de.qm %lang(es) %{_datadir}/xca/xca_es.qm %lang(fr) %{_datadir}/xca/xca_fr.qm +%lang(hr) %{_datadir}/xca/xca_hr.qm %lang(ru) %{_datadir}/xca/xca_ru.qm %lang(tr) %{_datadir}/xca/xca_tr.qm %{_datadir}/pixmaps/*.xpm @@ -133,7 +152,14 @@ fi %attr(0644, root, root) %{_mandir}/*/* +#------------------------------------------------------------------------------- %changelog +#------------------------------------------------------------------------------- + +* Tue Oct 28 2014 Patrick Monnerat 1.0.0-1 +- New upstream release. + Set-up a larger desktop icon. + * Wed Oct 15 2014 Patrick Monnerat 0.9.3-9 - Patch "openssl101i" for openssl-1.0.1i compatibility. https://bugzilla.redhat.com/show_bug.cgi?id=1152043 From 6cbd2afd08bb75558c4c7b36a7448b77bf07ee71 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 17 Nov 2014 16:51:01 +0100 Subject: [PATCH 21/72] Patch "nonstdext" avoids segfault when viewing cert with non-standard extension. https://bugzilla.redhat.com/show_bug.cgi?id=1164340 --- xca-1.0.0-nonstdext.patch | 33 +++++++++++++++++++++++++++++++++ xca.spec | 10 +++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100755 xca-1.0.0-nonstdext.patch diff --git a/xca-1.0.0-nonstdext.patch b/xca-1.0.0-nonstdext.patch new file mode 100755 index 0000000..3f29462 --- /dev/null +++ b/xca-1.0.0-nonstdext.patch @@ -0,0 +1,33 @@ +From 0baa9173eac0ebe568539e892792921b9ecf7279 Mon Sep 17 00:00:00 2001 +From: Christian Hohnstaedt +Date: Mon, 17 Nov 2014 16:15:42 +0100 +Subject: [PATCH] RedHat Bug #1164340 - segfault when viewing a RHEL entitlement certificate + +...in X509V3_EXT_get v3_lib.c:15 + +Fix the x509v3ext copy constructor +--- + lib/x509v3ext.cpp | 7 +++---- + 1 files changed, 3 insertions(+), 4 deletions(-) + +diff --git a/lib/x509v3ext.cpp b/lib/x509v3ext.cpp +index d94cbda..87bfc63 100644 +--- a/lib/x509v3ext.cpp ++++ b/lib/x509v3ext.cpp +@@ -26,10 +26,9 @@ x509v3ext::x509v3ext(const X509_EXTENSION *n) + + x509v3ext::x509v3ext(const x509v3ext &n) + { +- ext = NULL; +- if (!n.isValid()) +- return; +- set(n.ext); ++ ext = X509_EXTENSION_new(); ++ if (n.ext && n.ext->value && n.ext->value->length > 0) ++ set(n.ext); + } + + x509v3ext::~x509v3ext() +-- +1.7.2.5 + diff --git a/xca.spec b/xca.spec index cfe1fb4..a811fe2 100644 --- a/xca.spec +++ b/xca.spec @@ -1,12 +1,13 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 1.0.0 -Release: 1%{?dist} +Release: 2%{?dist} License: BSD Group: Applications/Productivity URL: http://xca.hohnstaedt.de/ Source0: http://downloads.sourceforge.net/sourceforge/xca/%{name}-%{version}.tar.gz Source1: README.update +Patch1: xca-1.0.0-nonstdext.patch BuildRequires: qt4-devel openssl-devel BuildRequires: xdg-utils BuildRequires: ImageMagick @@ -36,6 +37,8 @@ format, portable across operating systems. %setup -q +%patch1 -p1 -b .nonstdext + mkdir -p _tmp_root/usr ln -s "/usr/%{_lib}" _tmp_root/usr/lib ln -s "/%{_lib}" _tmp_root/lib @@ -156,6 +159,11 @@ fi %changelog #------------------------------------------------------------------------------- +* Mon Nov 17 2014 Patrick Monnerat 1.0.0-2 +- Patch "nonstdext" avoids segfault when viewing cert with + non-standard extension. + https://bugzilla.redhat.com/show_bug.cgi?id=1164340 + * Tue Oct 28 2014 Patrick Monnerat 1.0.0-1 - New upstream release. Set-up a larger desktop icon. From 104bef35575336778f2082c57e855200b462b83e Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 24 Nov 2014 15:00:07 +0100 Subject: [PATCH 22/72] New upstream release --- .gitignore | 1 + sources | 4 ++-- xca-1.0.0-nonstdext.patch | 33 -------------------------- xca.spec | 50 +++++++++++++++++++-------------------- 4 files changed, 28 insertions(+), 60 deletions(-) delete mode 100755 xca-1.0.0-nonstdext.patch diff --git a/.gitignore b/.gitignore index fcfe70b..e16e240 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ xca-0.8.1.tar.gz /xca-0.9.2.tar.gz /xca-0.9.3.tar.gz /xca-1.0.0.tar.gz +/xca-1.1.0.tar.gz diff --git a/sources b/sources index 86ed61a..624fbce 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -e4e8b04047960cf984801e430a1703ab xca-1.0.0.tar.gz -113ba37a89fe2de69338fcfe3b773a03 README.update +645d3405938c97a3eb0450bbe20234c7 xca-1.1.0.tar.gz +405ca7e03469736ca963407adf97f099 README.update diff --git a/xca-1.0.0-nonstdext.patch b/xca-1.0.0-nonstdext.patch deleted file mode 100755 index 3f29462..0000000 --- a/xca-1.0.0-nonstdext.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0baa9173eac0ebe568539e892792921b9ecf7279 Mon Sep 17 00:00:00 2001 -From: Christian Hohnstaedt -Date: Mon, 17 Nov 2014 16:15:42 +0100 -Subject: [PATCH] RedHat Bug #1164340 - segfault when viewing a RHEL entitlement certificate - -...in X509V3_EXT_get v3_lib.c:15 - -Fix the x509v3ext copy constructor ---- - lib/x509v3ext.cpp | 7 +++---- - 1 files changed, 3 insertions(+), 4 deletions(-) - -diff --git a/lib/x509v3ext.cpp b/lib/x509v3ext.cpp -index d94cbda..87bfc63 100644 ---- a/lib/x509v3ext.cpp -+++ b/lib/x509v3ext.cpp -@@ -26,10 +26,9 @@ x509v3ext::x509v3ext(const X509_EXTENSION *n) - - x509v3ext::x509v3ext(const x509v3ext &n) - { -- ext = NULL; -- if (!n.isValid()) -- return; -- set(n.ext); -+ ext = X509_EXTENSION_new(); -+ if (n.ext && n.ext->value && n.ext->value->length > 0) -+ set(n.ext); - } - - x509v3ext::~x509v3ext() --- -1.7.2.5 - diff --git a/xca.spec b/xca.spec index a811fe2..4d585f2 100644 --- a/xca.spec +++ b/xca.spec @@ -1,13 +1,12 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 1.0.0 -Release: 2%{?dist} +Version: 1.1.0 +Release: 1%{?dist} License: BSD Group: Applications/Productivity URL: http://xca.hohnstaedt.de/ Source0: http://downloads.sourceforge.net/sourceforge/xca/%{name}-%{version}.tar.gz Source1: README.update -Patch1: xca-1.0.0-nonstdext.patch BuildRequires: qt4-devel openssl-devel BuildRequires: xdg-utils BuildRequires: ImageMagick @@ -37,13 +36,6 @@ format, portable across operating systems. %setup -q -%patch1 -p1 -b .nonstdext - -mkdir -p _tmp_root/usr -ln -s "/usr/%{_lib}" _tmp_root/usr/lib -ln -s "/%{_lib}" _tmp_root/lib -ln -s "%{_includedir}/Qt" _tmp_root/include - install -p -m 644 "%{SOURCE1}" ./ @@ -51,12 +43,10 @@ install -p -m 644 "%{SOURCE1}" ./ %build #------------------------------------------------------------------------------- -export QTDIR="%{_libdir}/qt4" -CC='%{__cxx}' LD='%{__ld}' CFLAGS="${RPM_OPT_FLAGS} \ +%configure CXXFLAGS="${RPM_OPT_FLAGS} \ -DXCA_DEFAULT_QT_TRANSLATE=\"\\\"%{_datadir}/qt4/translations\\\"\"" \ - STRIP=: prefix="%{_prefix}" \ - LIBS="-Wl,-as-needed `pkg-config --libs QtGui`" \ - ./configure "`pwd`/"_tmp_root{,/usr} + STRIP=: \ + LIBS="-Wl,-as-needed" make %{?_smp_mflags} convert img/xca.ico xca.png @@ -69,8 +59,7 @@ touch -r img/xdb.ico xdb.png %install #------------------------------------------------------------------------------- -make destdir="${RPM_BUILD_ROOT}" mandir=share/man install -make destdir="${RPM_BUILD_ROOT}" mandir=share/man install.misc +make destdir="${RPM_BUILD_ROOT}" install # HACK: check whether workarounds below are still necessary if test ! -e "${RPM_BUILD_ROOT}%{_datadir}/xca/crl.png" @@ -100,6 +89,19 @@ desktop-file-install --mode 0644 \ --set-icon=xca \ "${RPM_BUILD_ROOT}%{_datadir}/applications/xca.desktop" +# Will build the doc directory ourself. + +rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" + +# Tag translation files. + +( + cd "${RPM_BUILD_ROOT}" + find '.%{_datadir}/xca' -name 'xca_[a-z][a-z].qm' +) | + sed -e 's/^\.//' \ + -e 's/.*\([a-z][a-z]\).qm$/%lang(\1) &/' > langfiles + #------------------------------------------------------------------------------- %post @@ -131,23 +133,18 @@ fi #------------------------------------------------------------------------------- -%files +%files -f langfiles #------------------------------------------------------------------------------- %defattr(-, root, root, -) %doc AUTHORS COPYRIGHT README.update +%doc doc/*.html %{_bindir}/* +%exclude %{_bindir}/xca_db_stat %dir %{_datadir}/xca %{_datadir}/xca/*.png %{_datadir}/xca/*.txt -%{_datadir}/xca/*.html %{_datadir}/xca/*.xca -%lang(de) %{_datadir}/xca/xca_de.qm -%lang(es) %{_datadir}/xca/xca_es.qm -%lang(fr) %{_datadir}/xca/xca_fr.qm -%lang(hr) %{_datadir}/xca/xca_hr.qm -%lang(ru) %{_datadir}/xca/xca_ru.qm -%lang(tr) %{_datadir}/xca/xca_tr.qm %{_datadir}/pixmaps/*.xpm %{_datadir}/icons/*/*/*/*.png %{_datadir}/mime/packages/%{name}.* @@ -159,6 +156,9 @@ fi %changelog #------------------------------------------------------------------------------- +* Mon Nov 24 2014 Patrick Monnerat 1.1.0-1 +- New upstream release + * Mon Nov 17 2014 Patrick Monnerat 1.0.0-2 - Patch "nonstdext" avoids segfault when viewing cert with non-standard extension. From 058face0ebfe7c46bba469365181786c8329e861 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Sun, 3 May 2015 00:22:12 +0200 Subject: [PATCH 23/72] Rebuilt for GCC 5 C++11 ABI change --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 4d585f2..e773652 100644 --- a/xca.spec +++ b/xca.spec @@ -1,7 +1,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 1.1.0 -Release: 1%{?dist} +Release: 2%{?dist} License: BSD Group: Applications/Productivity URL: http://xca.hohnstaedt.de/ @@ -154,6 +154,9 @@ fi #------------------------------------------------------------------------------- %changelog +* Sat May 02 2015 Kalev Lember - 1.1.0-2 +- Rebuilt for GCC 5 C++11 ABI change + #------------------------------------------------------------------------------- * Mon Nov 24 2014 Patrick Monnerat 1.1.0-1 From 67b6508ac29042159338022ed4e6c950cf393f0c Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Fri, 19 Jun 2015 03:45:38 +0000 Subject: [PATCH 24/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index e773652..680877c 100644 --- a/xca.spec +++ b/xca.spec @@ -1,7 +1,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 1.1.0 -Release: 2%{?dist} +Release: 3%{?dist} License: BSD Group: Applications/Productivity URL: http://xca.hohnstaedt.de/ @@ -154,6 +154,9 @@ fi #------------------------------------------------------------------------------- %changelog +* Fri Jun 19 2015 Fedora Release Engineering - 1.1.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + * Sat May 02 2015 Kalev Lember - 1.1.0-2 - Rebuilt for GCC 5 C++11 ABI change From b179e6cf1b83ed87ee1562dfe8273d3d6698308d Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 26 Oct 2015 13:04:29 +0100 Subject: [PATCH 25/72] - New upstream release. - Patch "oidfieldcursor" to restore normal cursor behavior on OID resolver input field. - Drop README.update. --- .gitignore | 1 + sources | 3 +-- xca-1.3.2-oidfieldcursor.patch | 13 +++++++++++++ xca.spec | 23 ++++++++++++++--------- 4 files changed, 29 insertions(+), 11 deletions(-) create mode 100644 xca-1.3.2-oidfieldcursor.patch diff --git a/.gitignore b/.gitignore index e16e240..0ee626e 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ xca-0.8.1.tar.gz /xca-0.9.3.tar.gz /xca-1.0.0.tar.gz /xca-1.1.0.tar.gz +/xca-1.3.2.tar.gz diff --git a/sources b/sources index 624fbce..d317eb4 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -645d3405938c97a3eb0450bbe20234c7 xca-1.1.0.tar.gz -405ca7e03469736ca963407adf97f099 README.update +f9528164f46a78c7a2373778bc019c48 xca-1.3.2.tar.gz diff --git a/xca-1.3.2-oidfieldcursor.patch b/xca-1.3.2-oidfieldcursor.patch new file mode 100644 index 0000000..86aa5f7 --- /dev/null +++ b/xca-1.3.2-oidfieldcursor.patch @@ -0,0 +1,13 @@ +diff -Naurp xca-1.3.2.orig/widgets/OidResolver.cpp xca-1.3.2.new/widgets/OidResolver.cpp +--- xca-1.3.2.orig/widgets/OidResolver.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/widgets/OidResolver.cpp 2015-10-19 12:22:10.035130081 +0200 +@@ -23,7 +23,8 @@ void OidResolver::searchOid(QString s) + bool ok; + int n; + +- input->setText(s); ++ if (input->text() != s) // Avoid moving the cursor at end if unchanged. ++ input->setText(s); + s = s.trimmed(); + n = s.toUInt(&ok); + if (!ok) diff --git a/xca.spec b/xca.spec index 680877c..64d759a 100644 --- a/xca.spec +++ b/xca.spec @@ -1,12 +1,12 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 1.1.0 -Release: 3%{?dist} +Version: 1.3.2 +Release: 1%{?dist} License: BSD Group: Applications/Productivity URL: http://xca.hohnstaedt.de/ -Source0: http://downloads.sourceforge.net/sourceforge/xca/%{name}-%{version}.tar.gz -Source1: README.update +Source0: http://downloads.sourceforge.net/sourceforge/xca/%{version}/%{name}-%{version}.tar.gz +Patch1: xca-1.3.2-oidfieldcursor.patch BuildRequires: qt4-devel openssl-devel BuildRequires: xdg-utils BuildRequires: ImageMagick @@ -35,8 +35,7 @@ format, portable across operating systems. #------------------------------------------------------------------------------- %setup -q - -install -p -m 644 "%{SOURCE1}" ./ +%patch1 -p 1 -b .oidfieldcursor #------------------------------------------------------------------------------- @@ -137,7 +136,7 @@ fi #------------------------------------------------------------------------------- %defattr(-, root, root, -) -%doc AUTHORS COPYRIGHT README.update +%doc AUTHORS COPYRIGHT %doc doc/*.html %{_bindir}/* %exclude %{_bindir}/xca_db_stat @@ -154,14 +153,20 @@ fi #------------------------------------------------------------------------------- %changelog +#------------------------------------------------------------------------------- + +* Mon Oct 26 2015 Patrick Monnerat 1.3.2-1 +- New upstream release. +- Patch "oidfieldcursor" to restore normal cursor behavior on OID resolver + input field. +- Drop README.update. + * Fri Jun 19 2015 Fedora Release Engineering - 1.1.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild * Sat May 02 2015 Kalev Lember - 1.1.0-2 - Rebuilt for GCC 5 C++11 ABI change -#------------------------------------------------------------------------------- - * Mon Nov 24 2014 Patrick Monnerat 1.1.0-1 - New upstream release From ce4fe8a78c95f14c56a0ad3b9a4b6b5514ab80da Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 5 Feb 2016 03:17:47 +0000 Subject: [PATCH 26/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 64d759a..0be6e69 100644 --- a/xca.spec +++ b/xca.spec @@ -1,7 +1,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 1.3.2 -Release: 1%{?dist} +Release: 2%{?dist} License: BSD Group: Applications/Productivity URL: http://xca.hohnstaedt.de/ @@ -153,6 +153,9 @@ fi #------------------------------------------------------------------------------- %changelog +* Fri Feb 05 2016 Fedora Release Engineering - 1.3.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + #------------------------------------------------------------------------------- * Mon Oct 26 2015 Patrick Monnerat 1.3.2-1 From da0306f214917e24fda5404a4899bf04ba81a424 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 11 Feb 2017 17:40:22 +0000 Subject: [PATCH 27/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 0be6e69..ab78304 100644 --- a/xca.spec +++ b/xca.spec @@ -1,7 +1,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 1.3.2 -Release: 2%{?dist} +Release: 3%{?dist} License: BSD Group: Applications/Productivity URL: http://xca.hohnstaedt.de/ @@ -153,6 +153,9 @@ fi #------------------------------------------------------------------------------- %changelog +* Sat Feb 11 2017 Fedora Release Engineering - 1.3.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + * Fri Feb 05 2016 Fedora Release Engineering - 1.3.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild From 878b72bc49dd39b8add9180febf686df7669aaa9 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Thu, 23 Mar 2017 00:50:16 +0100 Subject: [PATCH 28/72] Patch "openssl11" for OpenSSL 1.1 support. --- xca-1.3.2-openssl11.patch | 2641 +++++++++++++++++++++++++++++++++++++ xca.spec | 12 +- 2 files changed, 2650 insertions(+), 3 deletions(-) create mode 100644 xca-1.3.2-openssl11.patch diff --git a/xca-1.3.2-openssl11.patch b/xca-1.3.2-openssl11.patch new file mode 100644 index 0000000..bfe4173 --- /dev/null +++ b/xca-1.3.2-openssl11.patch @@ -0,0 +1,2641 @@ +diff -Naurp xca-1.3.2.orig/lib/db_base.cpp xca-1.3.2.new/lib/db_base.cpp +--- xca-1.3.2.orig/lib/db_base.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/db_base.cpp 2017-03-21 00:19:34.954826051 +0100 +@@ -641,7 +641,9 @@ void db_base::store(QModelIndexList inde + throw errorEx(tr("Error opening file: '%1': %2"). + arg(s).arg(strerror(errno)), class_name); + } +- fwrite(pem.toLatin1(), pem.size(), 1, fp); ++ if (fwrite(pem.toLatin1(), pem.size(), 1, fp)) { ++ /* IGNORE_RESULT */ ++ } + fclose(fp); + } + catch (errorEx &err) { +diff -Naurp xca-1.3.2.orig/lib/db_key.cpp xca-1.3.2.new/lib/db_key.cpp +--- xca-1.3.2.orig/lib/db_key.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/db_key.cpp 2017-02-18 14:18:10.624717655 +0100 +@@ -297,14 +297,14 @@ void db_key::store(QModelIndex index) + break; + case exportType::PEM_private_encrypt: + enc = EVP_des_ede3_cbc(); +- /* fall */ ++ /* fallthrough */ + case exportType::PEM_private: + privkey->writeKey(fname, enc, + PwDialog::pwCallback, true); + break; + case exportType::PKCS8_encrypt: + enc = EVP_des_ede3_cbc(); +- /* fall */ ++ /* fallthrough */ + case exportType::PKCS8: + privkey->writePKCS8(fname, enc, + PwDialog::pwCallback, true); +diff -Naurp xca-1.3.2.orig/lib/db_x509.cpp xca-1.3.2.new/lib/db_x509.cpp +--- xca-1.3.2.orig/lib/db_x509.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/db_x509.cpp 2017-02-18 14:20:23.580116007 +0100 +@@ -580,7 +580,6 @@ void db_x509::newCert(NewX509 *dlg) + } + if (tempkey != NULL) + delete(tempkey); +- tempkey = NULL; + } + + catch (errorEx &err) { +diff -Naurp xca-1.3.2.orig/lib/entropy.cpp xca-1.3.2.new/lib/entropy.cpp +--- xca-1.3.2.orig/lib/entropy.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/entropy.cpp 2017-02-24 03:01:32.002964936 +0100 +@@ -141,8 +141,14 @@ Entropy::~Entropy() + unsigned char buf[1024]; + seed_rng(); + f.setPermissions(QFile::ReadOwner|QFile::WriteOwner); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ RAND_bytes(buf, sizeof buf); ++#else + RAND_pseudo_bytes(buf, sizeof buf); +- f.write((char*)buf, sizeof buf); ++#endif ++ ++ f.write((char*)buf, sizeof buf); + f.close(); + } + #ifdef DEBUG_ENTROPY +diff -Naurp xca-1.3.2.orig/lib/func.cpp xca-1.3.2.new/lib/func.cpp +--- xca-1.3.2.orig/lib/func.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/func.cpp 2017-02-25 12:44:19.711229987 +0100 +@@ -395,9 +395,21 @@ void inc_progress_bar(int, int, void *p) + + static long mem_ctrl(BIO *b, int cmd, long num, void *ptr) + { +- BUF_MEM *bm = (BUF_MEM *)b->ptr; +- if (!bm->data || !(b->flags & BIO_FLAGS_MEM_RDONLY)) +- return BIO_s_mem()->ctrl(b, cmd, num, ptr); ++ BUF_MEM *bm; ++ int flags; ++ long (*ctrl)(BIO *, int, long, void *); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ BIO_get_mem_ptr(b, &bm); ++ flags = BIO_get_flags(b); ++ ctrl = BIO_meth_get_ctrl((BIO_METHOD *) BIO_s_mem()); ++#else ++ bm = (BUF_MEM *)b->ptr; ++ flags = b->flags; ++ ctrl = BIO_s_mem()->ctrl; ++#endif ++ if (!bm->data || !(flags & BIO_FLAGS_MEM_RDONLY)) ++ return ctrl(b, cmd, num, ptr); + + switch (cmd) { + case BIO_C_FILE_SEEK: +@@ -405,35 +417,92 @@ static long mem_ctrl(BIO *b, int cmd, lo + num = bm->max; + bm->data -= (bm->max - bm->length) - num; + bm->length = bm->max - num; ++ /* fallthrough */ + case BIO_C_FILE_TELL: + return bm->max - bm->length; + } +- return BIO_s_mem()->ctrl(b, cmd, num, ptr); ++ return ctrl(b, cmd, num, ptr); + } + +-void BIO_seekable_romem(BIO *b) ++BIO_METHOD *BIO_METHOD_copy(const BIO_METHOD *src, BIO_METHOD *dst = NULL) + { +- static BIO_METHOD *mymeth = NULL; +- static BIO_METHOD _meth; ++ if (src) ++ return NULL; + +- if (!(b->flags & BIO_FLAGS_MEM_RDONLY) || +- (b->method->type != BIO_TYPE_MEM)) +- { +- return; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ if (!dst) { ++ // The only way to get the type and name of the source method is ++ // to bind it to a BIO. ++ BIO *bio = BIO_new(src); ++ if (!bio) ++ return NULL; ++ if (!(dst = BIO_meth_new(BIO_method_type(bio), BIO_method_name(bio)))) { ++ BIO_free(bio); ++ return NULL; ++ } ++ BIO_free(bio); + } ++ ++ BIO_meth_set_write(dst, BIO_meth_get_write((BIO_METHOD *) src)); ++ BIO_meth_set_read(dst, BIO_meth_get_read((BIO_METHOD *) src)); ++ BIO_meth_set_puts(dst, BIO_meth_get_puts((BIO_METHOD *) src)); ++ BIO_meth_set_gets(dst, BIO_meth_get_gets((BIO_METHOD *) src)); ++ BIO_meth_set_ctrl(dst, BIO_meth_get_ctrl((BIO_METHOD *) src)); ++ BIO_meth_set_create(dst, BIO_meth_get_create((BIO_METHOD *) src)); ++ BIO_meth_set_destroy(dst, BIO_meth_get_destroy((BIO_METHOD *) src)); ++ BIO_meth_set_callback_ctrl(dst, ++ BIO_meth_get_callback_ctrl((BIO_METHOD *) src)); ++#else ++ if (!dst) ++ if (!(dst = (BIO_METHOD *) OPENSSL_malloc(sizeof *dst))) ++ return NULL; ++ *dst = *src; ++#endif ++ ++ return dst; ++} ++ ++BIO_METHOD *BIO_METHOD_seekable_romem() ++{ ++ static BIO_METHOD *mymeth = NULL; ++ + if (!mymeth) { +- _meth = *BIO_s_mem(); +- _meth.ctrl = mem_ctrl; +- mymeth = &_meth; ++ mymeth = BIO_METHOD_copy(BIO_s_mem()); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ BIO_meth_set_ctrl(mymeth, mem_ctrl); ++#else ++ mymeth->ctrl = mem_ctrl; ++#endif + } +- b->method = mymeth; ++ ++ return mymeth; + } + + BIO *BIO_QBA_mem_buf(QByteArray &a) + { +- BIO *b = BIO_new_mem_buf(a.data(), a.size()); +- BIO_seekable_romem(b); +- return b; ++ BIO *bio; ++ BIO_METHOD *meth = BIO_METHOD_seekable_romem(); ++ ++ if (!meth) ++ return NULL; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ bio = BIO_new(meth); ++ if (bio) { ++ BUF_MEM bm; ++ bm.data = a.data(); ++ bm.length = a.size(); ++ bm.max = a.size(); ++ BIO_set_mem_buf(bio, &bm, BIO_CLOSE); ++ BIO_set_flags(bio, BIO_get_flags(bio) | BIO_FLAGS_MEM_RDONLY); ++ } ++#else ++ bio = BIO_new_mem_buf(a.data(), a.size()); ++ if (bio) ++ bio->method = meth; ++#endif ++ ++ return bio; + } + + bool translate_dn = false; +diff -Naurp xca-1.3.2.orig/lib/pkcs11.cpp xca-1.3.2.new/lib/pkcs11.cpp +--- xca-1.3.2.orig/lib/pkcs11.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/pkcs11.cpp 2017-03-22 01:05:02.792839419 +0100 +@@ -458,7 +458,13 @@ pk11_attr_data pkcs11::findUniqueID(unsi + while (1) { + unsigned char buf[ID_LEN]; + pk11_attlist atts(class_att); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ RAND_bytes(buf, ID_LEN); ++#else + RAND_pseudo_bytes(buf, ID_LEN); ++#endif ++ + id.setValue(buf, ID_LEN); + atts << id; + if (objectList(atts).count() == 0) +@@ -641,7 +647,8 @@ int pkcs11::encrypt(int flen, const unsi + return size; + } + +-#if OPENSSL_VERSION_NUMBER < 0x10000000L ++#if OPENSSL_VERSION_NUMBER < 0x10000000L || \ ++ OPENSSL_VERSION_NUMBER >= 0x10100000L + static int rsa_privdata_free(RSA *rsa) + { + pkcs11 *priv = (pkcs11*)RSA_get_app_data(rsa); +@@ -653,12 +660,19 @@ static int rsa_encrypt(int flen, const u + unsigned char *to, RSA * rsa, int padding) + { + pkcs11 *priv = (pkcs11*)RSA_get_app_data(rsa); ++ const BIGNUM *n = NULL; + + if (padding != RSA_PKCS1_PADDING) { + return -1; + } +- return priv->encrypt(flen, from, to, BN_num_bytes(rsa->n), +- CKM_RSA_PKCS); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ RSA_get0_key(rsa, &n, NULL, NULL); ++#else ++ n = rsa->n; ++#endif ++ ++ return priv->encrypt(flen, from, to, BN_num_bytes(n), CKM_RSA_PKCS); + } + + static int rsa_decrypt(int flen, const unsigned char *from, +@@ -672,36 +686,235 @@ static int rsa_decrypt(int flen, const u + return priv->decrypt(flen, from, to, flen, CKM_RSA_PKCS); + } + ++static int dsa_privdata_free(DSA *dsa) ++{ ++ pkcs11 *p11 = (pkcs11*)DSA_get_ex_data(dsa, 0); ++ delete p11; ++ return 0; ++} ++ ++static DSA_SIG *dsa_sign(const unsigned char *dgst, int dlen, DSA *dsa) ++{ ++ int len, rs_len; ++ unsigned char rs_buf[128]; ++ pkcs11 *p11 = (pkcs11*)DSA_get_ex_data(dsa, 0); ++ DSA_SIG *dsa_sig = DSA_SIG_new(); ++ BIGNUM *r, *s; ++ ++ // siglen is unsigned and can't cope with -1 as return value ++ len = p11->encrypt(dlen, dgst, rs_buf, sizeof rs_buf, CKM_DSA); ++ if (len & 0x01) // Must be even ++ goto out; ++ ++ rs_len = len / 2; ++ r = BN_bin2bn(rs_buf, rs_len, NULL); ++ s = BN_bin2bn(rs_buf + rs_len, rs_len, NULL); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ DSA_SIG_set0(dsa_sig, r, s); ++#else ++ dsa_sig->r = r; ++ dsa_sig->s = s; ++#endif ++ if (r && s) ++ return dsa_sig; ++out: ++ DSA_SIG_free(dsa_sig); ++ ign_openssl_error(); ++ return NULL; ++} ++ ++#if !defined(OPENSSL_NO_EC) && OPENSSL_VERSION_NUMBER >= 0x10100000L ++// OpenSSL < 1.0.0 have no EC_KEY_METHOD. ++ ++static void ec_privdata_free(EC_KEY *ec) ++{ ++ pkcs11 *p11 = (pkcs11*)EC_KEY_get_ex_data(ec, 0); ++ delete p11; ++} ++ ++static int ec_sign_setup(EC_KEY *ec, BN_CTX *ctx, BIGNUM **kinvp, BIGNUM **rp) ++{ ++ (void) ec; ++ (void) ctx; ++ (void) kinvp; ++ (void) rp; ++ return 1; ++} ++ ++static ECDSA_SIG *ec_do_sign(const unsigned char *dgst, int dgst_len, ++ const BIGNUM *in_kinv, const BIGNUM *in_r, ++ EC_KEY *ec) ++{ ++ int len, rs_len; ++ unsigned char rs_buf[512]; ++ ECDSA_SIG *ec_sig = ECDSA_SIG_new(); ++ pkcs11 *p11 = (pkcs11 *) EC_KEY_get_ex_data(ec, 0); ++ BIGNUM *r, *s; ++ ++ (void) in_kinv; ++ (void) in_r; ++ ++ // siglen is unsigned and can' cope with -1 as return value ++ len = p11->encrypt(dgst_len, dgst, rs_buf, sizeof rs_buf, CKM_ECDSA); ++ if (len & 0x01) // Must be even ++ goto out; ++ /* The buffer contains r and s concatenated ++ * Both of equal size ++ * pkcs-11v2-20.pdf chapter 12.13.1, page 232 ++ */ ++ rs_len = len / 2; ++ r = BN_bin2bn(rs_buf, rs_len, NULL); ++ s = BN_bin2bn(rs_buf + rs_len, rs_len, NULL); ++ ECDSA_SIG_set0(ec_sig, r, s); ++ if (r && s) ++ return ec_sig; ++ ++out: ++ ECDSA_SIG_free(ec_sig); ++ ign_openssl_error(); ++ return NULL; ++} ++ ++static int ec_sign(int type, const unsigned char *dgst, int dlen, ++ unsigned char *sig, unsigned int *siglen, ++ const BIGNUM *kinv, const BIGNUM *r, EC_KEY *ec) ++{ ++ ECDSA_SIG *ec_sig; ++ int ret = 0; ++ int len; ++ ++ (void) type; ++ ec_sig = ec_do_sign(dgst, dlen, kinv, r, ec); ++ if (!ec_sig) ++ return 0; ++ ++ len = i2d_ECDSA_SIG(ec_sig, &sig); ++ if (len <= 0) ++ goto out; ++ *siglen = len; ++ ret = 1; ++out: ++ ECDSA_SIG_free(ec_sig); ++ ign_openssl_error(); ++ return ret; ++} ++#endif ++ + EVP_PKEY *pkcs11::getPrivateKey(EVP_PKEY *pub, CK_OBJECT_HANDLE obj) + { +- static RSA_METHOD rsa_meth, *ops = NULL; ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ static RSA_METHOD rsa_meth_buf; ++ static DSA_METHOD dsa_meth_buf; ++#endif ++ static RSA_METHOD *rsa_meth = NULL; ++ static DSA_METHOD *dsa_meth = NULL; ++#if !defined(OPENSSL_NO_EC) && OPENSSL_VERSION_NUMBER >= 0x10100000L ++ static EC_KEY_METHOD *ec_key_meth = NULL; ++ EC_KEY *ec; ++#endif + RSA *rsa; +- EVP_PKEY *evp; ++ DSA *dsa; ++ EVP_PKEY *evp = NULL; ++ int keytype; + + p11slot.isValid(); + +- switch (EVP_PKEY_type(pub->type)) { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ keytype = EVP_PKEY_id(pub); ++#else ++ keytype = pub->type; ++#endif ++ ++ switch (EVP_PKEY_type(keytype)) { + case EVP_PKEY_RSA: +- rsa = RSAPublicKey_dup(pub->pkey.rsa); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ rsa = EVP_PKEY_get0_RSA(pub); ++#else ++ rsa = pub->pkey.rsa; ++#endif ++ rsa = RSAPublicKey_dup(rsa); + openssl_error(); +- if (!ops) { +- rsa_meth = *RSA_get_default_method(); +- rsa_meth.rsa_priv_enc = rsa_encrypt; +- rsa_meth.rsa_priv_dec = rsa_decrypt; +- rsa_meth.finish = rsa_privdata_free; +- ops = &rsa_meth; ++ if (!rsa_meth) { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ rsa_meth = RSA_meth_dup(RSA_get_default_method()); ++ RSA_meth_set_priv_enc(rsa_meth, rsa_encrypt); ++ RSA_meth_set_priv_dec(rsa_meth, rsa_decrypt); ++ RSA_meth_set_finish(rsa_meth, rsa_privdata_free); ++#else ++ rsa_meth = &rsa_meth_buf; ++ *rsa_meth = *RSA_get_default_method(); ++ rsa_meth->rsa_priv_enc = rsa_encrypt; ++ rsa_meth->rsa_priv_dec = rsa_decrypt; ++ rsa_meth->finish = rsa_privdata_free; ++#endif + } + p11obj = obj; +- RSA_set_method(rsa, ops); ++ RSA_set_method(rsa, rsa_meth); + RSA_set_app_data(rsa, this); + evp = EVP_PKEY_new(); + openssl_error(); + EVP_PKEY_assign_RSA(evp, rsa); +- return evp; ++ break; ++ case EVP_PKEY_DSA: ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ dsa = EVP_PKEY_get0_DSA(pub); ++#else ++ dsa = pub->pkey.dsa; ++#endif ++ dsa = DSAparams_dup(dsa); ++ openssl_error(); ++ if (!dsa_meth) { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ dsa_meth = DSA_meth_dup(DSA_get_default_method()); ++ DSA_meth_set_sign(dsa_meth, dsa_sign); ++ DSA_meth_set_finish(dsa_meth, dsa_privdata_free); ++#else ++ dsa_meth = &dsa_meth_buf; ++ *dsa_meth = *DSA_get_default_method(); ++ dsa_meth->dsa_do_sign = dsa_sign; ++ dsa_meth->finish = dsa_privdata_free; ++#endif ++ } ++ p11obj = obj; ++ DSA_set_method(dsa, dsa_meth); ++ DSA_set_ex_data(dsa, 0, this); ++ evp = EVP_PKEY_new(); ++ openssl_error(); ++ EVP_PKEY_assign_DSA(evp, dsa); ++ break; ++#if !defined(OPENSSL_NO_EC) && OPENSSL_VERSION_NUMBER >= 0x10100000L + case EVP_PKEY_EC: +- return NULL; ++ ec = EVP_PKEY_get0_EC_KEY(pub); ++ ec = EC_KEY_dup(ec); ++ openssl_error(); ++ if (!ec_key_meth) { ++ int (*ec_init_proc)(EC_KEY *key); ++ void (*ec_finish_proc)(EC_KEY *key); ++ int (*ec_copy_proc)(EC_KEY *dest, const EC_KEY *src); ++ int (*ec_set_group_proc)(EC_KEY *key, const EC_GROUP *grp); ++ int (*ec_set_private_proc)(EC_KEY *key, const BIGNUM *priv_key); ++ int (*ec_set_public_proc)(EC_KEY *key, const EC_POINT *pub_key); ++ ++ ec_key_meth = EC_KEY_METHOD_new(EC_KEY_get_default_method()); ++ EC_KEY_METHOD_set_sign(ec_key_meth, ++ ec_sign, ec_sign_setup, ec_do_sign); ++ EC_KEY_METHOD_get_init(ec_key_meth, &ec_init_proc, &ec_finish_proc, ++ &ec_copy_proc, &ec_set_group_proc, ++ &ec_set_private_proc, &ec_set_public_proc); ++ EC_KEY_METHOD_set_init(ec_key_meth, ec_init_proc, ec_privdata_free, ++ ec_copy_proc, ec_set_group_proc, ++ ec_set_private_proc, ec_set_public_proc); ++ } ++ p11obj = obj; ++ EC_KEY_set_method(ec, ec_key_meth); ++ EC_KEY_set_ex_data(ec, 0, this); ++ evp = EVP_PKEY_new(); ++ openssl_error(); ++ EVP_PKEY_assign_EC_KEY(evp, ec); ++ break; ++#endif + } +- return NULL; ++ return evp; + } + #else + +@@ -770,6 +983,7 @@ static int eng_pmeth_ctrl_ec(EVP_PKEY_CT + case NID_ecdsa_with_SHA1: + fprintf(stderr, "%s: NID_ecdsa_with_SHA1 unexpected\n", + __func__); ++ /* fallthrough */ + case NID_sha1: + case NID_sha224: + case NID_sha256: +diff -Naurp xca-1.3.2.orig/lib/pki_crl.cpp xca-1.3.2.new/lib/pki_crl.cpp +--- xca-1.3.2.orig/lib/pki_crl.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/pki_crl.cpp 2017-02-25 12:37:27.939303062 +0100 +@@ -80,7 +80,22 @@ void pki_crl::fload(const QString fname) + + QString pki_crl::getSigAlg() + { +- QString alg = OBJ_nid2ln(OBJ_obj2nid(crl->sig_alg->algorithm)); ++ QString alg; ++ const ASN1_OBJECT *paobj; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ const ASN1_BIT_STRING *psig; ++ const X509_ALGOR *palg; ++ int pptype; ++ const void *ppval; ++ ++ X509_CRL_get0_signature(crl, &psig, &palg); ++ X509_ALGOR_get0(&paobj, &pptype, &ppval, palg); ++#else ++ paobj = crl->sig_alg->algorithm; ++#endif ++ ++ alg = OBJ_nid2ln(OBJ_obj2nid(paobj)); + return alg; + } + +@@ -90,15 +105,25 @@ void pki_crl::createCrl(const QString d, + issuer = iss; + if (!iss) + my_error(tr("No issuer given")); +- crl->crl->issuer = issuer->getSubject().get(); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ X509_CRL_set_version(crl, 1); /* version 2 CRL */ ++ X509_CRL_set_issuer_name(crl, issuer->getSubject().get()); ++#else + a1int version = 1; /* version 2 CRL */ + crl->crl->version = version.get(); ++ crl->crl->issuer = issuer->getSubject().get(); ++#endif + pki_openssl_error(); + } + + a1int pki_crl::getVersion() + { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ a1int a(X509_CRL_get_version(crl)); ++#else + a1int a(crl->crl->version); ++#endif ++ + return a; + } + +@@ -175,7 +200,11 @@ bool pki_crl::visible() + return true; + if (getSigAlg().contains(limitPattern)) + return true; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ el.setStack(X509_CRL_get0_extensions(crl)); ++#else + el.setStack(crl->crl->extensions); ++#endif + return el.search(limitPattern); + } + +@@ -224,24 +253,57 @@ BIO *pki_crl::pem(BIO *b, int format) + a1time pki_crl::getLastUpdate() + { + a1time a; +- if (crl && crl->crl) +- a.set(crl->crl->lastUpdate); ++ const ASN1_TIME *at = NULL; ++ ++ if (crl) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ at = X509_CRL_get0_lastUpdate(crl); ++#else ++ if (crl->crl) ++ at = crl->crl->lastUpdate; ++#endif ++ ++ if (at) ++ a.set(at); ++ + return a; + } + + a1time pki_crl::getNextUpdate() + { + a1time a; +- if (crl && crl->crl) +- a.set(crl->crl->nextUpdate); ++ const ASN1_TIME *at = NULL; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ at = X509_CRL_get0_nextUpdate(crl); ++#else ++ if (crl->crl) ++ at = crl->crl->nextUpdate; ++#endif ++ ++ if (at) ++ a.set(at); ++ + return a; + } + + int pki_crl::numRev() + { +- if (crl && crl->crl && crl->crl->revoked) +- return sk_X509_REVOKED_num(crl->crl->revoked); +- return 0; ++ int n = 0; ++ STACK_OF(X509_REVOKED) *st = NULL; ++ ++ if (crl) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ st = X509_CRL_get_REVOKED(crl); ++#else ++ if (crl->crl) ++ st = crl->crl->revoked; ++#endif ++ ++ if (st) ++ n = sk_X509_REVOKED_num(st); ++ ++ return n; + } + + x509revList pki_crl::getRevList() +@@ -249,10 +311,20 @@ x509revList pki_crl::getRevList() + x509revList ret; + int i, num = numRev(); + +- for (i=0; icrl->revoked, i)); +- pki_openssl_error(); +- ret << r; ++ if (num) { ++ STACK_OF(X509_REVOKED) *st; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ st = X509_CRL_get_REVOKED(crl); ++#else ++ st = crl->crl->revoked; ++#endif ++ ++ for (i=0; icrl && crl->crl->issuer) { +- x.set(crl->crl->issuer); +- } +- return x ; ++ X509_NAME *iss = NULL; ++ ++ if (crl) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ iss = X509_CRL_get_issuer(crl); ++#else ++ if (crl->crl) ++ iss = crl->crl->issuer; ++#endif ++ ++ if (iss) ++ x.set(iss); ++ ++ return x; + } + + bool pki_crl::verify(pki_key *key) + { + bool ret=false; +- if (crl && crl->crl && key) { ++ if (crl && key) { + ret = (X509_CRL_verify(crl, key->getPubKey()) == 1); + pki_ign_openssl_error(); + } +@@ -310,7 +392,12 @@ x509v3ext pki_crl::getExtByNid(int nid) + { + extList el; + x509v3ext e; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ el.setStack(X509_CRL_get0_extensions(crl)); ++#else + el.setStack(crl->crl->extensions); ++#endif + + for (int i=0; i< el.count(); i++){ + if (el[i].nid() == nid) return el[i]; +@@ -321,7 +408,13 @@ x509v3ext pki_crl::getExtByNid(int nid) + QString pki_crl::printV3ext() + { + extList el; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ el.setStack(X509_CRL_get0_extensions(crl)); ++#else + el.setStack(crl->crl->extensions); ++#endif ++ + QString text = el.getHtml("
"); + pki_openssl_error(); + return text; +diff -Naurp xca-1.3.2.orig/lib/pki_evp.cpp xca-1.3.2.new/lib/pki_evp.cpp +--- xca-1.3.2.orig/lib/pki_evp.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/pki_evp.cpp 2017-02-21 19:24:51.287533206 +0100 +@@ -31,7 +31,11 @@ QPixmap *pki_evp::icon[2]= { NULL, NULL + + void pki_evp::init(int type) + { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ EVP_PKEY_set_type(key, type); ++#else + key->type = type; ++#endif + class_name = "pki_evp"; + ownPass = ptCommon; + dataVersion=2; +@@ -76,6 +80,11 @@ void pki_evp::setOwnPass(enum passType x + void pki_evp::generate(int bits, int type, QProgressBar *progress, int curve_nid) + { + Entropy::seed_rng(); ++ RSA *rsakey = NULL; ++ DSA *dsakey = NULL; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ BN_GENCB *cb = NULL; ++#endif + + #ifdef OPENSSL_NO_EC + (void)curve_nid; +@@ -86,17 +95,54 @@ void pki_evp::generate(int bits, int typ + + switch (type) { + case EVP_PKEY_RSA: +- RSA *rsakey; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ BIGNUM *e; ++ e = BN_new(); ++ if (e) { ++ if (BN_set_word(e, 0x10001)) { ++ cb = BN_GENCB_new(); ++ if (cb) { ++ BN_GENCB_set_old(cb, inc_progress_bar, progress); ++ rsakey = RSA_new(); ++ if (rsakey) { ++ if (!RSA_generate_key_ex(rsakey, bits, e, cb)) { ++ RSA_free(rsakey); ++ rsakey = NULL; ++ } ++ } ++ BN_GENCB_free(cb); ++ } ++ } ++ BN_clear_free(e); ++ } ++#else + rsakey = RSA_generate_key(bits, 0x10001, inc_progress_bar, + progress); ++#endif ++ + if (rsakey) + EVP_PKEY_assign_RSA(key, rsakey); + break; + case EVP_PKEY_DSA: +- DSA *dsakey; + progress->setMaximum(500); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ cb = BN_GENCB_new(); ++ if (cb) { ++ BN_GENCB_set_old(cb, inc_progress_bar, progress); ++ dsakey = DSA_new(); ++ if (dsakey) { ++ if (!DSA_generate_parameters_ex(dsakey, bits, ++ NULL, 0, NULL, NULL, cb)) { ++ DSA_free(dsakey); ++ dsakey = NULL; ++ } ++ } ++ BN_GENCB_free(cb); ++ } ++#else + dsakey = DSA_generate_parameters(bits, NULL, 0, NULL, NULL, + inc_progress_bar, progress); ++#endif + DSA_generate_key(dsakey); + if (dsakey) + EVP_PKEY_assign_DSA(key, dsakey); +@@ -132,7 +178,7 @@ void pki_evp::generate(int bits, int typ + pki_evp::pki_evp(const pki_evp *pk) + :pki_key(pk) + { +- init(pk->key->type); ++ init(pk->getKeyType()); + pki_openssl_error(); + ownPass = pk->ownPass; + encKey = pk->encKey; +@@ -157,15 +203,49 @@ pki_evp::pki_evp(EVP_PKEY *pkey) + + static bool EVP_PKEY_isPrivKey(EVP_PKEY *key) + { +- switch (EVP_PKEY_type(key->type)) { ++ int keytype; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ keytype = EVP_PKEY_id(key); ++#else ++ keytype = key->type; ++#endif ++ ++ switch (EVP_PKEY_type(keytype)) { + case EVP_PKEY_RSA: ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ RSA *rsa; ++ const BIGNUM *d; ++ d = NULL; ++ rsa = EVP_PKEY_get0_RSA(key); ++ if (rsa) ++ RSA_get0_key(rsa, NULL, NULL, &d); ++ return d? true: false; ++#else + return key->pkey.rsa->d ? true: false; ++#endif + case EVP_PKEY_DSA: ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ DSA *dsa; ++ const BIGNUM *privkey; ++ dsa = EVP_PKEY_get0_DSA(key); ++ privkey = NULL; ++ if (dsa) ++ DSA_get0_key(dsa, NULL, &privkey); ++ return privkey? true: false; ++#else + return key->pkey.dsa->priv_key ? true: false; ++#endif + #ifndef OPENSSL_NO_EC + case EVP_PKEY_EC: ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ EC_KEY *ec; ++ ec = EVP_PKEY_get0_EC_KEY(key); ++ return ec? true: false; ++#else + return EC_KEY_get0_private_key(key->pkey.ec) ? true: false; + #endif ++#endif + } + return false; + } +@@ -211,10 +291,23 @@ void pki_evp::fromPEM_BIO(BIO *bio, QStr + static void search_ec_oid(EVP_PKEY *pkey) + { + #ifndef OPENSSL_NO_EC +- if (pkey->type != EVP_PKEY_EC) ++ int keytype; ++ EC_KEY *ec; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ keytype = EVP_PKEY_id(pkey); ++#else ++ keytype = pkey->type; ++#endif ++ ++ if (keytype != EVP_PKEY_EC) + return; + +- EC_KEY *ec = pkey->pkey.ec; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ ec = EVP_PKEY_get0_EC_KEY(pkey); ++#else ++ ec = pkey->pkey.ec; ++#endif + + const EC_GROUP *ec_group = EC_KEY_get0_group(ec); + EC_GROUP *builtin; +@@ -317,9 +410,10 @@ void pki_evp::fload(const QString fname) + } + } + +-void pki_evp::fromData(const unsigned char *p, db_header_t *head ) ++void pki_evp::fromData(const unsigned char *p, db_header_t *head) + { + int version, type, size; ++ void *ptr = NULL; + + if (key) + EVP_PKEY_free(key); +@@ -338,9 +432,17 @@ void pki_evp::fromData(const unsigned ch + d2i(ba); + } + pki_openssl_error(); +- if (!key || !key->pkey.ptr) { ++ ++ if (key) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ ptr = EVP_PKEY_get0(key); ++#else ++ ptr = key->pkey.ptr; ++#endif ++ ++ if (!ptr) + throw errorEx(tr("Ignoring unsupported private key")); +- } ++ + encKey = ba; + } + +@@ -353,7 +455,10 @@ EVP_PKEY *pki_evp::decryptKey() const + unsigned char ckey[EVP_MAX_KEY_LENGTH]; + + EVP_PKEY *tmpkey; +- EVP_CIPHER_CTX ctx; ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ EVP_CIPHER_CTX ctxbuf; ++#endif ++ EVP_CIPHER_CTX *ctx; + const EVP_CIPHER *cipher = EVP_des_ede3_cbc(); + Passwd ownPassBuf; + int ret; +@@ -403,23 +508,38 @@ EVP_PKEY *pki_evp::decryptKey() const + * because an md5 version of the password is + * stored in the database... + */ +- EVP_CIPHER_CTX_init(&ctx); +- EVP_DecryptInit(&ctx, cipher, ckey, iv); +- EVP_DecryptUpdate(&ctx, p , &outl, ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ ctx = EVP_CIPHER_CTX_new(); ++#else ++ ctx = &ctxbuf; ++#endif ++ EVP_CIPHER_CTX_init(ctx); ++ EVP_DecryptInit(ctx, cipher, ckey, iv); ++ EVP_DecryptUpdate(ctx, p , &outl, + (const unsigned char*)encKey.constData() +8, encKey.count() -8); + + decsize = outl; +- EVP_DecryptFinal(&ctx, p + decsize , &outl); ++ EVP_DecryptFinal(ctx, p + decsize , &outl); + decsize += outl; + //printf("Decrypt decsize=%d, encKey_len=%d\n", decsize, encKey.count() -8); + pki_openssl_error(); +- tmpkey = d2i_PrivateKey(key->type, NULL, &p1, decsize); ++ tmpkey = d2i_PrivateKey(getKeyType(), NULL, &p1, decsize); + pki_openssl_error(); + OPENSSL_free(p); +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_cleanup(ctx); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ EVP_CIPHER_CTX_free(ctx); ++#endif + pki_openssl_error(); +- if (EVP_PKEY_type(tmpkey->type) == EVP_PKEY_RSA) +- RSA_blinding_on(tmpkey->pkey.rsa, NULL); ++ if (EVP_PKEY_type(getKeyType()) == EVP_PKEY_RSA) { ++ RSA *rsa; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ rsa = EVP_PKEY_get0_RSA(tmpkey); ++#else ++ rsa = tmpkey->pkey.rsa; ++#endif ++ RSA_blinding_on(rsa, NULL); ++ } + return tmpkey; + } + +@@ -427,7 +547,7 @@ QByteArray pki_evp::toData() + { + QByteArray ba; + +- ba += db::intToData(key->type); ++ ba += db::intToData(getKeyType()); + ba += db::intToData(ownPass); + ba += i2d(); + ba += encKey; +@@ -458,7 +578,10 @@ void pki_evp::encryptKey(const char *pas + { + int outl, keylen; + EVP_PKEY *pkey1 = NULL; +- EVP_CIPHER_CTX ctx; ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ EVP_CIPHER_CTX ctxbuf; ++#endif ++ EVP_CIPHER_CTX *ctx; + const EVP_CIPHER *cipher = EVP_des_ede3_cbc(); + unsigned char iv[EVP_MAX_IV_LENGTH], *punenc, *punenc1; + unsigned char ckey[EVP_MAX_KEY_LENGTH]; +@@ -499,7 +622,12 @@ void pki_evp::encryptKey(const char *pas + EVP_BytesToKey(cipher, EVP_sha1(), iv, + ownPassBuf.constUchar(), + ownPassBuf.size(), 1, ckey, NULL); +- EVP_CIPHER_CTX_init (&ctx); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ ctx = EVP_CIPHER_CTX_new(); ++#else ++ ctx = &ctxbuf; ++#endif ++ EVP_CIPHER_CTX_init (ctx); + pki_openssl_error(); + + /* reserve space for unencrypted and encrypted key */ +@@ -518,14 +646,17 @@ void pki_evp::encryptKey(const char *pas + + /* do the encryption */ + /* store key right after the iv */ +- EVP_EncryptInit(&ctx, cipher, ckey, iv); ++ EVP_EncryptInit(ctx, cipher, ckey, iv); + unsigned char *penc = (unsigned char *)encKey.data() +8; +- EVP_EncryptUpdate(&ctx, penc, &outl, punenc, keylen); ++ EVP_EncryptUpdate(ctx, penc, &outl, punenc, keylen); + int encKey_len = outl; +- EVP_EncryptFinal(&ctx, penc + encKey_len, &outl); ++ EVP_EncryptFinal(ctx, penc + encKey_len, &outl); + encKey.resize(encKey_len + outl +8); + /* Cleanup */ +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_cleanup(ctx); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ EVP_CIPHER_CTX_free(ctx); ++#endif + /* wipe out the memory */ + memset(punenc, 0, keylen); + OPENSSL_free(punenc); +@@ -600,6 +731,7 @@ void pki_evp::writeKey(const QString fna + pem_password_cb *cb, bool pem) + { + EVP_PKEY *pkey; ++ int keytype; + pass_info p(XCA_TITLE, tr("Please enter the export password for the private key '%1'").arg(getIntName())); + if (isPubKey()) { + writePublic(fname, pem); +@@ -614,19 +746,39 @@ void pki_evp::writeKey(const QString fna + pkey = decryptKey(); + if (pkey) { + if (pem) { +- switch (pkey->type) { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ keytype = EVP_PKEY_id(pkey); ++#else ++ keytype = pkey->type; ++#endif ++ switch (keytype) { + case EVP_PKEY_RSA: +- PEM_write_RSAPrivateKey(fp, +- pkey->pkey.rsa, enc, NULL, 0, cb, &p); ++ RSA *rsa; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ rsa = EVP_PKEY_get0_RSA(pkey); ++#else ++ rsa = pkey->pkey.rsa; ++#endif ++ PEM_write_RSAPrivateKey(fp, rsa, enc, NULL, 0, cb, &p); + break; + case EVP_PKEY_DSA: +- PEM_write_DSAPrivateKey(fp, +- pkey->pkey.dsa, enc, NULL, 0, cb, &p); ++ DSA *dsa; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ dsa = EVP_PKEY_get0_DSA(pkey); ++#else ++ dsa = pkey->pkey.dsa; ++#endif ++ PEM_write_DSAPrivateKey(fp, dsa, enc, NULL, 0, cb, &p); + break; + #ifndef OPENSSL_NO_EC + case EVP_PKEY_EC: +- PEM_write_ECPrivateKey(fp, +- pkey->pkey.ec, enc, NULL, 0, cb, &p); ++ EC_KEY *ec; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ ec = EVP_PKEY_get0_EC_KEY(pkey); ++#else ++ ec = pkey->pkey.ec; ++#endif ++ PEM_write_ECPrivateKey(fp, ec, enc, NULL, 0, cb, &p); + break; + #endif + default: +@@ -655,8 +807,14 @@ int pki_evp::verify() + { + bool veri = false; + return true; +- if (key->type == EVP_PKEY_RSA && isPrivKey()) { +- if (RSA_check_key(key->pkey.rsa) == 1) ++ if (getKeyType() == EVP_PKEY_RSA && isPrivKey()) { ++ RSA *rsa; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ rsa = EVP_PKEY_get0_RSA(key); ++#else ++ rsa = key->pkey.rsa; ++#endif ++ if (RSA_check_key(rsa) == 1) + veri = true; + } + if (isPrivKey()) +@@ -667,8 +825,11 @@ int pki_evp::verify() + + const EVP_MD *pki_evp::getDefaultMD() + { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ return EVP_sha1(); ++#else + const EVP_MD *md; +- switch (key->type) { ++ switch (getKeyType()) { + case EVP_PKEY_RSA: md = EVP_sha1(); break; + case EVP_PKEY_DSA: md = EVP_dss1(); break; + #ifndef OPENSSL_NO_EC +@@ -677,6 +838,7 @@ const EVP_MD *pki_evp::getDefaultMD() + default: md = NULL; break; + } + return md; ++#endif + } + + QVariant pki_evp::getIcon(dbheader *hd) +@@ -690,14 +852,29 @@ QVariant pki_evp::getIcon(dbheader *hd) + QString pki_evp::md5passwd(QByteArray pass) + { + +- EVP_MD_CTX mdctx; ++#if OPENSSL_VERSION_NUMBER < 0x10100000L ++ EVP_MD_CTX mdctxbuf; ++#endif ++ EVP_MD_CTX *mdctx; + QString str; + int n; + int j; + unsigned char m[EVP_MAX_MD_SIZE]; +- EVP_DigestInit(&mdctx, EVP_md5()); +- EVP_DigestUpdate(&mdctx, pass.constData(), pass.size()); +- EVP_DigestFinal(&mdctx, m, (unsigned*)&n); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ mdctx = EVP_MD_CTX_new(); ++#else ++ mdctx = &mdctxbuf; ++#endif ++ ++ EVP_DigestInit(mdctx, EVP_md5()); ++ EVP_DigestUpdate(mdctx, pass.constData(), pass.size()); ++ EVP_DigestFinal(mdctx, m, (unsigned*)&n); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ EVP_MD_CTX_free(mdctx); ++#endif ++ + for (j=0; j= 0x10100000L ++ mdctx = EVP_MD_CTX_new(); ++#else ++ mdctx = &mdctxbuf; ++#endif ++ ++ EVP_DigestInit(mdctx, EVP_sha512()); ++ EVP_DigestUpdate(mdctx, pass.constData(), pass.size()); ++ EVP_DigestFinal(mdctx, m, (unsigned*)&n); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ EVP_MD_CTX_free(mdctx); ++#endif + + for (j=0; j= 0x10100000L ++ ctx = EVP_CIPHER_CTX_new(); ++#else ++ ctx = &ctxbuf; ++#endif ++ ++ EVP_CIPHER_CTX_init(ctx); ++ EVP_DecryptInit(ctx, cipher, ckey, iv); ++ EVP_DecryptUpdate(ctx, pdec , &outl, p + 8, size - 8); + decsize = outl; +- EVP_DecryptFinal( &ctx, pdec + decsize , &outl ); ++ EVP_DecryptFinal(ctx, pdec + decsize, &outl); + decsize += outl; + pki_openssl_error(); + memcpy(sik, pdec, decsize); +- if (key->type == EVP_PKEY_RSA) { ++ if (getKeyType() == EVP_PKEY_RSA) { + rsakey=d2i_RSAPrivateKey(NULL,(const unsigned char **)&pdec, decsize); + if (pki_ign_openssl_error()) { + rsakey = d2i_RSA_PUBKEY(NULL, (const unsigned char **)&sik, decsize); +@@ -779,7 +977,10 @@ void pki_evp::veryOldFromData(unsigned c + } + OPENSSL_free(sik1); + OPENSSL_free(pdec1); +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_cleanup(ctx); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ EVP_CIPHER_CTX_free(ctx); ++#endif + pki_openssl_error(); + encryptKey(); + } +diff -Naurp xca-1.3.2.orig/lib/pki_key.cpp xca-1.3.2.new/lib/pki_key.cpp +--- xca-1.3.2.orig/lib/pki_key.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/pki_key.cpp 2017-02-21 04:34:48.508448958 +0100 +@@ -101,16 +101,31 @@ BIO *pki_key::pem(BIO *b, int format) + + QString pki_key::length() + { +- if (key->type == EVP_PKEY_DSA && key->pkey.dsa->p == NULL) { +- return QString("???"); ++ bool dsa_unset = false; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ if (EVP_PKEY_id(key) == EVP_PKEY_DSA) { ++ const BIGNUM *p = NULL; ++ DSA *dsa = EVP_PKEY_get0_DSA(key); ++ if (dsa) ++ DSA_get0_pqg(dsa, &p, NULL, NULL); ++ dsa_unset = p == NULL; + } ++#else ++ dsa_unset = key->type == EVP_PKEY_DSA && key->pkey.dsa->p == NULL; ++#endif ++ ++ if (dsa_unset) ++ return QString("???"); ++ + return QString("%1 bit").arg(EVP_PKEY_bits(key)); + } + + QString pki_key::getTypeString() const + { + QString type; +- switch (EVP_PKEY_type(key->type)) { ++ ++ switch (EVP_PKEY_type(getKeyType())) { + case EVP_PKEY_RSA: + type = "RSA"; + break; +@@ -202,51 +217,118 @@ int pki_key::getUcount() + return ucount; + } + +-int pki_key::getKeyType() ++int pki_key::getKeyType() const + { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ return EVP_PKEY_id(key); ++#else + return key->type; ++#endif + } + + QString pki_key::modulus() + { +- if (key->type == EVP_PKEY_RSA) +- return BN2QString(key->pkey.rsa->n); ++ if (getKeyType() == EVP_PKEY_RSA) { ++ const BIGNUM *n = NULL; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ RSA *rsa = EVP_PKEY_get0_RSA(key); ++ RSA_get0_key(rsa, &n, NULL, NULL); ++#else ++ n = key->pkey.rsa->n; ++#endif ++ ++ return BN2QString(n); ++ } ++ ++ + return QString(); + } + + QString pki_key::pubEx() + { +- if (key->type == EVP_PKEY_RSA) +- return BN2QString(key->pkey.rsa->e); ++ if (getKeyType() == EVP_PKEY_RSA) { ++ const BIGNUM *e = NULL; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ RSA *rsa = EVP_PKEY_get0_RSA(key); ++ RSA_get0_key(rsa, NULL, &e, NULL); ++#else ++ e = key->pkey.rsa->e; ++#endif ++ return BN2QString(e); ++ } ++ ++ + return QString(); + } + + QString pki_key::subprime() + { +- if (key->type == EVP_PKEY_DSA) +- return BN2QString(key->pkey.dsa->q); ++ if (getKeyType() == EVP_PKEY_DSA) { ++ const BIGNUM *q = NULL; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ DSA *dsa = EVP_PKEY_get0_DSA(key); ++ if (dsa) ++ DSA_get0_pqg(dsa, NULL, &q, NULL); ++#else ++ q = key->pkey.dsa->q; ++#endif ++ ++ return BN2QString(q); ++ } ++ + return QString(); + } + + QString pki_key::pubkey() + { +- if (key->type == EVP_PKEY_DSA) +- return BN2QString(key->pkey.dsa->pub_key); ++ if (getKeyType() == EVP_PKEY_DSA) { ++ const BIGNUM *pubkey = NULL; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ DSA *dsa = EVP_PKEY_get0_DSA(key); ++ if (dsa) ++ DSA_get0_key(dsa, &pubkey, NULL); ++#else ++ pubkey = key->pkey.dsa->pub_key; ++#endif ++ ++ return BN2QString(pubkey); ++ } ++ + return QString(); + } + #ifndef OPENSSL_NO_EC + int pki_key::ecParamNid() + { +- if (key->type != EVP_PKEY_EC) ++ const EC_KEY *ec; ++ ++ if (getKeyType() != EVP_PKEY_EC) + return NID_undef; +- return EC_GROUP_get_curve_name(EC_KEY_get0_group(key->pkey.ec)); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ ec = EVP_PKEY_get0_EC_KEY(key); ++#else ++ ec = key->pkey.ec; ++#endif ++ ++ return EC_GROUP_get_curve_name(EC_KEY_get0_group(ec)); + } + + QString pki_key::ecPubKey() + { + QString pub; +- if (key->type == EVP_PKEY_EC) { +- EC_KEY *ec = key->pkey.ec; ++ const EC_KEY *ec = NULL; ++ ++ if (getKeyType() == EVP_PKEY_EC) { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ ec = EVP_PKEY_get0_EC_KEY(key); ++#else ++ ec = key->pkey.ec; ++#endif ++ + BIGNUM *pub_key = EC_POINT_point2bn(EC_KEY_get0_group(ec), + EC_KEY_get0_public_key(ec), + EC_KEY_get_conv_form(ec), NULL, NULL); +@@ -263,7 +345,7 @@ QList pki_key::possibleHashNids() + { + QList nids; + +- switch (EVP_PKEY_type(key->type)) { ++ switch (EVP_PKEY_type(getKeyType())) { + case EVP_PKEY_RSA: + nids << NID_md5 << NID_sha1 << NID_sha224 << NID_sha256 << + NID_sha384 << NID_sha512 << NID_ripemd160; +@@ -326,7 +408,7 @@ QString pki_key::BNoneLine(BIGNUM *bn) c + return x; + } + +-QString pki_key::BN2QString(BIGNUM *bn) const ++QString pki_key::BN2QString(const BIGNUM *bn) const + { + if (bn == NULL) + return "--"; +@@ -367,7 +449,7 @@ QVariant pki_key::column_data(dbheader * + case HD_key_curve: + QString r; + #ifndef OPENSSL_NO_EC +- if (key->type == EVP_PKEY_EC) ++ if (getKeyType() == EVP_PKEY_EC) + r = OBJ_nid2sn(ecParamNid()); + #endif + return QVariant(r); +@@ -424,8 +506,16 @@ EVP_PKEY *pki_key::load_ssh2_key(FILE *f + RSA *rsa = RSA_new(); + /* Skip "ssh-rsa..." */ + ssh_key_data2bn(&ba, true); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ BIGNUM *e = ssh_key_data2bn(&ba); ++ BIGNUM *n = ssh_key_data2bn(&ba); ++ RSA_set0_key(rsa, n, e, NULL); ++#else + rsa->e = ssh_key_data2bn(&ba); + rsa->n = ssh_key_data2bn(&ba); ++#endif ++ + pk = EVP_PKEY_new(); + EVP_PKEY_assign_RSA(pk, rsa); + break; +@@ -434,10 +524,21 @@ EVP_PKEY *pki_key::load_ssh2_key(FILE *f + DSA *dsa = DSA_new(); + /* Skip "ssh-dsa..." */ + ssh_key_data2bn(&ba, true); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ BIGNUM *p = ssh_key_data2bn(&ba); ++ BIGNUM *q = ssh_key_data2bn(&ba); ++ BIGNUM *g = ssh_key_data2bn(&ba); ++ BIGNUM *pubkey = ssh_key_data2bn(&ba); ++ DSA_set0_pqg(dsa, p, q, g); ++ DSA_set0_key(dsa, pubkey, NULL); ++#else + dsa->p = ssh_key_data2bn(&ba); + dsa->q = ssh_key_data2bn(&ba); + dsa->g = ssh_key_data2bn(&ba); + dsa->pub_key = ssh_key_data2bn(&ba); ++#endif ++ + pk = EVP_PKEY_new(); + EVP_PKEY_assign_DSA(pk, dsa); + } +@@ -458,7 +559,7 @@ void pki_key::ssh_key_QBA2data(QByteArra + data->append(ba); + } + +-void pki_key::ssh_key_bn2data(BIGNUM *bn, QByteArray *data) ++void pki_key::ssh_key_bn2data(const BIGNUM *bn, QByteArray *data) + { + QByteArray big; + big.resize(BN_num_bytes(bn)); +@@ -473,20 +574,43 @@ QByteArray pki_key::SSH2publicQByteArray + { + QByteArray txt, data; + +- switch (key->type) { ++ switch (getKeyType()) { + case EVP_PKEY_RSA: + txt = "ssh-rsa"; + ssh_key_QBA2data(txt, &data); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ { ++ RSA *rsa = EVP_PKEY_get0_RSA(key); ++ const BIGNUM *n, *e; ++ RSA_get0_key(rsa, &n, &e, NULL); ++ ssh_key_bn2data(e, &data); ++ ssh_key_bn2data(n, &data); ++ } ++#else + ssh_key_bn2data(key->pkey.rsa->e, &data); + ssh_key_bn2data(key->pkey.rsa->n, &data); ++#endif + break; + case EVP_PKEY_DSA: + txt = "ssh-dss"; + ssh_key_QBA2data(txt, &data); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ { ++ DSA *dsa = EVP_PKEY_get0_DSA(key); ++ const BIGNUM *p, *q, *g, *pubkey; ++ DSA_get0_pqg(dsa, &p, &q, &g); ++ DSA_get0_key(dsa, &pubkey, NULL); ++ ssh_key_bn2data(p, &data); ++ ssh_key_bn2data(q, &data); ++ ssh_key_bn2data(g, &data); ++ ssh_key_bn2data(pubkey, &data); ++ } ++#else + ssh_key_bn2data(key->pkey.dsa->p, &data); + ssh_key_bn2data(key->pkey.dsa->q, &data); + ssh_key_bn2data(key->pkey.dsa->g, &data); + ssh_key_bn2data(key->pkey.dsa->pub_key, &data); ++#endif + break; + default: + return QByteArray(); +diff -Naurp xca-1.3.2.orig/lib/pki_key.h xca-1.3.2.new/lib/pki_key.h +--- xca-1.3.2.orig/lib/pki_key.h 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/pki_key.h 2017-02-21 04:29:05.183300432 +0100 +@@ -24,14 +24,14 @@ class pki_key: public pki_base + protected: + int ownPass; + EVP_PKEY *key; +- QString BN2QString(BIGNUM *bn) const; ++ QString BN2QString(const BIGNUM *bn) const; + QString BNoneLine(BIGNUM *bn) const; + QByteArray SSH2publicQByteArray(); + + private: + BIGNUM *ssh_key_data2bn(QByteArray *ba, bool skip = false); + void ssh_key_QBA2data(QByteArray &ba, QByteArray *data); +- void ssh_key_bn2data(BIGNUM *bn, QByteArray *data); ++ void ssh_key_bn2data(const BIGNUM *bn, QByteArray *data); + int ucount; // usage counter + public: + pki_key(const QString name = ""); +@@ -65,7 +65,7 @@ class pki_key: public pki_base + + void writePublic(const QString fname, bool pem); + bool compare(pki_base *ref); +- int getKeyType(); ++ int getKeyType() const; + static QString removeTypeFromIntName(QString n); + bool isPrivKey() const; + int incUcount(); +diff -Naurp xca-1.3.2.orig/lib/pki_pkcs12.cpp xca-1.3.2.new/lib/pki_pkcs12.cpp +--- xca-1.3.2.orig/lib/pki_pkcs12.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/pki_pkcs12.cpp 2017-02-21 15:37:25.336628591 +0100 +@@ -61,10 +61,16 @@ pki_pkcs12::pki_pkcs12(const QString fna + } + ign_openssl_error(); + if (mycert) { +- if (mycert->aux && mycert->aux->alias) { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ int len = 0; ++ unsigned char *str = X509_alias_get0(mycert, NULL); ++ if (str) ++ alias = QString::fromUtf8((const char *) str, len); ++#else ++ if (mycert->aux && mycert->aux->alias) + alias = asn1ToQString(mycert->aux->alias); +- alias = QString::fromUtf8(alias.toLatin1()); +- } ++#endif ++ alias = QString::fromUtf8(alias.toLatin1()); + cert = new pki_x509(mycert); + if (alias.isEmpty()) { + cert->autoIntName(); +diff -Naurp xca-1.3.2.orig/lib/pki_scard.cpp xca-1.3.2.new/lib/pki_scard.cpp +--- xca-1.3.2.orig/lib/pki_scard.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/pki_scard.cpp 2017-02-22 02:16:08.425135591 +0100 +@@ -80,11 +80,16 @@ EVP_PKEY *pki_scard::load_pubkey(pkcs11 + + pk11_attr_data n(CKA_MODULUS); + p11.loadAttribute(n, object); +- rsa->n = n.getBignum(); + + pk11_attr_data e(CKA_PUBLIC_EXPONENT); + p11.loadAttribute(e, object); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ RSA_set0_key(rsa, n.getBignum(), e.getBignum(), NULL); ++#else ++ rsa->n = n.getBignum(); + rsa->e = e.getBignum(); ++#endif + + pkey = EVP_PKEY_new(); + EVP_PKEY_assign_RSA(pkey, rsa); +@@ -95,19 +100,25 @@ EVP_PKEY *pki_scard::load_pubkey(pkcs11 + + pk11_attr_data p(CKA_PRIME); + p11.loadAttribute(p, object); +- dsa->p = p.getBignum(); + + pk11_attr_data q(CKA_SUBPRIME); + p11.loadAttribute(q, object); +- dsa->q = q.getBignum(); + + pk11_attr_data g(CKA_BASE); + p11.loadAttribute(g, object); +- dsa->g = g.getBignum(); + + pk11_attr_data pub(CKA_VALUE); + p11.loadAttribute(pub, object); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ DSA_set0_pqg(dsa, p.getBignum(), q.getBignum(), g.getBignum()); ++ DSA_set0_key(dsa, pub.getBignum(), NULL); ++#else ++ dsa->p = p.getBignum(); ++ dsa->q = q.getBignum(); ++ dsa->g = g.getBignum(); + dsa->pub_key = pub.getBignum(); ++#endif + + pkey = EVP_PKEY_new(); + EVP_PKEY_assign_DSA(pkey, dsa); +@@ -235,29 +246,64 @@ void pki_scard::deleteFromToken() + pk11_attlist pki_scard::objectAttributesNoId(EVP_PKEY *pk, bool priv) const + { + QByteArray ba; +- RSA *rsa = pk->pkey.rsa; +- DSA *dsa = pk->pkey.dsa; ++ int keytype; ++ RSA *rsa; ++ DSA *dsa; + #ifndef OPENSSL_NO_EC +- EC_KEY *ec = pk->pkey.ec; ++ EC_KEY *ec; + #endif ++ const BIGNUM *n = NULL; ++ const BIGNUM *e = NULL; ++ const BIGNUM *p = NULL; ++ const BIGNUM *q = NULL; ++ const BIGNUM *g = NULL; + + pk11_attlist attrs(pk11_attr_ulong(CKA_CLASS, + priv ? CKO_PRIVATE_KEY : CKO_PUBLIC_KEY)); + +- switch (EVP_PKEY_type(pk->type)) { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ keytype = EVP_PKEY_id(pk); ++#else ++ keytype = pk->type; ++#endif ++ ++ switch (EVP_PKEY_type(keytype)) { + case EVP_PKEY_RSA: ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ rsa = EVP_PKEY_get0_RSA(pk); ++ RSA_get0_key(rsa, &n, &e, NULL); ++#else ++ rsa = pk->pkey.rsa; ++ n = rsa->n; ++ e = rsa->e; ++#endif + attrs << pk11_attr_ulong(CKA_KEY_TYPE, CKK_RSA) << +- pk11_attr_data(CKA_MODULUS, rsa->n, false) << +- pk11_attr_data(CKA_PUBLIC_EXPONENT, rsa->e, false); ++ pk11_attr_data(CKA_MODULUS, n) << ++ pk11_attr_data(CKA_PUBLIC_EXPONENT, e); + break; + case EVP_PKEY_DSA: ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ dsa = EVP_PKEY_get0_DSA(pk); ++ DSA_get0_pqg(dsa, &p, &q, &g); ++#else ++ dsa = pk->pkey.dsa; ++ p = dsa->p; ++ q = dsa->q; ++ g = dsa->g; ++#endif + attrs << pk11_attr_ulong(CKA_KEY_TYPE, CKK_DSA) << +- pk11_attr_data(CKA_PRIME, dsa->p, false) << +- pk11_attr_data(CKA_SUBPRIME, dsa->q, false) << +- pk11_attr_data(CKA_BASE, dsa->g, false); ++ pk11_attr_data(CKA_PRIME, p) << ++ pk11_attr_data(CKA_SUBPRIME, q) << ++ pk11_attr_data(CKA_BASE, g); + break; + #ifndef OPENSSL_NO_EC + case EVP_PKEY_EC: ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ ec = EVP_PKEY_get0_EC_KEY(pk); ++#else ++ ec = pk->pkey.ec; ++#endif ++ + ba = i2d_bytearray(I2D_VOID(i2d_ECPKParameters), + EC_KEY_get0_group(ec)); + +@@ -266,7 +312,7 @@ pk11_attlist pki_scard::objectAttributes + break; + #endif + default: +- throw errorEx(QString("Unkown Keytype %d").arg(pk->type)); ++ throw errorEx(QString("Unkown Keytype %d").arg(keytype)); + + } + return attrs; +@@ -332,14 +378,23 @@ int pki_scard::renameOnToken(slotid slot + void pki_scard::store_token(slotid slot, EVP_PKEY *pkey) + { + QByteArray ba; +- RSA *rsa = pkey->pkey.rsa; +- DSA *dsa = pkey->pkey.dsa; ++ int keytype; ++ RSA *rsa; ++ DSA *dsa; + #ifndef OPENSSL_NO_EC +- EC_KEY *ec = pkey->pkey.ec; ++ EC_KEY *ec; + #endif + pk11_attlist pub_atts; + pk11_attlist priv_atts; + QList objects; ++ const BIGNUM *d = NULL; ++ const BIGNUM *p = NULL; ++ const BIGNUM *q = NULL; ++ const BIGNUM *dmp1 = NULL; ++ const BIGNUM *dmq1 = NULL; ++ const BIGNUM *iqmp = NULL; ++ const BIGNUM *priv_key = NULL; ++ const BIGNUM *pub_key = NULL; + + pub_atts = objectAttributesNoId(pkey, false); + priv_atts = objectAttributesNoId(pkey, true); +@@ -373,19 +428,48 @@ void pki_scard::store_token(slotid slot, + pk11_attr_bool(CKA_DECRYPT, true) << + pk11_attr_bool(CKA_SIGN, true); + +- switch (EVP_PKEY_type(pkey->type)) { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ keytype = EVP_PKEY_id(pkey); ++#else ++ keytype = pkey->type; ++#endif ++ ++ switch (EVP_PKEY_type(keytype)) { + case EVP_PKEY_RSA: ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ rsa = EVP_PKEY_get0_RSA(pkey); ++ RSA_get0_key(rsa, NULL, NULL, &d); ++ RSA_get0_factors(rsa, &p, &q); ++ RSA_get0_crt_params(rsa, &dmp1, &dmq1, &iqmp); ++#else ++ rsa = pkey->pkey.rsa; ++ d = rsa->d; ++ p = rsa->p; ++ q = rsa->q; ++ dmp1 = rsa->dmp1; ++ dmq1 = rsa->dmq1; ++ iqmp = rsa->iqmp; ++#endif + priv_atts << +- pk11_attr_data(CKA_PRIVATE_EXPONENT, rsa->d, false) << +- pk11_attr_data(CKA_PRIME_1, rsa->p, false) << +- pk11_attr_data(CKA_PRIME_2, rsa->q, false) << +- pk11_attr_data(CKA_EXPONENT_1, rsa->dmp1, false) << +- pk11_attr_data(CKA_EXPONENT_2, rsa->dmq1, false) << +- pk11_attr_data(CKA_COEFFICIENT, rsa->iqmp, false); ++ pk11_attr_data(CKA_PRIVATE_EXPONENT, d) << ++ pk11_attr_data(CKA_PRIME_1, p) << ++ pk11_attr_data(CKA_PRIME_2, q) << ++ pk11_attr_data(CKA_EXPONENT_1, dmp1) << ++ pk11_attr_data(CKA_EXPONENT_2, dmq1) << ++ pk11_attr_data(CKA_COEFFICIENT, iqmp); + break; + case EVP_PKEY_DSA: +- priv_atts << pk11_attr_data(CKA_VALUE, dsa->priv_key, false); +- pub_atts << pk11_attr_data(CKA_VALUE, dsa->pub_key, false); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ dsa = EVP_PKEY_get0_DSA(pkey); ++ DSA_get0_key(dsa, &pub_key, &priv_key); ++#else ++ dsa = pkey->pkey.dsa; ++ priv_key = dsa->priv_key; ++ pub_key = dsa->pub_key; ++#endif ++ ++ priv_atts << pk11_attr_data(CKA_VALUE, priv_key); ++ pub_atts << pk11_attr_data(CKA_VALUE, pub_key); + break; + #ifndef OPENSSL_NO_EC + case EVP_PKEY_EC: { +@@ -394,6 +478,12 @@ void pki_scard::store_token(slotid slot, + int size; + unsigned char *buf; + ASN1_OCTET_STRING *os; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ ec = EVP_PKEY_get0_EC_KEY(pkey); ++#else ++ ec = pkey->pkey.ec; ++#endif + point = EC_POINT_point2bn(EC_KEY_get0_group(ec), + EC_KEY_get0_public_key(ec), + EC_KEY_get_conv_form(ec), NULL, NULL); +@@ -419,7 +509,7 @@ void pki_scard::store_token(slotid slot, + } + #endif + default: +- throw errorEx(QString("Unkown Keytype %d").arg(pkey->type)); ++ throw errorEx(QString("Unkown Keytype %d").arg(keytype)); + + } + +@@ -451,7 +541,7 @@ QList pki_scard::possibleHashNids() + return pki_key::possibleHashNids(); + + foreach(CK_MECHANISM_TYPE mechanism, mech_list) { +- switch (EVP_PKEY_type(key->type)) { ++ switch (EVP_PKEY_type(getKeyType())) { + case EVP_PKEY_RSA: + switch (mechanism) { + case CKM_MD5_RSA_PKCS: nids << NID_md5; break; +@@ -477,7 +567,7 @@ QList pki_scard::possibleHashNids() + } + } + if (nids.count() == 0) { +- switch (EVP_PKEY_type(key->type)) { ++ switch (EVP_PKEY_type(getKeyType())) { + case EVP_PKEY_RSA: + nids << NID_md5 << NID_sha1 << NID_sha256 << + NID_sha384 << NID_sha512 << NID_ripemd160; +@@ -498,11 +588,19 @@ const EVP_MD *pki_scard::getDefaultMD() + if (mech_list.contains(CKM_SHA1_RSA_PKCS)) + return EVP_sha1(); + if (mech_list.contains(CKM_DSA_SHA1)) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ return EVP_sha1(); ++#else + return EVP_dss1(); ++#endif + #ifndef OPENSSL_NO_EC + if (mech_list.contains(CKM_ECDSA_SHA1)) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ return EVP_sha1(); ++#else + return EVP_ecdsa(); + #endif ++#endif + if (mech_list.contains(CKM_SHA512_RSA_PKCS)) + return EVP_sha512(); + if (mech_list.contains(CKM_SHA384_RSA_PKCS)) +@@ -672,6 +770,7 @@ QByteArray pki_scard::toData() + void pki_scard::fromData(const unsigned char *p, db_header_t *head ) + { + int version, size; ++ void *ptr = NULL; + + size = head->len - sizeof(db_header_t); + version = head->version; +@@ -692,9 +791,16 @@ void pki_scard::fromData(const unsigned + mech_list << db::intFromData(ba); + + d2i(ba); +- if (!key || !key->pkey.ptr) { ++ ++ if (key) ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ ptr = EVP_PKEY_get0(key); ++#else ++ ptr = key->pkey.ptr; ++#endif ++ ++ if (!ptr) + throw errorEx(tr("Ignoring unsupported token key")); +- } + + if (ba.count() > 0) { + my_error(tr("Wrong Size %1").arg(ba.count())); +diff -Naurp xca-1.3.2.orig/lib/pki_x509.cpp xca-1.3.2.new/lib/pki_x509.cpp +--- xca-1.3.2.orig/lib/pki_x509.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/pki_x509.cpp 2017-02-20 16:48:24.452679180 +0100 +@@ -146,10 +146,14 @@ void pki_x509::init() + + void pki_x509::setSerial(const a1int &serial) + { +- if (cert->cert_info->serialNumber != NULL ) { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ X509_set_serialNumber(cert, serial.get()); ++#else ++ if (cert->cert_info->serialNumber != NULL) { + ASN1_INTEGER_free(cert->cert_info->serialNumber); + } + cert->cert_info->serialNumber = serial.get(); ++#endif + pki_openssl_error(); + } + +@@ -176,7 +180,13 @@ a1int pki_x509::getIncCaSerial() + unsigned char buf[SERIAL_LEN]; + if (!randomSerial) + return caSerial++; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ RAND_bytes(buf, SERIAL_LEN); ++#else + RAND_pseudo_bytes(buf, SERIAL_LEN); ++#endif ++ + a1int serial; + serial.setRaw(buf, SERIAL_LEN); + return serial; +@@ -186,9 +196,29 @@ a1int pki_x509::hashInfo(const EVP_MD *m + { + unsigned char digest[EVP_MAX_MD_SIZE]; + unsigned len = 0; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ unsigned char *str = NULL; ++ int i; ++ ++ // In OpenSSL 1.1, X509 structure is opaque and their is no API to get ++ // cert_info. We then have to get cert_info data as a DER string and ++ // compute the digest on it. ++ ++ i = i2d_re_X509_tbs(cert, &str); ++ if (!str) ++ pki_openssl_error(); ++ else { ++ i = EVP_Digest(str, i, digest, &len, md, NULL); ++ OPENSSL_free(str); ++ if (!i) ++ pki_openssl_error(); ++ } ++#else + if (!ASN1_item_digest(ASN1_ITEM_rptr(X509_CINF), md, + (char*)cert->cert_info,digest,&len)) + pki_openssl_error(); ++#endif + a1int a; + a.setRaw(digest,len); + return a; +@@ -399,31 +429,51 @@ a1time pki_x509::getNotAfter() const + + x509name pki_x509::getSubject() const + { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ x509name x(X509_get_subject_name(cert)); ++#else + x509name x(cert->cert_info->subject); ++#endif ++ + pki_openssl_error(); + return x; + } + + x509name pki_x509::getIssuer() const + { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ x509name x(X509_get_issuer_name(cert)); ++#else + x509name x(cert->cert_info->issuer); ++#endif ++ + pki_openssl_error(); + return x; + } + + void pki_x509::setSubject(const x509name &n) + { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ X509_set_subject_name(cert, n.get()); ++#else + if (cert->cert_info->subject != NULL) + X509_NAME_free(cert->cert_info->subject); + cert->cert_info->subject = n.get(); ++#endif ++ + pki_openssl_error(); + } + + void pki_x509::setIssuer(const x509name &n) + { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ X509_set_issuer_name(cert, n.get()); ++#else + if ((cert->cert_info->issuer) != NULL) + X509_NAME_free(cert->cert_info->issuer); + cert->cert_info->issuer = n.get(); ++#endif ++ + pki_openssl_error(); + } + +@@ -740,7 +790,13 @@ bool pki_x509::checkDate() + extList pki_x509::getV3ext() + { + extList el; ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ el.setStack(X509_get0_extensions(cert)); ++#else + el.setStack(cert->cert_info->extensions); ++#endif ++ + return el; + } + +@@ -759,9 +815,21 @@ x509v3ext pki_x509::getExtByNid(int nid) + return el[i]; + } + +-ASN1_OBJECT *pki_x509::sigAlg() ++const ASN1_OBJECT *pki_x509::sigAlg() + { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ const ASN1_BIT_STRING *psig; ++ const X509_ALGOR *palg; ++ const ASN1_OBJECT *paobj; ++ int pptype; ++ const void *ppval; ++ ++ X509_get0_signature(&psig, &palg, cert); ++ X509_ALGOR_get0(&paobj, &pptype, &ppval, palg); ++ return paobj; ++#else + return cert->sig_alg->algorithm; ++#endif + } + + pki_x509 *pki_x509::getSigner() +diff -Naurp xca-1.3.2.orig/lib/pki_x509.h xca-1.3.2.new/lib/pki_x509.h +--- xca-1.3.2.orig/lib/pki_x509.h 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/pki_x509.h 2017-02-19 01:37:39.266522432 +0100 +@@ -39,7 +39,7 @@ class pki_x509 : public pki_x509super + x509rev revocation; + + protected: +- ASN1_OBJECT *sigAlg(); ++ const ASN1_OBJECT *sigAlg(); + + public: + static QPixmap *icon[6]; +diff -Naurp xca-1.3.2.orig/lib/pki_x509req.cpp xca-1.3.2.new/lib/pki_x509req.cpp +--- xca-1.3.2.orig/lib/pki_x509req.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/pki_x509req.cpp 2017-02-21 03:31:54.048671339 +0100 +@@ -206,16 +206,32 @@ x509name pki_x509req::getSubject() const + return x; + } + +-ASN1_OBJECT *pki_x509req::sigAlg() ++const ASN1_OBJECT *pki_x509req::sigAlg() + { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ const ASN1_BIT_STRING *psig; ++ const X509_ALGOR *palg; ++ const ASN1_OBJECT *paobj; ++ int pptype; ++ const void *ppval; ++ ++ X509_REQ_get0_signature(request, &psig, &palg); ++ X509_ALGOR_get0(&paobj, &pptype, &ppval, palg); ++ return paobj; ++#else + return request->sig_alg->algorithm; ++#endif + } + + void pki_x509req::setSubject(const x509name &n) + { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ X509_REQ_set_subject_name(request, n.get()); ++#else + if (request->req_info->subject != NULL) + X509_NAME_free(request->req_info->subject); + request->req_info->subject = n.get(); ++#endif + } + + bool pki_x509req::isSpki() const +@@ -292,12 +308,27 @@ pki_key *pki_x509req::getPubKey() const + + QString pki_x509req::getSigAlg() + { +- ASN1_OBJECT *o; ++ const ASN1_OBJECT *o; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ const ASN1_BIT_STRING *psig; ++ const X509_ALGOR *palg; ++ X509_ALGOR *palg2; ++ int pptype; ++ const void *ppval; ++ ++ if (spki) { ++ X509_PUBKEY_get0_param(NULL, NULL, NULL, &palg2, spki->spkac->pubkey); ++ palg = palg2; ++ } else ++ X509_REQ_get0_signature(request, &psig, &palg); ++ X509_ALGOR_get0(&o, &pptype, &ppval, palg); ++#else + if (spki) { + o = spki->spkac->pubkey->algor->algorithm; + } else { + o = request->sig_alg->algorithm; + } ++#endif + return QString(OBJ_nid2ln(OBJ_obj2nid(o))); + } + +@@ -393,21 +424,30 @@ ASN1_IA5STRING *pki_x509req::spki_challa + QString pki_x509req::getAttribute(int nid) + { + int n; ++ int count; ++ QStringList ret; ++ + n = X509_REQ_get_attr_by_NID(request, nid, -1); + if (n == -1) + return QString(""); + X509_ATTRIBUTE *att = X509_REQ_get_attr(request, n); + if (!att) + return QString(""); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ count = X509_ATTRIBUTE_count(att); ++ for (int j = 0; j < count; j++) ++ ret << asn1ToQString(X509_ATTRIBUTE_get0_type(att, j)-> ++ value.asn1_string); ++#else + if (att->single) + return asn1ToQString(att->value.single->value.asn1_string); + +- int count = sk_ASN1_TYPE_num(att->value.set); +- QStringList ret; ++ count = sk_ASN1_TYPE_num(att->value.set); + for (int j=0; jvalue.set, j)-> + value.asn1_string); + } ++#endif + return ret.join(", "); + } + +diff -Naurp xca-1.3.2.orig/lib/pki_x509req.h xca-1.3.2.new/lib/pki_x509req.h +--- xca-1.3.2.orig/lib/pki_x509req.h 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/pki_x509req.h 2017-02-19 01:37:31.782451059 +0100 +@@ -31,7 +31,7 @@ class pki_x509req : public pki_x509super + X509_REQ *request; + NETSCAPE_SPKI *spki; + bool done; +- ASN1_OBJECT *sigAlg(); ++ const ASN1_OBJECT *sigAlg(); + + public: + extList getV3ext(); +diff -Naurp xca-1.3.2.orig/lib/pki_x509super.h xca-1.3.2.new/lib/pki_x509super.h +--- xca-1.3.2.orig/lib/pki_x509super.h 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/pki_x509super.h 2017-02-19 01:37:17.900318670 +0100 +@@ -32,7 +32,7 @@ class pki_x509super : public pki_x509nam + Q_OBJECT + protected: + pki_key *privkey; +- virtual ASN1_OBJECT *sigAlg() { ++ virtual const ASN1_OBJECT *sigAlg() { + return NULL; + } + public: +diff -Naurp xca-1.3.2.orig/lib/x509name.cpp xca-1.3.2.new/lib/x509name.cpp +--- xca-1.3.2.orig/lib/x509name.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/x509name.cpp 2017-02-25 12:50:07.149543386 +0100 +@@ -25,13 +25,8 @@ x509name::x509name(const X509_NAME *n) + + x509name::x509name(STACK_OF(X509_NAME_ENTRY) *entries) + { +- X509_NAME *n = X509_NAME_new(); +- STACK_OF(X509_NAME_ENTRY) *ba = n->entries; + xn = NULL; +- n->entries = entries; +- set(n); +- n->entries = ba; +- X509_NAME_free(n); ++ set(entries); + } + + x509name::x509name(const x509name &n) +@@ -53,6 +48,21 @@ x509name &x509name::set(const X509_NAME + return *this; + } + ++x509name &x509name::set(const STACK_OF(X509_NAME_ENTRY) *entries) ++{ ++ if (xn != NULL) ++ X509_NAME_free(xn); ++ xn = X509_NAME_new(); ++ if (xn && entries) { ++ int count = sk_X509_NAME_ENTRY_num(entries); ++ for (int i = 0; i < count; i++) { ++ X509_NAME_ENTRY *entry = sk_X509_NAME_ENTRY_value(entries, i); ++ X509_NAME_add_entry(xn, entry, -1, 0); ++ } ++ } ++ return *this; ++} ++ + QString x509name::oneLine(unsigned long flags) const + { + QString ret; +@@ -150,20 +160,20 @@ int x509name::nid(int i) const + { + X509_NAME_ENTRY *ne; + +- ne = sk_X509_NAME_ENTRY_value(xn->entries, i); ++ ne = X509_NAME_get_entry(xn, i); + if (ne == NULL) + return NID_undef; +- return OBJ_obj2nid(ne->object); ++ return OBJ_obj2nid(X509_NAME_ENTRY_get_object(ne)); + } + + QString x509name::getOid(int i) const + { + X509_NAME_ENTRY *ne; + +- ne = sk_X509_NAME_ENTRY_value(xn->entries, i); ++ ne = X509_NAME_get_entry(xn, i); + if (ne == NULL) + return QString(); +- return OBJ_obj2QString(ne->object, 1); ++ return OBJ_obj2QString(X509_NAME_ENTRY_get_object(ne), 1); + } + + void x509name::d2i(QByteArray &ba) +diff -Naurp xca-1.3.2.orig/lib/x509name.h xca-1.3.2.new/lib/x509name.h +--- xca-1.3.2.orig/lib/x509name.h 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/x509name.h 2017-02-24 01:55:15.186340378 +0100 +@@ -23,6 +23,7 @@ class x509name + x509name(STACK_OF(X509_NAME_ENTRY) *entries); + ~x509name(); + x509name &set(const X509_NAME *n); ++ x509name &set(const STACK_OF(X509_NAME_ENTRY) *entries); + QString oneLine(unsigned long flags = XN_FLAG_ONELINE) const; + int nid(int i) const; + QString getOid(int i) const; +diff -Naurp xca-1.3.2.orig/lib/x509rev.cpp xca-1.3.2.new/lib/x509rev.cpp +--- xca-1.3.2.orig/lib/x509rev.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/x509rev.cpp 2017-02-22 02:30:15.495213804 +0100 +@@ -62,8 +62,13 @@ void x509rev::fromREVOKED(const X509_REV + + if (!rev) + return; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ serial = a1int(X509_REVOKED_get0_serialNumber(rev)); ++ date = a1time(X509_REVOKED_get0_revocationDate(rev)); ++#else + serial = a1int(rev->serialNumber); + date = a1time(rev->revocationDate); ++#endif + + reason = (ASN1_ENUMERATED *)X509_REVOKED_get_ext_d2i( + (X509_REVOKED *)rev, NID_crl_reason, &j, NULL); +@@ -96,7 +101,11 @@ X509_REVOKED *x509rev::toREVOKED(bool wi + a1time d = date; + X509_REVOKED *rev = X509_REVOKED_new(); + check_oom(rev); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ X509_REVOKED_set_serialNumber(rev, serial.get()); ++#else + rev->serialNumber = serial.get(); ++#endif + X509_REVOKED_set_revocationDate(rev, d.get_utc()); + + X509_REVOKED_add1_ext_i2d(rev, NID_invalidity_date, +diff -Naurp xca-1.3.2.orig/lib/x509v3ext.cpp xca-1.3.2.new/lib/x509v3ext.cpp +--- xca-1.3.2.orig/lib/x509v3ext.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/x509v3ext.cpp 2017-02-24 01:28:34.508751244 +0100 +@@ -27,8 +27,9 @@ x509v3ext::x509v3ext(const X509_EXTENSIO + + x509v3ext::x509v3ext(const x509v3ext &n) + { ++ ASN1_OCTET_STRING *str = n.getData(); + ext = X509_EXTENSION_new(); +- if (n.ext && n.ext->value && n.ext->value->length > 0) ++ if (str && str->length) + set(n.ext); + } + +@@ -59,9 +60,13 @@ x509v3ext &x509v3ext::create(int nid, co + ext = X509_EXTENSION_new(); + else { + if (ctx && ctx->subject_cert) { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ X509_add_ext(ctx->subject_cert, ext, -1); ++#else + STACK_OF(X509_EXTENSION) **sk; + sk = &ctx->subject_cert->cert_info->extensions; + X509v3_add_ext(sk, ext, -1); ++#endif + } + } + return *this; +@@ -118,6 +123,11 @@ int x509v3ext::getCritical() const + return X509_EXTENSION_get_critical(ext); + } + ++ASN1_OCTET_STRING *x509v3ext::getData() const ++{ ++ return X509_EXTENSION_get_data(ext); ++} ++ + QString x509v3ext::getValue(bool html) const + { + QString text = ""; +@@ -127,7 +137,7 @@ QString x509v3ext::getValue(bool html) c + + ret = X509V3_EXT_print(bio, ext, X509V3_EXT_DEFAULT, 0); + if (ign_openssl_error() || !ret) { +- ret = M_ASN1_OCTET_STRING_print(bio, ext->value); ++ ret = ASN1_STRING_print(bio, (ASN1_STRING *) getData()); + } + if (!ign_openssl_error() && ret) { + long len = BIO_get_mem_data(bio, &p); +@@ -362,8 +372,25 @@ bool x509v3ext::parse_ia5(QString *singl + QString ret; + + if (!str) { +- const unsigned char *p = ext->value->data; +- str = d2i_ASN1_type_bytes(NULL, &p, ext->value->length, TEXTS); ++ const unsigned char *p = getData()->data; ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ long len; ++ int tag, xclass; ++ if (ASN1_get_object(&p, &len, &tag, &xclass, getData()->length) & 0x80) ++ return false; ++ if (tag >= 32) ++ return false; ++ if (!(ASN1_tag2bit(tag) & TEXTS)) ++ return false; ++ if (!(str = ASN1_STRING_type_new(tag))) ++ return false; ++ if (!ASN1_STRING_set(str, p, len)) { ++ ASN1_STRING_free(str); ++ return false; ++ } ++#else ++ str = d2i_ASN1_type_bytes(NULL, &p, getData()->length, TEXTS); ++#endif + if (ign_openssl_error() || !str) + return false; + ret = QString("%2"). +@@ -766,7 +793,7 @@ bool x509v3ext::parse_generic(QString *, + { + const ASN1_OBJECT *o = object(); + QString der, obj = o ? obj2SnOid(o) : QString(""); +- ASN1_OCTET_STRING *v = ext->value; ++ ASN1_OCTET_STRING *v = getData(); + + for (int i=0; ilength; i++) + der += QString(":%1").arg((int)(v->data[i]), 2, 16, QChar('0')); +@@ -963,8 +990,8 @@ X509_EXTENSION *x509v3ext::get() const + + bool x509v3ext::isValid() const + { +- return ext && ext->value && ext->value->length > 0 && +- OBJ_obj2nid(ext->object) != NID_undef; ++ return ext && getData() && getData()->length > 0 && ++ OBJ_obj2nid(X509_EXTENSION_get_object(ext)) != NID_undef; + } + + /*************************************************************/ +@@ -992,7 +1019,7 @@ void extList::genGenericConf(QString *ad + } + } + +-void extList::setStack(STACK_OF(X509_EXTENSION) *st, int start) ++void extList::setStack(const STACK_OF(X509_EXTENSION) *st, int start) + { + clear(); + int cnt = sk_X509_EXTENSION_num(st); +diff -Naurp xca-1.3.2.orig/lib/x509v3ext.h xca-1.3.2.new/lib/x509v3ext.h +--- xca-1.3.2.orig/lib/x509v3ext.h 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/lib/x509v3ext.h 2017-02-23 19:05:02.911757579 +0100 +@@ -33,6 +33,7 @@ class x509v3ext + // bool operator == (const x509v3ext &x) const; + QString getObject() const; + int getCritical() const; ++ ASN1_OCTET_STRING *getData() const; + QString getValue(bool html=false) const; + QString getHtml() const; + X509_EXTENSION *get() const; +@@ -62,7 +63,7 @@ class x509v3ext + class extList : public QList + { + public: +- void setStack(STACK_OF(X509_EXTENSION) *st, int start=0); ++ void setStack(const STACK_OF(X509_EXTENSION) *st, int start=0); + STACK_OF(X509_EXTENSION) *getStack(); + QString getHtml(const QString &sep); + bool delByNid(int nid); +diff -Naurp xca-1.3.2.orig/misc/eku.txt xca-1.3.2.new/misc/eku.txt +--- xca-1.3.2.orig/misc/eku.txt 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/misc/eku.txt 2017-02-25 11:27:02.718360323 +0100 +@@ -19,4 +19,4 @@ msSmartcardLogin + OCSPSigning + id-kp-eapOverPPP + id-kp-eapOverLAN +-id-pkkdcekuoid ++pkInitKDC +diff -Naurp xca-1.3.2.orig/misc/oids.txt xca-1.3.2.new/misc/oids.txt +--- xca-1.3.2.orig/misc/oids.txt 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/misc/oids.txt 2017-02-25 11:26:41.229170758 +0100 +@@ -17,4 +17,4 @@ + # RFC 4334 + 1.3.6.1.5.5.7.3.13: id-kp-eapOverPPP: EAP over PPP + 1.3.6.1.5.5.7.3.14: id-kp-eapOverLAN: EAP over Lan +-1.3.6.1.5.2.3.5: id-pkkdcekuoid: KDC Authentication ++1.3.6.1.5.2.3.5: pkInitKDC: KDC Authentication +diff -Naurp xca-1.3.2.orig/widgets/CertDetail.cpp xca-1.3.2.new/widgets/CertDetail.cpp +--- xca-1.3.2.orig/widgets/CertDetail.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/widgets/CertDetail.cpp 2017-02-19 02:25:19.878040249 +0100 +@@ -194,7 +194,12 @@ void CertDetail::setReq(pki_x509req *req + QString trans; + X509_ATTRIBUTE *att = X509_REQ_get_attr(req->getReq(), i); + ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ nid = OBJ_obj2nid(X509_ATTRIBUTE_get0_object(att)); ++#else + nid = OBJ_obj2nid(att->object); ++#endif ++ + if (X509_REQ_extension_nid(nid)) { + continue; + } +@@ -213,6 +218,13 @@ void CertDetail::setReq(pki_x509req *req + attrLayout->addWidget(label, i, 0); + added++; + ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ int count = X509_ATTRIBUTE_count(att); ++ for (int j = 0; j < count; j++) { ++ label = labelFromAsn1String(X509_ATTRIBUTE_get0_type(att, j)->value.asn1_string); ++ attrLayout->addWidget(label, i, j + 1); ++ } ++#else + if (att->single) { + label = labelFromAsn1String(att->value.single->value.asn1_string); + attrLayout->addWidget(label, i, 1); +@@ -223,6 +235,7 @@ void CertDetail::setReq(pki_x509req *req + label = labelFromAsn1String(sk_ASN1_TYPE_value(att->value.set, j)->value.asn1_string); + attrLayout->addWidget(label, i, j +1); + } ++#endif + } + ASN1_IA5STRING *chal = req->spki_challange(); + if (chal) { +diff -Naurp xca-1.3.2.orig/widgets/hashBox.cpp xca-1.3.2.new/widgets/hashBox.cpp +--- xca-1.3.2.orig/widgets/hashBox.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/widgets/hashBox.cpp 2017-02-19 11:51:03.780788061 +0100 +@@ -152,11 +152,18 @@ void hashBox::setCurrentMD(const EVP_MD + void hashBox::setupHashes(QList nids) + { + QString md = currentText(); ++ int mdtype; ++ + if (!wanted_md.isEmpty()) + md = wanted_md; + clear(); + for (unsigned i=0; itype)) { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ mdtype = EVP_MD_type(hashalgos[i].md); ++#else ++ mdtype = hashalgos[i].md->type; ++#endif ++ if (nids.contains(mdtype)) { + addItem(QString(hashalgos[i].name)); + } + } +diff -Naurp xca-1.3.2.orig/widgets/MainWindow.cpp xca-1.3.2.new/widgets/MainWindow.cpp +--- xca-1.3.2.orig/widgets/MainWindow.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/widgets/MainWindow.cpp 2017-02-19 02:31:51.249857612 +0100 +@@ -866,6 +866,9 @@ void MainWindow::generateDHparam() + bool ok; + int num = QInputDialog::getDouble(this, XCA_TITLE, tr("Diffie-Hellman parameters are needed for different applications, but not handled by XCA.\nPlease enter the DH parameter bits"), + 1024, 1024, 4096, 0, &ok); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ BN_GENCB *cb = NULL; ++#endif + + if (!ok) + return; +@@ -883,7 +886,18 @@ void MainWindow::generateDHparam() + bar->setMinimum(0); + bar->setMaximum(100); + status->addPermanentWidget(bar, 1); ++ ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ cb = BN_GENCB_new(); ++ if (!cb) ++ throw errorEx(""); ++ BN_GENCB_set_old(cb, inc_progress_bar, bar); ++ dh = DH_new(); ++ DH_generate_parameters_ex(dh, num, 2, cb); ++#else + dh = DH_generate_parameters(num, 2, inc_progress_bar, bar); ++#endif ++ + status->removeWidget(bar); + openssl_error(); + +@@ -906,6 +920,10 @@ void MainWindow::generateDHparam() + DH_free(dh); + if (fp) + fclose(fp); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ if (cb) ++ BN_GENCB_free(cb); ++#endif + if (bar) + delete bar; + } +diff -Naurp xca-1.3.2.orig/widgets/MW_database.cpp xca-1.3.2.new/widgets/MW_database.cpp +--- xca-1.3.2.orig/widgets/MW_database.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/widgets/MW_database.cpp 2017-03-21 00:20:02.123053121 +0100 +@@ -277,7 +277,9 @@ void MainWindow::default_database() + if (fp) { + QByteArray ba; + ba = filename2bytearray(fi.canonicalFilePath() + "\n"); +- fwrite(ba.constData(), ba.size(), 1, fp); ++ if (fwrite(ba.constData(), ba.size(), 1, fp)) { ++ /* IGNORE_RESULT */ ++ } + fclose(fp); + } + +diff -Naurp xca-1.3.2.orig/widgets/MW_help.cpp xca-1.3.2.new/widgets/MW_help.cpp +--- xca-1.3.2.orig/widgets/MW_help.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/widgets/MW_help.cpp 2017-02-19 19:15:38.774012956 +0100 +@@ -67,8 +67,8 @@ void MainWindow::about() + { + version = QString("" + "" +- "" +- "" ++ "" ++ "" + "" + "" + "" +diff -Naurp xca-1.3.2.orig/widgets/NewX509_ext.cpp xca-1.3.2.new/widgets/NewX509_ext.cpp +--- xca-1.3.2.orig/widgets/NewX509_ext.cpp 2015-10-10 14:54:12.000000000 +0200 ++++ xca-1.3.2.new/widgets/NewX509_ext.cpp 2017-02-20 02:43:40.512187548 +0100 +@@ -198,6 +198,7 @@ extList NewX509::getAdvanced() + extList elist; + long err_line=0; + STACK_OF(X509_EXTENSION) **sk, *sk_tmp = NULL; ++ const STACK_OF(X509_EXTENSION) *csk; + const char *ext_name = "default"; + int ret, start; + +@@ -223,8 +224,13 @@ extList NewX509::getAdvanced() + } + + if (ext_ctx.subject_cert) { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ csk = X509_get0_extensions(ext_ctx.subject_cert); ++ start = csk? sk_X509_EXTENSION_num(csk): 0; ++#else + sk = &ext_ctx.subject_cert->cert_info->extensions; + start = *sk ? sk_X509_EXTENSION_num(*sk) : 0; ++#endif + } else { + sk = &sk_tmp; + start = 0; +@@ -232,12 +238,24 @@ extList NewX509::getAdvanced() + + X509V3_set_nconf(&ext_ctx, conf); + +- if (X509V3_EXT_add_nconf_sk(conf, &ext_ctx, (char *)ext_name, sk)) { +- openssl_error(); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ if (ext_ctx.subject_cert) { ++ if (X509V3_EXT_add_nconf(conf, &ext_ctx, ++ (char *) ext_name, ext_ctx.subject_cert)) ++ openssl_error(); ++ csk = X509_get0_extensions(ext_ctx.subject_cert); ++ } else ++#endif ++ { ++ if (X509V3_EXT_add_nconf_sk(conf, &ext_ctx, (char *)ext_name, sk)) ++ openssl_error(); ++ csk = *sk; + } +- elist.setStack(*sk, start); +- if (sk == &sk_tmp) ++ ++ elist.setStack(csk, start); ++ if (!ext_ctx.subject_cert) + sk_X509_EXTENSION_pop_free(sk_tmp, X509_EXTENSION_free); ++ + X509V3_set_nconf(&ext_ctx, NULL); + NCONF_free(conf); + BIO_free(bio); +@@ -317,12 +335,16 @@ extList NewX509::getExtDuplicates() + { + int i, start, cnt, n1, n; + x509v3ext e; +- STACK_OF(X509_EXTENSION) *sk; ++ const STACK_OF(X509_EXTENSION) *sk; + extList el_dup, el; + QString olist; + + if (ext_ctx.subject_cert) { ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L ++ sk = X509_get0_extensions(ext_ctx.subject_cert); ++#else + sk = ext_ctx.subject_cert->cert_info->extensions; ++#endif + } else + return el_dup; + diff --git a/xca.spec b/xca.spec index ab78304..4d5fd5b 100644 --- a/xca.spec +++ b/xca.spec @@ -1,12 +1,13 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 1.3.2 -Release: 3%{?dist} +Release: 4%{?dist} License: BSD Group: Applications/Productivity URL: http://xca.hohnstaedt.de/ Source0: http://downloads.sourceforge.net/sourceforge/xca/%{version}/%{name}-%{version}.tar.gz Patch1: xca-1.3.2-oidfieldcursor.patch +Patch2: xca-1.3.2-openssl11.patch BuildRequires: qt4-devel openssl-devel BuildRequires: xdg-utils BuildRequires: ImageMagick @@ -36,6 +37,7 @@ format, portable across operating systems. %setup -q %patch1 -p 1 -b .oidfieldcursor +%patch2 -p 1 -b .openssl11 #------------------------------------------------------------------------------- @@ -153,14 +155,18 @@ fi #------------------------------------------------------------------------------- %changelog +#------------------------------------------------------------------------------- + +* Thu Mar 23 2017 Patrick Monnerat 1.3.2-4 +- Patch "openssl11" for OpenSSL 1.1 support. + * Sat Feb 11 2017 Fedora Release Engineering - 1.3.2-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + * Fri Feb 05 2016 Fedora Release Engineering - 1.3.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild -#------------------------------------------------------------------------------- - * Mon Oct 26 2015 Patrick Monnerat 1.3.2-1 - New upstream release. - Patch "oidfieldcursor" to restore normal cursor behavior on OID resolver From 399cc9603131cc4c54f1232b4751cde39c16fac9 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 27 Jul 2017 21:54:31 +0000 Subject: [PATCH 29/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 4d5fd5b..b62bd1f 100644 --- a/xca.spec +++ b/xca.spec @@ -1,7 +1,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 1.3.2 -Release: 4%{?dist} +Release: 5%{?dist} License: BSD Group: Applications/Productivity URL: http://xca.hohnstaedt.de/ @@ -155,6 +155,9 @@ fi #------------------------------------------------------------------------------- %changelog +* Thu Jul 27 2017 Fedora Release Engineering - 1.3.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + #------------------------------------------------------------------------------- * Thu Mar 23 2017 Patrick Monnerat 1.3.2-4 From c972a8a179c6a67576ec7218cd7e9e053a96fdf4 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 3 Aug 2017 10:29:37 +0000 Subject: [PATCH 30/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index b62bd1f..f429a36 100644 --- a/xca.spec +++ b/xca.spec @@ -1,7 +1,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 1.3.2 -Release: 5%{?dist} +Release: 6%{?dist} License: BSD Group: Applications/Productivity URL: http://xca.hohnstaedt.de/ @@ -155,6 +155,9 @@ fi #------------------------------------------------------------------------------- %changelog +* Thu Aug 03 2017 Fedora Release Engineering - 1.3.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + * Thu Jul 27 2017 Fedora Release Engineering - 1.3.2-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild From 051aa044c0b68def48c3e9c8d8b33b06192919d1 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 7 Aug 2017 19:39:53 +0200 Subject: [PATCH 31/72] Remove xca_db_stat from install (fixes FTBFS on rawhide). --- xca.spec | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/xca.spec b/xca.spec index f429a36..7d5d029 100644 --- a/xca.spec +++ b/xca.spec @@ -1,7 +1,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 1.3.2 -Release: 6%{?dist} +Release: 7%{?dist} License: BSD Group: Applications/Productivity URL: http://xca.hohnstaedt.de/ @@ -62,6 +62,9 @@ touch -r img/xdb.ico xdb.png make destdir="${RPM_BUILD_ROOT}" install +# Do not include db statistics program and man. +find "${RPM_BUILD_ROOT}" -name 'xca_db_stat*' -delete + # HACK: check whether workarounds below are still necessary if test ! -e "${RPM_BUILD_ROOT}%{_datadir}/xca/crl.png" then install -d -m 755 \ @@ -141,7 +144,6 @@ fi %doc AUTHORS COPYRIGHT %doc doc/*.html %{_bindir}/* -%exclude %{_bindir}/xca_db_stat %dir %{_datadir}/xca %{_datadir}/xca/*.png %{_datadir}/xca/*.txt @@ -155,14 +157,17 @@ fi #------------------------------------------------------------------------------- %changelog +#------------------------------------------------------------------------------- + +* Mon Aug 7 2017 Patrick Monnerat 1.3.2-5 +- Remove xca_db_stat from install (fixes FTBFS on rawhide). + * Thu Aug 03 2017 Fedora Release Engineering - 1.3.2-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild * Thu Jul 27 2017 Fedora Release Engineering - 1.3.2-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild -#------------------------------------------------------------------------------- - * Thu Mar 23 2017 Patrick Monnerat 1.3.2-4 - Patch "openssl11" for OpenSSL 1.1 support. From ded5f1e47d723278fc25c4b872084161709e5692 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 7 Aug 2017 19:41:21 +0200 Subject: [PATCH 32/72] Fix changelog release typo. --- xca.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 7d5d029..b00c916 100644 --- a/xca.spec +++ b/xca.spec @@ -159,7 +159,7 @@ fi %changelog #------------------------------------------------------------------------------- -* Mon Aug 7 2017 Patrick Monnerat 1.3.2-5 +* Mon Aug 7 2017 Patrick Monnerat 1.3.2-7 - Remove xca_db_stat from install (fixes FTBFS on rawhide). * Thu Aug 03 2017 Fedora Release Engineering - 1.3.2-6 From f3a22d4e2e0953332a052af5ec9f0a83217f2e4f Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 22 Jan 2018 02:39:10 +0100 Subject: [PATCH 33/72] New upstream release 1.4.0. Use qt5. Remove obsolete rpm scriptlets. --- .gitignore | 1 + sources | 2 +- xca-1.3.2-oidfieldcursor.patch | 13 - xca-1.3.2-openssl11.patch | 2641 -------------------------------- xca.spec | 46 +- 5 files changed, 11 insertions(+), 2692 deletions(-) delete mode 100644 xca-1.3.2-oidfieldcursor.patch delete mode 100644 xca-1.3.2-openssl11.patch diff --git a/.gitignore b/.gitignore index 0ee626e..fe93dd2 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ xca-0.8.1.tar.gz /xca-1.0.0.tar.gz /xca-1.1.0.tar.gz /xca-1.3.2.tar.gz +/xca-1.4.0.tar.gz diff --git a/sources b/sources index d317eb4..7e5f9ac 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -f9528164f46a78c7a2373778bc019c48 xca-1.3.2.tar.gz +SHA512 (xca-1.4.0.tar.gz) = b220adc7551cf853037c4f5ef0cdd8eef1dda44d0fde634cfde35605396b988452bdbc97a60459911f663d6d6977d426f27f47a46a482d1a30331ac06862c1c9 diff --git a/xca-1.3.2-oidfieldcursor.patch b/xca-1.3.2-oidfieldcursor.patch deleted file mode 100644 index 86aa5f7..0000000 --- a/xca-1.3.2-oidfieldcursor.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -Naurp xca-1.3.2.orig/widgets/OidResolver.cpp xca-1.3.2.new/widgets/OidResolver.cpp ---- xca-1.3.2.orig/widgets/OidResolver.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/widgets/OidResolver.cpp 2015-10-19 12:22:10.035130081 +0200 -@@ -23,7 +23,8 @@ void OidResolver::searchOid(QString s) - bool ok; - int n; - -- input->setText(s); -+ if (input->text() != s) // Avoid moving the cursor at end if unchanged. -+ input->setText(s); - s = s.trimmed(); - n = s.toUInt(&ok); - if (!ok) diff --git a/xca-1.3.2-openssl11.patch b/xca-1.3.2-openssl11.patch deleted file mode 100644 index bfe4173..0000000 --- a/xca-1.3.2-openssl11.patch +++ /dev/null @@ -1,2641 +0,0 @@ -diff -Naurp xca-1.3.2.orig/lib/db_base.cpp xca-1.3.2.new/lib/db_base.cpp ---- xca-1.3.2.orig/lib/db_base.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/db_base.cpp 2017-03-21 00:19:34.954826051 +0100 -@@ -641,7 +641,9 @@ void db_base::store(QModelIndexList inde - throw errorEx(tr("Error opening file: '%1': %2"). - arg(s).arg(strerror(errno)), class_name); - } -- fwrite(pem.toLatin1(), pem.size(), 1, fp); -+ if (fwrite(pem.toLatin1(), pem.size(), 1, fp)) { -+ /* IGNORE_RESULT */ -+ } - fclose(fp); - } - catch (errorEx &err) { -diff -Naurp xca-1.3.2.orig/lib/db_key.cpp xca-1.3.2.new/lib/db_key.cpp ---- xca-1.3.2.orig/lib/db_key.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/db_key.cpp 2017-02-18 14:18:10.624717655 +0100 -@@ -297,14 +297,14 @@ void db_key::store(QModelIndex index) - break; - case exportType::PEM_private_encrypt: - enc = EVP_des_ede3_cbc(); -- /* fall */ -+ /* fallthrough */ - case exportType::PEM_private: - privkey->writeKey(fname, enc, - PwDialog::pwCallback, true); - break; - case exportType::PKCS8_encrypt: - enc = EVP_des_ede3_cbc(); -- /* fall */ -+ /* fallthrough */ - case exportType::PKCS8: - privkey->writePKCS8(fname, enc, - PwDialog::pwCallback, true); -diff -Naurp xca-1.3.2.orig/lib/db_x509.cpp xca-1.3.2.new/lib/db_x509.cpp ---- xca-1.3.2.orig/lib/db_x509.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/db_x509.cpp 2017-02-18 14:20:23.580116007 +0100 -@@ -580,7 +580,6 @@ void db_x509::newCert(NewX509 *dlg) - } - if (tempkey != NULL) - delete(tempkey); -- tempkey = NULL; - } - - catch (errorEx &err) { -diff -Naurp xca-1.3.2.orig/lib/entropy.cpp xca-1.3.2.new/lib/entropy.cpp ---- xca-1.3.2.orig/lib/entropy.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/entropy.cpp 2017-02-24 03:01:32.002964936 +0100 -@@ -141,8 +141,14 @@ Entropy::~Entropy() - unsigned char buf[1024]; - seed_rng(); - f.setPermissions(QFile::ReadOwner|QFile::WriteOwner); -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ RAND_bytes(buf, sizeof buf); -+#else - RAND_pseudo_bytes(buf, sizeof buf); -- f.write((char*)buf, sizeof buf); -+#endif -+ -+ f.write((char*)buf, sizeof buf); - f.close(); - } - #ifdef DEBUG_ENTROPY -diff -Naurp xca-1.3.2.orig/lib/func.cpp xca-1.3.2.new/lib/func.cpp ---- xca-1.3.2.orig/lib/func.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/func.cpp 2017-02-25 12:44:19.711229987 +0100 -@@ -395,9 +395,21 @@ void inc_progress_bar(int, int, void *p) - - static long mem_ctrl(BIO *b, int cmd, long num, void *ptr) - { -- BUF_MEM *bm = (BUF_MEM *)b->ptr; -- if (!bm->data || !(b->flags & BIO_FLAGS_MEM_RDONLY)) -- return BIO_s_mem()->ctrl(b, cmd, num, ptr); -+ BUF_MEM *bm; -+ int flags; -+ long (*ctrl)(BIO *, int, long, void *); -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ BIO_get_mem_ptr(b, &bm); -+ flags = BIO_get_flags(b); -+ ctrl = BIO_meth_get_ctrl((BIO_METHOD *) BIO_s_mem()); -+#else -+ bm = (BUF_MEM *)b->ptr; -+ flags = b->flags; -+ ctrl = BIO_s_mem()->ctrl; -+#endif -+ if (!bm->data || !(flags & BIO_FLAGS_MEM_RDONLY)) -+ return ctrl(b, cmd, num, ptr); - - switch (cmd) { - case BIO_C_FILE_SEEK: -@@ -405,35 +417,92 @@ static long mem_ctrl(BIO *b, int cmd, lo - num = bm->max; - bm->data -= (bm->max - bm->length) - num; - bm->length = bm->max - num; -+ /* fallthrough */ - case BIO_C_FILE_TELL: - return bm->max - bm->length; - } -- return BIO_s_mem()->ctrl(b, cmd, num, ptr); -+ return ctrl(b, cmd, num, ptr); - } - --void BIO_seekable_romem(BIO *b) -+BIO_METHOD *BIO_METHOD_copy(const BIO_METHOD *src, BIO_METHOD *dst = NULL) - { -- static BIO_METHOD *mymeth = NULL; -- static BIO_METHOD _meth; -+ if (src) -+ return NULL; - -- if (!(b->flags & BIO_FLAGS_MEM_RDONLY) || -- (b->method->type != BIO_TYPE_MEM)) -- { -- return; -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ if (!dst) { -+ // The only way to get the type and name of the source method is -+ // to bind it to a BIO. -+ BIO *bio = BIO_new(src); -+ if (!bio) -+ return NULL; -+ if (!(dst = BIO_meth_new(BIO_method_type(bio), BIO_method_name(bio)))) { -+ BIO_free(bio); -+ return NULL; -+ } -+ BIO_free(bio); - } -+ -+ BIO_meth_set_write(dst, BIO_meth_get_write((BIO_METHOD *) src)); -+ BIO_meth_set_read(dst, BIO_meth_get_read((BIO_METHOD *) src)); -+ BIO_meth_set_puts(dst, BIO_meth_get_puts((BIO_METHOD *) src)); -+ BIO_meth_set_gets(dst, BIO_meth_get_gets((BIO_METHOD *) src)); -+ BIO_meth_set_ctrl(dst, BIO_meth_get_ctrl((BIO_METHOD *) src)); -+ BIO_meth_set_create(dst, BIO_meth_get_create((BIO_METHOD *) src)); -+ BIO_meth_set_destroy(dst, BIO_meth_get_destroy((BIO_METHOD *) src)); -+ BIO_meth_set_callback_ctrl(dst, -+ BIO_meth_get_callback_ctrl((BIO_METHOD *) src)); -+#else -+ if (!dst) -+ if (!(dst = (BIO_METHOD *) OPENSSL_malloc(sizeof *dst))) -+ return NULL; -+ *dst = *src; -+#endif -+ -+ return dst; -+} -+ -+BIO_METHOD *BIO_METHOD_seekable_romem() -+{ -+ static BIO_METHOD *mymeth = NULL; -+ - if (!mymeth) { -- _meth = *BIO_s_mem(); -- _meth.ctrl = mem_ctrl; -- mymeth = &_meth; -+ mymeth = BIO_METHOD_copy(BIO_s_mem()); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ BIO_meth_set_ctrl(mymeth, mem_ctrl); -+#else -+ mymeth->ctrl = mem_ctrl; -+#endif - } -- b->method = mymeth; -+ -+ return mymeth; - } - - BIO *BIO_QBA_mem_buf(QByteArray &a) - { -- BIO *b = BIO_new_mem_buf(a.data(), a.size()); -- BIO_seekable_romem(b); -- return b; -+ BIO *bio; -+ BIO_METHOD *meth = BIO_METHOD_seekable_romem(); -+ -+ if (!meth) -+ return NULL; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ bio = BIO_new(meth); -+ if (bio) { -+ BUF_MEM bm; -+ bm.data = a.data(); -+ bm.length = a.size(); -+ bm.max = a.size(); -+ BIO_set_mem_buf(bio, &bm, BIO_CLOSE); -+ BIO_set_flags(bio, BIO_get_flags(bio) | BIO_FLAGS_MEM_RDONLY); -+ } -+#else -+ bio = BIO_new_mem_buf(a.data(), a.size()); -+ if (bio) -+ bio->method = meth; -+#endif -+ -+ return bio; - } - - bool translate_dn = false; -diff -Naurp xca-1.3.2.orig/lib/pkcs11.cpp xca-1.3.2.new/lib/pkcs11.cpp ---- xca-1.3.2.orig/lib/pkcs11.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/pkcs11.cpp 2017-03-22 01:05:02.792839419 +0100 -@@ -458,7 +458,13 @@ pk11_attr_data pkcs11::findUniqueID(unsi - while (1) { - unsigned char buf[ID_LEN]; - pk11_attlist atts(class_att); -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ RAND_bytes(buf, ID_LEN); -+#else - RAND_pseudo_bytes(buf, ID_LEN); -+#endif -+ - id.setValue(buf, ID_LEN); - atts << id; - if (objectList(atts).count() == 0) -@@ -641,7 +647,8 @@ int pkcs11::encrypt(int flen, const unsi - return size; - } - --#if OPENSSL_VERSION_NUMBER < 0x10000000L -+#if OPENSSL_VERSION_NUMBER < 0x10000000L || \ -+ OPENSSL_VERSION_NUMBER >= 0x10100000L - static int rsa_privdata_free(RSA *rsa) - { - pkcs11 *priv = (pkcs11*)RSA_get_app_data(rsa); -@@ -653,12 +660,19 @@ static int rsa_encrypt(int flen, const u - unsigned char *to, RSA * rsa, int padding) - { - pkcs11 *priv = (pkcs11*)RSA_get_app_data(rsa); -+ const BIGNUM *n = NULL; - - if (padding != RSA_PKCS1_PADDING) { - return -1; - } -- return priv->encrypt(flen, from, to, BN_num_bytes(rsa->n), -- CKM_RSA_PKCS); -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ RSA_get0_key(rsa, &n, NULL, NULL); -+#else -+ n = rsa->n; -+#endif -+ -+ return priv->encrypt(flen, from, to, BN_num_bytes(n), CKM_RSA_PKCS); - } - - static int rsa_decrypt(int flen, const unsigned char *from, -@@ -672,36 +686,235 @@ static int rsa_decrypt(int flen, const u - return priv->decrypt(flen, from, to, flen, CKM_RSA_PKCS); - } - -+static int dsa_privdata_free(DSA *dsa) -+{ -+ pkcs11 *p11 = (pkcs11*)DSA_get_ex_data(dsa, 0); -+ delete p11; -+ return 0; -+} -+ -+static DSA_SIG *dsa_sign(const unsigned char *dgst, int dlen, DSA *dsa) -+{ -+ int len, rs_len; -+ unsigned char rs_buf[128]; -+ pkcs11 *p11 = (pkcs11*)DSA_get_ex_data(dsa, 0); -+ DSA_SIG *dsa_sig = DSA_SIG_new(); -+ BIGNUM *r, *s; -+ -+ // siglen is unsigned and can't cope with -1 as return value -+ len = p11->encrypt(dlen, dgst, rs_buf, sizeof rs_buf, CKM_DSA); -+ if (len & 0x01) // Must be even -+ goto out; -+ -+ rs_len = len / 2; -+ r = BN_bin2bn(rs_buf, rs_len, NULL); -+ s = BN_bin2bn(rs_buf + rs_len, rs_len, NULL); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ DSA_SIG_set0(dsa_sig, r, s); -+#else -+ dsa_sig->r = r; -+ dsa_sig->s = s; -+#endif -+ if (r && s) -+ return dsa_sig; -+out: -+ DSA_SIG_free(dsa_sig); -+ ign_openssl_error(); -+ return NULL; -+} -+ -+#if !defined(OPENSSL_NO_EC) && OPENSSL_VERSION_NUMBER >= 0x10100000L -+// OpenSSL < 1.0.0 have no EC_KEY_METHOD. -+ -+static void ec_privdata_free(EC_KEY *ec) -+{ -+ pkcs11 *p11 = (pkcs11*)EC_KEY_get_ex_data(ec, 0); -+ delete p11; -+} -+ -+static int ec_sign_setup(EC_KEY *ec, BN_CTX *ctx, BIGNUM **kinvp, BIGNUM **rp) -+{ -+ (void) ec; -+ (void) ctx; -+ (void) kinvp; -+ (void) rp; -+ return 1; -+} -+ -+static ECDSA_SIG *ec_do_sign(const unsigned char *dgst, int dgst_len, -+ const BIGNUM *in_kinv, const BIGNUM *in_r, -+ EC_KEY *ec) -+{ -+ int len, rs_len; -+ unsigned char rs_buf[512]; -+ ECDSA_SIG *ec_sig = ECDSA_SIG_new(); -+ pkcs11 *p11 = (pkcs11 *) EC_KEY_get_ex_data(ec, 0); -+ BIGNUM *r, *s; -+ -+ (void) in_kinv; -+ (void) in_r; -+ -+ // siglen is unsigned and can' cope with -1 as return value -+ len = p11->encrypt(dgst_len, dgst, rs_buf, sizeof rs_buf, CKM_ECDSA); -+ if (len & 0x01) // Must be even -+ goto out; -+ /* The buffer contains r and s concatenated -+ * Both of equal size -+ * pkcs-11v2-20.pdf chapter 12.13.1, page 232 -+ */ -+ rs_len = len / 2; -+ r = BN_bin2bn(rs_buf, rs_len, NULL); -+ s = BN_bin2bn(rs_buf + rs_len, rs_len, NULL); -+ ECDSA_SIG_set0(ec_sig, r, s); -+ if (r && s) -+ return ec_sig; -+ -+out: -+ ECDSA_SIG_free(ec_sig); -+ ign_openssl_error(); -+ return NULL; -+} -+ -+static int ec_sign(int type, const unsigned char *dgst, int dlen, -+ unsigned char *sig, unsigned int *siglen, -+ const BIGNUM *kinv, const BIGNUM *r, EC_KEY *ec) -+{ -+ ECDSA_SIG *ec_sig; -+ int ret = 0; -+ int len; -+ -+ (void) type; -+ ec_sig = ec_do_sign(dgst, dlen, kinv, r, ec); -+ if (!ec_sig) -+ return 0; -+ -+ len = i2d_ECDSA_SIG(ec_sig, &sig); -+ if (len <= 0) -+ goto out; -+ *siglen = len; -+ ret = 1; -+out: -+ ECDSA_SIG_free(ec_sig); -+ ign_openssl_error(); -+ return ret; -+} -+#endif -+ - EVP_PKEY *pkcs11::getPrivateKey(EVP_PKEY *pub, CK_OBJECT_HANDLE obj) - { -- static RSA_METHOD rsa_meth, *ops = NULL; -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ static RSA_METHOD rsa_meth_buf; -+ static DSA_METHOD dsa_meth_buf; -+#endif -+ static RSA_METHOD *rsa_meth = NULL; -+ static DSA_METHOD *dsa_meth = NULL; -+#if !defined(OPENSSL_NO_EC) && OPENSSL_VERSION_NUMBER >= 0x10100000L -+ static EC_KEY_METHOD *ec_key_meth = NULL; -+ EC_KEY *ec; -+#endif - RSA *rsa; -- EVP_PKEY *evp; -+ DSA *dsa; -+ EVP_PKEY *evp = NULL; -+ int keytype; - - p11slot.isValid(); - -- switch (EVP_PKEY_type(pub->type)) { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ keytype = EVP_PKEY_id(pub); -+#else -+ keytype = pub->type; -+#endif -+ -+ switch (EVP_PKEY_type(keytype)) { - case EVP_PKEY_RSA: -- rsa = RSAPublicKey_dup(pub->pkey.rsa); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ rsa = EVP_PKEY_get0_RSA(pub); -+#else -+ rsa = pub->pkey.rsa; -+#endif -+ rsa = RSAPublicKey_dup(rsa); - openssl_error(); -- if (!ops) { -- rsa_meth = *RSA_get_default_method(); -- rsa_meth.rsa_priv_enc = rsa_encrypt; -- rsa_meth.rsa_priv_dec = rsa_decrypt; -- rsa_meth.finish = rsa_privdata_free; -- ops = &rsa_meth; -+ if (!rsa_meth) { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ rsa_meth = RSA_meth_dup(RSA_get_default_method()); -+ RSA_meth_set_priv_enc(rsa_meth, rsa_encrypt); -+ RSA_meth_set_priv_dec(rsa_meth, rsa_decrypt); -+ RSA_meth_set_finish(rsa_meth, rsa_privdata_free); -+#else -+ rsa_meth = &rsa_meth_buf; -+ *rsa_meth = *RSA_get_default_method(); -+ rsa_meth->rsa_priv_enc = rsa_encrypt; -+ rsa_meth->rsa_priv_dec = rsa_decrypt; -+ rsa_meth->finish = rsa_privdata_free; -+#endif - } - p11obj = obj; -- RSA_set_method(rsa, ops); -+ RSA_set_method(rsa, rsa_meth); - RSA_set_app_data(rsa, this); - evp = EVP_PKEY_new(); - openssl_error(); - EVP_PKEY_assign_RSA(evp, rsa); -- return evp; -+ break; -+ case EVP_PKEY_DSA: -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ dsa = EVP_PKEY_get0_DSA(pub); -+#else -+ dsa = pub->pkey.dsa; -+#endif -+ dsa = DSAparams_dup(dsa); -+ openssl_error(); -+ if (!dsa_meth) { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ dsa_meth = DSA_meth_dup(DSA_get_default_method()); -+ DSA_meth_set_sign(dsa_meth, dsa_sign); -+ DSA_meth_set_finish(dsa_meth, dsa_privdata_free); -+#else -+ dsa_meth = &dsa_meth_buf; -+ *dsa_meth = *DSA_get_default_method(); -+ dsa_meth->dsa_do_sign = dsa_sign; -+ dsa_meth->finish = dsa_privdata_free; -+#endif -+ } -+ p11obj = obj; -+ DSA_set_method(dsa, dsa_meth); -+ DSA_set_ex_data(dsa, 0, this); -+ evp = EVP_PKEY_new(); -+ openssl_error(); -+ EVP_PKEY_assign_DSA(evp, dsa); -+ break; -+#if !defined(OPENSSL_NO_EC) && OPENSSL_VERSION_NUMBER >= 0x10100000L - case EVP_PKEY_EC: -- return NULL; -+ ec = EVP_PKEY_get0_EC_KEY(pub); -+ ec = EC_KEY_dup(ec); -+ openssl_error(); -+ if (!ec_key_meth) { -+ int (*ec_init_proc)(EC_KEY *key); -+ void (*ec_finish_proc)(EC_KEY *key); -+ int (*ec_copy_proc)(EC_KEY *dest, const EC_KEY *src); -+ int (*ec_set_group_proc)(EC_KEY *key, const EC_GROUP *grp); -+ int (*ec_set_private_proc)(EC_KEY *key, const BIGNUM *priv_key); -+ int (*ec_set_public_proc)(EC_KEY *key, const EC_POINT *pub_key); -+ -+ ec_key_meth = EC_KEY_METHOD_new(EC_KEY_get_default_method()); -+ EC_KEY_METHOD_set_sign(ec_key_meth, -+ ec_sign, ec_sign_setup, ec_do_sign); -+ EC_KEY_METHOD_get_init(ec_key_meth, &ec_init_proc, &ec_finish_proc, -+ &ec_copy_proc, &ec_set_group_proc, -+ &ec_set_private_proc, &ec_set_public_proc); -+ EC_KEY_METHOD_set_init(ec_key_meth, ec_init_proc, ec_privdata_free, -+ ec_copy_proc, ec_set_group_proc, -+ ec_set_private_proc, ec_set_public_proc); -+ } -+ p11obj = obj; -+ EC_KEY_set_method(ec, ec_key_meth); -+ EC_KEY_set_ex_data(ec, 0, this); -+ evp = EVP_PKEY_new(); -+ openssl_error(); -+ EVP_PKEY_assign_EC_KEY(evp, ec); -+ break; -+#endif - } -- return NULL; -+ return evp; - } - #else - -@@ -770,6 +983,7 @@ static int eng_pmeth_ctrl_ec(EVP_PKEY_CT - case NID_ecdsa_with_SHA1: - fprintf(stderr, "%s: NID_ecdsa_with_SHA1 unexpected\n", - __func__); -+ /* fallthrough */ - case NID_sha1: - case NID_sha224: - case NID_sha256: -diff -Naurp xca-1.3.2.orig/lib/pki_crl.cpp xca-1.3.2.new/lib/pki_crl.cpp ---- xca-1.3.2.orig/lib/pki_crl.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/pki_crl.cpp 2017-02-25 12:37:27.939303062 +0100 -@@ -80,7 +80,22 @@ void pki_crl::fload(const QString fname) - - QString pki_crl::getSigAlg() - { -- QString alg = OBJ_nid2ln(OBJ_obj2nid(crl->sig_alg->algorithm)); -+ QString alg; -+ const ASN1_OBJECT *paobj; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ const ASN1_BIT_STRING *psig; -+ const X509_ALGOR *palg; -+ int pptype; -+ const void *ppval; -+ -+ X509_CRL_get0_signature(crl, &psig, &palg); -+ X509_ALGOR_get0(&paobj, &pptype, &ppval, palg); -+#else -+ paobj = crl->sig_alg->algorithm; -+#endif -+ -+ alg = OBJ_nid2ln(OBJ_obj2nid(paobj)); - return alg; - } - -@@ -90,15 +105,25 @@ void pki_crl::createCrl(const QString d, - issuer = iss; - if (!iss) - my_error(tr("No issuer given")); -- crl->crl->issuer = issuer->getSubject().get(); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ X509_CRL_set_version(crl, 1); /* version 2 CRL */ -+ X509_CRL_set_issuer_name(crl, issuer->getSubject().get()); -+#else - a1int version = 1; /* version 2 CRL */ - crl->crl->version = version.get(); -+ crl->crl->issuer = issuer->getSubject().get(); -+#endif - pki_openssl_error(); - } - - a1int pki_crl::getVersion() - { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ a1int a(X509_CRL_get_version(crl)); -+#else - a1int a(crl->crl->version); -+#endif -+ - return a; - } - -@@ -175,7 +200,11 @@ bool pki_crl::visible() - return true; - if (getSigAlg().contains(limitPattern)) - return true; -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ el.setStack(X509_CRL_get0_extensions(crl)); -+#else - el.setStack(crl->crl->extensions); -+#endif - return el.search(limitPattern); - } - -@@ -224,24 +253,57 @@ BIO *pki_crl::pem(BIO *b, int format) - a1time pki_crl::getLastUpdate() - { - a1time a; -- if (crl && crl->crl) -- a.set(crl->crl->lastUpdate); -+ const ASN1_TIME *at = NULL; -+ -+ if (crl) -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ at = X509_CRL_get0_lastUpdate(crl); -+#else -+ if (crl->crl) -+ at = crl->crl->lastUpdate; -+#endif -+ -+ if (at) -+ a.set(at); -+ - return a; - } - - a1time pki_crl::getNextUpdate() - { - a1time a; -- if (crl && crl->crl) -- a.set(crl->crl->nextUpdate); -+ const ASN1_TIME *at = NULL; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ at = X509_CRL_get0_nextUpdate(crl); -+#else -+ if (crl->crl) -+ at = crl->crl->nextUpdate; -+#endif -+ -+ if (at) -+ a.set(at); -+ - return a; - } - - int pki_crl::numRev() - { -- if (crl && crl->crl && crl->crl->revoked) -- return sk_X509_REVOKED_num(crl->crl->revoked); -- return 0; -+ int n = 0; -+ STACK_OF(X509_REVOKED) *st = NULL; -+ -+ if (crl) -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ st = X509_CRL_get_REVOKED(crl); -+#else -+ if (crl->crl) -+ st = crl->crl->revoked; -+#endif -+ -+ if (st) -+ n = sk_X509_REVOKED_num(st); -+ -+ return n; - } - - x509revList pki_crl::getRevList() -@@ -249,10 +311,20 @@ x509revList pki_crl::getRevList() - x509revList ret; - int i, num = numRev(); - -- for (i=0; icrl->revoked, i)); -- pki_openssl_error(); -- ret << r; -+ if (num) { -+ STACK_OF(X509_REVOKED) *st; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ st = X509_CRL_get_REVOKED(crl); -+#else -+ st = crl->crl->revoked; -+#endif -+ -+ for (i=0; icrl && crl->crl->issuer) { -- x.set(crl->crl->issuer); -- } -- return x ; -+ X509_NAME *iss = NULL; -+ -+ if (crl) -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ iss = X509_CRL_get_issuer(crl); -+#else -+ if (crl->crl) -+ iss = crl->crl->issuer; -+#endif -+ -+ if (iss) -+ x.set(iss); -+ -+ return x; - } - - bool pki_crl::verify(pki_key *key) - { - bool ret=false; -- if (crl && crl->crl && key) { -+ if (crl && key) { - ret = (X509_CRL_verify(crl, key->getPubKey()) == 1); - pki_ign_openssl_error(); - } -@@ -310,7 +392,12 @@ x509v3ext pki_crl::getExtByNid(int nid) - { - extList el; - x509v3ext e; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ el.setStack(X509_CRL_get0_extensions(crl)); -+#else - el.setStack(crl->crl->extensions); -+#endif - - for (int i=0; i< el.count(); i++){ - if (el[i].nid() == nid) return el[i]; -@@ -321,7 +408,13 @@ x509v3ext pki_crl::getExtByNid(int nid) - QString pki_crl::printV3ext() - { - extList el; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ el.setStack(X509_CRL_get0_extensions(crl)); -+#else - el.setStack(crl->crl->extensions); -+#endif -+ - QString text = el.getHtml("
"); - pki_openssl_error(); - return text; -diff -Naurp xca-1.3.2.orig/lib/pki_evp.cpp xca-1.3.2.new/lib/pki_evp.cpp ---- xca-1.3.2.orig/lib/pki_evp.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/pki_evp.cpp 2017-02-21 19:24:51.287533206 +0100 -@@ -31,7 +31,11 @@ QPixmap *pki_evp::icon[2]= { NULL, NULL - - void pki_evp::init(int type) - { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ EVP_PKEY_set_type(key, type); -+#else - key->type = type; -+#endif - class_name = "pki_evp"; - ownPass = ptCommon; - dataVersion=2; -@@ -76,6 +80,11 @@ void pki_evp::setOwnPass(enum passType x - void pki_evp::generate(int bits, int type, QProgressBar *progress, int curve_nid) - { - Entropy::seed_rng(); -+ RSA *rsakey = NULL; -+ DSA *dsakey = NULL; -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ BN_GENCB *cb = NULL; -+#endif - - #ifdef OPENSSL_NO_EC - (void)curve_nid; -@@ -86,17 +95,54 @@ void pki_evp::generate(int bits, int typ - - switch (type) { - case EVP_PKEY_RSA: -- RSA *rsakey; -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ BIGNUM *e; -+ e = BN_new(); -+ if (e) { -+ if (BN_set_word(e, 0x10001)) { -+ cb = BN_GENCB_new(); -+ if (cb) { -+ BN_GENCB_set_old(cb, inc_progress_bar, progress); -+ rsakey = RSA_new(); -+ if (rsakey) { -+ if (!RSA_generate_key_ex(rsakey, bits, e, cb)) { -+ RSA_free(rsakey); -+ rsakey = NULL; -+ } -+ } -+ BN_GENCB_free(cb); -+ } -+ } -+ BN_clear_free(e); -+ } -+#else - rsakey = RSA_generate_key(bits, 0x10001, inc_progress_bar, - progress); -+#endif -+ - if (rsakey) - EVP_PKEY_assign_RSA(key, rsakey); - break; - case EVP_PKEY_DSA: -- DSA *dsakey; - progress->setMaximum(500); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ cb = BN_GENCB_new(); -+ if (cb) { -+ BN_GENCB_set_old(cb, inc_progress_bar, progress); -+ dsakey = DSA_new(); -+ if (dsakey) { -+ if (!DSA_generate_parameters_ex(dsakey, bits, -+ NULL, 0, NULL, NULL, cb)) { -+ DSA_free(dsakey); -+ dsakey = NULL; -+ } -+ } -+ BN_GENCB_free(cb); -+ } -+#else - dsakey = DSA_generate_parameters(bits, NULL, 0, NULL, NULL, - inc_progress_bar, progress); -+#endif - DSA_generate_key(dsakey); - if (dsakey) - EVP_PKEY_assign_DSA(key, dsakey); -@@ -132,7 +178,7 @@ void pki_evp::generate(int bits, int typ - pki_evp::pki_evp(const pki_evp *pk) - :pki_key(pk) - { -- init(pk->key->type); -+ init(pk->getKeyType()); - pki_openssl_error(); - ownPass = pk->ownPass; - encKey = pk->encKey; -@@ -157,15 +203,49 @@ pki_evp::pki_evp(EVP_PKEY *pkey) - - static bool EVP_PKEY_isPrivKey(EVP_PKEY *key) - { -- switch (EVP_PKEY_type(key->type)) { -+ int keytype; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ keytype = EVP_PKEY_id(key); -+#else -+ keytype = key->type; -+#endif -+ -+ switch (EVP_PKEY_type(keytype)) { - case EVP_PKEY_RSA: -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ RSA *rsa; -+ const BIGNUM *d; -+ d = NULL; -+ rsa = EVP_PKEY_get0_RSA(key); -+ if (rsa) -+ RSA_get0_key(rsa, NULL, NULL, &d); -+ return d? true: false; -+#else - return key->pkey.rsa->d ? true: false; -+#endif - case EVP_PKEY_DSA: -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ DSA *dsa; -+ const BIGNUM *privkey; -+ dsa = EVP_PKEY_get0_DSA(key); -+ privkey = NULL; -+ if (dsa) -+ DSA_get0_key(dsa, NULL, &privkey); -+ return privkey? true: false; -+#else - return key->pkey.dsa->priv_key ? true: false; -+#endif - #ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ EC_KEY *ec; -+ ec = EVP_PKEY_get0_EC_KEY(key); -+ return ec? true: false; -+#else - return EC_KEY_get0_private_key(key->pkey.ec) ? true: false; - #endif -+#endif - } - return false; - } -@@ -211,10 +291,23 @@ void pki_evp::fromPEM_BIO(BIO *bio, QStr - static void search_ec_oid(EVP_PKEY *pkey) - { - #ifndef OPENSSL_NO_EC -- if (pkey->type != EVP_PKEY_EC) -+ int keytype; -+ EC_KEY *ec; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ keytype = EVP_PKEY_id(pkey); -+#else -+ keytype = pkey->type; -+#endif -+ -+ if (keytype != EVP_PKEY_EC) - return; - -- EC_KEY *ec = pkey->pkey.ec; -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ ec = EVP_PKEY_get0_EC_KEY(pkey); -+#else -+ ec = pkey->pkey.ec; -+#endif - - const EC_GROUP *ec_group = EC_KEY_get0_group(ec); - EC_GROUP *builtin; -@@ -317,9 +410,10 @@ void pki_evp::fload(const QString fname) - } - } - --void pki_evp::fromData(const unsigned char *p, db_header_t *head ) -+void pki_evp::fromData(const unsigned char *p, db_header_t *head) - { - int version, type, size; -+ void *ptr = NULL; - - if (key) - EVP_PKEY_free(key); -@@ -338,9 +432,17 @@ void pki_evp::fromData(const unsigned ch - d2i(ba); - } - pki_openssl_error(); -- if (!key || !key->pkey.ptr) { -+ -+ if (key) -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ ptr = EVP_PKEY_get0(key); -+#else -+ ptr = key->pkey.ptr; -+#endif -+ -+ if (!ptr) - throw errorEx(tr("Ignoring unsupported private key")); -- } -+ - encKey = ba; - } - -@@ -353,7 +455,10 @@ EVP_PKEY *pki_evp::decryptKey() const - unsigned char ckey[EVP_MAX_KEY_LENGTH]; - - EVP_PKEY *tmpkey; -- EVP_CIPHER_CTX ctx; -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ EVP_CIPHER_CTX ctxbuf; -+#endif -+ EVP_CIPHER_CTX *ctx; - const EVP_CIPHER *cipher = EVP_des_ede3_cbc(); - Passwd ownPassBuf; - int ret; -@@ -403,23 +508,38 @@ EVP_PKEY *pki_evp::decryptKey() const - * because an md5 version of the password is - * stored in the database... - */ -- EVP_CIPHER_CTX_init(&ctx); -- EVP_DecryptInit(&ctx, cipher, ckey, iv); -- EVP_DecryptUpdate(&ctx, p , &outl, -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ ctx = EVP_CIPHER_CTX_new(); -+#else -+ ctx = &ctxbuf; -+#endif -+ EVP_CIPHER_CTX_init(ctx); -+ EVP_DecryptInit(ctx, cipher, ckey, iv); -+ EVP_DecryptUpdate(ctx, p , &outl, - (const unsigned char*)encKey.constData() +8, encKey.count() -8); - - decsize = outl; -- EVP_DecryptFinal(&ctx, p + decsize , &outl); -+ EVP_DecryptFinal(ctx, p + decsize , &outl); - decsize += outl; - //printf("Decrypt decsize=%d, encKey_len=%d\n", decsize, encKey.count() -8); - pki_openssl_error(); -- tmpkey = d2i_PrivateKey(key->type, NULL, &p1, decsize); -+ tmpkey = d2i_PrivateKey(getKeyType(), NULL, &p1, decsize); - pki_openssl_error(); - OPENSSL_free(p); -- EVP_CIPHER_CTX_cleanup(&ctx); -+ EVP_CIPHER_CTX_cleanup(ctx); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ EVP_CIPHER_CTX_free(ctx); -+#endif - pki_openssl_error(); -- if (EVP_PKEY_type(tmpkey->type) == EVP_PKEY_RSA) -- RSA_blinding_on(tmpkey->pkey.rsa, NULL); -+ if (EVP_PKEY_type(getKeyType()) == EVP_PKEY_RSA) { -+ RSA *rsa; -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ rsa = EVP_PKEY_get0_RSA(tmpkey); -+#else -+ rsa = tmpkey->pkey.rsa; -+#endif -+ RSA_blinding_on(rsa, NULL); -+ } - return tmpkey; - } - -@@ -427,7 +547,7 @@ QByteArray pki_evp::toData() - { - QByteArray ba; - -- ba += db::intToData(key->type); -+ ba += db::intToData(getKeyType()); - ba += db::intToData(ownPass); - ba += i2d(); - ba += encKey; -@@ -458,7 +578,10 @@ void pki_evp::encryptKey(const char *pas - { - int outl, keylen; - EVP_PKEY *pkey1 = NULL; -- EVP_CIPHER_CTX ctx; -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ EVP_CIPHER_CTX ctxbuf; -+#endif -+ EVP_CIPHER_CTX *ctx; - const EVP_CIPHER *cipher = EVP_des_ede3_cbc(); - unsigned char iv[EVP_MAX_IV_LENGTH], *punenc, *punenc1; - unsigned char ckey[EVP_MAX_KEY_LENGTH]; -@@ -499,7 +622,12 @@ void pki_evp::encryptKey(const char *pas - EVP_BytesToKey(cipher, EVP_sha1(), iv, - ownPassBuf.constUchar(), - ownPassBuf.size(), 1, ckey, NULL); -- EVP_CIPHER_CTX_init (&ctx); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ ctx = EVP_CIPHER_CTX_new(); -+#else -+ ctx = &ctxbuf; -+#endif -+ EVP_CIPHER_CTX_init (ctx); - pki_openssl_error(); - - /* reserve space for unencrypted and encrypted key */ -@@ -518,14 +646,17 @@ void pki_evp::encryptKey(const char *pas - - /* do the encryption */ - /* store key right after the iv */ -- EVP_EncryptInit(&ctx, cipher, ckey, iv); -+ EVP_EncryptInit(ctx, cipher, ckey, iv); - unsigned char *penc = (unsigned char *)encKey.data() +8; -- EVP_EncryptUpdate(&ctx, penc, &outl, punenc, keylen); -+ EVP_EncryptUpdate(ctx, penc, &outl, punenc, keylen); - int encKey_len = outl; -- EVP_EncryptFinal(&ctx, penc + encKey_len, &outl); -+ EVP_EncryptFinal(ctx, penc + encKey_len, &outl); - encKey.resize(encKey_len + outl +8); - /* Cleanup */ -- EVP_CIPHER_CTX_cleanup(&ctx); -+ EVP_CIPHER_CTX_cleanup(ctx); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ EVP_CIPHER_CTX_free(ctx); -+#endif - /* wipe out the memory */ - memset(punenc, 0, keylen); - OPENSSL_free(punenc); -@@ -600,6 +731,7 @@ void pki_evp::writeKey(const QString fna - pem_password_cb *cb, bool pem) - { - EVP_PKEY *pkey; -+ int keytype; - pass_info p(XCA_TITLE, tr("Please enter the export password for the private key '%1'").arg(getIntName())); - if (isPubKey()) { - writePublic(fname, pem); -@@ -614,19 +746,39 @@ void pki_evp::writeKey(const QString fna - pkey = decryptKey(); - if (pkey) { - if (pem) { -- switch (pkey->type) { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ keytype = EVP_PKEY_id(pkey); -+#else -+ keytype = pkey->type; -+#endif -+ switch (keytype) { - case EVP_PKEY_RSA: -- PEM_write_RSAPrivateKey(fp, -- pkey->pkey.rsa, enc, NULL, 0, cb, &p); -+ RSA *rsa; -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ rsa = EVP_PKEY_get0_RSA(pkey); -+#else -+ rsa = pkey->pkey.rsa; -+#endif -+ PEM_write_RSAPrivateKey(fp, rsa, enc, NULL, 0, cb, &p); - break; - case EVP_PKEY_DSA: -- PEM_write_DSAPrivateKey(fp, -- pkey->pkey.dsa, enc, NULL, 0, cb, &p); -+ DSA *dsa; -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ dsa = EVP_PKEY_get0_DSA(pkey); -+#else -+ dsa = pkey->pkey.dsa; -+#endif -+ PEM_write_DSAPrivateKey(fp, dsa, enc, NULL, 0, cb, &p); - break; - #ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: -- PEM_write_ECPrivateKey(fp, -- pkey->pkey.ec, enc, NULL, 0, cb, &p); -+ EC_KEY *ec; -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ ec = EVP_PKEY_get0_EC_KEY(pkey); -+#else -+ ec = pkey->pkey.ec; -+#endif -+ PEM_write_ECPrivateKey(fp, ec, enc, NULL, 0, cb, &p); - break; - #endif - default: -@@ -655,8 +807,14 @@ int pki_evp::verify() - { - bool veri = false; - return true; -- if (key->type == EVP_PKEY_RSA && isPrivKey()) { -- if (RSA_check_key(key->pkey.rsa) == 1) -+ if (getKeyType() == EVP_PKEY_RSA && isPrivKey()) { -+ RSA *rsa; -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ rsa = EVP_PKEY_get0_RSA(key); -+#else -+ rsa = key->pkey.rsa; -+#endif -+ if (RSA_check_key(rsa) == 1) - veri = true; - } - if (isPrivKey()) -@@ -667,8 +825,11 @@ int pki_evp::verify() - - const EVP_MD *pki_evp::getDefaultMD() - { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ return EVP_sha1(); -+#else - const EVP_MD *md; -- switch (key->type) { -+ switch (getKeyType()) { - case EVP_PKEY_RSA: md = EVP_sha1(); break; - case EVP_PKEY_DSA: md = EVP_dss1(); break; - #ifndef OPENSSL_NO_EC -@@ -677,6 +838,7 @@ const EVP_MD *pki_evp::getDefaultMD() - default: md = NULL; break; - } - return md; -+#endif - } - - QVariant pki_evp::getIcon(dbheader *hd) -@@ -690,14 +852,29 @@ QVariant pki_evp::getIcon(dbheader *hd) - QString pki_evp::md5passwd(QByteArray pass) - { - -- EVP_MD_CTX mdctx; -+#if OPENSSL_VERSION_NUMBER < 0x10100000L -+ EVP_MD_CTX mdctxbuf; -+#endif -+ EVP_MD_CTX *mdctx; - QString str; - int n; - int j; - unsigned char m[EVP_MAX_MD_SIZE]; -- EVP_DigestInit(&mdctx, EVP_md5()); -- EVP_DigestUpdate(&mdctx, pass.constData(), pass.size()); -- EVP_DigestFinal(&mdctx, m, (unsigned*)&n); -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ mdctx = EVP_MD_CTX_new(); -+#else -+ mdctx = &mdctxbuf; -+#endif -+ -+ EVP_DigestInit(mdctx, EVP_md5()); -+ EVP_DigestUpdate(mdctx, pass.constData(), pass.size()); -+ EVP_DigestFinal(mdctx, m, (unsigned*)&n); -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ EVP_MD_CTX_free(mdctx); -+#endif -+ - for (j=0; j= 0x10100000L -+ mdctx = EVP_MD_CTX_new(); -+#else -+ mdctx = &mdctxbuf; -+#endif -+ -+ EVP_DigestInit(mdctx, EVP_sha512()); -+ EVP_DigestUpdate(mdctx, pass.constData(), pass.size()); -+ EVP_DigestFinal(mdctx, m, (unsigned*)&n); -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ EVP_MD_CTX_free(mdctx); -+#endif - - for (j=0; j= 0x10100000L -+ ctx = EVP_CIPHER_CTX_new(); -+#else -+ ctx = &ctxbuf; -+#endif -+ -+ EVP_CIPHER_CTX_init(ctx); -+ EVP_DecryptInit(ctx, cipher, ckey, iv); -+ EVP_DecryptUpdate(ctx, pdec , &outl, p + 8, size - 8); - decsize = outl; -- EVP_DecryptFinal( &ctx, pdec + decsize , &outl ); -+ EVP_DecryptFinal(ctx, pdec + decsize, &outl); - decsize += outl; - pki_openssl_error(); - memcpy(sik, pdec, decsize); -- if (key->type == EVP_PKEY_RSA) { -+ if (getKeyType() == EVP_PKEY_RSA) { - rsakey=d2i_RSAPrivateKey(NULL,(const unsigned char **)&pdec, decsize); - if (pki_ign_openssl_error()) { - rsakey = d2i_RSA_PUBKEY(NULL, (const unsigned char **)&sik, decsize); -@@ -779,7 +977,10 @@ void pki_evp::veryOldFromData(unsigned c - } - OPENSSL_free(sik1); - OPENSSL_free(pdec1); -- EVP_CIPHER_CTX_cleanup(&ctx); -+ EVP_CIPHER_CTX_cleanup(ctx); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ EVP_CIPHER_CTX_free(ctx); -+#endif - pki_openssl_error(); - encryptKey(); - } -diff -Naurp xca-1.3.2.orig/lib/pki_key.cpp xca-1.3.2.new/lib/pki_key.cpp ---- xca-1.3.2.orig/lib/pki_key.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/pki_key.cpp 2017-02-21 04:34:48.508448958 +0100 -@@ -101,16 +101,31 @@ BIO *pki_key::pem(BIO *b, int format) - - QString pki_key::length() - { -- if (key->type == EVP_PKEY_DSA && key->pkey.dsa->p == NULL) { -- return QString("???"); -+ bool dsa_unset = false; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ if (EVP_PKEY_id(key) == EVP_PKEY_DSA) { -+ const BIGNUM *p = NULL; -+ DSA *dsa = EVP_PKEY_get0_DSA(key); -+ if (dsa) -+ DSA_get0_pqg(dsa, &p, NULL, NULL); -+ dsa_unset = p == NULL; - } -+#else -+ dsa_unset = key->type == EVP_PKEY_DSA && key->pkey.dsa->p == NULL; -+#endif -+ -+ if (dsa_unset) -+ return QString("???"); -+ - return QString("%1 bit").arg(EVP_PKEY_bits(key)); - } - - QString pki_key::getTypeString() const - { - QString type; -- switch (EVP_PKEY_type(key->type)) { -+ -+ switch (EVP_PKEY_type(getKeyType())) { - case EVP_PKEY_RSA: - type = "RSA"; - break; -@@ -202,51 +217,118 @@ int pki_key::getUcount() - return ucount; - } - --int pki_key::getKeyType() -+int pki_key::getKeyType() const - { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ return EVP_PKEY_id(key); -+#else - return key->type; -+#endif - } - - QString pki_key::modulus() - { -- if (key->type == EVP_PKEY_RSA) -- return BN2QString(key->pkey.rsa->n); -+ if (getKeyType() == EVP_PKEY_RSA) { -+ const BIGNUM *n = NULL; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ RSA *rsa = EVP_PKEY_get0_RSA(key); -+ RSA_get0_key(rsa, &n, NULL, NULL); -+#else -+ n = key->pkey.rsa->n; -+#endif -+ -+ return BN2QString(n); -+ } -+ -+ - return QString(); - } - - QString pki_key::pubEx() - { -- if (key->type == EVP_PKEY_RSA) -- return BN2QString(key->pkey.rsa->e); -+ if (getKeyType() == EVP_PKEY_RSA) { -+ const BIGNUM *e = NULL; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ RSA *rsa = EVP_PKEY_get0_RSA(key); -+ RSA_get0_key(rsa, NULL, &e, NULL); -+#else -+ e = key->pkey.rsa->e; -+#endif -+ return BN2QString(e); -+ } -+ -+ - return QString(); - } - - QString pki_key::subprime() - { -- if (key->type == EVP_PKEY_DSA) -- return BN2QString(key->pkey.dsa->q); -+ if (getKeyType() == EVP_PKEY_DSA) { -+ const BIGNUM *q = NULL; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ DSA *dsa = EVP_PKEY_get0_DSA(key); -+ if (dsa) -+ DSA_get0_pqg(dsa, NULL, &q, NULL); -+#else -+ q = key->pkey.dsa->q; -+#endif -+ -+ return BN2QString(q); -+ } -+ - return QString(); - } - - QString pki_key::pubkey() - { -- if (key->type == EVP_PKEY_DSA) -- return BN2QString(key->pkey.dsa->pub_key); -+ if (getKeyType() == EVP_PKEY_DSA) { -+ const BIGNUM *pubkey = NULL; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ DSA *dsa = EVP_PKEY_get0_DSA(key); -+ if (dsa) -+ DSA_get0_key(dsa, &pubkey, NULL); -+#else -+ pubkey = key->pkey.dsa->pub_key; -+#endif -+ -+ return BN2QString(pubkey); -+ } -+ - return QString(); - } - #ifndef OPENSSL_NO_EC - int pki_key::ecParamNid() - { -- if (key->type != EVP_PKEY_EC) -+ const EC_KEY *ec; -+ -+ if (getKeyType() != EVP_PKEY_EC) - return NID_undef; -- return EC_GROUP_get_curve_name(EC_KEY_get0_group(key->pkey.ec)); -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ ec = EVP_PKEY_get0_EC_KEY(key); -+#else -+ ec = key->pkey.ec; -+#endif -+ -+ return EC_GROUP_get_curve_name(EC_KEY_get0_group(ec)); - } - - QString pki_key::ecPubKey() - { - QString pub; -- if (key->type == EVP_PKEY_EC) { -- EC_KEY *ec = key->pkey.ec; -+ const EC_KEY *ec = NULL; -+ -+ if (getKeyType() == EVP_PKEY_EC) { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ ec = EVP_PKEY_get0_EC_KEY(key); -+#else -+ ec = key->pkey.ec; -+#endif -+ - BIGNUM *pub_key = EC_POINT_point2bn(EC_KEY_get0_group(ec), - EC_KEY_get0_public_key(ec), - EC_KEY_get_conv_form(ec), NULL, NULL); -@@ -263,7 +345,7 @@ QList pki_key::possibleHashNids() - { - QList nids; - -- switch (EVP_PKEY_type(key->type)) { -+ switch (EVP_PKEY_type(getKeyType())) { - case EVP_PKEY_RSA: - nids << NID_md5 << NID_sha1 << NID_sha224 << NID_sha256 << - NID_sha384 << NID_sha512 << NID_ripemd160; -@@ -326,7 +408,7 @@ QString pki_key::BNoneLine(BIGNUM *bn) c - return x; - } - --QString pki_key::BN2QString(BIGNUM *bn) const -+QString pki_key::BN2QString(const BIGNUM *bn) const - { - if (bn == NULL) - return "--"; -@@ -367,7 +449,7 @@ QVariant pki_key::column_data(dbheader * - case HD_key_curve: - QString r; - #ifndef OPENSSL_NO_EC -- if (key->type == EVP_PKEY_EC) -+ if (getKeyType() == EVP_PKEY_EC) - r = OBJ_nid2sn(ecParamNid()); - #endif - return QVariant(r); -@@ -424,8 +506,16 @@ EVP_PKEY *pki_key::load_ssh2_key(FILE *f - RSA *rsa = RSA_new(); - /* Skip "ssh-rsa..." */ - ssh_key_data2bn(&ba, true); -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ BIGNUM *e = ssh_key_data2bn(&ba); -+ BIGNUM *n = ssh_key_data2bn(&ba); -+ RSA_set0_key(rsa, n, e, NULL); -+#else - rsa->e = ssh_key_data2bn(&ba); - rsa->n = ssh_key_data2bn(&ba); -+#endif -+ - pk = EVP_PKEY_new(); - EVP_PKEY_assign_RSA(pk, rsa); - break; -@@ -434,10 +524,21 @@ EVP_PKEY *pki_key::load_ssh2_key(FILE *f - DSA *dsa = DSA_new(); - /* Skip "ssh-dsa..." */ - ssh_key_data2bn(&ba, true); -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ BIGNUM *p = ssh_key_data2bn(&ba); -+ BIGNUM *q = ssh_key_data2bn(&ba); -+ BIGNUM *g = ssh_key_data2bn(&ba); -+ BIGNUM *pubkey = ssh_key_data2bn(&ba); -+ DSA_set0_pqg(dsa, p, q, g); -+ DSA_set0_key(dsa, pubkey, NULL); -+#else - dsa->p = ssh_key_data2bn(&ba); - dsa->q = ssh_key_data2bn(&ba); - dsa->g = ssh_key_data2bn(&ba); - dsa->pub_key = ssh_key_data2bn(&ba); -+#endif -+ - pk = EVP_PKEY_new(); - EVP_PKEY_assign_DSA(pk, dsa); - } -@@ -458,7 +559,7 @@ void pki_key::ssh_key_QBA2data(QByteArra - data->append(ba); - } - --void pki_key::ssh_key_bn2data(BIGNUM *bn, QByteArray *data) -+void pki_key::ssh_key_bn2data(const BIGNUM *bn, QByteArray *data) - { - QByteArray big; - big.resize(BN_num_bytes(bn)); -@@ -473,20 +574,43 @@ QByteArray pki_key::SSH2publicQByteArray - { - QByteArray txt, data; - -- switch (key->type) { -+ switch (getKeyType()) { - case EVP_PKEY_RSA: - txt = "ssh-rsa"; - ssh_key_QBA2data(txt, &data); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ { -+ RSA *rsa = EVP_PKEY_get0_RSA(key); -+ const BIGNUM *n, *e; -+ RSA_get0_key(rsa, &n, &e, NULL); -+ ssh_key_bn2data(e, &data); -+ ssh_key_bn2data(n, &data); -+ } -+#else - ssh_key_bn2data(key->pkey.rsa->e, &data); - ssh_key_bn2data(key->pkey.rsa->n, &data); -+#endif - break; - case EVP_PKEY_DSA: - txt = "ssh-dss"; - ssh_key_QBA2data(txt, &data); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ { -+ DSA *dsa = EVP_PKEY_get0_DSA(key); -+ const BIGNUM *p, *q, *g, *pubkey; -+ DSA_get0_pqg(dsa, &p, &q, &g); -+ DSA_get0_key(dsa, &pubkey, NULL); -+ ssh_key_bn2data(p, &data); -+ ssh_key_bn2data(q, &data); -+ ssh_key_bn2data(g, &data); -+ ssh_key_bn2data(pubkey, &data); -+ } -+#else - ssh_key_bn2data(key->pkey.dsa->p, &data); - ssh_key_bn2data(key->pkey.dsa->q, &data); - ssh_key_bn2data(key->pkey.dsa->g, &data); - ssh_key_bn2data(key->pkey.dsa->pub_key, &data); -+#endif - break; - default: - return QByteArray(); -diff -Naurp xca-1.3.2.orig/lib/pki_key.h xca-1.3.2.new/lib/pki_key.h ---- xca-1.3.2.orig/lib/pki_key.h 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/pki_key.h 2017-02-21 04:29:05.183300432 +0100 -@@ -24,14 +24,14 @@ class pki_key: public pki_base - protected: - int ownPass; - EVP_PKEY *key; -- QString BN2QString(BIGNUM *bn) const; -+ QString BN2QString(const BIGNUM *bn) const; - QString BNoneLine(BIGNUM *bn) const; - QByteArray SSH2publicQByteArray(); - - private: - BIGNUM *ssh_key_data2bn(QByteArray *ba, bool skip = false); - void ssh_key_QBA2data(QByteArray &ba, QByteArray *data); -- void ssh_key_bn2data(BIGNUM *bn, QByteArray *data); -+ void ssh_key_bn2data(const BIGNUM *bn, QByteArray *data); - int ucount; // usage counter - public: - pki_key(const QString name = ""); -@@ -65,7 +65,7 @@ class pki_key: public pki_base - - void writePublic(const QString fname, bool pem); - bool compare(pki_base *ref); -- int getKeyType(); -+ int getKeyType() const; - static QString removeTypeFromIntName(QString n); - bool isPrivKey() const; - int incUcount(); -diff -Naurp xca-1.3.2.orig/lib/pki_pkcs12.cpp xca-1.3.2.new/lib/pki_pkcs12.cpp ---- xca-1.3.2.orig/lib/pki_pkcs12.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/pki_pkcs12.cpp 2017-02-21 15:37:25.336628591 +0100 -@@ -61,10 +61,16 @@ pki_pkcs12::pki_pkcs12(const QString fna - } - ign_openssl_error(); - if (mycert) { -- if (mycert->aux && mycert->aux->alias) { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ int len = 0; -+ unsigned char *str = X509_alias_get0(mycert, NULL); -+ if (str) -+ alias = QString::fromUtf8((const char *) str, len); -+#else -+ if (mycert->aux && mycert->aux->alias) - alias = asn1ToQString(mycert->aux->alias); -- alias = QString::fromUtf8(alias.toLatin1()); -- } -+#endif -+ alias = QString::fromUtf8(alias.toLatin1()); - cert = new pki_x509(mycert); - if (alias.isEmpty()) { - cert->autoIntName(); -diff -Naurp xca-1.3.2.orig/lib/pki_scard.cpp xca-1.3.2.new/lib/pki_scard.cpp ---- xca-1.3.2.orig/lib/pki_scard.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/pki_scard.cpp 2017-02-22 02:16:08.425135591 +0100 -@@ -80,11 +80,16 @@ EVP_PKEY *pki_scard::load_pubkey(pkcs11 - - pk11_attr_data n(CKA_MODULUS); - p11.loadAttribute(n, object); -- rsa->n = n.getBignum(); - - pk11_attr_data e(CKA_PUBLIC_EXPONENT); - p11.loadAttribute(e, object); -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ RSA_set0_key(rsa, n.getBignum(), e.getBignum(), NULL); -+#else -+ rsa->n = n.getBignum(); - rsa->e = e.getBignum(); -+#endif - - pkey = EVP_PKEY_new(); - EVP_PKEY_assign_RSA(pkey, rsa); -@@ -95,19 +100,25 @@ EVP_PKEY *pki_scard::load_pubkey(pkcs11 - - pk11_attr_data p(CKA_PRIME); - p11.loadAttribute(p, object); -- dsa->p = p.getBignum(); - - pk11_attr_data q(CKA_SUBPRIME); - p11.loadAttribute(q, object); -- dsa->q = q.getBignum(); - - pk11_attr_data g(CKA_BASE); - p11.loadAttribute(g, object); -- dsa->g = g.getBignum(); - - pk11_attr_data pub(CKA_VALUE); - p11.loadAttribute(pub, object); -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ DSA_set0_pqg(dsa, p.getBignum(), q.getBignum(), g.getBignum()); -+ DSA_set0_key(dsa, pub.getBignum(), NULL); -+#else -+ dsa->p = p.getBignum(); -+ dsa->q = q.getBignum(); -+ dsa->g = g.getBignum(); - dsa->pub_key = pub.getBignum(); -+#endif - - pkey = EVP_PKEY_new(); - EVP_PKEY_assign_DSA(pkey, dsa); -@@ -235,29 +246,64 @@ void pki_scard::deleteFromToken() - pk11_attlist pki_scard::objectAttributesNoId(EVP_PKEY *pk, bool priv) const - { - QByteArray ba; -- RSA *rsa = pk->pkey.rsa; -- DSA *dsa = pk->pkey.dsa; -+ int keytype; -+ RSA *rsa; -+ DSA *dsa; - #ifndef OPENSSL_NO_EC -- EC_KEY *ec = pk->pkey.ec; -+ EC_KEY *ec; - #endif -+ const BIGNUM *n = NULL; -+ const BIGNUM *e = NULL; -+ const BIGNUM *p = NULL; -+ const BIGNUM *q = NULL; -+ const BIGNUM *g = NULL; - - pk11_attlist attrs(pk11_attr_ulong(CKA_CLASS, - priv ? CKO_PRIVATE_KEY : CKO_PUBLIC_KEY)); - -- switch (EVP_PKEY_type(pk->type)) { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ keytype = EVP_PKEY_id(pk); -+#else -+ keytype = pk->type; -+#endif -+ -+ switch (EVP_PKEY_type(keytype)) { - case EVP_PKEY_RSA: -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ rsa = EVP_PKEY_get0_RSA(pk); -+ RSA_get0_key(rsa, &n, &e, NULL); -+#else -+ rsa = pk->pkey.rsa; -+ n = rsa->n; -+ e = rsa->e; -+#endif - attrs << pk11_attr_ulong(CKA_KEY_TYPE, CKK_RSA) << -- pk11_attr_data(CKA_MODULUS, rsa->n, false) << -- pk11_attr_data(CKA_PUBLIC_EXPONENT, rsa->e, false); -+ pk11_attr_data(CKA_MODULUS, n) << -+ pk11_attr_data(CKA_PUBLIC_EXPONENT, e); - break; - case EVP_PKEY_DSA: -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ dsa = EVP_PKEY_get0_DSA(pk); -+ DSA_get0_pqg(dsa, &p, &q, &g); -+#else -+ dsa = pk->pkey.dsa; -+ p = dsa->p; -+ q = dsa->q; -+ g = dsa->g; -+#endif - attrs << pk11_attr_ulong(CKA_KEY_TYPE, CKK_DSA) << -- pk11_attr_data(CKA_PRIME, dsa->p, false) << -- pk11_attr_data(CKA_SUBPRIME, dsa->q, false) << -- pk11_attr_data(CKA_BASE, dsa->g, false); -+ pk11_attr_data(CKA_PRIME, p) << -+ pk11_attr_data(CKA_SUBPRIME, q) << -+ pk11_attr_data(CKA_BASE, g); - break; - #ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ ec = EVP_PKEY_get0_EC_KEY(pk); -+#else -+ ec = pk->pkey.ec; -+#endif -+ - ba = i2d_bytearray(I2D_VOID(i2d_ECPKParameters), - EC_KEY_get0_group(ec)); - -@@ -266,7 +312,7 @@ pk11_attlist pki_scard::objectAttributes - break; - #endif - default: -- throw errorEx(QString("Unkown Keytype %d").arg(pk->type)); -+ throw errorEx(QString("Unkown Keytype %d").arg(keytype)); - - } - return attrs; -@@ -332,14 +378,23 @@ int pki_scard::renameOnToken(slotid slot - void pki_scard::store_token(slotid slot, EVP_PKEY *pkey) - { - QByteArray ba; -- RSA *rsa = pkey->pkey.rsa; -- DSA *dsa = pkey->pkey.dsa; -+ int keytype; -+ RSA *rsa; -+ DSA *dsa; - #ifndef OPENSSL_NO_EC -- EC_KEY *ec = pkey->pkey.ec; -+ EC_KEY *ec; - #endif - pk11_attlist pub_atts; - pk11_attlist priv_atts; - QList objects; -+ const BIGNUM *d = NULL; -+ const BIGNUM *p = NULL; -+ const BIGNUM *q = NULL; -+ const BIGNUM *dmp1 = NULL; -+ const BIGNUM *dmq1 = NULL; -+ const BIGNUM *iqmp = NULL; -+ const BIGNUM *priv_key = NULL; -+ const BIGNUM *pub_key = NULL; - - pub_atts = objectAttributesNoId(pkey, false); - priv_atts = objectAttributesNoId(pkey, true); -@@ -373,19 +428,48 @@ void pki_scard::store_token(slotid slot, - pk11_attr_bool(CKA_DECRYPT, true) << - pk11_attr_bool(CKA_SIGN, true); - -- switch (EVP_PKEY_type(pkey->type)) { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ keytype = EVP_PKEY_id(pkey); -+#else -+ keytype = pkey->type; -+#endif -+ -+ switch (EVP_PKEY_type(keytype)) { - case EVP_PKEY_RSA: -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ rsa = EVP_PKEY_get0_RSA(pkey); -+ RSA_get0_key(rsa, NULL, NULL, &d); -+ RSA_get0_factors(rsa, &p, &q); -+ RSA_get0_crt_params(rsa, &dmp1, &dmq1, &iqmp); -+#else -+ rsa = pkey->pkey.rsa; -+ d = rsa->d; -+ p = rsa->p; -+ q = rsa->q; -+ dmp1 = rsa->dmp1; -+ dmq1 = rsa->dmq1; -+ iqmp = rsa->iqmp; -+#endif - priv_atts << -- pk11_attr_data(CKA_PRIVATE_EXPONENT, rsa->d, false) << -- pk11_attr_data(CKA_PRIME_1, rsa->p, false) << -- pk11_attr_data(CKA_PRIME_2, rsa->q, false) << -- pk11_attr_data(CKA_EXPONENT_1, rsa->dmp1, false) << -- pk11_attr_data(CKA_EXPONENT_2, rsa->dmq1, false) << -- pk11_attr_data(CKA_COEFFICIENT, rsa->iqmp, false); -+ pk11_attr_data(CKA_PRIVATE_EXPONENT, d) << -+ pk11_attr_data(CKA_PRIME_1, p) << -+ pk11_attr_data(CKA_PRIME_2, q) << -+ pk11_attr_data(CKA_EXPONENT_1, dmp1) << -+ pk11_attr_data(CKA_EXPONENT_2, dmq1) << -+ pk11_attr_data(CKA_COEFFICIENT, iqmp); - break; - case EVP_PKEY_DSA: -- priv_atts << pk11_attr_data(CKA_VALUE, dsa->priv_key, false); -- pub_atts << pk11_attr_data(CKA_VALUE, dsa->pub_key, false); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ dsa = EVP_PKEY_get0_DSA(pkey); -+ DSA_get0_key(dsa, &pub_key, &priv_key); -+#else -+ dsa = pkey->pkey.dsa; -+ priv_key = dsa->priv_key; -+ pub_key = dsa->pub_key; -+#endif -+ -+ priv_atts << pk11_attr_data(CKA_VALUE, priv_key); -+ pub_atts << pk11_attr_data(CKA_VALUE, pub_key); - break; - #ifndef OPENSSL_NO_EC - case EVP_PKEY_EC: { -@@ -394,6 +478,12 @@ void pki_scard::store_token(slotid slot, - int size; - unsigned char *buf; - ASN1_OCTET_STRING *os; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ ec = EVP_PKEY_get0_EC_KEY(pkey); -+#else -+ ec = pkey->pkey.ec; -+#endif - point = EC_POINT_point2bn(EC_KEY_get0_group(ec), - EC_KEY_get0_public_key(ec), - EC_KEY_get_conv_form(ec), NULL, NULL); -@@ -419,7 +509,7 @@ void pki_scard::store_token(slotid slot, - } - #endif - default: -- throw errorEx(QString("Unkown Keytype %d").arg(pkey->type)); -+ throw errorEx(QString("Unkown Keytype %d").arg(keytype)); - - } - -@@ -451,7 +541,7 @@ QList pki_scard::possibleHashNids() - return pki_key::possibleHashNids(); - - foreach(CK_MECHANISM_TYPE mechanism, mech_list) { -- switch (EVP_PKEY_type(key->type)) { -+ switch (EVP_PKEY_type(getKeyType())) { - case EVP_PKEY_RSA: - switch (mechanism) { - case CKM_MD5_RSA_PKCS: nids << NID_md5; break; -@@ -477,7 +567,7 @@ QList pki_scard::possibleHashNids() - } - } - if (nids.count() == 0) { -- switch (EVP_PKEY_type(key->type)) { -+ switch (EVP_PKEY_type(getKeyType())) { - case EVP_PKEY_RSA: - nids << NID_md5 << NID_sha1 << NID_sha256 << - NID_sha384 << NID_sha512 << NID_ripemd160; -@@ -498,11 +588,19 @@ const EVP_MD *pki_scard::getDefaultMD() - if (mech_list.contains(CKM_SHA1_RSA_PKCS)) - return EVP_sha1(); - if (mech_list.contains(CKM_DSA_SHA1)) -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ return EVP_sha1(); -+#else - return EVP_dss1(); -+#endif - #ifndef OPENSSL_NO_EC - if (mech_list.contains(CKM_ECDSA_SHA1)) -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ return EVP_sha1(); -+#else - return EVP_ecdsa(); - #endif -+#endif - if (mech_list.contains(CKM_SHA512_RSA_PKCS)) - return EVP_sha512(); - if (mech_list.contains(CKM_SHA384_RSA_PKCS)) -@@ -672,6 +770,7 @@ QByteArray pki_scard::toData() - void pki_scard::fromData(const unsigned char *p, db_header_t *head ) - { - int version, size; -+ void *ptr = NULL; - - size = head->len - sizeof(db_header_t); - version = head->version; -@@ -692,9 +791,16 @@ void pki_scard::fromData(const unsigned - mech_list << db::intFromData(ba); - - d2i(ba); -- if (!key || !key->pkey.ptr) { -+ -+ if (key) -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ ptr = EVP_PKEY_get0(key); -+#else -+ ptr = key->pkey.ptr; -+#endif -+ -+ if (!ptr) - throw errorEx(tr("Ignoring unsupported token key")); -- } - - if (ba.count() > 0) { - my_error(tr("Wrong Size %1").arg(ba.count())); -diff -Naurp xca-1.3.2.orig/lib/pki_x509.cpp xca-1.3.2.new/lib/pki_x509.cpp ---- xca-1.3.2.orig/lib/pki_x509.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/pki_x509.cpp 2017-02-20 16:48:24.452679180 +0100 -@@ -146,10 +146,14 @@ void pki_x509::init() - - void pki_x509::setSerial(const a1int &serial) - { -- if (cert->cert_info->serialNumber != NULL ) { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ X509_set_serialNumber(cert, serial.get()); -+#else -+ if (cert->cert_info->serialNumber != NULL) { - ASN1_INTEGER_free(cert->cert_info->serialNumber); - } - cert->cert_info->serialNumber = serial.get(); -+#endif - pki_openssl_error(); - } - -@@ -176,7 +180,13 @@ a1int pki_x509::getIncCaSerial() - unsigned char buf[SERIAL_LEN]; - if (!randomSerial) - return caSerial++; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ RAND_bytes(buf, SERIAL_LEN); -+#else - RAND_pseudo_bytes(buf, SERIAL_LEN); -+#endif -+ - a1int serial; - serial.setRaw(buf, SERIAL_LEN); - return serial; -@@ -186,9 +196,29 @@ a1int pki_x509::hashInfo(const EVP_MD *m - { - unsigned char digest[EVP_MAX_MD_SIZE]; - unsigned len = 0; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ unsigned char *str = NULL; -+ int i; -+ -+ // In OpenSSL 1.1, X509 structure is opaque and their is no API to get -+ // cert_info. We then have to get cert_info data as a DER string and -+ // compute the digest on it. -+ -+ i = i2d_re_X509_tbs(cert, &str); -+ if (!str) -+ pki_openssl_error(); -+ else { -+ i = EVP_Digest(str, i, digest, &len, md, NULL); -+ OPENSSL_free(str); -+ if (!i) -+ pki_openssl_error(); -+ } -+#else - if (!ASN1_item_digest(ASN1_ITEM_rptr(X509_CINF), md, - (char*)cert->cert_info,digest,&len)) - pki_openssl_error(); -+#endif - a1int a; - a.setRaw(digest,len); - return a; -@@ -399,31 +429,51 @@ a1time pki_x509::getNotAfter() const - - x509name pki_x509::getSubject() const - { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ x509name x(X509_get_subject_name(cert)); -+#else - x509name x(cert->cert_info->subject); -+#endif -+ - pki_openssl_error(); - return x; - } - - x509name pki_x509::getIssuer() const - { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ x509name x(X509_get_issuer_name(cert)); -+#else - x509name x(cert->cert_info->issuer); -+#endif -+ - pki_openssl_error(); - return x; - } - - void pki_x509::setSubject(const x509name &n) - { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ X509_set_subject_name(cert, n.get()); -+#else - if (cert->cert_info->subject != NULL) - X509_NAME_free(cert->cert_info->subject); - cert->cert_info->subject = n.get(); -+#endif -+ - pki_openssl_error(); - } - - void pki_x509::setIssuer(const x509name &n) - { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ X509_set_issuer_name(cert, n.get()); -+#else - if ((cert->cert_info->issuer) != NULL) - X509_NAME_free(cert->cert_info->issuer); - cert->cert_info->issuer = n.get(); -+#endif -+ - pki_openssl_error(); - } - -@@ -740,7 +790,13 @@ bool pki_x509::checkDate() - extList pki_x509::getV3ext() - { - extList el; -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ el.setStack(X509_get0_extensions(cert)); -+#else - el.setStack(cert->cert_info->extensions); -+#endif -+ - return el; - } - -@@ -759,9 +815,21 @@ x509v3ext pki_x509::getExtByNid(int nid) - return el[i]; - } - --ASN1_OBJECT *pki_x509::sigAlg() -+const ASN1_OBJECT *pki_x509::sigAlg() - { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ const ASN1_BIT_STRING *psig; -+ const X509_ALGOR *palg; -+ const ASN1_OBJECT *paobj; -+ int pptype; -+ const void *ppval; -+ -+ X509_get0_signature(&psig, &palg, cert); -+ X509_ALGOR_get0(&paobj, &pptype, &ppval, palg); -+ return paobj; -+#else - return cert->sig_alg->algorithm; -+#endif - } - - pki_x509 *pki_x509::getSigner() -diff -Naurp xca-1.3.2.orig/lib/pki_x509.h xca-1.3.2.new/lib/pki_x509.h ---- xca-1.3.2.orig/lib/pki_x509.h 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/pki_x509.h 2017-02-19 01:37:39.266522432 +0100 -@@ -39,7 +39,7 @@ class pki_x509 : public pki_x509super - x509rev revocation; - - protected: -- ASN1_OBJECT *sigAlg(); -+ const ASN1_OBJECT *sigAlg(); - - public: - static QPixmap *icon[6]; -diff -Naurp xca-1.3.2.orig/lib/pki_x509req.cpp xca-1.3.2.new/lib/pki_x509req.cpp ---- xca-1.3.2.orig/lib/pki_x509req.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/pki_x509req.cpp 2017-02-21 03:31:54.048671339 +0100 -@@ -206,16 +206,32 @@ x509name pki_x509req::getSubject() const - return x; - } - --ASN1_OBJECT *pki_x509req::sigAlg() -+const ASN1_OBJECT *pki_x509req::sigAlg() - { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ const ASN1_BIT_STRING *psig; -+ const X509_ALGOR *palg; -+ const ASN1_OBJECT *paobj; -+ int pptype; -+ const void *ppval; -+ -+ X509_REQ_get0_signature(request, &psig, &palg); -+ X509_ALGOR_get0(&paobj, &pptype, &ppval, palg); -+ return paobj; -+#else - return request->sig_alg->algorithm; -+#endif - } - - void pki_x509req::setSubject(const x509name &n) - { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ X509_REQ_set_subject_name(request, n.get()); -+#else - if (request->req_info->subject != NULL) - X509_NAME_free(request->req_info->subject); - request->req_info->subject = n.get(); -+#endif - } - - bool pki_x509req::isSpki() const -@@ -292,12 +308,27 @@ pki_key *pki_x509req::getPubKey() const - - QString pki_x509req::getSigAlg() - { -- ASN1_OBJECT *o; -+ const ASN1_OBJECT *o; -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ const ASN1_BIT_STRING *psig; -+ const X509_ALGOR *palg; -+ X509_ALGOR *palg2; -+ int pptype; -+ const void *ppval; -+ -+ if (spki) { -+ X509_PUBKEY_get0_param(NULL, NULL, NULL, &palg2, spki->spkac->pubkey); -+ palg = palg2; -+ } else -+ X509_REQ_get0_signature(request, &psig, &palg); -+ X509_ALGOR_get0(&o, &pptype, &ppval, palg); -+#else - if (spki) { - o = spki->spkac->pubkey->algor->algorithm; - } else { - o = request->sig_alg->algorithm; - } -+#endif - return QString(OBJ_nid2ln(OBJ_obj2nid(o))); - } - -@@ -393,21 +424,30 @@ ASN1_IA5STRING *pki_x509req::spki_challa - QString pki_x509req::getAttribute(int nid) - { - int n; -+ int count; -+ QStringList ret; -+ - n = X509_REQ_get_attr_by_NID(request, nid, -1); - if (n == -1) - return QString(""); - X509_ATTRIBUTE *att = X509_REQ_get_attr(request, n); - if (!att) - return QString(""); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ count = X509_ATTRIBUTE_count(att); -+ for (int j = 0; j < count; j++) -+ ret << asn1ToQString(X509_ATTRIBUTE_get0_type(att, j)-> -+ value.asn1_string); -+#else - if (att->single) - return asn1ToQString(att->value.single->value.asn1_string); - -- int count = sk_ASN1_TYPE_num(att->value.set); -- QStringList ret; -+ count = sk_ASN1_TYPE_num(att->value.set); - for (int j=0; jvalue.set, j)-> - value.asn1_string); - } -+#endif - return ret.join(", "); - } - -diff -Naurp xca-1.3.2.orig/lib/pki_x509req.h xca-1.3.2.new/lib/pki_x509req.h ---- xca-1.3.2.orig/lib/pki_x509req.h 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/pki_x509req.h 2017-02-19 01:37:31.782451059 +0100 -@@ -31,7 +31,7 @@ class pki_x509req : public pki_x509super - X509_REQ *request; - NETSCAPE_SPKI *spki; - bool done; -- ASN1_OBJECT *sigAlg(); -+ const ASN1_OBJECT *sigAlg(); - - public: - extList getV3ext(); -diff -Naurp xca-1.3.2.orig/lib/pki_x509super.h xca-1.3.2.new/lib/pki_x509super.h ---- xca-1.3.2.orig/lib/pki_x509super.h 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/pki_x509super.h 2017-02-19 01:37:17.900318670 +0100 -@@ -32,7 +32,7 @@ class pki_x509super : public pki_x509nam - Q_OBJECT - protected: - pki_key *privkey; -- virtual ASN1_OBJECT *sigAlg() { -+ virtual const ASN1_OBJECT *sigAlg() { - return NULL; - } - public: -diff -Naurp xca-1.3.2.orig/lib/x509name.cpp xca-1.3.2.new/lib/x509name.cpp ---- xca-1.3.2.orig/lib/x509name.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/x509name.cpp 2017-02-25 12:50:07.149543386 +0100 -@@ -25,13 +25,8 @@ x509name::x509name(const X509_NAME *n) - - x509name::x509name(STACK_OF(X509_NAME_ENTRY) *entries) - { -- X509_NAME *n = X509_NAME_new(); -- STACK_OF(X509_NAME_ENTRY) *ba = n->entries; - xn = NULL; -- n->entries = entries; -- set(n); -- n->entries = ba; -- X509_NAME_free(n); -+ set(entries); - } - - x509name::x509name(const x509name &n) -@@ -53,6 +48,21 @@ x509name &x509name::set(const X509_NAME - return *this; - } - -+x509name &x509name::set(const STACK_OF(X509_NAME_ENTRY) *entries) -+{ -+ if (xn != NULL) -+ X509_NAME_free(xn); -+ xn = X509_NAME_new(); -+ if (xn && entries) { -+ int count = sk_X509_NAME_ENTRY_num(entries); -+ for (int i = 0; i < count; i++) { -+ X509_NAME_ENTRY *entry = sk_X509_NAME_ENTRY_value(entries, i); -+ X509_NAME_add_entry(xn, entry, -1, 0); -+ } -+ } -+ return *this; -+} -+ - QString x509name::oneLine(unsigned long flags) const - { - QString ret; -@@ -150,20 +160,20 @@ int x509name::nid(int i) const - { - X509_NAME_ENTRY *ne; - -- ne = sk_X509_NAME_ENTRY_value(xn->entries, i); -+ ne = X509_NAME_get_entry(xn, i); - if (ne == NULL) - return NID_undef; -- return OBJ_obj2nid(ne->object); -+ return OBJ_obj2nid(X509_NAME_ENTRY_get_object(ne)); - } - - QString x509name::getOid(int i) const - { - X509_NAME_ENTRY *ne; - -- ne = sk_X509_NAME_ENTRY_value(xn->entries, i); -+ ne = X509_NAME_get_entry(xn, i); - if (ne == NULL) - return QString(); -- return OBJ_obj2QString(ne->object, 1); -+ return OBJ_obj2QString(X509_NAME_ENTRY_get_object(ne), 1); - } - - void x509name::d2i(QByteArray &ba) -diff -Naurp xca-1.3.2.orig/lib/x509name.h xca-1.3.2.new/lib/x509name.h ---- xca-1.3.2.orig/lib/x509name.h 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/x509name.h 2017-02-24 01:55:15.186340378 +0100 -@@ -23,6 +23,7 @@ class x509name - x509name(STACK_OF(X509_NAME_ENTRY) *entries); - ~x509name(); - x509name &set(const X509_NAME *n); -+ x509name &set(const STACK_OF(X509_NAME_ENTRY) *entries); - QString oneLine(unsigned long flags = XN_FLAG_ONELINE) const; - int nid(int i) const; - QString getOid(int i) const; -diff -Naurp xca-1.3.2.orig/lib/x509rev.cpp xca-1.3.2.new/lib/x509rev.cpp ---- xca-1.3.2.orig/lib/x509rev.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/x509rev.cpp 2017-02-22 02:30:15.495213804 +0100 -@@ -62,8 +62,13 @@ void x509rev::fromREVOKED(const X509_REV - - if (!rev) - return; -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ serial = a1int(X509_REVOKED_get0_serialNumber(rev)); -+ date = a1time(X509_REVOKED_get0_revocationDate(rev)); -+#else - serial = a1int(rev->serialNumber); - date = a1time(rev->revocationDate); -+#endif - - reason = (ASN1_ENUMERATED *)X509_REVOKED_get_ext_d2i( - (X509_REVOKED *)rev, NID_crl_reason, &j, NULL); -@@ -96,7 +101,11 @@ X509_REVOKED *x509rev::toREVOKED(bool wi - a1time d = date; - X509_REVOKED *rev = X509_REVOKED_new(); - check_oom(rev); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ X509_REVOKED_set_serialNumber(rev, serial.get()); -+#else - rev->serialNumber = serial.get(); -+#endif - X509_REVOKED_set_revocationDate(rev, d.get_utc()); - - X509_REVOKED_add1_ext_i2d(rev, NID_invalidity_date, -diff -Naurp xca-1.3.2.orig/lib/x509v3ext.cpp xca-1.3.2.new/lib/x509v3ext.cpp ---- xca-1.3.2.orig/lib/x509v3ext.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/x509v3ext.cpp 2017-02-24 01:28:34.508751244 +0100 -@@ -27,8 +27,9 @@ x509v3ext::x509v3ext(const X509_EXTENSIO - - x509v3ext::x509v3ext(const x509v3ext &n) - { -+ ASN1_OCTET_STRING *str = n.getData(); - ext = X509_EXTENSION_new(); -- if (n.ext && n.ext->value && n.ext->value->length > 0) -+ if (str && str->length) - set(n.ext); - } - -@@ -59,9 +60,13 @@ x509v3ext &x509v3ext::create(int nid, co - ext = X509_EXTENSION_new(); - else { - if (ctx && ctx->subject_cert) { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ X509_add_ext(ctx->subject_cert, ext, -1); -+#else - STACK_OF(X509_EXTENSION) **sk; - sk = &ctx->subject_cert->cert_info->extensions; - X509v3_add_ext(sk, ext, -1); -+#endif - } - } - return *this; -@@ -118,6 +123,11 @@ int x509v3ext::getCritical() const - return X509_EXTENSION_get_critical(ext); - } - -+ASN1_OCTET_STRING *x509v3ext::getData() const -+{ -+ return X509_EXTENSION_get_data(ext); -+} -+ - QString x509v3ext::getValue(bool html) const - { - QString text = ""; -@@ -127,7 +137,7 @@ QString x509v3ext::getValue(bool html) c - - ret = X509V3_EXT_print(bio, ext, X509V3_EXT_DEFAULT, 0); - if (ign_openssl_error() || !ret) { -- ret = M_ASN1_OCTET_STRING_print(bio, ext->value); -+ ret = ASN1_STRING_print(bio, (ASN1_STRING *) getData()); - } - if (!ign_openssl_error() && ret) { - long len = BIO_get_mem_data(bio, &p); -@@ -362,8 +372,25 @@ bool x509v3ext::parse_ia5(QString *singl - QString ret; - - if (!str) { -- const unsigned char *p = ext->value->data; -- str = d2i_ASN1_type_bytes(NULL, &p, ext->value->length, TEXTS); -+ const unsigned char *p = getData()->data; -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ long len; -+ int tag, xclass; -+ if (ASN1_get_object(&p, &len, &tag, &xclass, getData()->length) & 0x80) -+ return false; -+ if (tag >= 32) -+ return false; -+ if (!(ASN1_tag2bit(tag) & TEXTS)) -+ return false; -+ if (!(str = ASN1_STRING_type_new(tag))) -+ return false; -+ if (!ASN1_STRING_set(str, p, len)) { -+ ASN1_STRING_free(str); -+ return false; -+ } -+#else -+ str = d2i_ASN1_type_bytes(NULL, &p, getData()->length, TEXTS); -+#endif - if (ign_openssl_error() || !str) - return false; - ret = QString("%2"). -@@ -766,7 +793,7 @@ bool x509v3ext::parse_generic(QString *, - { - const ASN1_OBJECT *o = object(); - QString der, obj = o ? obj2SnOid(o) : QString(""); -- ASN1_OCTET_STRING *v = ext->value; -+ ASN1_OCTET_STRING *v = getData(); - - for (int i=0; ilength; i++) - der += QString(":%1").arg((int)(v->data[i]), 2, 16, QChar('0')); -@@ -963,8 +990,8 @@ X509_EXTENSION *x509v3ext::get() const - - bool x509v3ext::isValid() const - { -- return ext && ext->value && ext->value->length > 0 && -- OBJ_obj2nid(ext->object) != NID_undef; -+ return ext && getData() && getData()->length > 0 && -+ OBJ_obj2nid(X509_EXTENSION_get_object(ext)) != NID_undef; - } - - /*************************************************************/ -@@ -992,7 +1019,7 @@ void extList::genGenericConf(QString *ad - } - } - --void extList::setStack(STACK_OF(X509_EXTENSION) *st, int start) -+void extList::setStack(const STACK_OF(X509_EXTENSION) *st, int start) - { - clear(); - int cnt = sk_X509_EXTENSION_num(st); -diff -Naurp xca-1.3.2.orig/lib/x509v3ext.h xca-1.3.2.new/lib/x509v3ext.h ---- xca-1.3.2.orig/lib/x509v3ext.h 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/lib/x509v3ext.h 2017-02-23 19:05:02.911757579 +0100 -@@ -33,6 +33,7 @@ class x509v3ext - // bool operator == (const x509v3ext &x) const; - QString getObject() const; - int getCritical() const; -+ ASN1_OCTET_STRING *getData() const; - QString getValue(bool html=false) const; - QString getHtml() const; - X509_EXTENSION *get() const; -@@ -62,7 +63,7 @@ class x509v3ext - class extList : public QList - { - public: -- void setStack(STACK_OF(X509_EXTENSION) *st, int start=0); -+ void setStack(const STACK_OF(X509_EXTENSION) *st, int start=0); - STACK_OF(X509_EXTENSION) *getStack(); - QString getHtml(const QString &sep); - bool delByNid(int nid); -diff -Naurp xca-1.3.2.orig/misc/eku.txt xca-1.3.2.new/misc/eku.txt ---- xca-1.3.2.orig/misc/eku.txt 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/misc/eku.txt 2017-02-25 11:27:02.718360323 +0100 -@@ -19,4 +19,4 @@ msSmartcardLogin - OCSPSigning - id-kp-eapOverPPP - id-kp-eapOverLAN --id-pkkdcekuoid -+pkInitKDC -diff -Naurp xca-1.3.2.orig/misc/oids.txt xca-1.3.2.new/misc/oids.txt ---- xca-1.3.2.orig/misc/oids.txt 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/misc/oids.txt 2017-02-25 11:26:41.229170758 +0100 -@@ -17,4 +17,4 @@ - # RFC 4334 - 1.3.6.1.5.5.7.3.13: id-kp-eapOverPPP: EAP over PPP - 1.3.6.1.5.5.7.3.14: id-kp-eapOverLAN: EAP over Lan --1.3.6.1.5.2.3.5: id-pkkdcekuoid: KDC Authentication -+1.3.6.1.5.2.3.5: pkInitKDC: KDC Authentication -diff -Naurp xca-1.3.2.orig/widgets/CertDetail.cpp xca-1.3.2.new/widgets/CertDetail.cpp ---- xca-1.3.2.orig/widgets/CertDetail.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/widgets/CertDetail.cpp 2017-02-19 02:25:19.878040249 +0100 -@@ -194,7 +194,12 @@ void CertDetail::setReq(pki_x509req *req - QString trans; - X509_ATTRIBUTE *att = X509_REQ_get_attr(req->getReq(), i); - -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ nid = OBJ_obj2nid(X509_ATTRIBUTE_get0_object(att)); -+#else - nid = OBJ_obj2nid(att->object); -+#endif -+ - if (X509_REQ_extension_nid(nid)) { - continue; - } -@@ -213,6 +218,13 @@ void CertDetail::setReq(pki_x509req *req - attrLayout->addWidget(label, i, 0); - added++; - -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ int count = X509_ATTRIBUTE_count(att); -+ for (int j = 0; j < count; j++) { -+ label = labelFromAsn1String(X509_ATTRIBUTE_get0_type(att, j)->value.asn1_string); -+ attrLayout->addWidget(label, i, j + 1); -+ } -+#else - if (att->single) { - label = labelFromAsn1String(att->value.single->value.asn1_string); - attrLayout->addWidget(label, i, 1); -@@ -223,6 +235,7 @@ void CertDetail::setReq(pki_x509req *req - label = labelFromAsn1String(sk_ASN1_TYPE_value(att->value.set, j)->value.asn1_string); - attrLayout->addWidget(label, i, j +1); - } -+#endif - } - ASN1_IA5STRING *chal = req->spki_challange(); - if (chal) { -diff -Naurp xca-1.3.2.orig/widgets/hashBox.cpp xca-1.3.2.new/widgets/hashBox.cpp ---- xca-1.3.2.orig/widgets/hashBox.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/widgets/hashBox.cpp 2017-02-19 11:51:03.780788061 +0100 -@@ -152,11 +152,18 @@ void hashBox::setCurrentMD(const EVP_MD - void hashBox::setupHashes(QList nids) - { - QString md = currentText(); -+ int mdtype; -+ - if (!wanted_md.isEmpty()) - md = wanted_md; - clear(); - for (unsigned i=0; itype)) { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ mdtype = EVP_MD_type(hashalgos[i].md); -+#else -+ mdtype = hashalgos[i].md->type; -+#endif -+ if (nids.contains(mdtype)) { - addItem(QString(hashalgos[i].name)); - } - } -diff -Naurp xca-1.3.2.orig/widgets/MainWindow.cpp xca-1.3.2.new/widgets/MainWindow.cpp ---- xca-1.3.2.orig/widgets/MainWindow.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/widgets/MainWindow.cpp 2017-02-19 02:31:51.249857612 +0100 -@@ -866,6 +866,9 @@ void MainWindow::generateDHparam() - bool ok; - int num = QInputDialog::getDouble(this, XCA_TITLE, tr("Diffie-Hellman parameters are needed for different applications, but not handled by XCA.\nPlease enter the DH parameter bits"), - 1024, 1024, 4096, 0, &ok); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ BN_GENCB *cb = NULL; -+#endif - - if (!ok) - return; -@@ -883,7 +886,18 @@ void MainWindow::generateDHparam() - bar->setMinimum(0); - bar->setMaximum(100); - status->addPermanentWidget(bar, 1); -+ -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ cb = BN_GENCB_new(); -+ if (!cb) -+ throw errorEx(""); -+ BN_GENCB_set_old(cb, inc_progress_bar, bar); -+ dh = DH_new(); -+ DH_generate_parameters_ex(dh, num, 2, cb); -+#else - dh = DH_generate_parameters(num, 2, inc_progress_bar, bar); -+#endif -+ - status->removeWidget(bar); - openssl_error(); - -@@ -906,6 +920,10 @@ void MainWindow::generateDHparam() - DH_free(dh); - if (fp) - fclose(fp); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ if (cb) -+ BN_GENCB_free(cb); -+#endif - if (bar) - delete bar; - } -diff -Naurp xca-1.3.2.orig/widgets/MW_database.cpp xca-1.3.2.new/widgets/MW_database.cpp ---- xca-1.3.2.orig/widgets/MW_database.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/widgets/MW_database.cpp 2017-03-21 00:20:02.123053121 +0100 -@@ -277,7 +277,9 @@ void MainWindow::default_database() - if (fp) { - QByteArray ba; - ba = filename2bytearray(fi.canonicalFilePath() + "\n"); -- fwrite(ba.constData(), ba.size(), 1, fp); -+ if (fwrite(ba.constData(), ba.size(), 1, fp)) { -+ /* IGNORE_RESULT */ -+ } - fclose(fp); - } - -diff -Naurp xca-1.3.2.orig/widgets/MW_help.cpp xca-1.3.2.new/widgets/MW_help.cpp ---- xca-1.3.2.orig/widgets/MW_help.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/widgets/MW_help.cpp 2017-02-19 19:15:38.774012956 +0100 -@@ -67,8 +67,8 @@ void MainWindow::about() - { - version = QString("
Compile time:"OPENSSL_VERSION_TEXT"QT version: "QT_VERSION_STR"" OPENSSL_VERSION_TEXT "QT version: " QT_VERSION_STR "
Run time:%1
" - "" -- "" -- "" -+ "" -+ "" - "" - "" - "" -diff -Naurp xca-1.3.2.orig/widgets/NewX509_ext.cpp xca-1.3.2.new/widgets/NewX509_ext.cpp ---- xca-1.3.2.orig/widgets/NewX509_ext.cpp 2015-10-10 14:54:12.000000000 +0200 -+++ xca-1.3.2.new/widgets/NewX509_ext.cpp 2017-02-20 02:43:40.512187548 +0100 -@@ -198,6 +198,7 @@ extList NewX509::getAdvanced() - extList elist; - long err_line=0; - STACK_OF(X509_EXTENSION) **sk, *sk_tmp = NULL; -+ const STACK_OF(X509_EXTENSION) *csk; - const char *ext_name = "default"; - int ret, start; - -@@ -223,8 +224,13 @@ extList NewX509::getAdvanced() - } - - if (ext_ctx.subject_cert) { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ csk = X509_get0_extensions(ext_ctx.subject_cert); -+ start = csk? sk_X509_EXTENSION_num(csk): 0; -+#else - sk = &ext_ctx.subject_cert->cert_info->extensions; - start = *sk ? sk_X509_EXTENSION_num(*sk) : 0; -+#endif - } else { - sk = &sk_tmp; - start = 0; -@@ -232,12 +238,24 @@ extList NewX509::getAdvanced() - - X509V3_set_nconf(&ext_ctx, conf); - -- if (X509V3_EXT_add_nconf_sk(conf, &ext_ctx, (char *)ext_name, sk)) { -- openssl_error(); -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ if (ext_ctx.subject_cert) { -+ if (X509V3_EXT_add_nconf(conf, &ext_ctx, -+ (char *) ext_name, ext_ctx.subject_cert)) -+ openssl_error(); -+ csk = X509_get0_extensions(ext_ctx.subject_cert); -+ } else -+#endif -+ { -+ if (X509V3_EXT_add_nconf_sk(conf, &ext_ctx, (char *)ext_name, sk)) -+ openssl_error(); -+ csk = *sk; - } -- elist.setStack(*sk, start); -- if (sk == &sk_tmp) -+ -+ elist.setStack(csk, start); -+ if (!ext_ctx.subject_cert) - sk_X509_EXTENSION_pop_free(sk_tmp, X509_EXTENSION_free); -+ - X509V3_set_nconf(&ext_ctx, NULL); - NCONF_free(conf); - BIO_free(bio); -@@ -317,12 +335,16 @@ extList NewX509::getExtDuplicates() - { - int i, start, cnt, n1, n; - x509v3ext e; -- STACK_OF(X509_EXTENSION) *sk; -+ const STACK_OF(X509_EXTENSION) *sk; - extList el_dup, el; - QString olist; - - if (ext_ctx.subject_cert) { -+#if OPENSSL_VERSION_NUMBER >= 0x10100000L -+ sk = X509_get0_extensions(ext_ctx.subject_cert); -+#else - sk = ext_ctx.subject_cert->cert_info->extensions; -+#endif - } else - return el_dup; - diff --git a/xca.spec b/xca.spec index b00c916..559f786 100644 --- a/xca.spec +++ b/xca.spec @@ -1,14 +1,12 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 1.3.2 -Release: 7%{?dist} +Version: 1.4.0 +Release: 1%{?dist} License: BSD Group: Applications/Productivity -URL: http://xca.hohnstaedt.de/ +URL: https://sourceforge.net/projects/xca/ Source0: http://downloads.sourceforge.net/sourceforge/xca/%{version}/%{name}-%{version}.tar.gz -Patch1: xca-1.3.2-oidfieldcursor.patch -Patch2: xca-1.3.2-openssl11.patch -BuildRequires: qt4-devel openssl-devel +BuildRequires: qt5-devel openssl-devel BuildRequires: xdg-utils BuildRequires: ImageMagick BuildRequires: linuxdoc-tools @@ -36,8 +34,6 @@ format, portable across operating systems. #------------------------------------------------------------------------------- %setup -q -%patch1 -p 1 -b .oidfieldcursor -%patch2 -p 1 -b .openssl11 #------------------------------------------------------------------------------- @@ -107,35 +103,6 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" -e 's/.*\([a-z][a-z]\).qm$/%lang(\1) &/' > langfiles -#------------------------------------------------------------------------------- -%post -#------------------------------------------------------------------------------- - -touch --no-create %{_datadir}/icons/hicolor || : -touch --no-create %{_datadir}/mime/packages &> /dev/null || : - - -#------------------------------------------------------------------------------- -%posttrans -#------------------------------------------------------------------------------- - -gtk-update-icon-cache %{_datadir}/icons/hicolor &> /dev/null || : -update-desktop-database &> /dev/null || : -update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || : - - -#------------------------------------------------------------------------------- -%postun -#------------------------------------------------------------------------------- - -if [ "${1}" -eq 0 ] -then touch --no-create %{_datadir}/icons/hicolor || : - gtk-update-icon-cache %{_datadir}/icons/hicolor &> /dev/null || : - touch --no-create %{_datadir}/mime/packages &> /dev/null || : - update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || : -fi - - #------------------------------------------------------------------------------- %files -f langfiles #------------------------------------------------------------------------------- @@ -159,6 +126,11 @@ fi %changelog #------------------------------------------------------------------------------- +* Mon Jan 22 2018 Patrick Monnerat 1.4.0-1 +- New upstream release 1.4.0. +- Use qt5. +- Remove obsolete rpm scriptlets. + * Mon Aug 7 2017 Patrick Monnerat 1.3.2-7 - Remove xca_db_stat from install (fixes FTBFS on rawhide). From 909301721688f2f6c1ade7de93beeb196c284007 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 9 Feb 2018 21:21:43 +0000 Subject: [PATCH 34/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 559f786..36517cf 100644 --- a/xca.spec +++ b/xca.spec @@ -1,7 +1,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 1.4.0 -Release: 1%{?dist} +Release: 2%{?dist} License: BSD Group: Applications/Productivity URL: https://sourceforge.net/projects/xca/ @@ -124,6 +124,9 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +* Fri Feb 09 2018 Fedora Release Engineering - 1.4.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + #------------------------------------------------------------------------------- * Mon Jan 22 2018 Patrick Monnerat 1.4.0-1 From 18d2bfe45b2bc0feb9dac76c8540484eec69d919 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Wed, 7 Mar 2018 16:30:02 +0100 Subject: [PATCH 35/72] "Modernize" spec file. BR gcc-g++. --- xca.spec | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/xca.spec b/xca.spec index 36517cf..7355a97 100644 --- a/xca.spec +++ b/xca.spec @@ -1,11 +1,11 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 1.4.0 -Release: 2%{?dist} +Release: 3%{?dist} License: BSD -Group: Applications/Productivity URL: https://sourceforge.net/projects/xca/ Source0: http://downloads.sourceforge.net/sourceforge/xca/%{version}/%{name}-%{version}.tar.gz +BuildRequires: gcc-c++ BuildRequires: qt5-devel openssl-devel BuildRequires: xdg-utils BuildRequires: ImageMagick @@ -107,7 +107,6 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" %files -f langfiles #------------------------------------------------------------------------------- -%defattr(-, root, root, -) %doc AUTHORS COPYRIGHT %doc doc/*.html %{_bindir}/* @@ -124,11 +123,15 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +#------------------------------------------------------------------------------- + +* Wed Mar 7 2018 Patrick Monnerat 1.4.0-3 +- "Modernize" spec file. +- BR gcc-g++. + * Fri Feb 09 2018 Fedora Release Engineering - 1.4.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild -#------------------------------------------------------------------------------- - * Mon Jan 22 2018 Patrick Monnerat 1.4.0-1 - New upstream release 1.4.0. - Use qt5. From 2252c6b7bb3bab5b99b271c8bb176e6ed6eb3758 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Wed, 18 Apr 2018 16:25:23 +0200 Subject: [PATCH 36/72] New upstream release. New URL and source location. Fixes BZ #1568760. --- .gitignore | 1 + sources | 2 +- xca.spec | 19 +++++++++++++------ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index fe93dd2..7862e14 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ xca-0.8.1.tar.gz /xca-1.1.0.tar.gz /xca-1.3.2.tar.gz /xca-1.4.0.tar.gz +/xca-1.4.1.tar.gz diff --git a/sources b/sources index 7e5f9ac..c4bddff 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xca-1.4.0.tar.gz) = b220adc7551cf853037c4f5ef0cdd8eef1dda44d0fde634cfde35605396b988452bdbc97a60459911f663d6d6977d426f27f47a46a482d1a30331ac06862c1c9 +SHA512 (xca-1.4.1.tar.gz) = 8294669c4887ba7a9060c3c2c06014b8a1807898569842ed61c066e8a864de014fba51a2ff867b579048083fdd4934cc7f97c92268de4944bf4aafea9c2e7b42 diff --git a/xca.spec b/xca.spec index 7355a97..30d924e 100644 --- a/xca.spec +++ b/xca.spec @@ -1,10 +1,13 @@ +%global gitproject0 xca +%global gitowner0 chris2511 + Summary: Graphical X.509 certificate management tool Name: xca -Version: 1.4.0 -Release: 3%{?dist} +Version: 1.4.1 +Release: 1%{?dist} License: BSD -URL: https://sourceforge.net/projects/xca/ -Source0: http://downloads.sourceforge.net/sourceforge/xca/%{version}/%{name}-%{version}.tar.gz +URL: https://hohnstaedt.de/xca/ +Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz BuildRequires: gcc-c++ BuildRequires: qt5-devel openssl-devel BuildRequires: xdg-utils @@ -40,8 +43,7 @@ format, portable across operating systems. %build #------------------------------------------------------------------------------- -%configure CXXFLAGS="${RPM_OPT_FLAGS} \ - -DXCA_DEFAULT_QT_TRANSLATE=\"\\\"%{_datadir}/qt4/translations\\\"\"" \ +%configure CXXFLAGS="${RPM_OPT_FLAGS}" \ STRIP=: \ LIBS="-Wl,-as-needed" make %{?_smp_mflags} @@ -125,6 +127,11 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" %changelog #------------------------------------------------------------------------------- +* Wed Apr 18 2018 Patrick Monnerat 1.4.1-1 +- New upstream release. +- New URL and source location. + Fixes BZ #1568760. + * Wed Mar 7 2018 Patrick Monnerat 1.4.0-3 - "Modernize" spec file. - BR gcc-g++. From 8d2d2a8be0801c1fa0860b6ed87e6fde6290b443 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 14 Jul 2018 09:07:22 +0000 Subject: [PATCH 37/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 30d924e..b432af2 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 1.4.1 -Release: 1%{?dist} +Release: 2%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -125,6 +125,9 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +* Sat Jul 14 2018 Fedora Release Engineering - 1.4.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + #------------------------------------------------------------------------------- * Wed Apr 18 2018 Patrick Monnerat 1.4.1-1 From ab7cd319cf4204320fde229b8f775086a4931d71 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Fri, 4 Jan 2019 19:59:30 +0100 Subject: [PATCH 38/72] New upstream release. Require qt database backends for external database support. Do not install images: they are already linked into the xca binary program. Improve language tagging. --- .gitignore | 1 + sources | 2 +- xca.spec | 33 ++++++++++++++++++--------------- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 7862e14..cd43809 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ xca-0.8.1.tar.gz /xca-1.3.2.tar.gz /xca-1.4.0.tar.gz /xca-1.4.1.tar.gz +/xca-2.1.2.tar.gz diff --git a/sources b/sources index c4bddff..1394ccf 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xca-1.4.1.tar.gz) = 8294669c4887ba7a9060c3c2c06014b8a1807898569842ed61c066e8a864de014fba51a2ff867b579048083fdd4934cc7f97c92268de4944bf4aafea9c2e7b42 +SHA512 (xca-2.1.2.tar.gz) = 1f104a22b83b802576b4820b7139971da50f9b3dd70aca8e1199e996bad4379b8681bb31b197b84a3dfa49cef4ae093f6622d15fac9667547ff47af43c1e5f07 diff --git a/xca.spec b/xca.spec index b432af2..9825d7f 100644 --- a/xca.spec +++ b/xca.spec @@ -3,8 +3,8 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 1.4.1 -Release: 2%{?dist} +Version: 2.1.2 +Release: 1%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -16,6 +16,8 @@ BuildRequires: linuxdoc-tools BuildRequires: libtool-ltdl-devel BuildRequires: translate-toolkit Requires: hicolor-icon-theme +Requires: qt5-qtbase-mysql +Requires: qt5-qtbase-postgresql %description @@ -63,18 +65,13 @@ make destdir="${RPM_BUILD_ROOT}" install # Do not include db statistics program and man. find "${RPM_BUILD_ROOT}" -name 'xca_db_stat*' -delete -# HACK: check whether workarounds below are still necessary -if test ! -e "${RPM_BUILD_ROOT}%{_datadir}/xca/crl.png" -then install -d -m 755 \ - "${RPM_BUILD_ROOT}%{_datadir}/"{applications,mime/packages,icons/hicolor} - install -p -m 644 img/*.png "${RPM_BUILD_ROOT}%{_datadir}/xca" -fi - +install -d -m 755 "${RPM_BUILD_ROOT}%{_datadir}/mime/packages" install -p -m 644 misc/xca.xml "${RPM_BUILD_ROOT}%{_datadir}/mime/packages/" export XDG_DATA_DIRS="${RPM_BUILD_ROOT}%{_datadir}" export XDG_UTILS_INSTALL_MODE=system +install -d -m 755 "${XDG_DATA_DIRS}/icons/hicolor" xdg-icon-resource install --noupdate --context mimetypes \ --size 32 xdb.png application-x-xca-database xdg-icon-resource install --noupdate --size 32 xca.png fedora-xca @@ -83,7 +80,8 @@ xdg-icon-resource install --noupdate --size 32 xca.png fedora-xca rm -rf "${RPM_BUILD_ROOT}%{_datadir}/pixmaps/xca-32x32.xpm" cp -a img/key.xpm "${RPM_BUILD_ROOT}%{_datadir}/pixmaps/xca.xpm" -desktop-file-install --mode 0644 \ +install -d -m 755 "${RPM_BUILD_ROOT}%{_datadir}/applications" +desktop-file-install --mode 0644 \ --dir "${RPM_BUILD_ROOT}%{_datadir}/applications" \ --delete-original \ --add-mime-type application/x-xca-database \ @@ -99,10 +97,10 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" ( cd "${RPM_BUILD_ROOT}" - find '.%{_datadir}/xca' -name 'xca_[a-z][a-z].qm' + find '.%{_datadir}/xca' -name 'xca_[a-z][a-z]*.qm' ) | sed -e 's/^\.//' \ - -e 's/.*\([a-z][a-z]\).qm$/%lang(\1) &/' > langfiles + -e 's#^.*/xca_\([a-z][a-z]\)[^/]*\.qm$#%lang(\1) &#' > langfiles #------------------------------------------------------------------------------- @@ -113,7 +111,6 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" %doc doc/*.html %{_bindir}/* %dir %{_datadir}/xca -%{_datadir}/xca/*.png %{_datadir}/xca/*.txt %{_datadir}/xca/*.xca %{_datadir}/pixmaps/*.xpm @@ -125,11 +122,17 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +#------------------------------------------------------------------------------- + +* Fri Jan 4 2019 Patrick Monnerat 2.1.2-1 +- New upstream release. +- Require qt database backends for external database support. +- Do not install images: they are already linked into the xca binary program. +- Improve language tagging. + * Sat Jul 14 2018 Fedora Release Engineering - 1.4.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild -#------------------------------------------------------------------------------- - * Wed Apr 18 2018 Patrick Monnerat 1.4.1-1 - New upstream release. - New URL and source location. From 55801a991c5a31ca322c06d4082c216b5c3be057 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 3 Feb 2019 12:08:40 +0000 Subject: [PATCH 39/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 9825d7f..29572b0 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.1.2 -Release: 1%{?dist} +Release: 2%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -122,6 +122,9 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +* Sun Feb 03 2019 Fedora Release Engineering - 2.1.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + #------------------------------------------------------------------------------- * Fri Jan 4 2019 Patrick Monnerat 2.1.2-1 From 1af982598d232d1403ce4a1d55e1cb3489bbad65 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 27 Jul 2019 03:54:38 +0000 Subject: [PATCH 40/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 29572b0..2d8c627 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.1.2 -Release: 2%{?dist} +Release: 3%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -122,6 +122,9 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +* Sat Jul 27 2019 Fedora Release Engineering - 2.1.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + * Sun Feb 03 2019 Fedora Release Engineering - 2.1.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild From ee608aaeca8c4ecf00a83549cab42bc62a1a3184 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 9 Dec 2019 18:53:17 +0100 Subject: [PATCH 41/72] - Patch "bz1779029-segv" fixes a segmentation fault. https://github.com/chris2511/xca/commit/262c805 https://bugzilla.redhat.com/show_bug.cgi?id=1779029 --- xca-2.1.2-bz1779029-segv.patch | 19 +++++++++++++++++++ xca.spec | 14 ++++++++++---- 2 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 xca-2.1.2-bz1779029-segv.patch diff --git a/xca-2.1.2-bz1779029-segv.patch b/xca-2.1.2-bz1779029-segv.patch new file mode 100644 index 0000000..97a4279 --- /dev/null +++ b/xca-2.1.2-bz1779029-segv.patch @@ -0,0 +1,19 @@ +diff -Naurp xca-2.1.2.orig/widgets/MainWindow.cpp xca-2.1.2.new/widgets/MainWindow.cpp +--- xca-2.1.2.orig/widgets/MainWindow.cpp 2018-11-07 19:06:57.000000000 +0100 ++++ xca-2.1.2.new/widgets/MainWindow.cpp 2019-12-03 12:41:21.042343946 +0100 +@@ -813,12 +813,12 @@ pki_multi *MainWindow::probeAnything(QSt + } catch (errorEx &err) { + Error(err); + } +- if (!pki->count()) { ++ if (pki && !pki->count()) { + delete pki; + pki = NULL; +- if (ret) +- *ret = 1; + } ++ if (!pki && ret) ++ *ret = 1; + return pki; + } + diff --git a/xca.spec b/xca.spec index 2d8c627..dfdbc41 100644 --- a/xca.spec +++ b/xca.spec @@ -4,10 +4,11 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.1.2 -Release: 3%{?dist} +Release: 4%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz +Patch1: xca-2.1.2-bz1779029-segv.patch BuildRequires: gcc-c++ BuildRequires: qt5-devel openssl-devel BuildRequires: xdg-utils @@ -38,7 +39,7 @@ format, portable across operating systems. %prep #------------------------------------------------------------------------------- -%setup -q +%autosetup -p 1 #------------------------------------------------------------------------------- @@ -122,14 +123,19 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +#------------------------------------------------------------------------------- + +* Mon Dec 9 2019 Patrick Monnerat 2.1.2-4 +- Patch "bz1779029-segv" fixes a segmentation fault. + https://github.com/chris2511/xca/commit/262c805 + https://bugzilla.redhat.com/show_bug.cgi?id=1779029 + * Sat Jul 27 2019 Fedora Release Engineering - 2.1.2-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild * Sun Feb 03 2019 Fedora Release Engineering - 2.1.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild -#------------------------------------------------------------------------------- - * Fri Jan 4 2019 Patrick Monnerat 2.1.2-1 - New upstream release. - Require qt database backends for external database support. From f9900ea8324f5ba1d4a8fd74fbfc897a5079d91d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 31 Jan 2020 04:08:37 +0000 Subject: [PATCH 42/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index dfdbc41..c760963 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.1.2 -Release: 4%{?dist} +Release: 5%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -123,6 +123,9 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +* Fri Jan 31 2020 Fedora Release Engineering - 2.1.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + #------------------------------------------------------------------------------- * Mon Dec 9 2019 Patrick Monnerat 2.1.2-4 From b965b53b41dda0ba4ae401a8bc282890eaeeff4c Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Sun, 9 Feb 2020 14:09:36 +0100 Subject: [PATCH 43/72] New upstream relase. --- .gitignore | 1 + sources | 2 +- xca-2.1.2-bz1779029-segv.patch | 19 ------------------- xca.spec | 23 +++++++++++++++-------- 4 files changed, 17 insertions(+), 28 deletions(-) delete mode 100644 xca-2.1.2-bz1779029-segv.patch diff --git a/.gitignore b/.gitignore index cd43809..f478716 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ xca-0.8.1.tar.gz /xca-1.4.0.tar.gz /xca-1.4.1.tar.gz /xca-2.1.2.tar.gz +/xca-2.2.1.tar.gz diff --git a/sources b/sources index 1394ccf..02e55ca 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xca-2.1.2.tar.gz) = 1f104a22b83b802576b4820b7139971da50f9b3dd70aca8e1199e996bad4379b8681bb31b197b84a3dfa49cef4ae093f6622d15fac9667547ff47af43c1e5f07 +SHA512 (xca-2.2.1.tar.gz) = 90eaf4a859779d57a4c0201dc403d67e005bd540145b9f543e13b8d5c42199f2ea05543de24b071d19a0db8e5b1e9f3bef2aea4bfe9f71f81007a5f5bb3ba406 diff --git a/xca-2.1.2-bz1779029-segv.patch b/xca-2.1.2-bz1779029-segv.patch deleted file mode 100644 index 97a4279..0000000 --- a/xca-2.1.2-bz1779029-segv.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -Naurp xca-2.1.2.orig/widgets/MainWindow.cpp xca-2.1.2.new/widgets/MainWindow.cpp ---- xca-2.1.2.orig/widgets/MainWindow.cpp 2018-11-07 19:06:57.000000000 +0100 -+++ xca-2.1.2.new/widgets/MainWindow.cpp 2019-12-03 12:41:21.042343946 +0100 -@@ -813,12 +813,12 @@ pki_multi *MainWindow::probeAnything(QSt - } catch (errorEx &err) { - Error(err); - } -- if (!pki->count()) { -+ if (pki && !pki->count()) { - delete pki; - pki = NULL; -- if (ret) -- *ret = 1; - } -+ if (!pki && ret) -+ *ret = 1; - return pki; - } - diff --git a/xca.spec b/xca.spec index c760963..e8575c9 100644 --- a/xca.spec +++ b/xca.spec @@ -3,22 +3,26 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 2.1.2 -Release: 5%{?dist} +Version: 2.2.1 +Release: 1%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz -Patch1: xca-2.1.2-bz1779029-segv.patch + BuildRequires: gcc-c++ -BuildRequires: qt5-devel openssl-devel +BuildRequires: qt5-devel +BuildRequires: openssl-devel BuildRequires: xdg-utils BuildRequires: ImageMagick BuildRequires: linuxdoc-tools BuildRequires: libtool-ltdl-devel BuildRequires: translate-toolkit + Requires: hicolor-icon-theme -Requires: qt5-qtbase-mysql -Requires: qt5-qtbase-postgresql + +Suggests: qt5-qtbase-mysql +Suggests: qt5-qtbase-postgresql +Suggests: qt5-qtbase-odbc %description @@ -123,11 +127,14 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +#------------------------------------------------------------------------------- + +* Sat Feb 8 2020 Patrick Monnerat 2.2.1-1 +- New upstream relase. + * Fri Jan 31 2020 Fedora Release Engineering - 2.1.2-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild -#------------------------------------------------------------------------------- - * Mon Dec 9 2019 Patrick Monnerat 2.1.2-4 - Patch "bz1779029-segv" fixes a segmentation fault. https://github.com/chris2511/xca/commit/262c805 From 6656d9eabe1b406c3a9fe99bfaed03a225fab069 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 29 Jul 2020 14:29:02 +0000 Subject: [PATCH 44/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index e8575c9..d903983 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.2.1 -Release: 1%{?dist} +Release: 2%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -127,6 +127,9 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +* Wed Jul 29 2020 Fedora Release Engineering - 2.2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + #------------------------------------------------------------------------------- * Sat Feb 8 2020 Patrick Monnerat 2.2.1-1 From 35a32b7b73a2c48b487f544006f92d82b64fd95e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 1 Aug 2020 09:41:01 +0000 Subject: [PATCH 45/72] - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- xca.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index d903983..77e42d5 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.2.1 -Release: 2%{?dist} +Release: 3%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -127,6 +127,10 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +* Sat Aug 01 2020 Fedora Release Engineering - 2.2.1-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + * Wed Jul 29 2020 Fedora Release Engineering - 2.2.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild From 4306964de6171747e0a4e5ea9c8880dd647a70df Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Fri, 7 Aug 2020 13:51:16 +0200 Subject: [PATCH 46/72] New upstream release. --- .gitignore | 1 + sources | 2 +- xca.spec | 16 ++++++++++------ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index f478716..ae10a44 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ xca-0.8.1.tar.gz /xca-1.4.1.tar.gz /xca-2.1.2.tar.gz /xca-2.2.1.tar.gz +/xca-2.3.0.tar.gz diff --git a/sources b/sources index 02e55ca..38337b4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xca-2.2.1.tar.gz) = 90eaf4a859779d57a4c0201dc403d67e005bd540145b9f543e13b8d5c42199f2ea05543de24b071d19a0db8e5b1e9f3bef2aea4bfe9f71f81007a5f5bb3ba406 +SHA512 (xca-2.3.0.tar.gz) = 35522aa308e1022a739f3255f13fcf63f481000f9b7411027a009a185e33ddceeb5cf9b55406a4899d2393c7e5ace10354ff24b3b2b0c3045d110f679756b0b8 diff --git a/xca.spec b/xca.spec index 77e42d5..201cfa6 100644 --- a/xca.spec +++ b/xca.spec @@ -3,14 +3,15 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 2.2.1 -Release: 3%{?dist} +Version: 2.3.0 +Release: 1%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz BuildRequires: gcc-c++ -BuildRequires: qt5-devel +BuildRequires: qt5-qtbase-devel +BuildRequires: qt5-linguist BuildRequires: openssl-devel BuildRequires: xdg-utils BuildRequires: ImageMagick @@ -65,7 +66,7 @@ touch -r img/xdb.ico xdb.png %install #------------------------------------------------------------------------------- -make destdir="${RPM_BUILD_ROOT}" install +make DESTDIR="${RPM_BUILD_ROOT}" install # Do not include db statistics program and man. find "${RPM_BUILD_ROOT}" -name 'xca_db_stat*' -delete @@ -127,6 +128,11 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +#------------------------------------------------------------------------------- + +* Thu Aug 6 2020 Patrick Monnerat 2.3.0-1 +- New upstream relase. + * Sat Aug 01 2020 Fedora Release Engineering - 2.2.1-3 - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild @@ -134,8 +140,6 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" * Wed Jul 29 2020 Fedora Release Engineering - 2.2.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild -#------------------------------------------------------------------------------- - * Sat Feb 8 2020 Patrick Monnerat 2.2.1-1 - New upstream relase. From 79e1b941a323a5b07277aa5f342d86924ae2eb87 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Wed, 2 Dec 2020 12:14:05 +0100 Subject: [PATCH 47/72] BR translate-toolkit is not needed anymore. --- xca.spec | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/xca.spec b/xca.spec index 201cfa6..956fb53 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.3.0 -Release: 1%{?dist} +Release: 2%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -17,7 +17,6 @@ BuildRequires: xdg-utils BuildRequires: ImageMagick BuildRequires: linuxdoc-tools BuildRequires: libtool-ltdl-devel -BuildRequires: translate-toolkit Requires: hicolor-icon-theme @@ -130,6 +129,9 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" %changelog #------------------------------------------------------------------------------- +* Tue Dec 1 2020 Patrick Monnerat 2.3.0-2 +- BR translate-toolkit is not needed anymore. + * Thu Aug 6 2020 Patrick Monnerat 2.3.0-1 - New upstream relase. From db1f22cc536074c0527a097f653da0219a06d3ca Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Sat, 9 Jan 2021 01:10:14 +0000 Subject: [PATCH 48/72] Add BuildRequires: make https://fedoraproject.org/wiki/Changes/Remove_make_from_BuildRoot --- xca.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/xca.spec b/xca.spec index 956fb53..64e8a25 100644 --- a/xca.spec +++ b/xca.spec @@ -9,6 +9,7 @@ License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz +BuildRequires: make BuildRequires: gcc-c++ BuildRequires: qt5-qtbase-devel BuildRequires: qt5-linguist From 17453cab23f05fd0c74a13b1f51ef7c73174ac6f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 27 Jan 2021 23:49:27 +0000 Subject: [PATCH 49/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 64e8a25..cada69d 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.3.0 -Release: 2%{?dist} +Release: 3%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -128,6 +128,9 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +* Wed Jan 27 2021 Fedora Release Engineering - 2.3.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + #------------------------------------------------------------------------------- * Tue Dec 1 2020 Patrick Monnerat 2.3.0-2 From 5aea971c57d3a89389cc9e979f92f4452891fcde Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 23 Jul 2021 21:19:11 +0000 Subject: [PATCH 50/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index cada69d..c494993 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.3.0 -Release: 3%{?dist} +Release: 4%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -128,6 +128,9 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +* Fri Jul 23 2021 Fedora Release Engineering - 2.3.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Wed Jan 27 2021 Fedora Release Engineering - 2.3.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild From 32d492e871007612c54e8006222ab2b40bd10f7d Mon Sep 17 00:00:00 2001 From: Sahana Prasad Date: Tue, 14 Sep 2021 19:17:56 +0200 Subject: [PATCH 51/72] Rebuilt with OpenSSL 3.0.0 --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index c494993..e8c397f 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.3.0 -Release: 4%{?dist} +Release: 5%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -128,6 +128,9 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" #------------------------------------------------------------------------------- %changelog +* Tue Sep 14 2021 Sahana Prasad - 2.3.0-5 +- Rebuilt with OpenSSL 3.0.0 + * Fri Jul 23 2021 Fedora Release Engineering - 2.3.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild From 73b83a83d8df939018a0a6101d419b9177e42867 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Sat, 13 Nov 2021 18:52:54 +0100 Subject: [PATCH 52/72] New upstream release. Fixes FTBFS BZ #2021882 --- .gitignore | 1 + sources | 2 +- xca-2.4.0-lang-fr.patch | 4046 +++++++++++++++++++++++++++++++++++++ xca-2.4.0-lang-it.patch | 312 +++ xca-2.4.0-mimeicons.patch | 17 + xca-2.4.0-noclean.patch | 14 + xca-2.4.0-openssl3.patch | 233 +++ xca.spec | 87 +- 8 files changed, 4664 insertions(+), 48 deletions(-) create mode 100644 xca-2.4.0-lang-fr.patch create mode 100644 xca-2.4.0-lang-it.patch create mode 100644 xca-2.4.0-mimeicons.patch create mode 100644 xca-2.4.0-noclean.patch create mode 100644 xca-2.4.0-openssl3.patch diff --git a/.gitignore b/.gitignore index ae10a44..56a5ba2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ xca-0.8.1.tar.gz /xca-2.1.2.tar.gz /xca-2.2.1.tar.gz /xca-2.3.0.tar.gz +/xca-2.4.0.tar.gz diff --git a/sources b/sources index 38337b4..f9652b1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xca-2.3.0.tar.gz) = 35522aa308e1022a739f3255f13fcf63f481000f9b7411027a009a185e33ddceeb5cf9b55406a4899d2393c7e5ace10354ff24b3b2b0c3045d110f679756b0b8 +SHA512 (xca-2.4.0.tar.gz) = e93e2cf9dc48ed43ee9b51e977f825d81ff08835eb4d77fcbe8f9dc8ce31c77c1da879b48c25ab535717542d1fe84faa6e46c410c116edbee02072040c59667c diff --git a/xca-2.4.0-lang-fr.patch b/xca-2.4.0-lang-fr.patch new file mode 100644 index 0000000..65bb353 --- /dev/null +++ b/xca-2.4.0-lang-fr.patch @@ -0,0 +1,4046 @@ +From 9b1fce659d24890c896a16f59eb14c38edceff76 Mon Sep 17 00:00:00 2001 +From: Patrick Monnerat +Date: Sat, 15 May 2021 11:50:24 +0200 +Subject: [PATCH] Update french translation + +--- + lang/fr.po | 1490 ++++++++++++++++++++++++++++------------------------ + 1 file changed, 791 insertions(+), 699 deletions(-) + +diff --git a/lang/fr.po b/lang/fr.po +index 2191b870..096abfc4 100644 +--- a/lang/fr.po ++++ b/lang/fr.po +@@ -1,20 +1,20 @@ + # + # demonipuch , 2012, 2014, 2015. +-# Patrick Monnerat <.>, 2011-2020. ++# Patrick Monnerat <.>, 2011-2021. + # + msgid "" + msgstr "" + "Project-Id-Version: xca 1.3.3\n" + "Report-Msgid-Bugs-To: \n" + "POT-Creation-Date: 2018-03-16 18:14+0200\n" +-"PO-Revision-Date: 2020-04-08 17:42+0200\n" ++"PO-Revision-Date: 2021-05-15 11:49+0200\n" + "Last-Translator: Patrick Monnerat <.>\n" + "Language-Team: French <>\n" + "Language: fr\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: Gtranslator 3.34.0\n" ++"X-Generator: Gtranslator 3.38.0\n" + "Plural-Forms: nplurals=2; plural=(n > 1);\n" + "X-Qt-Contexts: true\n" + +@@ -34,7 +34,7 @@ msgctxt "CaProperties|" + msgid "Default template" + msgstr "Modèle par défaut" + +-#: ../ui/CertDetail.ui:30 ../widgets/CertDetail.cpp:99 ++#: ../ui/CertDetail.ui:30 ../widgets/CertDetail.cpp:112 + msgctxt "CertDetail|" + msgid "Details of the Certificate" + msgstr "Détails du Certificat" +@@ -149,58 +149,58 @@ msgctxt "CertDetail|" + msgid "Attributes" + msgstr "Attributs" + +-#: ../ui/CertDetail.ui:377 ../widgets/CertDetail.cpp:36 ++#: ../ui/CertDetail.ui:377 ../widgets/CertDetail.cpp:40 + msgctxt "CertDetail|" + msgid "Show config" + msgstr "Afficher la configuration" + +-#: ../widgets/CertDetail.cpp:40 ++#: ../widgets/CertDetail.cpp:44 + msgctxt "CertDetail|" + msgid "Show extensions" + msgstr "Afficher les extensions" + +-#: ../widgets/CertDetail.cpp:62 ++#: ../widgets/CertDetail.cpp:66 + msgctxt "CertDetail|" + msgid "Show public key" + msgstr "Afficher la clé publique" + +-#: ../widgets/CertDetail.cpp:67 ++#: ../widgets/CertDetail.cpp:69 + msgctxt "CertDetail|" + msgid "This key is not in the database." + msgstr "Cette clé ne figure pas dans la base de données" + +-#: ../widgets/CertDetail.cpp:69 ++#: ../widgets/CertDetail.cpp:73 + msgctxt "CertDetail|" + msgid "Not available" + msgstr "Non disponible" + +-#: ../widgets/CertDetail.cpp:108 ++#: ../widgets/CertDetail.cpp:120 + msgctxt "CertDetail|" + msgid "Signer unknown" + msgstr "Signataire inconnu" + +-#: ../widgets/CertDetail.cpp:112 ++#: ../widgets/CertDetail.cpp:124 + msgctxt "CertDetail|" + msgid "Self signed" + msgstr "Auto-signé" + +-#: ../widgets/CertDetail.cpp:139 ++#: ../widgets/CertDetail.cpp:154 + #, qt-format + msgctxt "CertDetail|" + msgid "Revoked at %1" + msgstr "Révoqué le %1" + +-#: ../widgets/CertDetail.cpp:144 ++#: ../widgets/CertDetail.cpp:159 + msgctxt "CertDetail|" + msgid "Not valid" + msgstr "Invalide" + +-#: ../widgets/CertDetail.cpp:148 ++#: ../widgets/CertDetail.cpp:163 + msgctxt "CertDetail|" + msgid "Valid" + msgstr "Valide" + +-#: ../widgets/CertDetail.cpp:167 ++#: ../widgets/CertDetail.cpp:184 + msgctxt "CertDetail|" + msgid "Details of the certificate signing request" + msgstr "Détails de la requête de signature" +@@ -322,76 +322,86 @@ msgstr "" + "Le certificat serait valide plus longtemps que son signataire. Ce n'est " + "probablement pas ce qui est désiré." + +-#: ../widgets/CertTreeView.cpp:25 ++#: ../widgets/CertTreeView.cpp:30 + msgctxt "CertTreeView|" + msgid "Import PKCS#12" + msgstr "Importer en PKCS#12" + +-#: ../widgets/CertTreeView.cpp:26 ++#: ../widgets/CertTreeView.cpp:31 + msgctxt "CertTreeView|" + msgid "Import from PKCS#7" + msgstr "Importer en PKCS#7" + +-#: ../widgets/CertTreeView.cpp:54 ++#: ../widgets/CertTreeView.cpp:60 + msgctxt "CertTreeView|" + msgid "Request" + msgstr "Requête" + +-#: ../widgets/CertTreeView.cpp:56 ++#: ../widgets/CertTreeView.cpp:62 + msgctxt "CertTreeView|" + msgid "Security token" + msgstr "Jeton de sécurité" + +-#: ../widgets/CertTreeView.cpp:58 ++#: ../widgets/CertTreeView.cpp:64 + msgctxt "CertTreeView|" + msgid "Other token" + msgstr "Autre jeton" + +-#: ../widgets/CertTreeView.cpp:62 ++#: ../widgets/CertTreeView.cpp:68 + msgctxt "CertTreeView|" + msgid "Similar Certificate" + msgstr "Certificat similaire" + +-#: ../widgets/CertTreeView.cpp:65 ++#: ../widgets/CertTreeView.cpp:71 + msgctxt "CertTreeView|" + msgid "Delete from Security token" + msgstr "Détruire sur le jeton de sécurité" + +-#: ../widgets/CertTreeView.cpp:68 ++#: ../widgets/CertTreeView.cpp:74 + msgctxt "CertTreeView|" + msgid "CA" + msgstr "CA" + +-#: ../widgets/CertTreeView.cpp:69 ++#: ../widgets/CertTreeView.cpp:75 + msgctxt "CertTreeView|" + msgid "Properties" + msgstr "Propriétés" + +-#: ../widgets/CertTreeView.cpp:70 ++#: ../widgets/CertTreeView.cpp:76 + msgctxt "CertTreeView|" + msgid "Generate CRL" + msgstr "Générer la liste de révocation" + +-#: ../widgets/CertTreeView.cpp:71 ++#: ../widgets/CertTreeView.cpp:77 + msgctxt "CertTreeView|" + msgid "Manage revocations" + msgstr "Gérer les révocations" + +-#: ../widgets/CertTreeView.cpp:76 ../widgets/CertTreeView.cpp:79 ++#: ../widgets/CertTreeView.cpp:82 ../widgets/CertTreeView.cpp:85 + msgctxt "CertTreeView|" + msgid "Renewal" + msgstr "Renouvellement" + +-#: ../widgets/CertTreeView.cpp:81 ++#: ../widgets/CertTreeView.cpp:87 + msgctxt "CertTreeView|" + msgid "Revoke" + msgstr "Révoquer" + +-#: ../widgets/CertTreeView.cpp:83 ++#: ../widgets/CertTreeView.cpp:89 + msgctxt "CertTreeView|" + msgid "Unrevoke" + msgstr "Dé-révoquer" + ++#: ../widgets/CertTreeView.cpp:157 ++msgctxt "CertTreeView|" ++msgid "Plain View" ++msgstr "Vue à plat" ++ ++#: ../widgets/CertTreeView.cpp:157 ++msgctxt "CertTreeView|" ++msgid "Tree View" ++msgstr "Vue arborescente" ++ + #: ../widgets/clicklabel.cpp:37 + msgctxt "ClickLabel|" + msgid "Double click for details" +@@ -407,81 +417,91 @@ msgctxt "CrlDetail|" + msgid "&Status" + msgstr "&Etat" + +-#: ../ui/CrlDetail.ui:126 ++#: ../ui/CrlDetail.ui:144 + msgctxt "CrlDetail|" + msgid "Version" + msgstr "Version" + +-#: ../ui/CrlDetail.ui:145 ++#: ../ui/CrlDetail.ui:163 + msgctxt "CrlDetail|" + msgid "Signature" + msgstr "Signature" + +-#: ../ui/CrlDetail.ui:152 ++#: ../ui/CrlDetail.ui:170 + msgctxt "CrlDetail|" + msgid "Signed by" + msgstr "Signée par" + +-#: ../ui/CrlDetail.ui:159 ++#: ../ui/CrlDetail.ui:177 + msgctxt "CrlDetail|" + msgid "Name" + msgstr "Nom" + +-#: ../ui/CrlDetail.ui:166 ++#: ../ui/CrlDetail.ui:184 + msgctxt "CrlDetail|" + msgid "The internal name of the CRL in the database" + msgstr "Le nom interne de la liste de révocation dans la base de données" + +-#: ../ui/CrlDetail.ui:179 ++#: ../ui/CrlDetail.ui:197 + msgctxt "CrlDetail|" + msgid "issuing dates" + msgstr "dates d'émission" + +-#: ../ui/CrlDetail.ui:188 ++#: ../ui/CrlDetail.ui:215 + msgctxt "CrlDetail|" + msgid "Next update" + msgstr "Prochaine mise-à-jour" + +-#: ../ui/CrlDetail.ui:195 ++#: ../ui/CrlDetail.ui:222 + msgctxt "CrlDetail|" + msgid "Last update" + msgstr "Dernière mise-à-jour" + +-#: ../ui/CrlDetail.ui:228 ++#: ../ui/CrlDetail.ui:255 + msgctxt "CrlDetail|" + msgid "&Issuer" + msgstr "&Emetteur" + +-#: ../ui/CrlDetail.ui:241 ++#: ../ui/CrlDetail.ui:277 + msgctxt "CrlDetail|" + msgid "&Extensions" + msgstr "&Extensions" + +-#: ../ui/CrlDetail.ui:261 ++#: ../ui/CrlDetail.ui:306 + msgctxt "CrlDetail|" + msgid "&Revocation list" + msgstr "Liste de &révocation" + +-#: ../ui/CrlDetail.ui:286 ++#: ../ui/CrlDetail.ui:340 + msgctxt "CrlDetail|" + msgid "Comment" + msgstr "Commentaire" + +-#: ../widgets/CrlDetail.cpp:47 ++#: ../widgets/CrlDetail.cpp:52 + msgctxt "CrlDetail|" + msgid "Failed" + msgstr "Echoué" + +-#: ../widgets/CrlDetail.cpp:52 ++#: ../widgets/CrlDetail.cpp:57 + msgctxt "CrlDetail|" + msgid "Unknown signer" + msgstr "Signataire inconnu" + +-#: ../widgets/CrlDetail.cpp:55 ++#: ../widgets/CrlDetail.cpp:60 + msgctxt "CrlDetail|" + msgid "Verification not possible" + msgstr "Vérification impossible" + ++#: ../widgets/CrlTreeView.cpp:37 ++msgctxt "CrlTreeView|" ++msgid "There are no CA certificates for CRL generation" ++msgstr "Il n'y a pas de certificat CA pour la génération de la CRL" ++ ++#: ../widgets/CrlTreeView.cpp:45 ++msgctxt "CrlTreeView|" ++msgid "Select CA certificate" ++msgstr "Sélectionner un certificat d'autorité" ++ + #: ../ui/ExportDialog.ui:79 + msgctxt "ExportDialog|" + msgid "Name" +@@ -512,80 +532,80 @@ msgctxt "ExportDialog|" + msgid "Export Format" + msgstr "Format d'exportation" + +-#: ../widgets/ExportDialog.cpp:36 ++#: ../widgets/ExportDialog.cpp:41 + msgctxt "ExportDialog|" + msgid "All files ( * )" + msgstr "Tous les fichiers ( * )" + +-#: ../widgets/ExportDialog.cpp:51 ++#: ../widgets/ExportDialog.cpp:56 + msgctxt "ExportDialog|" + msgid "PEM Text format with headers" + msgstr "Format textuel PEM avec des en-têtes" + +-#: ../widgets/ExportDialog.cpp:53 ++#: ../widgets/ExportDialog.cpp:58 + msgctxt "ExportDialog|" + msgid "Concatenated list of all selected items in one PEM text file" + msgstr "" + "Concaténation de tous les éléments sélectionnés dans un seul fichier texte " + "en format PEM" + +-#: ../widgets/ExportDialog.cpp:54 ++#: ../widgets/ExportDialog.cpp:59 + msgctxt "ExportDialog|" + msgid "" + "Concatenated text format of the complete certificate chain in one PEM file" + msgstr "" + "Fichier PEM contenant la concaténation de tous les certificats de la chaîne" + +-#: ../widgets/ExportDialog.cpp:58 ++#: ../widgets/ExportDialog.cpp:63 + msgctxt "ExportDialog|" + msgid "Concatenated text format of all certificates in one PEM file" + msgstr "Fichier PEM contenant la concaténation de tous les certificats" + +-#: ../widgets/ExportDialog.cpp:59 ++#: ../widgets/ExportDialog.cpp:64 + msgctxt "ExportDialog|" + msgid "Binary DER encoded file" + msgstr "Fichier binaire en format DER" + +-#: ../widgets/ExportDialog.cpp:60 ++#: ../widgets/ExportDialog.cpp:65 + msgctxt "ExportDialog|" + msgid "PKCS#7 encoded single certificate" + msgstr "Un seul certificat en format PKCS#7" + +-#: ../widgets/ExportDialog.cpp:62 ++#: ../widgets/ExportDialog.cpp:67 + msgctxt "ExportDialog|" + msgid "PKCS#7 encoded complete certificate chain" + msgstr "" + "La chaîne complète de certificats en format PKCS#7 dans un seul fichier" + +-#: ../widgets/ExportDialog.cpp:56 ++#: ../widgets/ExportDialog.cpp:61 + msgctxt "ExportDialog|" + msgid "Concatenated text format of all unrevoked certificates in one PEM file" + msgstr "" + "Fichier PEM contenant la concaténation de tous les certificats non-révoqués" + +-#: ../widgets/ExportDialog.cpp:64 ++#: ../widgets/ExportDialog.cpp:69 + msgctxt "ExportDialog|" + msgid "All unrevoked certificates encoded in one PKCS#7 file" + msgstr "" + "Tous les certificats non-révoqués dans un seul fichier en format PKCS#7" + +-#: ../widgets/ExportDialog.cpp:66 ++#: ../widgets/ExportDialog.cpp:71 + msgctxt "ExportDialog|" + msgid "All selected certificates encoded in one PKCS#7 file" + msgstr "" + "Tous les certificats sélectionnés dans un seul fichier en format PKCS#7" + +-#: ../widgets/ExportDialog.cpp:68 ++#: ../widgets/ExportDialog.cpp:73 + msgctxt "ExportDialog|" + msgid "All certificates encoded in one PKCS#7 file" + msgstr "Tous les certificats dans un seul fichier en format PKCS#7" + +-#: ../widgets/ExportDialog.cpp:70 ++#: ../widgets/ExportDialog.cpp:75 + msgctxt "ExportDialog|" + msgid "The certificate and the private key as encrypted PKCS#12 file" + msgstr "Le certificat et sa clé privée dans un fichier en format PKCS#12" + +-#: ../widgets/ExportDialog.cpp:71 ++#: ../widgets/ExportDialog.cpp:76 + msgctxt "ExportDialog|" + msgid "" + "The complete certificate chain and the private key as encrypted PKCS#12 file" +@@ -593,7 +613,7 @@ msgstr "" + "La chaîne complète des certificats et la clé privée en un seul fichier " + "chiffré en format PKCS#12" + +-#: ../widgets/ExportDialog.cpp:72 ++#: ../widgets/ExportDialog.cpp:77 + msgctxt "ExportDialog|" + msgid "" + "Concatenation of the certificate and the unencrypted private key in one PEM " +@@ -602,7 +622,7 @@ msgstr "" + "La concaténation du certificat et de sa clé privée non-chiffrée dans un seul " + "fichier PEM" + +-#: ../widgets/ExportDialog.cpp:73 ++#: ../widgets/ExportDialog.cpp:78 + msgctxt "ExportDialog|" + msgid "" + "Concatenation of the certificate and the encrypted private key in PKCS#8 " +@@ -611,47 +631,47 @@ msgstr "" + "La concaténation du certificat et de sa clé privée chiffrée en format PKCS#8 " + "dans un seul fichier" + +-#: ../widgets/ExportDialog.cpp:74 ++#: ../widgets/ExportDialog.cpp:79 + msgctxt "ExportDialog|" + msgid "Text format of the public key in one PEM file" + msgstr "Formattage textuel de la clé publique dans un fichier PEM" + +-#: ../widgets/ExportDialog.cpp:75 ++#: ../widgets/ExportDialog.cpp:80 + msgctxt "ExportDialog|" + msgid "Binary DER format of the public key" + msgstr "Format binaire DER de la clé publique" + +-#: ../widgets/ExportDialog.cpp:77 ++#: ../widgets/ExportDialog.cpp:82 + msgctxt "ExportDialog|" + msgid "Unencrypted private key in text format" + msgstr "Clé privée non-chiffrée en format texte" + +-#: ../widgets/ExportDialog.cpp:79 ++#: ../widgets/ExportDialog.cpp:84 + msgctxt "ExportDialog|" + msgid "OpenSSL specific encrypted private key in text format" + msgstr "Clé privée chiffrée spécifiquement par OpenSSL en format texte" + +-#: ../widgets/ExportDialog.cpp:81 ++#: ../widgets/ExportDialog.cpp:86 + msgctxt "ExportDialog|" + msgid "Unencrypted private key in binary DER format" + msgstr "Clé privée non-chiffrée en format binaire DER" + +-#: ../widgets/ExportDialog.cpp:83 ++#: ../widgets/ExportDialog.cpp:88 + msgctxt "ExportDialog|" + msgid "Unencrypted private key in PKCS#8 text format" + msgstr "Clé privée non-chiffrée en format texte PKCS#8" + +-#: ../widgets/ExportDialog.cpp:85 ++#: ../widgets/ExportDialog.cpp:90 + msgctxt "ExportDialog|" + msgid "Encrypted private key in PKCS#8 text format" + msgstr "Clé privée chiffrée en format texte PKCS#8" + +-#: ../widgets/ExportDialog.cpp:86 ++#: ../widgets/ExportDialog.cpp:91 + msgctxt "ExportDialog|" + msgid "The public key encoded in SSH2 format" + msgstr "La clé publique en format SSH2" + +-#: ../widgets/ExportDialog.cpp:87 ++#: ../widgets/ExportDialog.cpp:92 + msgctxt "ExportDialog|" + msgid "" + "OpenSSL specific Certificate Index file as created by the 'ca' command and " +@@ -660,12 +680,12 @@ msgstr "" + "Fichier d'index des certificats spécifique à OpenSSL, tel que créé par la " + "commande 'ca' et nécessaire à l'outil OCSP" + +-#: ../widgets/ExportDialog.cpp:88 ++#: ../widgets/ExportDialog.cpp:93 + msgctxt "ExportDialog|" + msgid "vCalendar expiry reminder for the selected items" + msgstr "message vCalendar de rappel d'expiration des éléments sélectionnés" + +-#: ../widgets/ExportDialog.cpp:89 ++#: ../widgets/ExportDialog.cpp:94 + msgctxt "ExportDialog|" + msgid "" + "vCalendar expiry reminder containing all issued, valid certificates, the CA " +@@ -674,28 +694,28 @@ msgstr "" + "message vCalendar de rappel d'expiration contenant tous les certificats " + "valides émis, le CA lui-même et la liste de révocation la plus récente" + +-#: ../widgets/ExportDialog.cpp:90 ++#: ../widgets/ExportDialog.cpp:95 + msgctxt "ExportDialog|" + msgid "Private key in Microsoft PVK format not encrypted" + msgstr "La clé privée en format Microsoft PVK n'est pas chiffrée" + +-#: ../widgets/ExportDialog.cpp:91 ++#: ../widgets/ExportDialog.cpp:96 + msgctxt "ExportDialog|" + msgid "Encrypted private key in Microsoft PVK format" + msgstr "Clé privée chiffrée en format Microsoft PVK" + +-#: ../widgets/ExportDialog.cpp:128 ++#: ../widgets/ExportDialog.cpp:133 + #, qt-format + msgctxt "ExportDialog|" + msgid "The file: '%1' already exists!" + msgstr "Le fichier '%1' existe déjà!" + +-#: ../widgets/ExportDialog.cpp:130 ++#: ../widgets/ExportDialog.cpp:134 + msgctxt "ExportDialog|" + msgid "Overwrite" + msgstr "Ecraser" + +-#: ../widgets/ExportDialog.cpp:132 ++#: ../widgets/ExportDialog.cpp:135 + msgctxt "ExportDialog|" + msgid "Do not overwrite" + msgstr "Ne pas écraser" +@@ -755,7 +775,7 @@ msgctxt "ImportMulti|" + msgid "Rename on token" + msgstr "Renommer dans le jeton" + +-#: ../widgets/ImportMulti.cpp:62 ++#: ../widgets/ImportMulti.cpp:64 + #, qt-format + msgctxt "ImportMulti|" + msgid "" +@@ -769,31 +789,30 @@ msgstr "" + "Modèle: %2\n" + "Numéro de série: %3" + +-#: ../widgets/ImportMulti.cpp:67 ++#: ../widgets/ImportMulti.cpp:69 + msgctxt "ImportMulti|" + msgid "Manage security token" + msgstr "Gérer les jetons de sécurité" + +-#: ../widgets/ImportMulti.cpp:345 ++#: ../widgets/ImportMulti.cpp:281 + #, qt-format + msgctxt "ImportMulti|" + msgid "Details of the item '%1' cannot be shown" + msgstr "Les détails de l'objet '%1' ne peuvent pas être affichés" + +-#: ../widgets/ImportMulti.cpp:125 ../widgets/ImportMulti.cpp:287 +-#: ../widgets/ImportMulti.cpp:348 ++#: ../widgets/ImportMulti.cpp:103 ../widgets/ImportMulti.cpp:285 + #, qt-format + msgctxt "ImportMulti|" + msgid "The type of the item '%1' is not recognized" + msgstr "Le type de l'objet '%1' n'est pas reconnu" + +-#: ../widgets/ImportMulti.cpp:376 ++#: ../widgets/ImportMulti.cpp:313 + #, qt-format + msgctxt "ImportMulti|" + msgid "The file '%1' did not contain PKI data" + msgstr "Le fichier '%1' ne contient pas de données PKI" + +-#: ../widgets/ImportMulti.cpp:379 ++#: ../widgets/ImportMulti.cpp:316 + #, qt-format + msgctxt "ImportMulti|" + msgid "The %1 files: '%2' did not contain PKI data" +@@ -809,7 +828,7 @@ msgctxt "ItemProperties|" + msgid "Source" + msgstr "Source" + +-#: ../ui/ItemProperties.ui:39 ++#: ../ui/ItemProperties.ui:42 + msgctxt "ItemProperties|" + msgid "Insertion date" + msgstr "Date d'insertion" +@@ -829,7 +848,7 @@ msgctxt "KeyDetail|" + msgid "The internal name of the key used by xca" + msgstr "Le nom interne de la clé utilisé par xca" + +-#: ../widgets/KeyDetail.cpp:96 ++#: ../widgets/KeyDetail.cpp:106 + msgctxt "KeyDetail|" + msgid "Security token" + msgstr "Jeton de sécurité" +@@ -899,84 +918,86 @@ msgctxt "KeyDetail|" + msgid "Comment" + msgstr "Commentaire" + +-#: ../widgets/KeyDetail.cpp:79 ++#: ../widgets/KeyDetail.cpp:89 + #, qt-format + msgctxt "KeyDetail|" + msgid "Details of the %1 key" + msgstr "Détails de la clé %1" + +-#: ../widgets/KeyDetail.cpp:85 ++#: ../widgets/KeyDetail.cpp:95 + msgctxt "KeyDetail|" + msgid "Not available" + msgstr "Non disponible" + +-#: ../widgets/KeyDetail.cpp:98 ++#: ../widgets/KeyDetail.cpp:108 + msgctxt "KeyDetail|" + msgid "Available" + msgstr "Disponible" + +-#: ../widgets/KeyDetail.cpp:107 ++#: ../widgets/KeyDetail.cpp:117 + msgctxt "KeyDetail|" + msgid "Sub prime" + msgstr "Sous-premier" + +-#: ../widgets/KeyDetail.cpp:108 ../widgets/KeyDetail.cpp:117 ++#: ../widgets/KeyDetail.cpp:118 ../widgets/KeyDetail.cpp:127 ++#: ../widgets/KeyDetail.cpp:139 + msgctxt "KeyDetail|" + msgid "Public key" + msgstr "Clé publique" + +-#: ../widgets/KeyDetail.cpp:109 ../widgets/KeyDetail.cpp:118 ++#: ../widgets/KeyDetail.cpp:119 ../widgets/KeyDetail.cpp:128 ++#: ../widgets/KeyDetail.cpp:140 + msgctxt "KeyDetail|" + msgid "Private key" + msgstr "Clé privée" + +-#: ../widgets/KeyDetail.cpp:119 ++#: ../widgets/KeyDetail.cpp:129 ../widgets/KeyDetail.cpp:141 + msgctxt "KeyDetail|" + msgid "Curve name" + msgstr "Nom de la courbe" + +-#: ../widgets/KeyDetail.cpp:129 ++#: ../widgets/KeyDetail.cpp:148 + msgctxt "KeyDetail|" + msgid "Unknown key" + msgstr "Clé inconnue" + +-#: ../widgets/KeyTreeView.cpp:28 ++#: ../widgets/KeyTreeView.cpp:30 + msgctxt "KeyTreeView|" + msgid "Change password" + msgstr "Changer le mot de passe" + +-#: ../widgets/KeyTreeView.cpp:32 ++#: ../widgets/KeyTreeView.cpp:34 + msgctxt "KeyTreeView|" + msgid "Reset password" + msgstr "Effacer le mot de passe" + +-#: ../widgets/KeyTreeView.cpp:44 ++#: ../widgets/KeyTreeView.cpp:46 + msgctxt "KeyTreeView|" + msgid "Change PIN" + msgstr "Changer le NIP" + +-#: ../widgets/KeyTreeView.cpp:46 ++#: ../widgets/KeyTreeView.cpp:48 + msgctxt "KeyTreeView|" + msgid "Init PIN with SO PIN (PUK)" + msgstr "Initialiser le NIP avec le PUK" + +-#: ../widgets/KeyTreeView.cpp:48 ++#: ../widgets/KeyTreeView.cpp:50 + msgctxt "KeyTreeView|" + msgid "Change SO PIN (PUK)" + msgstr "Changer le PUK" + +-#: ../widgets/KeyTreeView.cpp:51 ++#: ../widgets/KeyTreeView.cpp:53 + msgctxt "KeyTreeView|" + msgid "Security token" + msgstr "Jeton de sécurité" + +-#: ../widgets/KeyTreeView.cpp:84 ../widgets/KeyTreeView.cpp:102 +-#: ../widgets/KeyTreeView.cpp:120 ++#: ../widgets/KeyTreeView.cpp:90 ../widgets/KeyTreeView.cpp:108 ++#: ../widgets/KeyTreeView.cpp:126 + msgctxt "KeyTreeView|" + msgid "This is not a token" + msgstr "Ce n'est pas un jeton" + +-#: ../widgets/KeyTreeView.cpp:149 ++#: ../widgets/KeyTreeView.cpp:155 + #, qt-format + msgctxt "KeyTreeView|" + msgid "" +@@ -1036,7 +1057,7 @@ msgctxt "MainWindow|" + msgid "&New Request" + msgstr "&Nouvelle requête" + +-#: ../ui/MainWindow.ui:222 ../widgets/MW_menu.cpp:126 ++#: ../ui/MainWindow.ui:222 ../widgets/MW_menu.cpp:132 + msgctxt "MainWindow|" + msgid "Certificates" + msgstr "Certificats" +@@ -1086,7 +1107,7 @@ msgctxt "MainWindow|" + msgid "Revocation lists" + msgstr "Listes de révocation" + +-#: ../widgets/MW_database.cpp:333 ++#: ../widgets/MainWindow.cpp:584 + msgctxt "MainWindow|" + msgid "" + "Using or exporting private keys will not be possible without providing the " +@@ -1095,12 +1116,12 @@ msgstr "" + "Il sera impossible d'utiliser ou d'exporter des clés privées sans fournir le " + "mot de passe correct." + +-#: ../widgets/MW_database.cpp:341 ../widgets/MainWindow.cpp:868 ++#: ../widgets/MainWindow.cpp:579 ../widgets/MainWindow.cpp:729 + msgctxt "MainWindow|" + msgid "Database" + msgstr "Base de données" + +-#: ../widgets/MW_database.cpp:338 ++#: ../widgets/MainWindow.cpp:590 + #, qt-format + msgctxt "MainWindow|" + msgid "" +@@ -1110,34 +1131,12 @@ msgstr "" + "L'algorithme de hachage '%1' sélectionné n'est pas sûr. SVP choisissez au " + "moins 'SHA 224' pour raisons de sécurité." + +-#: ../widgets/MW_database.cpp:257 +-#, qt-format +-msgctxt "MainWindow|" +-msgid "" +-"Legacy database format detected. Creating a backup copy called: '%1' and " +-"converting the database to the new format" +-msgstr "" +-"Format historique de base de données détecté. Une copie de sauvegarde " +-"appelée '%1' est créée et la base de données est convertie au nouveau format" +- +-#: ../widgets/MW_database.cpp:263 +-msgctxt "MainWindow|" +-msgid "Failed to rename the database file, because the target already exists" +-msgstr "" +-"Le changement de nom du fichier de base de données a échoué parce qu'un " +-"autre fichier du même nom existe déjà" +- +-#: ../widgets/MW_database.cpp:439 +-msgctxt "MainWindow|" +-msgid "No deleted items found" +-msgstr "Aucun objet détruit n'a été trouvé" +- +-#: ../widgets/MW_menu.cpp:79 ++#: ../widgets/MW_menu.cpp:83 + msgctxt "MainWindow|" + msgid "Recent DataBases" + msgstr "Bases de données utilisées recemment" + +-#: ../widgets/MW_help.cpp:25 ../widgets/MW_menu.cpp:35 ++#: ../widgets/MW_help.cpp:25 ../widgets/MW_menu.cpp:39 + msgctxt "MainWindow|" + msgid "System" + msgstr "Système" +@@ -1212,242 +1211,236 @@ msgctxt "MainWindow|" + msgid "Turkish" + msgstr "Turc" + +-#: ../widgets/MW_menu.cpp:83 ++#: ../widgets/MW_menu.cpp:89 + msgctxt "MainWindow|" + msgid "Language" + msgstr "Langue" + +-#: ../widgets/MW_menu.cpp:92 ++#: ../widgets/MW_menu.cpp:98 + msgctxt "MainWindow|" + msgid "&File" + msgstr "&Fichier" + +-#: ../widgets/MW_menu.cpp:99 ++#: ../widgets/MW_menu.cpp:105 + msgctxt "MainWindow|" + msgid "Open Remote DataBase" + msgstr "Ouvrir une base de données externe" + +-#: ../widgets/MW_menu.cpp:103 ++#: ../widgets/MW_menu.cpp:109 + msgctxt "MainWindow|" + msgid "Set as default DataBase" + msgstr "Définir comme base de données par défaut" + +-#: ../widgets/MW_menu.cpp:93 ++#: ../widgets/MW_menu.cpp:99 + msgctxt "MainWindow|" + msgid "New DataBase" + msgstr "Nouvelle base de données" + +-#: ../widgets/MW_menu.cpp:96 ++#: ../widgets/MW_menu.cpp:102 + msgctxt "MainWindow|" + msgid "Open DataBase" + msgstr "Ouvrir une base de données" + +-#: ../widgets/MW_menu.cpp:105 ++#: ../widgets/MW_menu.cpp:111 + msgctxt "MainWindow|" + msgid "Close DataBase" + msgstr "Fermer la base de données" + +-#: ../widgets/MW_menu.cpp:108 ++#: ../widgets/MW_menu.cpp:114 + msgctxt "MainWindow|" + msgid "Options" + msgstr "Options" + +-#: ../widgets/MW_menu.cpp:116 ++#: ../widgets/MW_menu.cpp:122 + msgctxt "MainWindow|" + msgid "Exit" + msgstr "Quitter" + +-#: ../widgets/MW_menu.cpp:123 ++#: ../widgets/MW_menu.cpp:129 + msgctxt "MainWindow|" + msgid "I&mport" + msgstr "I&mporter" + +-#: ../widgets/MW_menu.cpp:124 ++#: ../widgets/MW_menu.cpp:130 + msgctxt "MainWindow|" + msgid "Keys" + msgstr "Clés" + +-#: ../widgets/MW_menu.cpp:125 ++#: ../widgets/MW_menu.cpp:131 + msgctxt "MainWindow|" + msgid "Requests" + msgstr "Requêtes" + +-#: ../widgets/MW_menu.cpp:127 ++#: ../widgets/MW_menu.cpp:133 + msgctxt "MainWindow|" + msgid "PKCS#12" + msgstr "PKCS#12" + +-#: ../widgets/MW_menu.cpp:128 ++#: ../widgets/MW_menu.cpp:134 + msgctxt "MainWindow|" + msgid "PKCS#7" + msgstr "PKCS#7" + +-#: ../widgets/MW_menu.cpp:129 ++#: ../widgets/MW_menu.cpp:135 + msgctxt "MainWindow|" + msgid "Template" + msgstr "Modèle" + +-#: ../widgets/MW_menu.cpp:130 ++#: ../widgets/MW_menu.cpp:136 + msgctxt "MainWindow|" + msgid "Revocation list" + msgstr "Liste de révocation" + +-#: ../widgets/MW_menu.cpp:131 ++#: ../widgets/MW_menu.cpp:137 + msgctxt "MainWindow|" + msgid "PEM file" + msgstr "Fichier PEM" + +-#: ../widgets/MW_menu.cpp:132 ++#: ../widgets/MW_menu.cpp:138 + msgctxt "MainWindow|" + msgid "Paste PEM file" + msgstr "Coller un fichier PEM" + +-#: ../widgets/MW_menu.cpp:135 ++#: ../widgets/MW_menu.cpp:141 + msgctxt "MainWindow|" + msgid "Token" + msgstr "Jeton" + +-#: ../widgets/MW_menu.cpp:152 ++#: ../widgets/MW_menu.cpp:158 + msgctxt "MainWindow|" + msgid "Export Certificate &Index hierarchy" + msgstr "Exporter la hiérarchie de l'index des certificats" + +-#: ../widgets/MW_menu.cpp:165 ++#: ../widgets/MW_menu.cpp:171 + msgctxt "MainWindow|" + msgid "Content" + msgstr "Contenu" + +-#: ../widgets/MW_menu.cpp:136 ++#: ../widgets/MW_menu.cpp:142 + msgctxt "MainWindow|" + msgid "&Manage Security token" + msgstr "&Gérer le jeton de sécurité" + +-#: ../widgets/MW_menu.cpp:138 ++#: ../widgets/MW_menu.cpp:144 + msgctxt "MainWindow|" + msgid "&Init Security token" + msgstr "&Initialiser le jeton de sécurité" + +-#: ../widgets/MW_menu.cpp:140 ++#: ../widgets/MW_menu.cpp:146 + msgctxt "MainWindow|" + msgid "&Change PIN" + msgstr "&Changer le NIP" + +-#: ../widgets/MW_menu.cpp:142 ++#: ../widgets/MW_menu.cpp:148 + msgctxt "MainWindow|" + msgid "Change &SO PIN" + msgstr "Changer le P&UK" + +-#: ../widgets/MW_menu.cpp:144 ++#: ../widgets/MW_menu.cpp:150 + msgctxt "MainWindow|" + msgid "Init PIN" + msgstr "Initialiser le NIP" + +-#: ../widgets/MW_menu.cpp:147 ++#: ../widgets/MW_menu.cpp:153 + msgctxt "MainWindow|" + msgid "Extra" + msgstr "Extra" + +-#: ../widgets/MW_menu.cpp:148 ++#: ../widgets/MW_menu.cpp:154 + msgctxt "MainWindow|" + msgid "&Dump DataBase" + msgstr "C&licher la base de données" + +-#: ../widgets/MW_menu.cpp:150 ++#: ../widgets/MW_menu.cpp:156 + msgctxt "MainWindow|" + msgid "&Export Certificate Index" + msgstr "Exporter l'index des certificats" + +-#: ../widgets/MW_menu.cpp:154 ++#: ../widgets/MW_menu.cpp:160 + msgctxt "MainWindow|" + msgid "C&hange DataBase password" + msgstr "C&hanger le mot de passe de la base de données" + +-#: ../widgets/MW_menu.cpp:157 ++#: ../widgets/MW_menu.cpp:163 + msgctxt "MainWindow|" + msgid "&Undelete items" + msgstr "&Récupérer des objets détruits" + +-#: ../widgets/MW_menu.cpp:160 ++#: ../widgets/MW_menu.cpp:166 + msgctxt "MainWindow|" + msgid "Generate DH parameter" + msgstr "Générer le paramètre DH" + +-#: ../widgets/MW_menu.cpp:162 ++#: ../widgets/MW_menu.cpp:168 + msgctxt "MainWindow|" + msgid "OID Resolver" + msgstr "Convertisseur d'OID" + +-#: ../widgets/MW_menu.cpp:164 ++#: ../widgets/MW_menu.cpp:170 + msgctxt "MainWindow|" + msgid "&Help" + msgstr "&Aide" + +-#: ../widgets/MW_menu.cpp:167 ++#: ../widgets/MW_menu.cpp:173 + msgctxt "MainWindow|" + msgid "About" + msgstr "A propos" + +-#: ../widgets/MainWindow.cpp:276 +-#, qt-format +-msgctxt "MainWindow|" +-msgid "no such option: %1" +-msgstr "'%1' n'est pas une option" +- +-#: ../widgets/MainWindow.cpp:366 ++#: ../widgets/MainWindow.cpp:254 + msgctxt "MainWindow|" + msgid "Import PEM data" + msgstr "Importer les données PEM" + +-#: ../widgets/MainWindow.cpp:395 ++#: ../widgets/MainWindow.cpp:283 + #, qt-format + msgctxt "MainWindow|" + msgid "Please enter the original SO PIN (PUK) of the token '%1'" + msgstr "SVP saisir le PUK original du jeton '%1'" + +-#: ../widgets/MainWindow.cpp:134 ../widgets/MainWindow.cpp:869 ++#: ../widgets/MainWindow.cpp:118 ../widgets/MainWindow.cpp:731 + msgctxt "MainWindow|" + msgid "Search" + msgstr "Rechercher" + +-#: ../widgets/MainWindow.cpp:401 ++#: ../widgets/MainWindow.cpp:289 + #, qt-format + msgctxt "MainWindow|" + msgid "Please enter the new SO PIN (PUK) for the token '%1'" + msgstr "SVP saisir le nouveau NIP SO (PUK) pour le jeton: '%1'" + +-#: ../widgets/MainWindow.cpp:408 ++#: ../widgets/MainWindow.cpp:296 + #, qt-format + msgctxt "MainWindow|" + msgid "The new label of the token '%1'" + msgstr "La nouvelle étiquette du jeton '%1'" + +-#: ../widgets/MainWindow.cpp:516 ++#: ../widgets/MainWindow.cpp:404 + #, qt-format + msgctxt "MainWindow|" + msgid "The token '%1' did not contain any keys or certificates" + msgstr "Le jeton '%1' ne contient aucune clé ni aucun certificat" + +-#: ../widgets/MainWindow.cpp:574 ++#: ../widgets/MainWindow.cpp:450 + msgctxt "MainWindow|" + msgid "Current Password" + msgstr "Mot de passe actuel" + +-#: ../widgets/MainWindow.cpp:575 ++#: ../widgets/MainWindow.cpp:451 + msgctxt "MainWindow|" + msgid "Please enter the current database password" + msgstr "SVP saisir le mot de passe de la base de données" + +-#: ../widgets/MainWindow.cpp:585 ++#: ../widgets/MainWindow.cpp:461 + msgctxt "MainWindow|" + msgid "The entered password is wrong" + msgstr "Le mot de passe renseigné est inexact" + +-#: ../widgets/MainWindow.cpp:590 ../widgets/MainWindow.cpp:668 ++#: ../widgets/MainWindow.cpp:466 + msgctxt "MainWindow|" + msgid "New Password" + msgstr "Nouveau mot de passe" + +-#: ../widgets/MainWindow.cpp:590 ++#: ../widgets/MainWindow.cpp:466 + msgctxt "MainWindow|" + msgid "" + "Please enter the new password to encrypt your private keys in the database-" +@@ -1456,70 +1449,28 @@ msgstr "" + "SVP saisir le nouveau mot de passe pour chiffrer les clés privées dans le " + "fichier de base de données" + +-#: ../widgets/MainWindow.cpp:614 ++#: ../widgets/MainWindow.cpp:490 + msgctxt "MainWindow|" + msgid "Transaction start failed" + msgstr "Le démarrage de la transaction a échoué" + +-#: ../widgets/MainWindow.cpp:668 +-#, qt-format +-msgctxt "MainWindow|" +-msgid "" +-"Please enter a password, that will be used to encrypt your private keys in " +-"the database:\n" +-"%1" +-msgstr "" +-"Veuillez saisir un mot de passe, qui sera utilisé pour chiffrer vos clés " +-"privées dans la base de données:\n" +-"%1" +- +-#: ../widgets/MainWindow.cpp:689 +-msgctxt "MainWindow|" +-msgid "Password verify error, please try again" +-msgstr "La vérification du mot de passe a échoué. SVP essayez encore" +- +-#: ../widgets/MainWindow.cpp:690 +-msgctxt "MainWindow|" +-msgid "Password" +-msgstr "Mot de passe" +- +-#: ../widgets/MainWindow.cpp:691 +-#, qt-format +-msgctxt "MainWindow|" +-msgid "" +-"Please enter the password for unlocking the database:\n" +-"%1" +-msgstr "" +-"Veuillez entrer le mot passe pour déverrouiller la base de données:\n" +-"%1" +- +-#: ../widgets/MainWindow.cpp:710 +-msgctxt "MainWindow|" +-msgid "The following error occurred:" +-msgstr "L'erreur suivante s'est produite:" +- +-#: ../widgets/MainWindow.cpp:712 +-msgctxt "MainWindow|" +-msgid "Copy to Clipboard" +-msgstr "Copier dans le presse-papier" +- +-#: ../widgets/MainWindow.cpp:781 ++#: ../widgets/MainWindow.cpp:648 + msgctxt "MainWindow|" + msgid "Certificate Index ( index.txt )" + msgstr "Index des certificats ( index.txt )" + +-#: ../widgets/MainWindow.cpp:782 ../widgets/MainWindow.cpp:842 ++#: ../widgets/MainWindow.cpp:649 ../widgets/MainWindow.cpp:704 + msgctxt "MainWindow|" + msgid "All files ( * )" + msgstr "Tous les fichiers ( * )" + +-#: ../widgets/MainWindow.cpp:811 ++#: ../widgets/MainWindow.cpp:673 + #, qt-format + msgctxt "MainWindow|" + msgid "Diffie-Hellman parameters saved as: %1" + msgstr "Les paramètres Diffie-Hellman on été sauvegardés dans: %1" + +-#: ../widgets/MainWindow.cpp:827 ++#: ../widgets/MainWindow.cpp:689 + msgctxt "MainWindow|" + msgid "" + "Diffie-Hellman parameters are needed for different applications, but not " +@@ -1600,6 +1551,11 @@ msgctxt "NewCrl|" + msgid "Hash algorithm" + msgstr "Algorithme de hachage" + ++#: ../widgets/NewCrl.cpp:77 ++msgctxt "NewCrl|" ++msgid "Create CRL" ++msgstr "Créer une liste de révocation" ++ + #: ../ui/NewKey.ui:86 + msgctxt "NewKey|" + msgid "Please give a name to the new key and select the desired keysize" +@@ -1651,7 +1607,7 @@ msgctxt "NewKey|" + msgid "Remember as default" + msgstr "Enregistrer comme valeur par défaut" + +-#: ../widgets/NewKey.cpp:181 ++#: ../widgets/NewKey.cpp:137 + msgctxt "NewKey|" + msgid "Create" + msgstr "Créer" +@@ -1738,7 +1694,7 @@ msgctxt "NewX509|" + msgid "Apply all" + msgstr "Appliquer tout" + +-#: ../ui/NewX509.ui:336 ../widgets/NewX509.cpp:586 ++#: ../ui/NewX509.ui:336 ../widgets/NewX509.cpp:592 + msgctxt "NewX509|" + msgid "Subject" + msgstr "Sujet" +@@ -1910,7 +1866,7 @@ msgid "DNS: IP: URI: email: RID:" + msgstr "DNS: IP: URI: email: RID:" + + #: ../ui/NewX509.ui:745 ../ui/NewX509.ui:762 ../ui/NewX509.ui:795 +-#: ../ui/NewX509.ui:831 ../widgets/NewX509.cpp:961 ++#: ../ui/NewX509.ui:831 ../widgets/NewX509.cpp:992 + msgctxt "NewX509|" + msgid "Edit" + msgstr "Modifier" +@@ -1935,7 +1891,7 @@ msgctxt "NewX509|" + msgid "Advanced" + msgstr "Avancé" + +-#: ../ui/NewX509.ui:1163 ../widgets/NewX509.cpp:971 ++#: ../ui/NewX509.ui:1163 ../widgets/NewX509.cpp:1002 + msgctxt "NewX509|" + msgid "Validate" + msgstr "Valider" +@@ -1954,123 +1910,123 @@ msgstr "" + "Ce nom est seulement utilisé par xca et n'apparaît pas dans le certificat " + "exporté" + +-#: ../widgets/NewX509.cpp:254 ++#: ../widgets/NewX509.cpp:270 + msgctxt "NewX509|" + msgid "Critical" + msgstr "Critique" + +-#: ../widgets/NewX509.cpp:294 ++#: ../widgets/NewX509.cpp:310 + msgctxt "NewX509|" + msgid "Create Certificate signing request" + msgstr "Créer une requête de signature de certificat" + +-#: ../widgets/NewX509.cpp:321 ++#: ../widgets/NewX509.cpp:336 + #, qt-format + msgctxt "NewX509|" + msgid "minimum size: %1" + msgstr "taille minimale: %1" + +-#: ../widgets/NewX509.cpp:323 ++#: ../widgets/NewX509.cpp:338 + #, qt-format + msgctxt "NewX509|" + msgid "maximum size: %1" + msgstr "taille maximale: %1" + +-#: ../widgets/NewX509.cpp:325 ++#: ../widgets/NewX509.cpp:340 + msgctxt "NewX509|" + msgid "only a-z A-Z 0-9 '()+,-./:=?" + msgstr "seulement a-z A-Z 0-9 '()+,-./:=?" + +-#: ../widgets/NewX509.cpp:329 ++#: ../widgets/NewX509.cpp:344 + msgctxt "NewX509|" + msgid "only 7-bit clean characters" + msgstr "seulement des caractères 7-bit ASCII imprimables" + +-#: ../widgets/NewX509.cpp:354 ++#: ../widgets/NewX509.cpp:369 + msgctxt "NewX509|" + msgid "Edit XCA template" + msgstr "Editer un modèle XCA" + +-#: ../widgets/NewX509.cpp:367 ++#: ../widgets/NewX509.cpp:382 + msgctxt "NewX509|" + msgid "Create x509 Certificate" + msgstr "Créer un certificat x509" + +-#: ../widgets/NewX509.cpp:718 ++#: ../widgets/NewX509.cpp:750 + #, qt-format + msgctxt "NewX509|" + msgid "Template '%1' applied" + msgstr "Le modèle '%1' a été appliqué" + +-#: ../widgets/NewX509.cpp:725 ++#: ../widgets/NewX509.cpp:757 + #, qt-format + msgctxt "NewX509|" + msgid "Subject applied from template '%1'" + msgstr "Sujet extrait du modèle '%1'" + +-#: ../widgets/NewX509.cpp:733 ++#: ../widgets/NewX509.cpp:765 + #, qt-format + msgctxt "NewX509|" + msgid "Extensions applied from template '%1'" + msgstr "Les extensions du modéle '%1' ont été appliquées" + +-#: ../widgets/NewX509.cpp:748 ++#: ../widgets/NewX509.cpp:780 + #, qt-format + msgctxt "NewX509|" + msgid "New key '%1' created" + msgstr "La nouvelle clé '%1' a été créée" + +-#: ../widgets/NewX509.cpp:994 ++#: ../widgets/NewX509.cpp:1025 + msgctxt "NewX509|" + msgid "Other Tabs" + msgstr "Autres Onglets" + +-#: ../widgets/NewX509.cpp:1008 ++#: ../widgets/NewX509.cpp:1039 + msgctxt "NewX509|" + msgid "Advanced Tab" + msgstr "Onglet Avancé" + +-#: ../widgets/NewX509.cpp:1015 ++#: ../widgets/NewX509.cpp:1046 + msgctxt "NewX509|" + msgid "Errors" + msgstr "Erreurs" + +-#: ../widgets/NewX509.cpp:1033 ++#: ../widgets/NewX509.cpp:1064 + msgctxt "NewX509|" + msgid "From PKCS#10 request" + msgstr "A partir d'une requête en PKCS#10" + +-#: ../widgets/NewX509.cpp:1136 ../widgets/NewX509.cpp:1149 +-#: ../widgets/NewX509.cpp:1168 ../widgets/NewX509.cpp:1180 +-#: ../widgets/NewX509.cpp:1196 ../widgets/NewX509.cpp:1210 +-#: ../widgets/NewX509.cpp:1244 ../widgets/NewX509.cpp:1255 +-#: ../widgets/NewX509.cpp:1278 ../widgets/NewX509.cpp:1301 +-#: ../widgets/NewX509.cpp:1327 ../widgets/NewX509.cpp:1347 ++#: ../widgets/NewX509.cpp:1172 ../widgets/NewX509.cpp:1185 ++#: ../widgets/NewX509.cpp:1204 ../widgets/NewX509.cpp:1216 ++#: ../widgets/NewX509.cpp:1232 ../widgets/NewX509.cpp:1246 ++#: ../widgets/NewX509.cpp:1280 ../widgets/NewX509.cpp:1299 ++#: ../widgets/NewX509.cpp:1322 ../widgets/NewX509.cpp:1345 ++#: ../widgets/NewX509.cpp:1371 ../widgets/NewX509.cpp:1391 + msgctxt "NewX509|" + msgid "Abort rollout" + msgstr "Interrompre le déploiement" + +-#: ../widgets/NewX509.cpp:1145 ++#: ../widgets/NewX509.cpp:1181 + msgctxt "NewX509|" + msgid "The following length restrictions of RFC3280 are violated:" + msgstr "" + "Pour être en conformité avec la RFC3280, les règles de restriction de " + "longueur suivantes ne sont pas respectées:" + +-#: ../widgets/NewX509.cpp:1148 ../widgets/NewX509.cpp:1209 ++#: ../widgets/NewX509.cpp:1184 ../widgets/NewX509.cpp:1245 + msgctxt "NewX509|" + msgid "Edit subject" + msgstr "Modifier le sujet" + +-#: ../widgets/NewX509.cpp:1150 ../widgets/NewX509.cpp:1211 +-#: ../widgets/NewX509.cpp:1256 ../widgets/NewX509.cpp:1279 +-#: ../widgets/NewX509.cpp:1302 ../widgets/NewX509.cpp:1328 +-#: ../widgets/NewX509.cpp:1348 ++#: ../widgets/NewX509.cpp:1186 ../widgets/NewX509.cpp:1247 ++#: ../widgets/NewX509.cpp:1300 ../widgets/NewX509.cpp:1323 ++#: ../widgets/NewX509.cpp:1346 ../widgets/NewX509.cpp:1372 ++#: ../widgets/NewX509.cpp:1392 + msgctxt "NewX509|" + msgid "Continue rollout" + msgstr "Continuer le déploiement" + +-#: ../widgets/NewX509.cpp:1166 ++#: ../widgets/NewX509.cpp:1202 + msgctxt "NewX509|" + msgid "" + "The verification of the Certificate request failed.\n" +@@ -2079,12 +2035,12 @@ msgstr "" + "La vérification de la requête de signature à échoué.\n" + "Le déploiement devrait être interrompu." + +-#: ../widgets/NewX509.cpp:1167 ++#: ../widgets/NewX509.cpp:1203 + msgctxt "NewX509|" + msgid "Continue anyway" + msgstr "Continuer quand-même" + +-#: ../widgets/NewX509.cpp:1178 ++#: ../widgets/NewX509.cpp:1214 + msgctxt "NewX509|" + msgid "" + "The internal name and the common name are empty.\n" +@@ -2093,22 +2049,22 @@ msgstr "" + "Le nom interne et le nom commun sont vides.\n" + "SVP saisir au moins le nom interne." + +-#: ../widgets/NewX509.cpp:1179 ++#: ../widgets/NewX509.cpp:1215 + msgctxt "NewX509|" + msgid "Edit name" + msgstr "Modifier le nom" + +-#: ../widgets/NewX509.cpp:1194 ++#: ../widgets/NewX509.cpp:1230 + msgctxt "NewX509|" + msgid "There is no Key selected for signing." + msgstr "Aucune clé n'est sélectionnée pour la signature." + +-#: ../widgets/NewX509.cpp:1195 ++#: ../widgets/NewX509.cpp:1231 + msgctxt "NewX509|" + msgid "Select key" + msgstr "Sélectionner la clé" + +-#: ../widgets/NewX509.cpp:1207 ++#: ../widgets/NewX509.cpp:1243 + #, qt-format + msgctxt "NewX509|" + msgid "" +@@ -2120,22 +2076,42 @@ msgstr "" + "%1\n" + "bien que vous les avez déclarées comme obligatoires dans le menu des options." + +-#: ../widgets/NewX509.cpp:1241 ++#: ../widgets/NewX509.cpp:1277 + msgctxt "NewX509|" + msgid "The key you selected for signing is not a private one." + msgstr "La clé sélectionnée pour la signature n'est pas une clé privée." + +-#: ../widgets/NewX509.cpp:1242 ++#: ../widgets/NewX509.cpp:1278 + msgctxt "NewX509|" + msgid "Select other signer" + msgstr "Sélectionner un autre signataire" + +-#: ../widgets/NewX509.cpp:1242 ++#: ../widgets/NewX509.cpp:1278 + msgctxt "NewX509|" + msgid "Select other key" + msgstr "Sélectionner une autre clé" + +-#: ../widgets/NewX509.cpp:1252 ++#: ../widgets/NewX509.cpp:1288 ++#, qt-format ++msgctxt "NewX509|" ++msgid "" ++"The currently selected hash algorithm '%1' is insecure and should not be " ++"used." ++msgstr "" ++"L'algorithme de hachage sélectionné '%1' est peu sûr et ne devrait pas être " ++"utilisé." ++ ++#: ../widgets/NewX509.cpp:1289 ++msgctxt "NewX509|" ++msgid "Select other algorithm" ++msgstr "Sélectionner un autre algorithme" ++ ++#: ../widgets/NewX509.cpp:1290 ++msgctxt "NewX509|" ++msgid "Use algorithm anyway" ++msgstr "Utiliser quand même cet algorithme" ++ ++#: ../widgets/NewX509.cpp:1296 + msgctxt "NewX509|" + msgid "" + "The certificate will be earlier valid than the signer. This is probably not " +@@ -2144,18 +2120,18 @@ msgstr "" + "Le certificat serait valide avant son signataire. Ce n'est probablement pas " + "ce qui est désiré." + +-#: ../widgets/NewX509.cpp:1254 ../widgets/NewX509.cpp:1277 +-#: ../widgets/NewX509.cpp:1300 ++#: ../widgets/NewX509.cpp:1298 ../widgets/NewX509.cpp:1321 ++#: ../widgets/NewX509.cpp:1344 + msgctxt "NewX509|" + msgid "Edit dates" + msgstr "Modifier les limites de validité" + +-#: ../widgets/NewX509.cpp:1257 ../widgets/NewX509.cpp:1280 ++#: ../widgets/NewX509.cpp:1301 ../widgets/NewX509.cpp:1324 + msgctxt "NewX509|" + msgid "Adjust date and continue" + msgstr "Ajuster la date et continuer" + +-#: ../widgets/NewX509.cpp:1275 ++#: ../widgets/NewX509.cpp:1319 + msgctxt "NewX509|" + msgid "" + "The certificate will be longer valid than the signer. This is probably not " +@@ -2164,7 +2140,7 @@ msgstr "" + "Le certificat serait valide plus longtemps que son signataire. Ce n'est " + "probablement pas ce qui est désiré." + +-#: ../widgets/NewX509.cpp:1298 ++#: ../widgets/NewX509.cpp:1342 + msgctxt "NewX509|" + msgid "" + "The certificate will be out of date before it becomes valid. You most " +@@ -2173,7 +2149,7 @@ msgstr "" + "Le certificat serait échu avant de devenir actif. Vous avez probablement " + "interverti les deux dates." + +-#: ../widgets/NewX509.cpp:1319 ++#: ../widgets/NewX509.cpp:1363 + msgctxt "NewX509|" + msgid "" + "The certificate contains invalid or duplicate extensions. Check the " +@@ -2182,7 +2158,7 @@ msgstr "" + "Le certificat contient des extensions dupliquées ou invalides. Vérifier la " + "validité sur l'onglet \"Avancé\"." + +-#: ../widgets/NewX509.cpp:1322 ++#: ../widgets/NewX509.cpp:1366 + msgctxt "NewX509|" + msgid "" + "The certificate contains no extensions. You may apply the extensions of one " +@@ -2191,12 +2167,12 @@ msgstr "" + "Le certificat ne contient aucune extension. Vous pouvez appliquer des " + "extensions à partir de l'un des modèles pour définir l'usage du certificat" + +-#: ../widgets/NewX509.cpp:1326 ../widgets/NewX509.cpp:1346 ++#: ../widgets/NewX509.cpp:1370 ../widgets/NewX509.cpp:1390 + msgctxt "NewX509|" + msgid "Edit extensions" + msgstr "Modifier les extensions" + +-#: ../widgets/NewX509.cpp:1345 ++#: ../widgets/NewX509.cpp:1389 + msgctxt "NewX509|" + msgid "" + "The subject alternative name shall contain a copy of the common name. " +@@ -2205,7 +2181,7 @@ msgstr "" + "Le nom alternatif du sujet devrait contenir une copie du nom commun. " + "Cependant ce dernier est vide." + +-#: ../widgets/NewX509_ext.cpp:195 ++#: ../widgets/NewX509_ext.cpp:189 + #, qt-format + msgctxt "NewX509|" + msgid "Configfile error on line %1\n" +@@ -2276,7 +2252,7 @@ msgctxt "OpenDb|" + msgid "Password" + msgstr "Mot de passe" + +-#: ../ui/OpenDb.ui:142 ../widgets/OpenDb.cpp:58 ++#: ../ui/OpenDb.ui:142 ../widgets/OpenDb.cpp:50 + msgctxt "OpenDb|" + msgid "Database name" + msgstr "Nom de la base de données" +@@ -2286,7 +2262,7 @@ msgctxt "OpenDb|" + msgid "Table prefix" + msgstr "Préfixe du nom des tables" + +-#: ../widgets/OpenDb.cpp:151 ++#: ../widgets/OpenDb.cpp:121 + msgctxt "OpenDb|" + msgid "" + "No SqLite3 driver available. Please install the qt-sqlite package of your " +@@ -2295,25 +2271,6 @@ msgstr "" + "Le pilote SqLite3 n'est pas disponible. SVP installez le paquetage qt-sqlite " + "de votre distribution" + +-#: ../widgets/OpenDb.cpp:195 +-#, qt-format +-msgctxt "OpenDb|" +-msgid "" +-"Please enter the password to access the database server %2 as user '%1'." +-msgstr "" +-"SVP saisir le mot de passe de l'utilisateur '%1' sur le serveur de base de " +-"données %2." +- +-#: ../widgets/OpenDb.cpp:234 +-msgctxt "OpenDb|" +-msgid "" +-"The database driver does not support transactions. This may happen if the " +-"client and server have different versions. Continue with care." +-msgstr "" +-"Le pilote de base de données ne supporte pas les transactions. Ceci peut se " +-"produire si le client et le serveur n'ont pas les mêmes versions. Continuez " +-"avec prudence" +- + #: ../ui/Options.ui:28 + msgctxt "Options|" + msgid "XCA Options" +@@ -2446,37 +2403,37 @@ msgctxt "Options|" + msgid "Search" + msgstr "Rechercher" + +-#: ../widgets/Options.cpp:31 ++#: ../widgets/Options.cpp:34 + msgctxt "Options|" + msgid "Printable string or UTF8 (default)" + msgstr "Chaîne imprimable ou UTF8 (défaut)" + +-#: ../widgets/Options.cpp:32 ++#: ../widgets/Options.cpp:35 + msgctxt "Options|" + msgid "PKIX recommendation in RFC2459" + msgstr "La recommandation PKIX est dans la RFC2459" + +-#: ../widgets/Options.cpp:33 ++#: ../widgets/Options.cpp:36 + msgctxt "Options|" + msgid "No BMP strings, only printable and T61" + msgstr "Pas de chaîne BMP, seulement imprimable et T61" + +-#: ../widgets/Options.cpp:34 ++#: ../widgets/Options.cpp:37 + msgctxt "Options|" + msgid "UTF8 strings only (RFC2459)" + msgstr "Chaînes UTF8 uniquement (RFC2459)" + +-#: ../widgets/Options.cpp:35 ++#: ../widgets/Options.cpp:38 + msgctxt "Options|" + msgid "All strings" + msgstr "Toutes les chaînes" + +-#: ../widgets/Options.cpp:57 ++#: ../widgets/Options.cpp:60 + msgctxt "Options|" + msgid "Days" + msgstr "Jours" + +-#: ../widgets/Options.cpp:57 ++#: ../widgets/Options.cpp:60 + msgctxt "Options|" + msgid "Weeks" + msgstr "Semaines" +@@ -2495,19 +2452,24 @@ msgctxt "PwDialog|" + msgid "Take as HEX string" + msgstr "Exprimé en hexadécimal" + +-#: ../widgets/PwDialog.cpp:85 ++#: ../widgets/PwDialog.cpp:44 ++msgctxt "PwDialog|" ++msgid "Password" ++msgstr "Mot de passe" ++ ++#: ../widgets/PwDialog.cpp:96 + #, qt-format + msgctxt "PwDialog|" + msgid "Repeat %1" + msgstr "Répéter %1" + +-#: ../widgets/PwDialog.cpp:98 ++#: ../widgets/PwDialog.cpp:109 + #, qt-format + msgctxt "PwDialog|" + msgid "%1 mismatch" + msgstr "%1 ne correspond pas" + +-#: ../widgets/PwDialog.cpp:105 ++#: ../widgets/PwDialog.cpp:116 + msgctxt "PwDialog|" + msgid "" + "Hex password must only contain the characters '0' - '9' and 'a' - 'f' and it " +@@ -2516,62 +2478,92 @@ msgstr "" + "Un mot de passe hexadécimal peut seulement contenir les caractères '0' à '9' " + "et 'a' à 'f' et il doit consister en un nombre pair de caractères" + +-#: ../widgets/PwDialog.cpp:131 ++#: ../widgets/PwDialog.cpp:145 + msgctxt "PwDialog|" +-msgid "E&xit" +-msgstr "&Quitter" ++msgid "Exit" ++msgstr "Quitter" ++ ++#: ../widgets/XcaWarning.cpp:28 ++msgctxt "QMessageBox|" ++msgid "Ok" ++msgstr "OK" ++ ++#: ../widgets/XcaWarning.cpp:29 ++msgctxt "QMessageBox|" ++msgid "Close" ++msgstr "Fermer" ++ ++#: ../widgets/XcaWarning.cpp:30 ++msgctxt "QMessageBox|" ++msgid "Cancel" ++msgstr "Annuler" ++ ++#: ../widgets/XcaWarning.cpp:31 ++msgctxt "QMessageBox|" ++msgid "Apply" ++msgstr "Appliquer" ++ ++#: ../widgets/XcaWarning.cpp:32 ++msgctxt "QMessageBox|" ++msgid "Yes" ++msgstr "Oui" + +-#: ../lib/asn1time.cpp:155 ++#: ../widgets/XcaWarning.cpp:33 ++msgctxt "QMessageBox|" ++msgid "No" ++msgstr "Non" ++ ++#: ../lib/asn1time.cpp:157 + msgctxt "QObject|" + msgid "Undefined" + msgstr "Indéfini" + +-#: ../lib/asn1time.cpp:157 ++#: ../lib/asn1time.cpp:159 + msgctxt "QObject|" + msgid "Broken / Invalid" + msgstr "Invalide" + +-#: ../lib/asn1time.cpp:203 ++#: ../lib/asn1time.cpp:205 + #, qt-format + msgctxt "QObject|" + msgid "in %1 seconds" + msgstr "dans %1 secondes" + +-#: ../lib/asn1time.cpp:204 ++#: ../lib/asn1time.cpp:206 + #, qt-format + msgctxt "QObject|" + msgid "%1 seconds ago" + msgstr "il y a %1 secondes" + +-#: ../lib/asn1time.cpp:207 ++#: ../lib/asn1time.cpp:209 + #, qt-format + msgctxt "QObject|" + msgid "in %1 minutes" + msgstr "dans %1 minutes" + +-#: ../lib/asn1time.cpp:208 ++#: ../lib/asn1time.cpp:210 + #, qt-format + msgctxt "QObject|" + msgid "%1 minutes ago" + msgstr "il y a %1 minutes" + +-#: ../lib/asn1time.cpp:210 ++#: ../lib/asn1time.cpp:212 + msgctxt "QObject|" + msgid "Yesterday" + msgstr "Hier" + +-#: ../lib/asn1time.cpp:212 ++#: ../lib/asn1time.cpp:214 + msgctxt "QObject|" + msgid "Tomorrow" + msgstr "Demain" + +-#: ../lib/asn1time.cpp:215 ++#: ../lib/asn1time.cpp:217 + #, qt-format + msgctxt "QObject|" + msgid "in %1 hours" + msgstr "dans %1 heures" + +-#: ../lib/asn1time.cpp:216 ++#: ../lib/asn1time.cpp:218 + #, qt-format + msgctxt "QObject|" + msgid "%1 hours ago" +@@ -2587,7 +2579,7 @@ msgctxt "QObject|" + msgid "Error finding endmarker of string" + msgstr "Erreur: une marque de fin de chaîne n'a pas été trouvée" + +-#: ../lib/exception.h:61 ++#: ../lib/exception.h:60 + #, qt-format + msgctxt "QObject|" + msgid "Out of Memory at %1:%2" +@@ -2598,7 +2590,7 @@ msgctxt "QObject|" + msgid "All files ( * )" + msgstr "Tous les fichiers ( * )" + +-#: ../lib/load_obj.cpp:55 ++#: ../lib/load_obj.cpp:56 + msgctxt "QObject|" + msgid "" + "PKI Keys ( *.pem *.der *.key );; PKCS#8 Keys ( *.p8 *.pk8 );; Microsoft PVK " +@@ -2607,151 +2599,151 @@ msgstr "" + "Clés PKI ( *.pem *.der *.key );; Clés PKCS#8 ( *.p8 *.pk8 );; Clés Microsoft " + "PVK ( *.pvk );; Clés publiques SSH ( *.pub );;" + +-#: ../lib/load_obj.cpp:59 ++#: ../lib/load_obj.cpp:60 + msgctxt "QObject|" + msgid "Import RSA key" + msgstr "Importer une clé RSA" + +-#: ../lib/load_obj.cpp:71 ++#: ../lib/load_obj.cpp:72 + msgctxt "QObject|" + msgid "PKCS#10 CSR ( *.pem *.der *.csr );; " + msgstr "PKCS#10 CSR ( *.pem *.der *.csr );;" + +-#: ../lib/load_obj.cpp:72 ++#: ../lib/load_obj.cpp:73 + msgctxt "QObject|" + msgid "Import Request" + msgstr "Importer une requête" + +-#: ../lib/load_obj.cpp:84 ++#: ../lib/load_obj.cpp:85 + msgctxt "QObject|" + msgid "Certificates ( *.pem *.der *.crt *.cer );;" + msgstr "Certificats ( *.pem *.der *.crt *.cer );;" + +-#: ../lib/load_obj.cpp:85 ++#: ../lib/load_obj.cpp:86 + msgctxt "QObject|" + msgid "Import X.509 Certificate" + msgstr "Importer un certificat X.509" + +-#: ../lib/load_obj.cpp:97 ++#: ../lib/load_obj.cpp:98 + msgctxt "QObject|" + msgid "PKCS#7 data ( *.p7s *.p7m *.p7b );;" + msgstr "Données PKCS#7 ( *.p7s *.p7m *.p7b );;" + +-#: ../lib/load_obj.cpp:98 ++#: ../lib/load_obj.cpp:99 + msgctxt "QObject|" + msgid "Import PKCS#7 Certificates" + msgstr "Importer un certificat PKCS#7" + +-#: ../lib/load_obj.cpp:110 ++#: ../lib/load_obj.cpp:111 + msgctxt "QObject|" + msgid "PKCS#12 Certificates ( *.p12 *.pfx );;" + msgstr "Certificats PKCS#12 ( *.p12 *.pfx );;" + +-#: ../lib/load_obj.cpp:111 ++#: ../lib/load_obj.cpp:112 + msgctxt "QObject|" + msgid "Import PKCS#12 Private Certificate" + msgstr "Importer un certificat privé PKCS#12" + +-#: ../lib/load_obj.cpp:124 ++#: ../lib/load_obj.cpp:125 + msgctxt "QObject|" + msgid "XCA templates ( *.xca );;" + msgstr "Modèles XCA ( *.xca );;" + +-#: ../lib/load_obj.cpp:125 ++#: ../lib/load_obj.cpp:126 + msgctxt "QObject|" + msgid "Import XCA Templates" + msgstr "Importer des modèles XCA" + +-#: ../lib/load_obj.cpp:137 ++#: ../lib/load_obj.cpp:138 + msgctxt "QObject|" + msgid "Revocation lists ( *.pem *.der *.crl );;" + msgstr "Listes de révocation ( *.pem *.der *.crl );;" + +-#: ../lib/load_obj.cpp:138 ++#: ../lib/load_obj.cpp:139 + msgctxt "QObject|" + msgid "Import Certificate Revocation List" + msgstr "Importer une liste de révocation de certificats" + +-#: ../lib/load_obj.cpp:150 ++#: ../lib/load_obj.cpp:151 + msgctxt "QObject|" + msgid "XCA Databases ( *.xdb );;" + msgstr "Bases de données XCA ( *.xdb );;" + +-#: ../lib/load_obj.cpp:151 ++#: ../lib/load_obj.cpp:152 + msgctxt "QObject|" + msgid "Open XCA Database" + msgstr "Ouvrir une Base de Données XCA" + +-#: ../lib/load_obj.cpp:159 ++#: ../lib/load_obj.cpp:160 + msgctxt "QObject|" + msgid "PKCS#11 library ( *.dll );;" + msgstr "Bibliothèque PKCS#11 ( *.dll );;" + +-#: ../lib/load_obj.cpp:161 ++#: ../lib/load_obj.cpp:162 + msgctxt "QObject|" + msgid "PKCS#11 library ( *.dylib *.so );;" + msgstr "Bibliothèque PKCS#11 ( *.dylib *.so );;" + +-#: ../lib/load_obj.cpp:163 ++#: ../lib/load_obj.cpp:164 + msgctxt "QObject|" + msgid "PKCS#11 library ( *.so );;" + msgstr "Bibliothèque PKCS#11 ( *.so );;" + +-#: ../lib/load_obj.cpp:165 ++#: ../lib/load_obj.cpp:166 + msgctxt "QObject|" + msgid "Open PKCS#11 shared library" + msgstr "Ouvrir une bibliothèque partagée PKCS#11" + +-#: ../lib/load_obj.cpp:172 ++#: ../lib/load_obj.cpp:173 + msgctxt "QObject|" + msgid "PEM files ( *.pem );;" + msgstr "Fichiers PEM ( *.pem );;" + +-#: ../lib/load_obj.cpp:173 ++#: ../lib/load_obj.cpp:174 + msgctxt "QObject|" + msgid "Load PEM encoded file" + msgstr "Charger un fichier en format PEM" + +-#: ../lib/pkcs11.cpp:200 ++#: ../lib/pkcs11.cpp:214 + msgctxt "QObject|" + msgid "Please enter the PIN on the PinPad" + msgstr "Saisir le NIP sur le pavé prévu à cet effet SVP" + +-#: ../lib/pkcs11.cpp:211 ++#: ../lib/pkcs11.cpp:225 + #, qt-format + msgctxt "QObject|" + msgid "Please enter the SO PIN (PUK) of the token %1" + msgstr "SVP saisir le PUK du jeton '%1'" + +-#: ../lib/pkcs11.cpp:212 ++#: ../lib/pkcs11.cpp:226 + #, qt-format + msgctxt "QObject|" + msgid "Please enter the PIN of the token %1" + msgstr "SVP saisir le NIP du jeton '%1'" + +-#: ../lib/pkcs11.cpp:265 ++#: ../lib/pkcs11.cpp:280 + msgctxt "QObject|" + msgid "No Security token found" + msgstr "Aucun jeton de sécurité trouvé" + +-#: ../lib/pkcs11.cpp:276 ++#: ../lib/pkcs11.cpp:291 + msgctxt "QObject|" + msgid "Select" + msgstr "Sélectionner" + +-#: ../lib/pkcs11.cpp:299 ++#: ../lib/pkcs11.cpp:314 + #, qt-format + msgctxt "QObject|" + msgid "Please enter the new SO PIN (PUK) for the token: '%1'" + msgstr "SVP saisir le nouveau PUK pour le jeton: '%1'" + +-#: ../lib/pkcs11.cpp:301 ++#: ../lib/pkcs11.cpp:316 + #, qt-format + msgctxt "QObject|" + msgid "Please enter the new PIN for the token: '%1'" + msgstr "SVP saisir le nouveau NIP pour le jeton: '%1'" + +-#: ../lib/pkcs11.h:92 ++#: ../lib/pkcs11.h:101 + #, qt-format + msgctxt "QObject|" + msgid "Required PIN size: %1 - %2" +@@ -2788,13 +2780,13 @@ msgctxt "QObject|" + msgid "Library loading failed" + msgstr "Le chargement de la bibliothèque a échoué" + +-#: ../lib/pkcs11_lib.cpp:515 ++#: ../lib/pkcs11_lib.cpp:518 + #, qt-format + msgctxt "QObject|" + msgid "PKCS#11 function '%1' failed: %2" + msgstr "La fonction PKCS#11 '%1' a échoué: %2" + +-#: ../lib/pkcs11_lib.cpp:523 ++#: ../lib/pkcs11_lib.cpp:526 + #, qt-format + msgctxt "QObject|" + msgid "" +@@ -2806,24 +2798,24 @@ msgstr "" + "Dans la bibliothèque %3\n" + "%4" + +-#: ../lib/x509name.cpp:116 ++#: ../lib/x509name.cpp:111 + msgctxt "QObject|" + msgid "Invalid" + msgstr "Invalide" + +-#: ../lib/x509name.cpp:240 ++#: ../lib/x509name.cpp:235 + #, qt-format + msgctxt "QObject|" + msgid "%1 is shorter than %2 bytes: '%3'" + msgstr "%1 est plus court que %2 octets: '%3'" + +-#: ../lib/x509name.cpp:245 ++#: ../lib/x509name.cpp:240 + #, qt-format + msgctxt "QObject|" + msgid "%1 is longer than %2 bytes: '%3'" + msgstr "%1 est plus long que %2 octets: '%3'" + +-#: ../lib/x509v3ext.cpp:85 ++#: ../lib/x509v3ext.cpp:86 + #, qt-format + msgctxt "QObject|" + msgid "String '%1' for '%2' contains invalid characters" +@@ -2867,196 +2859,219 @@ msgctxt "QObject|" + msgid "Failed to start a database transaction" + msgstr "Impossible de démarrer la transaction BDD" + +-#: ../lib/func.cpp:598 ++#: ../lib/func.cpp:634 + msgctxt "QObject|" + msgid "Country code" + msgstr "Code de pays" + +-#: ../lib/func.cpp:599 ++#: ../lib/func.cpp:635 + msgctxt "QObject|" + msgid "State or Province" + msgstr "Etat ou province" + +-#: ../lib/func.cpp:600 ++#: ../lib/func.cpp:636 + msgctxt "QObject|" + msgid "Locality" + msgstr "Localité" + +-#: ../lib/func.cpp:601 ++#: ../lib/func.cpp:637 + msgctxt "QObject|" + msgid "Organisation" + msgstr "Organisation" + +-#: ../lib/func.cpp:602 ++#: ../lib/func.cpp:638 + msgctxt "QObject|" + msgid "Organisational unit" + msgstr "Unité d'organisation" + +-#: ../lib/func.cpp:603 ++#: ../lib/func.cpp:639 + msgctxt "QObject|" + msgid "Common name" + msgstr "Nom commun" + +-#: ../lib/func.cpp:604 ++#: ../lib/func.cpp:640 + msgctxt "QObject|" + msgid "E-Mail address" + msgstr "Adresse de courriel" + +-#: ../lib/func.cpp:605 ++#: ../lib/func.cpp:641 + msgctxt "QObject|" + msgid "Serial number" + msgstr "Numéro de série" + +-#: ../lib/func.cpp:606 ++#: ../lib/func.cpp:642 + msgctxt "QObject|" + msgid "Given name" + msgstr "Prénom" + +-#: ../lib/func.cpp:607 ++#: ../lib/func.cpp:643 + msgctxt "QObject|" + msgid "Surname" + msgstr "Nom de famille" + +-#: ../lib/func.cpp:608 ++#: ../lib/func.cpp:644 + msgctxt "QObject|" + msgid "Title" + msgstr "Titre" + +-#: ../lib/func.cpp:609 ++#: ../lib/func.cpp:645 + msgctxt "QObject|" + msgid "Initials" + msgstr "Initiales" + +-#: ../lib/func.cpp:610 ++#: ../lib/func.cpp:646 + msgctxt "QObject|" + msgid "Description" + msgstr "Description" + +-#: ../lib/func.cpp:611 ++#: ../lib/func.cpp:647 + msgctxt "QObject|" + msgid "Role" + msgstr "Rôle" + +-#: ../lib/func.cpp:612 ++#: ../lib/func.cpp:648 + msgctxt "QObject|" + msgid "Pseudonym" + msgstr "Pseudonyme" + +-#: ../lib/func.cpp:613 ++#: ../lib/func.cpp:649 + msgctxt "QObject|" + msgid "Generation Qualifier" + msgstr "Qualifiant de génération" + +-#: ../lib/func.cpp:614 ++#: ../lib/func.cpp:650 + msgctxt "QObject|" + msgid "x500 Unique Identifier" + msgstr "Identifiant Unique X500" + +-#: ../lib/func.cpp:615 ++#: ../lib/func.cpp:651 + msgctxt "QObject|" + msgid "Name" + msgstr "Nom" + +-#: ../lib/func.cpp:616 ++#: ../lib/func.cpp:652 + msgctxt "QObject|" + msgid "DN Qualifier" + msgstr "Qualifiant de DN" + +-#: ../lib/func.cpp:617 ++#: ../lib/func.cpp:653 + msgctxt "QObject|" + msgid "Unstructured name" + msgstr "Nom non-structuré" + +-#: ../lib/func.cpp:618 ++#: ../lib/func.cpp:654 + msgctxt "QObject|" + msgid "Challenge password" + msgstr "Mot de passe challenge" + +-#: ../lib/func.cpp:620 ++#: ../lib/func.cpp:656 + msgctxt "QObject|" + msgid "Basic Constraints" + msgstr "Contraintes de base" + +-#: ../lib/func.cpp:621 ++#: ../lib/func.cpp:657 + msgctxt "QObject|" + msgid "Subject alternative name" + msgstr "Nom alternatif du sujet" + +-#: ../lib/func.cpp:622 ++#: ../lib/func.cpp:658 + msgctxt "QObject|" + msgid "issuer alternative name" + msgstr "Nom alternatif de l'émetteur" + +-#: ../lib/func.cpp:623 ++#: ../lib/func.cpp:659 + msgctxt "QObject|" + msgid "Subject key identifier" + msgstr "Clé d'identification du sujet" + +-#: ../lib/func.cpp:624 ++#: ../lib/func.cpp:660 + msgctxt "QObject|" + msgid "Authority key identifier" + msgstr "Clé d'identification de l'autorité" + +-#: ../lib/func.cpp:625 ++#: ../lib/func.cpp:661 + msgctxt "QObject|" + msgid "Key usage" + msgstr "Usage de la clé" + +-#: ../lib/func.cpp:626 ++#: ../lib/func.cpp:662 + msgctxt "QObject|" + msgid "Extended key usage" + msgstr "Usage étendu de la clé" + +-#: ../lib/func.cpp:627 ++#: ../lib/func.cpp:663 + msgctxt "QObject|" + msgid "CRL distribution points" + msgstr "Points de distribution de la CRL" + +-#: ../lib/func.cpp:628 ++#: ../lib/func.cpp:664 + msgctxt "QObject|" + msgid "Authority information access" + msgstr "Accès à l'information de l'autorité" + +-#: ../lib/func.cpp:629 ++#: ../lib/func.cpp:665 + msgctxt "QObject|" + msgid "Certificate type" + msgstr "Type de certificat" + +-#: ../lib/func.cpp:630 ++#: ../lib/func.cpp:666 + msgctxt "QObject|" + msgid "Base URL" + msgstr "URL de base" + +-#: ../lib/func.cpp:631 ++#: ../lib/func.cpp:667 + msgctxt "QObject|" + msgid "Revocation URL" + msgstr "URL de révocation" + +-#: ../lib/func.cpp:632 ++#: ../lib/func.cpp:668 + msgctxt "QObject|" + msgid "CA Revocation URL" + msgstr "URL de révocation du CA" + +-#: ../lib/func.cpp:633 ++#: ../lib/func.cpp:669 + msgctxt "QObject|" + msgid "Certificate renewal URL" + msgstr "URL de renouvellement du certificat" + +-#: ../lib/func.cpp:634 ++#: ../lib/func.cpp:670 + msgctxt "QObject|" + msgid "CA policy URL" + msgstr "URL de la politique du CA" + +-#: ../lib/func.cpp:635 ++#: ../lib/func.cpp:671 + msgctxt "QObject|" + msgid "SSL server name" + msgstr "Nom du serveur SSL" + +-#: ../lib/func.cpp:636 ++#: ../lib/func.cpp:672 + msgctxt "QObject|" + msgid "Comment" + msgstr "Commentaire" + ++#: ../lib/main.cpp:210 ++#, qt-format ++msgctxt "QObject|" ++msgid "Index file written to '%1'" ++msgstr "Fichier d'index écrit dans '%1'" ++ ++#: ../lib/main.cpp:217 ++#, qt-format ++msgctxt "QObject|" ++msgid "Index hierarchy written to '%1'" ++msgstr "Hiérarchie d'index écrite dans '%1'" ++ ++#: ../lib/main.cpp:230 ++#, qt-format ++msgctxt "QObject|" ++msgid "Unknown key type %1" ++msgstr "Type de clé inconnu %1" ++ ++#: ../widgets/XcaWarning.h:23 ++msgctxt "QObject|" ++msgid "Password verify error, please try again" ++msgstr "La vérification du mot de passe a échoué. SVP essayez encore" ++ + #: ../widgets/ReqTreeView.cpp:25 + msgctxt "ReqTreeView|" + msgid "Sign" +@@ -3097,32 +3112,32 @@ msgctxt "RevocationList|" + msgid "Edit" + msgstr "Modifier" + +-#: ../widgets/RevocationList.cpp:73 ++#: ../widgets/RevocationList.cpp:75 + msgctxt "RevocationList|" + msgid "No." + msgstr "No." + +-#: ../widgets/RevocationList.cpp:73 ++#: ../widgets/RevocationList.cpp:75 + msgctxt "RevocationList|" + msgid "Serial" + msgstr "Numéro de série" + +-#: ../widgets/RevocationList.cpp:73 ++#: ../widgets/RevocationList.cpp:75 + msgctxt "RevocationList|" + msgid "Revocation" + msgstr "Révocation" + +-#: ../widgets/RevocationList.cpp:73 ++#: ../widgets/RevocationList.cpp:75 + msgctxt "RevocationList|" + msgid "Reason" + msgstr "Raison" + +-#: ../widgets/RevocationList.cpp:74 ++#: ../widgets/RevocationList.cpp:76 + msgctxt "RevocationList|" + msgid "Invalidation" + msgstr "Invalidation" + +-#: ../widgets/RevocationList.cpp:101 ++#: ../widgets/RevocationList.cpp:104 + msgctxt "RevocationList|" + msgid "Generate CRL" + msgstr "Générer la liste de révocation" +@@ -3193,186 +3208,276 @@ msgctxt "SelectToken|" + msgid "Please select the security token" + msgstr "SVP sélectionner le jeton de sécurité" + +-#: ../widgets/TempTreeView.cpp:22 ++#: ../widgets/TempTreeView.cpp:23 + msgctxt "TempTreeView|" + msgid "Duplicate" + msgstr "Dupliquer" + +-#: ../widgets/TempTreeView.cpp:23 ++#: ../widgets/TempTreeView.cpp:24 + msgctxt "TempTreeView|" + msgid "Create certificate" + msgstr "Créer un certificat" + +-#: ../widgets/TempTreeView.cpp:24 ++#: ../widgets/TempTreeView.cpp:25 + msgctxt "TempTreeView|" + msgid "Create request" + msgstr "Créer une requête" + +-#: ../widgets/TempTreeView.cpp:35 ++#: ../widgets/TempTreeView.cpp:34 + msgctxt "TempTreeView|" + msgid "copy" + msgstr "copier" + ++#: ../widgets/TempTreeView.cpp:82 ++msgctxt "TempTreeView|" ++msgid "Preset Template values" ++msgstr "Initialiser les valeurs du modèle" ++ + #: ../widgets/validity.cpp:94 + msgctxt "Validity|" + msgid "yyyy-MM-dd hh:mm" + msgstr "yyyy-MM-dd hh:mm" + +-#: ../widgets/X509SuperTreeView.cpp:25 ++#: ../widgets/X509SuperTreeView.cpp:28 + msgctxt "X509SuperTreeView|" + msgid "OpenSSL config" + msgstr "Configuration OpenSSL" + +-#: ../widgets/X509SuperTreeView.cpp:26 ++#: ../widgets/X509SuperTreeView.cpp:29 + msgctxt "X509SuperTreeView|" + msgid "Transform" + msgstr "Transformer" + +-#: ../widgets/X509SuperTreeView.cpp:27 ++#: ../widgets/X509SuperTreeView.cpp:30 + msgctxt "X509SuperTreeView|" + msgid "Template" + msgstr "Modèle" + +-#: ../widgets/X509SuperTreeView.cpp:28 ++#: ../widgets/X509SuperTreeView.cpp:31 + msgctxt "X509SuperTreeView|" + msgid "Public key" + msgstr "Clé publique" + +-#: ../widgets/XcaTreeView.cpp:326 ++#: ../widgets/XcaTreeView.cpp:343 + msgctxt "XcaTreeView|" + msgid "Subject entries" + msgstr "Inscriptions du sujet" + +-#: ../widgets/XcaTreeView.cpp:327 ++#: ../widgets/XcaTreeView.cpp:344 + msgctxt "XcaTreeView|" + msgid "X509v3 Extensions" + msgstr "Extensions X509v3" + +-#: ../widgets/XcaTreeView.cpp:328 ++#: ../widgets/XcaTreeView.cpp:345 + msgctxt "XcaTreeView|" + msgid "Netscape extensions" + msgstr "Extensions Netscape" + +-#: ../widgets/XcaTreeView.cpp:329 ++#: ../widgets/XcaTreeView.cpp:346 + msgctxt "XcaTreeView|" + msgid "Key properties" + msgstr "Propriétés de la clé" + +-#: ../widgets/XcaTreeView.cpp:330 ++#: ../widgets/XcaTreeView.cpp:347 + msgctxt "XcaTreeView|" + msgid "Reset" + msgstr "Réinitialisation" + +-#: ../widgets/XcaTreeView.cpp:333 ++#: ../widgets/XcaTreeView.cpp:350 + msgctxt "XcaTreeView|" + msgid "Hide Column" + msgstr "Cacher la colonne" + +-#: ../widgets/XcaTreeView.cpp:335 ++#: ../widgets/XcaTreeView.cpp:352 + msgctxt "XcaTreeView|" + msgid "Details" + msgstr "Détails" + +-#: ../widgets/XcaTreeView.cpp:378 ++#: ../widgets/XcaTreeView.cpp:395 + msgctxt "XcaTreeView|" + msgid "Columns" + msgstr "Colonnes" + +-#: ../widgets/XcaTreeView.cpp:406 ++#: ../widgets/XcaTreeView.cpp:431 + msgctxt "XcaTreeView|" + msgid "New" + msgstr "Créer" + +-#: ../widgets/XcaTreeView.cpp:407 ++#: ../widgets/XcaTreeView.cpp:432 + msgctxt "XcaTreeView|" + msgid "Import" + msgstr "Importer" + +-#: ../widgets/XcaTreeView.cpp:408 ++#: ../widgets/XcaTreeView.cpp:433 + msgctxt "XcaTreeView|" + msgid "Paste PEM data" + msgstr "Coller les données en format PEM" + +-#: ../widgets/XcaTreeView.cpp:412 ++#: ../widgets/XcaTreeView.cpp:437 + msgctxt "XcaTreeView|" + msgid "Rename" + msgstr "Renommer" + +-#: ../widgets/XcaTreeView.cpp:413 ++#: ../widgets/XcaTreeView.cpp:438 + msgctxt "XcaTreeView|" + msgid "Properties" + msgstr "Propriétés" + +-#: ../widgets/XcaTreeView.cpp:416 ++#: ../widgets/XcaTreeView.cpp:441 + msgctxt "XcaTreeView|" + msgid "Delete" + msgstr "Enlever" + +-#: ../widgets/XcaTreeView.cpp:418 ++#: ../widgets/XcaTreeView.cpp:443 + msgctxt "XcaTreeView|" + msgid "Export" + msgstr "Exporter" + +-#: ../widgets/XcaTreeView.cpp:419 ++#: ../widgets/XcaTreeView.cpp:444 + msgctxt "XcaTreeView|" + msgid "Clipboard" + msgstr "Presse-papier" + +-#: ../widgets/XcaTreeView.cpp:421 ++#: ../widgets/XcaTreeView.cpp:446 + msgctxt "XcaTreeView|" + msgid "File" + msgstr "Fichier" + +-#: ../lib/db_base.cpp:178 ++#: ../lib/database_model.cpp:125 ++#, qt-format ++msgctxt "database_model|" ++msgid "" ++"Legacy database format detected. Creating a backup copy called: '%1' and " ++"converting the database to the new format" ++msgstr "" ++"Format historique de base de données détecté. Une copie de sauvegarde " ++"appelée '%1' est créée et la base de données est convertie au nouveau format" ++ ++#: ../lib/database_model.cpp:134 ++msgctxt "database_model|" ++msgid "Failed to rename the database file, because the target already exists" ++msgstr "" ++"Le changement de nom du fichier de base de données a échoué parce qu'un " ++"autre fichier du même nom existe déjà" ++ ++#: ../lib/database_model.cpp:269 ++#, qt-format ++msgctxt "database_model|" ++msgid "" ++"Please enter the password to access the database server %2 as user '%1'." ++msgstr "" ++"SVP saisir le mot de passe de l'utilisateur '%1' sur le serveur de base de " ++"données %2." ++ ++#: ../lib/database_model.cpp:386 ++#, qt-format ++msgctxt "database_model|" ++msgid "Unable to create '%1': %2" ++msgstr "Impossible de créer '%1': %2" ++ ++#: ../lib/database_model.cpp:557 ++#, qt-format ++msgctxt "database_model|" ++msgid "The file '%1' is not an XCA database" ++msgstr "Le fichier '%1' n'est pas une base de données XCA" ++ ++#: ../lib/database_model.cpp:585 ++msgctxt "database_model|" ++msgid "" ++"No SqLite3 driver available. Please install the qt-sqlite package of your " ++"distribution" ++msgstr "" ++"Le pilote SqLite3 n'est pas disponible. SVP installez le paquetage qt-sqlite " ++"de votre distribution" ++ ++#: ../lib/database_model.cpp:626 ++msgctxt "database_model|" ++msgid "New Password" ++msgstr "Nouveau mot de passe" ++ ++#: ../lib/database_model.cpp:626 ++#, qt-format ++msgctxt "database_model|" ++msgid "" ++"Please enter a password, that will be used to encrypt your private keys in " ++"the database:\n" ++"%1" ++msgstr "" ++"Veuillez saisir un mot de passe, qui sera utilisé pour chiffrer vos clés " ++"privées dans la base de données:\n" ++"%1" ++ ++#: ../lib/database_model.cpp:646 ++msgctxt "database_model|" ++msgid "Password" ++msgstr "Mot de passe" ++ ++#: ../lib/database_model.cpp:647 ++#, qt-format ++msgctxt "database_model|" ++msgid "" ++"Please enter the password for unlocking the database:\n" ++"%1" ++msgstr "" ++"Veuillez entrer le mot passe pour déverrouiller la base de données:\n" ++"%1" ++ ++#: ../lib/db_base.cpp:170 + msgctxt "db_base|" + msgid "Internal name" + msgstr "Nom interne" + +-#: ../lib/db_base.cpp:179 ++#: ../lib/db_base.cpp:171 + msgctxt "db_base|" + msgid "No." + msgstr "No." + +-#: ../lib/db_base.cpp:180 ++#: ../lib/db_base.cpp:172 + msgctxt "db_base|" + msgid "Primary key" + msgstr "Clé primaire" + +-#: ../lib/db_base.cpp:181 ++#: ../lib/db_base.cpp:173 + msgctxt "db_base|" + msgid "Database unique number" + msgstr "Numéro unique de la base de données" + +-#: ../lib/db_base.cpp:182 ++#: ../lib/db_base.cpp:174 + msgctxt "db_base|" + msgid "Date" + msgstr "Date" + +-#: ../lib/db_base.cpp:183 ++#: ../lib/db_base.cpp:175 + msgctxt "db_base|" + msgid "Date of creation or insertion" + msgstr "Date de création ou d'importation" + +-#: ../lib/db_base.cpp:184 ++#: ../lib/db_base.cpp:176 + msgctxt "db_base|" + msgid "Source" + msgstr "Source" + +-#: ../lib/db_base.cpp:185 ++#: ../lib/db_base.cpp:177 + msgctxt "db_base|" + msgid "Generated, Imported, Transformed" + msgstr "Généré, Importé, Transformé" + +-#: ../lib/db_base.cpp:186 ++#: ../lib/db_base.cpp:178 + msgctxt "db_base|" + msgid "Comment" + msgstr "Commentaire" + +-#: ../lib/db_base.cpp:187 ++#: ../lib/db_base.cpp:179 + msgctxt "db_base|" + msgid "First line of the comment field" + msgstr "Première ligne du champ de commentaire" + ++#: ../lib/db_base.cpp:241 ++#, qt-format ++msgctxt "db_base|" ++msgid "Import from: %1" ++msgstr "Importer à partir de: %1" ++ + #: ../lib/db_base.cpp:392 + #, qt-format + msgctxt "db_base|" +@@ -3411,42 +3516,42 @@ msgctxt "db_base|" + msgid "PEM files ( *.pem );; All files ( * )" + msgstr "Fichiers PEM ( *.pem );; Tous les fichiers ( * )" + +-#: ../lib/db_crl.cpp:34 ++#: ../lib/db_crl.cpp:30 + msgctxt "db_crl|" + msgid "Signer" + msgstr "Signataire" + +-#: ../lib/db_crl.cpp:35 ++#: ../lib/db_crl.cpp:31 + msgctxt "db_crl|" + msgid "Internal name of the signer" + msgstr "Nom interne du signataire" + +-#: ../lib/db_crl.cpp:36 ++#: ../lib/db_crl.cpp:32 + msgctxt "db_crl|" + msgid "No. revoked" + msgstr "Numéro révoqué" + +-#: ../lib/db_crl.cpp:37 ++#: ../lib/db_crl.cpp:33 + msgctxt "db_crl|" + msgid "Number of revoked certificates" + msgstr "Nombre de certificats révoqués" + +-#: ../lib/db_crl.cpp:38 ++#: ../lib/db_crl.cpp:34 + msgctxt "db_crl|" + msgid "Last update" + msgstr "Dernière mise-à-jour" + +-#: ../lib/db_crl.cpp:39 ++#: ../lib/db_crl.cpp:35 + msgctxt "db_crl|" + msgid "Next update" + msgstr "Prochaine mise-à-jour" + +-#: ../lib/db_crl.cpp:40 ++#: ../lib/db_crl.cpp:36 + msgctxt "db_crl|" + msgid "CRL number" + msgstr "Numéro de la liste de révocation" + +-#: ../lib/db_crl.cpp:106 ++#: ../lib/db_crl.cpp:105 + #, qt-format + msgctxt "db_crl|" + msgid "" +@@ -3458,68 +3563,53 @@ msgstr "" + "'%1'\n" + "En conséquence, elle n'a pas été importée" + +-#: ../lib/db_crl.cpp:161 ++#: ../lib/db_crl.cpp:130 + msgctxt "db_crl|" + msgid "Revocation list export" + msgstr "Exportation d'une liste de révocation" + +-#: ../lib/db_crl.cpp:162 ++#: ../lib/db_crl.cpp:131 + msgctxt "db_crl|" + msgid "CRL ( *.pem *.der *.crl )" + msgstr "Listes de révocation ( *.pem *.der *.crl )" + +-#: ../lib/db_crl.cpp:228 +-msgctxt "db_crl|" +-msgid "There are no CA certificates for CRL generation" +-msgstr "Il n'y a pas de certificat CA pour la génération de la CRL" +- +-#: ../lib/db_crl.cpp:236 +-msgctxt "db_crl|" +-msgid "Select CA certificate" +-msgstr "Sélectionner un certificat d'autorité" +- +-#: ../lib/db_crl.cpp:257 +-msgctxt "db_crl|" +-msgid "Create CRL" +-msgstr "Créer une liste de révocation" +- +-#: ../lib/db_crl.cpp:301 ++#: ../lib/db_crl.cpp:194 + msgctxt "db_crl|" + msgid "Failed to initiate DB transaction" + msgstr "Impossible de démarrer la transaction BDD" + +-#: ../lib/db_crl.cpp:311 ../lib/db_crl.cpp:319 ../lib/db_crl.cpp:323 ++#: ../lib/db_crl.cpp:204 ../lib/db_crl.cpp:212 ../lib/db_crl.cpp:216 + #, qt-format + msgctxt "db_crl|" + msgid "Database error: %1" + msgstr "Erreur de la base de données: %1" + +-#: ../lib/db_key.cpp:65 ++#: ../lib/db_key.cpp:58 + msgctxt "db_key|" + msgid "Type" + msgstr "Type" + +-#: ../lib/db_key.cpp:66 ++#: ../lib/db_key.cpp:59 + msgctxt "db_key|" + msgid "Size" + msgstr "Taille" + +-#: ../lib/db_key.cpp:68 ++#: ../lib/db_key.cpp:61 + msgctxt "db_key|" + msgid "EC Group" + msgstr "Groupe EC" + +-#: ../lib/db_key.cpp:70 ++#: ../lib/db_key.cpp:63 + msgctxt "db_key|" + msgid "Use" + msgstr "Usage" + +-#: ../lib/db_key.cpp:71 ++#: ../lib/db_key.cpp:64 + msgctxt "db_key|" + msgid "Password" + msgstr "Mot de passe" + +-#: ../lib/db_key.cpp:143 ++#: ../lib/db_key.cpp:138 + #, qt-format + msgctxt "db_key|" + msgid "" +@@ -3531,7 +3621,7 @@ msgstr "" + "'%1'\n" + "En conséquence, elle ne va pas être importée" + +-#: ../lib/db_key.cpp:148 ++#: ../lib/db_key.cpp:143 + #, qt-format + msgctxt "db_key|" + msgid "" +@@ -3545,207 +3635,197 @@ msgstr "" + "En conséquence, cette dernière sera complétée par la partie privée de la clé " + "importée" + +-#: ../lib/db_key.cpp:150 ++#: ../lib/db_key.cpp:145 + #, qt-format + msgctxt "db_key|" + msgid "Extending public key from %1 by imported key '%2'" + msgstr "Extension de la clé publique de %1 par la clé importée '%2'" + +-#: ../lib/db_key.cpp:185 ++#: ../lib/db_key.cpp:163 + msgctxt "db_key|" + msgid "Key size too small !" + msgstr "Taille de clé trop petite !" + +-#: ../lib/db_key.cpp:190 ++#: ../lib/db_key.cpp:167 + #, qt-format + msgctxt "db_key|" + msgid "You are sure to create a key of the size: %1 ?" + msgstr "Etes-vous sûr de vouloir créer une clé de taille %1 ?" + +-#: ../lib/db_key.cpp:272 ../lib/db_key.cpp:316 ++#: ../lib/db_key.cpp:217 ../lib/db_key.cpp:268 + msgctxt "db_key|" + msgid "PEM public" + msgstr "clé publique PEM" + +-#: ../lib/db_key.cpp:275 ../lib/db_key.cpp:321 ++#: ../lib/db_key.cpp:220 ../lib/db_key.cpp:273 + msgctxt "db_key|" + msgid "SSH2 public" + msgstr "Clé publique SSH2" + +-#: ../lib/db_key.cpp:278 ../lib/db_key.cpp:340 ++#: ../lib/db_key.cpp:223 ../lib/db_key.cpp:293 + msgctxt "db_key|" + msgid "PEM private" + msgstr "Clé privée PEM" + +-#: ../lib/db_key.cpp:283 ++#: ../lib/db_key.cpp:228 ../lib/db_key.cpp:298 ++msgctxt "db_key|" ++msgid "SSH2 private" ++msgstr "Clé privée SSH2" ++ ++#: ../lib/db_key.cpp:231 + msgctxt "db_key|" + msgid "Export keys to Clipboard" + msgstr "Exporter les clés vers le presse-papier" + +-#: ../lib/db_key.cpp:286 ++#: ../lib/db_key.cpp:234 + msgctxt "db_key|" + msgid "Clipboard" + msgstr "Presse-papier" + +-#: ../lib/db_key.cpp:299 ++#: ../lib/db_key.cpp:247 + #, qt-format + msgctxt "db_key|" + msgid "Export public key [%1]" + msgstr "Exporter la clé publique [%1]" + +-#: ../lib/db_key.cpp:317 ++#: ../lib/db_key.cpp:269 + msgctxt "db_key|" + msgid "DER public" + msgstr "Clé publique DER" + +-#: ../lib/db_key.cpp:326 ++#: ../lib/db_key.cpp:281 + msgctxt "db_key|" + msgid "DER private" + msgstr "Clé privée DER" + +-#: ../lib/db_key.cpp:328 ++#: ../lib/db_key.cpp:278 + msgctxt "db_key|" + msgid "PEM encryped" + msgstr "Chiffrée en PEM" + +-#: ../lib/db_key.cpp:334 ++#: ../lib/db_key.cpp:287 + msgctxt "db_key|" + msgid "PVK private" + msgstr "Clé privée PVK" + +-#: ../lib/db_key.cpp:336 ++#: ../lib/db_key.cpp:289 + msgctxt "db_key|" + msgid "PVK encrypted" + msgstr "Chiffrée en PVK" + +-#: ../lib/db_key.cpp:342 ++#: ../lib/db_key.cpp:295 + msgctxt "db_key|" + msgid "PKCS#8 encrypted" + msgstr "Chiffrée en PKCS#8" + +-#: ../lib/db_key.cpp:343 ++#: ../lib/db_key.cpp:299 + #, qt-format + msgctxt "db_key|" + msgid "Export private key [%1]" + msgstr "Exporter la clé privée [%1]" + +-#: ../lib/db_key.cpp:348 ++#: ../lib/db_key.cpp:304 + msgctxt "db_key|" + msgid "Private Keys ( *.pem *.der *.pk8 );; SSH Public Keys ( *.pub )" + msgstr "Clés privées ( *.pem *.der *.pk8 );; Clé publiques SSH ( *.pub )" + +-#: ../lib/db_key.cpp:405 ++#: ../lib/db_key.cpp:364 + msgctxt "db_key|" + msgid "Internal error" + msgstr "Erreur interne" + +-#: ../lib/db_key.cpp:424 ++#: ../lib/db_key.cpp:382 + msgctxt "db_key|" + msgid "Tried to change password of a token" + msgstr "Tentative de changement de mot de passe d'un jeton de sécurité" + +-#: ../lib/db_temp.cpp:54 ++#: ../lib/db_temp.cpp:50 + #, qt-format + msgctxt "db_temp|" + msgid "Bad template: %1" + msgstr "Mauvais modèle: %1" + +-#: ../lib/db_temp.cpp:38 ++#: ../lib/db_temp.cpp:34 + msgctxt "db_temp|" + msgid "Empty template" + msgstr "Modèle vide" + +-#: ../lib/db_temp.cpp:99 +-msgctxt "db_temp|" +-msgid "Preset Template values" +-msgstr "Initaliser les valeurs du modèle" +- +-#: ../lib/db_temp.cpp:137 ++#: ../lib/db_temp.cpp:112 + msgctxt "db_temp|" + msgid "Save template as" + msgstr "Enregistrer le modèle sous" + +-#: ../lib/db_temp.cpp:138 ++#: ../lib/db_temp.cpp:113 + msgctxt "db_temp|" + msgid "XCA templates ( *.xca );; All files ( * )" + msgstr "Modèles XCA ( *.xca);; Tous les fichiers ( * )" + +-#: ../lib/db_x509.cpp:67 ++#: ../lib/db_x509.cpp:71 + msgctxt "db_x509|" + msgid "CA" + msgstr "CA" + +-#: ../lib/db_x509.cpp:68 ++#: ../lib/db_x509.cpp:72 + msgctxt "db_x509|" + msgid "reflects the basic Constraints extension" + msgstr "reflète l'extension des contraintes basiques" + +-#: ../lib/db_x509.cpp:69 ++#: ../lib/db_x509.cpp:73 + msgctxt "db_x509|" + msgid "Serial" + msgstr "Numéro de série" + +-#: ../lib/db_x509.cpp:73 ++#: ../lib/db_x509.cpp:77 + msgctxt "db_x509|" + msgid "Start date" + msgstr "Date de début" + +-#: ../lib/db_x509.cpp:75 ++#: ../lib/db_x509.cpp:79 + msgctxt "db_x509|" + msgid "Expiry date" + msgstr "Date d'expiration" + +-#: ../lib/db_x509.cpp:70 ++#: ../lib/db_x509.cpp:74 + msgctxt "db_x509|" + msgid "MD5 fingerprint" + msgstr "Empreinte MD5" + +-#: ../lib/db_x509.cpp:71 ++#: ../lib/db_x509.cpp:75 + msgctxt "db_x509|" + msgid "SHA1 fingerprint" + msgstr "Empreinte SHA1" + +-#: ../lib/db_x509.cpp:72 ++#: ../lib/db_x509.cpp:76 + msgctxt "db_x509|" + msgid "SHA256 fingerprint" + msgstr "Empreinte SHA256" + +-#: ../lib/db_x509.cpp:74 ++#: ../lib/db_x509.cpp:78 + msgctxt "db_x509|" + msgid "Not before" + msgstr "Pas avant" + +-#: ../lib/db_x509.cpp:76 ++#: ../lib/db_x509.cpp:80 + msgctxt "db_x509|" + msgid "Not after" + msgstr "Pas après" + +-#: ../lib/db_x509.cpp:77 ++#: ../lib/db_x509.cpp:81 + msgctxt "db_x509|" + msgid "Revocation" + msgstr "Révocation" + +-#: ../lib/db_x509.cpp:78 ++#: ../lib/db_x509.cpp:82 + msgctxt "db_x509|" + msgid "CRL Expiration" + msgstr "Expiration de la CRL" + +-#: ../lib/db_x509.cpp:152 +-msgctxt "db_x509|" +-msgid "Plain View" +-msgstr "Vue à plat" +- +-#: ../lib/db_x509.cpp:154 +-msgctxt "db_x509|" +-msgid "Tree View" +-msgstr "Vue arborescente" +- +-#: ../lib/db_x509.cpp:334 ++#: ../lib/db_x509.cpp:301 + msgctxt "db_x509|" + msgid "Failed to retrieve unique random serial" + msgstr "L'extraction d'un numéro de série aléatoire a échoué" + +-#: ../lib/db_x509.cpp:357 ++#: ../lib/db_x509.cpp:324 + #, qt-format + msgctxt "db_x509|" + msgid "" +@@ -3757,177 +3837,183 @@ msgstr "" + "'%1'\n" + "En conséquence, il n'a pas été importé" + +-#: ../lib/db_x509.cpp:401 ++#: ../lib/db_x509.cpp:366 + #, qt-format + msgctxt "db_x509|" + msgid "Signed on %1 by '%2'" + msgstr "Signé le %1 par '%2'" + +-#: ../lib/db_x509.cpp:402 ++#: ../lib/db_x509.cpp:367 + msgctxt "db_x509|" + msgid "Unknown" + msgstr "Inconnu" + +-#: ../lib/db_x509.cpp:494 ++#: ../lib/db_x509.cpp:455 + msgctxt "db_x509|" + msgid "Invalid public key" + msgstr "Clé publique invalide" + +-#: ../lib/db_x509.cpp:652 ++#: ../lib/db_x509.cpp:611 + msgctxt "db_x509|" + msgid "PKCS#7 unrevoked" + msgstr "PKCS#7 non-révoqué" + +-#: ../lib/db_x509.cpp:656 ++#: ../lib/db_x509.cpp:615 + msgctxt "db_x509|" + msgid "PEM unrevoked" + msgstr "PEM non-révoqué" + +-#: ../lib/db_x509.cpp:663 ++#: ../lib/db_x509.cpp:622 + msgctxt "db_x509|" + msgid "vCalendar" + msgstr "message vCalendar" + +-#: ../lib/db_x509.cpp:667 ++#: ../lib/db_x509.cpp:626 + msgctxt "db_x509|" + msgid "CA vCalendar" + msgstr "message vCalendar pour le CA" + +-#: ../lib/db_x509.cpp:1092 ++#: ../lib/db_x509.cpp:630 ++msgctxt "db_x509|" ++msgid "X509 Certificates ( *.pem *.cer *.crt *.p12 *.pfx *.p7b )" ++msgstr "Certificats X509 ( *.pem *.cer *.crt *.p12 *.pfx *.p7b)" ++ ++#: ../lib/db_x509.cpp:1045 + msgctxt "db_x509|" + msgid "days" + msgstr " jours" + +-#: ../lib/db_x509.cpp:1101 ++#: ../lib/db_x509.cpp:1054 + msgctxt "db_x509|" + msgid "No template" + msgstr "Pas de modèle" + +-#: ../lib/db_x509.cpp:520 ++#: ../lib/db_x509.cpp:481 + msgctxt "db_x509|" + msgid "The key you selected for signing is not a private one." + msgstr "La clé sélectionnée pour la signature n'est pas une clé privée." + +-#: ../lib/db_x509.cpp:562 ++#: ../lib/db_x509.cpp:253 ++#, qt-format ++msgctxt "db_x509|" ++msgid "Failed to create directory '%1'" ++msgstr "Impossible de créer le répertoire %1" ++ ++#: ../lib/db_x509.cpp:523 + #, qt-format + msgctxt "db_x509|" + msgid "Store the certificate to the key on the token '%1 (#%2)' ?" + msgstr "Enregistrer le certificate avec la clé sur le jeton '%1 (#%2)' ?" + +-#: ../lib/db_x509.cpp:629 ++#: ../lib/db_x509.cpp:588 + msgctxt "db_x509|" + msgid "PEM chain" + msgstr "Chaîne en PEM" + +-#: ../lib/db_x509.cpp:631 ++#: ../lib/db_x509.cpp:590 + msgctxt "db_x509|" + msgid "PKCS#7 chain" + msgstr "Chaîne PKCS#7" + +-#: ../lib/db_x509.cpp:637 ++#: ../lib/db_x509.cpp:596 + msgctxt "db_x509|" + msgid "PKCS#12 chain" + msgstr "Chaîne PKCS#12" + +-#: ../lib/db_x509.cpp:654 ++#: ../lib/db_x509.cpp:613 + msgctxt "db_x509|" + msgid "PKCS#7 all" + msgstr "Tous les certificats en PKCS#7" + +-#: ../lib/db_x509.cpp:646 ++#: ../lib/db_x509.cpp:605 + msgctxt "db_x509|" + msgid "PEM + key" + msgstr "PEM + clé" + +-#: ../lib/db_x509.cpp:658 ++#: ../lib/db_x509.cpp:617 + msgctxt "db_x509|" + msgid "PEM all" + msgstr "Tous les certificats en PEM" + +-#: ../lib/db_x509.cpp:660 ++#: ../lib/db_x509.cpp:619 + msgctxt "db_x509|" + msgid "Certificate Index file" + msgstr "Ficher d'index des certificats" + +-#: ../lib/db_x509.cpp:670 ++#: ../lib/db_x509.cpp:629 + msgctxt "db_x509|" + msgid "Certificate export" + msgstr "Exportation de certificat" + +-#: ../lib/db_x509.cpp:671 +-msgctxt "db_x509|" +-msgid "X509 Certificates ( *.pem *.cer *.crt *.p12 *.p7b )" +-msgstr "Certificats X509 ( *.pem *.cer *.crt *.p12 *.p7b)" +- +-#: ../lib/db_x509.cpp:735 ../lib/db_x509.cpp:801 ++#: ../lib/db_x509.cpp:694 ../lib/db_x509.cpp:764 + #, qt-format + msgctxt "db_x509|" + msgid "There was no key found for the Certificate: '%1'" + msgstr "Aucune clé n'a été trouvée pour le Certificat. '%1'" + +-#: ../lib/db_x509.cpp:740 ++#: ../lib/db_x509.cpp:699 + #, qt-format + msgctxt "db_x509|" + msgid "Not possible for a token key: '%1'" + msgstr "Impossible pour une clé d'un jeton de sécurité: '%1'" + +-#: ../lib/db_x509.cpp:805 ++#: ../lib/db_x509.cpp:768 + #, qt-format + msgctxt "db_x509|" + msgid "Not possible for the token-key Certificate '%1'" + msgstr "Impossible pour le certificat d'une clé d'un jeton de sécurité: '%1'" + +-#: ../lib/db_x509super.cpp:25 ++#: ../lib/db_x509super.cpp:30 + msgctxt "db_x509name|" + msgid "Subject" + msgstr "Sujet" + +-#: ../lib/db_x509super.cpp:26 ++#: ../lib/db_x509super.cpp:31 + msgctxt "db_x509name|" + msgid "Complete distinguished name" + msgstr "Nom distinctif complet" + +-#: ../lib/db_x509super.cpp:27 ++#: ../lib/db_x509super.cpp:32 + msgctxt "db_x509name|" + msgid "Subject hash" + msgstr "Hachage du sujet" + +-#: ../lib/db_x509super.cpp:28 ++#: ../lib/db_x509super.cpp:33 + msgctxt "db_x509name|" + msgid "Hash to lookup certs in directories" + msgstr "Hachage de recherche dans un dossier" + +-#: ../lib/db_x509req.cpp:31 ++#: ../lib/db_x509req.cpp:28 + msgctxt "db_x509req|" + msgid "Signed" + msgstr "Signée" + +-#: ../lib/db_x509req.cpp:32 ++#: ../lib/db_x509req.cpp:29 + msgctxt "db_x509req|" + msgid "whether the request is already signed or not" + msgstr "si la requête a déjà été signée ou non" + +-#: ../lib/db_x509req.cpp:33 ++#: ../lib/db_x509req.cpp:30 + msgctxt "db_x509req|" + msgid "Unstructured name" + msgstr "Nom non-structuré" + +-#: ../lib/db_x509req.cpp:35 ++#: ../lib/db_x509req.cpp:32 + msgctxt "db_x509req|" + msgid "Challenge password" + msgstr "Mot de passe challenge" + +-#: ../lib/db_x509req.cpp:37 ++#: ../lib/db_x509req.cpp:34 + msgctxt "db_x509req|" + msgid "Certificate count" + msgstr "Nombre de certificats" + +-#: ../lib/db_x509req.cpp:38 ++#: ../lib/db_x509req.cpp:35 + msgctxt "db_x509req|" + msgid "Number of certificates in the database with the same public key" + msgstr "Nombre de certificats dans la base de données avec la même clé" + +-#: ../lib/db_x509req.cpp:55 ++#: ../lib/db_x509req.cpp:52 + #, qt-format + msgctxt "db_x509req|" + msgid "" +@@ -3939,78 +4025,78 @@ msgstr "" + "'%1'\n" + "En conséquence, elle n'a pas été chargée" + +-#: ../lib/db_x509req.cpp:132 ++#: ../lib/db_x509req.cpp:119 + msgctxt "db_x509req|" + msgid "Certificate request export" + msgstr "Exporter la requête de signature" + +-#: ../lib/db_x509req.cpp:133 ++#: ../lib/db_x509req.cpp:120 + msgctxt "db_x509req|" + msgid "Certificate request ( *.pem *.der *.csr )" + msgstr "Requête de signature de certificat ( *.pem *.der *.csr )" + +-#: ../lib/db_x509super.cpp:79 ++#: ../lib/db_x509super.cpp:81 + msgctxt "db_x509super|" + msgid "Key name" + msgstr "Nom de la clé" + +-#: ../lib/db_x509super.cpp:80 ++#: ../lib/db_x509super.cpp:82 + msgctxt "db_x509super|" + msgid "Internal name of the key" + msgstr "Nom interne de la clé" + +-#: ../lib/db_x509super.cpp:82 ++#: ../lib/db_x509super.cpp:84 + msgctxt "db_x509super|" + msgid "Signature algorithm" + msgstr "Algorithme de signature" + +-#: ../lib/db_x509super.cpp:83 ++#: ../lib/db_x509super.cpp:85 + msgctxt "db_x509super|" + msgid "Key type" + msgstr "Type de clé" + +-#: ../lib/db_x509super.cpp:84 ++#: ../lib/db_x509super.cpp:86 + msgctxt "db_x509super|" + msgid "Key size" + msgstr "Taille de la clé" + +-#: ../lib/db_x509super.cpp:86 ++#: ../lib/db_x509super.cpp:88 + msgctxt "db_x509super|" + msgid "EC Group" + msgstr "Groupe EC" + +-#: ../lib/db_x509super.cpp:140 ++#: ../lib/db_x509super.cpp:142 + #, qt-format + msgctxt "db_x509super|" + msgid "Extracted from %1 '%2'" + msgstr "Extrait de %1 '%2'" + +-#: ../lib/db_x509super.cpp:142 ../lib/db_x509super.cpp:193 ++#: ../lib/db_x509super.cpp:144 ../lib/db_x509super.cpp:196 + msgctxt "db_x509super|" + msgid "Certificate" + msgstr "Certificat" + +-#: ../lib/db_x509super.cpp:142 ../lib/db_x509super.cpp:193 ++#: ../lib/db_x509super.cpp:144 ../lib/db_x509super.cpp:196 + msgctxt "db_x509super|" + msgid "Certificate request" + msgstr "Requête de certificat" + +-#: ../lib/db_x509super.cpp:157 ++#: ../lib/db_x509super.cpp:159 + msgctxt "db_x509super|" + msgid "Save as OpenSSL config" + msgstr "Enregistrer en format de configuration OpenSSL" + +-#: ../lib/db_x509super.cpp:158 ++#: ../lib/db_x509super.cpp:160 + msgctxt "db_x509super|" + msgid "Config files ( *.conf *.cnf);; All files ( * )" + msgstr "Fichiers de configuration (*.conf *.cnf);; Tous les fichiers ( * )" + +-#: ../lib/db_x509super.cpp:180 ++#: ../lib/db_x509super.cpp:183 + msgctxt "db_x509super|" + msgid "The following extensions were not ported into the template" + msgstr "Les extensions suivantes n'ont pas été enregistrées dans le modèle" + +-#: ../lib/db_x509super.cpp:191 ++#: ../lib/db_x509super.cpp:194 + #, qt-format + msgctxt "db_x509super|" + msgid "Transformed from %1 '%2'" +@@ -4026,52 +4112,58 @@ msgctxt "kvView|" + msgid "Content" + msgstr "Contenu" + +-#: ../lib/pass_info.cpp:20 ++#: ../lib/pass_info.cpp:15 + msgctxt "pass_info|" + msgid "Password" + msgstr "Mot de passe" + +-#: ../lib/pass_info.cpp:26 ++#: ../lib/pass_info.cpp:22 + msgctxt "pass_info|" + msgid "PIN" + msgstr "NIP" + +-#: ../lib/pki_base.cpp:284 ++#: ../lib/pki_base.cpp:289 + msgctxt "pki_base|" + msgid "Unknown" + msgstr "Inconnu" + +-#: ../lib/pki_base.cpp:285 ++#: ../lib/pki_base.cpp:290 + msgctxt "pki_base|" + msgid "Imported" + msgstr "Importé" + +-#: ../lib/pki_base.cpp:286 ++#: ../lib/pki_base.cpp:291 + msgctxt "pki_base|" + msgid "Generated" + msgstr "Généré" + +-#: ../lib/pki_base.cpp:287 ++#: ../lib/pki_base.cpp:292 + msgctxt "pki_base|" + msgid "Transformed" + msgstr "Transformé" + +-#: ../lib/pki_base.cpp:288 ++#: ../lib/pki_base.cpp:293 + msgctxt "pki_base|" + msgid "Token" + msgstr "Jeton" + +-#: ../lib/pki_base.cpp:289 ++#: ../lib/pki_base.cpp:294 + msgctxt "pki_base|" + msgid "Legacy Database" + msgstr "Base de données antérieure" + +-#: ../lib/pki_base.cpp:290 ++#: ../lib/pki_base.cpp:295 + msgctxt "pki_base|" + msgid "Renewed" + msgstr "Renouvelé" + +-#: ../lib/pki_base.cpp:101 ++#: ../lib/pki_base.cpp:430 ++#, qt-format ++msgctxt "pki_base|" ++msgid "Property '%1' not listed in 'pki_base::print'" ++msgstr "Propriété '%1' non listée dans 'pki_base::print'" ++ ++#: ../lib/pki_base.cpp:125 + #, qt-format + msgctxt "pki_base|" + msgid "Internal error: Unexpected message: %1 %2" +@@ -4122,13 +4214,13 @@ msgctxt "pki_crl|" + msgid "Wrong Size %1" + msgstr "Taille fausse %1" + +-#: ../lib/pki_crl.cpp:438 ++#: ../lib/pki_crl.cpp:434 + #, qt-format + msgctxt "pki_crl|" + msgid "CRL Renewal of CA '%1' due" + msgstr "Le renouvellement de la liste de révocation du CA '%1' est nécessaire" + +-#: ../lib/pki_crl.cpp:439 ++#: ../lib/pki_crl.cpp:435 + #, qt-format + msgctxt "pki_crl|" + msgid "" +@@ -4138,13 +4230,13 @@ msgstr "" + "La dernière liste de révocation générée par le CA '%1' expirera le %2.\n" + "Elle est stockée dans la base de données XCA '%3'" + +-#: ../lib/pki_crl.cpp:447 ++#: ../lib/pki_crl.cpp:443 + #, qt-format + msgctxt "pki_crl|" + msgid "Renew CRL: %1" + msgstr "Renouvellement de CRL: %1" + +-#: ../lib/pki_crl.cpp:448 ++#: ../lib/pki_crl.cpp:444 + #, qt-format + msgctxt "pki_crl|" + msgid "" +@@ -4154,24 +4246,19 @@ msgstr "" + "La liste de révocation XCA '%1', émise le %3 expirera le %4.\n" + "Elle est stockée dans la base de données XCA '%5'" + +-#: ../lib/pki_evp.cpp:238 ++#: ../lib/pki_evp.cpp:260 + #, qt-format + msgctxt "pki_evp|" +-msgid "Failed to decrypt the key (bad password) %1" +-msgstr "Le déchiffrage de la clé a échoué (mauvais mot de passe) %1" +- +-#: ../lib/pki_evp.cpp:248 +-msgctxt "pki_evp|" +-msgid "Please enter the password to decrypt the private key." +-msgstr "SVP saisir le mot de passe pour déchiffrer la clé privée" ++msgid "Please enter the password to decrypt the private key %1." ++msgstr "SVP saisir le mot de passe pour déchiffrer la clé privée %1," + +-#: ../lib/pki_evp.cpp:305 ++#: ../lib/pki_evp.cpp:327 + #, qt-format + msgctxt "pki_evp|" + msgid "The key from file '%1' is incomplete or inconsistent." + msgstr "La clé dans le fichier '%1' est incomplète ou incorrecte." + +-#: ../lib/pki_evp.cpp:321 ++#: ../lib/pki_evp.cpp:416 + #, qt-format + msgctxt "pki_evp|" + msgid "" +@@ -4181,7 +4268,7 @@ msgstr "" + "SVP saisir le mot de passe pour déchiffrer la clé privée du fichier:\n" + "%1" + +-#: ../lib/pki_evp.cpp:383 ++#: ../lib/pki_evp.cpp:493 + #, qt-format + msgctxt "pki_evp|" + msgid "" +@@ -4192,148 +4279,148 @@ msgstr "" + "ainsi que les types de clés privé, public, PKCS#8 et le format SSH2 ont été " + "essayés." + +-#: ../lib/pki_evp.cpp:414 ++#: ../lib/pki_evp.cpp:524 + msgctxt "pki_evp|" + msgid "Ignoring unsupported private key" + msgstr "Clé privée non-supportée: ignorée" + +-#: ../lib/pki_evp.cpp:431 ++#: ../lib/pki_evp.cpp:541 + #, qt-format + msgctxt "pki_evp|" + msgid "Please enter the password to decrypt the private key: '%1'" + msgstr "SVP saisir le mot de passe pour déchiffrer la clé privée: '%1'" + +-#: ../lib/pki_evp.cpp:434 ../lib/pki_evp.cpp:448 ++#: ../lib/pki_evp.cpp:544 ../lib/pki_evp.cpp:558 + msgctxt "pki_evp|" + msgid "Password input aborted" + msgstr "Saisie du mot de passe abandonnée" + +-#: ../lib/pki_evp.cpp:444 ++#: ../lib/pki_evp.cpp:554 + #, qt-format + msgctxt "pki_evp|" + msgid "Please enter the database password for decrypting the key '%1'" + msgstr "" + "SVP saisir le mot de passe de la base de données pour déchiffrer la clé '%1'" + +-#: ../lib/pki_evp.cpp:561 ++#: ../lib/pki_evp.cpp:659 + #, qt-format + msgctxt "pki_evp|" + msgid "Please enter the password to protect the private key: '%1'" + msgstr "SVP saisir le mot de passe pour protéger la clé privée: '%1'" + +-#: ../lib/pki_evp.cpp:579 ++#: ../lib/pki_evp.cpp:677 + msgctxt "pki_evp|" + msgid "Please enter the database password for encrypting the key" + msgstr "SVP saisir le mot de passe de la base de données pour chiffrer la clé" + +-#: ../lib/pki_evp.cpp:694 ++#: ../lib/pki_evp.cpp:789 + #, qt-format + msgctxt "pki_evp|" + msgid "Please enter the password protecting the PKCS#8 key '%1'" + msgstr "SVP saisir le mot de passe protégeant la clé en PKCS#8 '%1'" + +-#: ../lib/pki_evp.cpp:713 ++#: ../lib/pki_evp.cpp:808 + #, qt-format + msgctxt "pki_evp|" + msgid "Please enter the password protecting the Microsoft PVK key '%1'" + msgstr "" + "SVP saisir le mot de passe protégeant la clé en format Microsoft PVK '%1'" + +-#: ../lib/pki_evp.cpp:776 ++#: ../lib/pki_evp.cpp:863 + #, qt-format + msgctxt "pki_evp|" + msgid "Please enter the export password for the private key '%1'" + msgstr "SVP saisir le mot de passe d'exportation pour la clé privée '%1'" + +-#: ../lib/pki_key.cpp:203 ++#: ../lib/pki_key.cpp:238 + #, qt-format + msgctxt "pki_key|" + msgid "Successfully imported the %1 public key '%2'" + msgstr "La clé publique %1 '%2' a été importée avec succès" + +-#: ../lib/pki_key.cpp:204 ++#: ../lib/pki_key.cpp:239 + #, qt-format + msgctxt "pki_key|" + msgid "Delete the %1 public key '%2'?" + msgstr "Détruire la clé publique %1 '%2' ?" + +-#: ../lib/pki_key.cpp:209 ++#: ../lib/pki_key.cpp:244 + #, qt-format + msgctxt "pki_key|" + msgid "Successfully imported the %1 private key '%2'" + msgstr "La clé privée %1 '%2' a été importée avec succès" + +-#: ../lib/pki_key.cpp:210 ++#: ../lib/pki_key.cpp:245 + #, qt-format + msgctxt "pki_key|" + msgid "Delete the %1 private key '%2'?" + msgstr "Détruire la clé privée %1 '%2' ?" + +-#: ../lib/pki_key.cpp:211 ++#: ../lib/pki_key.cpp:246 + #, qt-format + msgctxt "pki_key|" + msgid "Successfully created the %1 private key '%2'" + msgstr "La clé privée %1 '%2' a été créée avec succès" + +-#: ../lib/pki_key.cpp:217 ++#: ../lib/pki_key.cpp:252 + #, qt-format + msgctxt "pki_key|" + msgid "Delete the %1 keys: %2?" + msgstr "Détruire les %1 clés: %2?" + +-#: ../lib/pki_key.cpp:59 ../lib/pki_key.cpp:226 ++#: ../lib/pki_key.cpp:60 ../lib/pki_key.cpp:261 ../lib/pki_key.cpp:938 + msgctxt "pki_key|" + msgid "Public key" + msgstr "Clé publique" + +-#: ../lib/pki_key.cpp:427 ++#: ../lib/pki_key.cpp:499 + msgctxt "pki_key|" + msgid "Common" + msgstr "Global" + +-#: ../lib/pki_key.cpp:427 ++#: ../lib/pki_key.cpp:499 + msgctxt "pki_key|" + msgid "Private" + msgstr "Privé" + +-#: ../lib/pki_key.cpp:427 ++#: ../lib/pki_key.cpp:499 + msgctxt "pki_key|" + msgid "Bogus" + msgstr "Erroné" + +-#: ../lib/pki_key.cpp:427 ++#: ../lib/pki_key.cpp:499 + msgctxt "pki_key|" + msgid "PIN" + msgstr "NIP" + +-#: ../lib/pki_key.cpp:437 ++#: ../lib/pki_key.cpp:509 + msgctxt "pki_key|" + msgid "No password" + msgstr "Pas de mot de passe" + +-#: ../lib/pki_key.cpp:533 ../lib/pki_key.cpp:627 ++#: ../lib/pki_key.cpp:606 ../lib/pki_key.cpp:712 + #, qt-format + msgctxt "pki_key|" + msgid "Unexpected SSH2 content: '%1'" + msgstr "Contenu SSH2 inattendu: '%1'" + +-#: ../lib/pki_key.cpp:553 ../lib/pki_key.cpp:559 ++#: ../lib/pki_key.cpp:626 ../lib/pki_key.cpp:632 + msgctxt "pki_key|" + msgid "Invalid SSH2 public key" + msgstr "Clé publique SSH2 invalide" + +-#: ../lib/pki_key.cpp:735 ++#: ../lib/pki_key.cpp:830 + #, qt-format + msgctxt "pki_key|" + msgid "Failed writing to %1" + msgstr "Echec d'écriture sur %1" + +-#: ../lib/pki_multi.cpp:125 ++#: ../lib/pki_multi.cpp:131 + msgctxt "pki_multi|" + msgid "No known PEM encoded items found" + msgstr "Aucun objet PEM connu n'a été trouvé" + +-#: ../lib/pki_pkcs12.cpp:37 ++#: ../lib/pki_pkcs12.cpp:40 + #, qt-format + msgctxt "pki_pkcs12|" + msgid "" +@@ -4343,29 +4430,29 @@ msgstr "" + "SVP saisir le mot de passe pour déchiffrer le fichier en PKCS#12:\n" + "%1" + +-#: ../lib/pki_pkcs12.cpp:45 ++#: ../lib/pki_pkcs12.cpp:49 + #, qt-format + msgctxt "pki_pkcs12|" + msgid "Unable to load the PKCS#12 (pfx) file %1." + msgstr "Impossible de charger le fichier en PKCS#12 (pfx) %1." + +-#: ../lib/pki_pkcs12.cpp:60 ++#: ../lib/pki_pkcs12.cpp:73 + #, qt-format + msgctxt "pki_pkcs12|" + msgid "The supplied password was wrong (%1)" + msgstr "Le mot de passe renseigné était faux (%1)" + +-#: ../lib/pki_pkcs12.cpp:112 ++#: ../lib/pki_pkcs12.cpp:127 + msgctxt "pki_pkcs12|" + msgid "Please enter the password to encrypt the PKCS#12 file" + msgstr "SVP saisir le mot de passe pour chiffrer le fichier en PKCS#12" + +-#: ../lib/pki_pkcs12.cpp:116 ++#: ../lib/pki_pkcs12.cpp:130 + msgctxt "pki_pkcs12|" + msgid "No key or no Cert and no pkcs12" + msgstr "Pas de clé ou pas de certificat et pas en PKCS#12" + +-#: ../lib/pki_pkcs7.cpp:151 ++#: ../lib/pki_pkcs7.cpp:173 + #, qt-format + msgctxt "pki_pkcs7|" + msgid "Unable to load the PKCS#7 file %1. Tried PEM and DER format." +@@ -4373,170 +4460,165 @@ msgstr "" + "Impossible de charger le fichier en PKCS#7 %1. Les formats PEM et DER ont " + "été essayés." + +-#: ../lib/pki_scard.cpp:57 ++#: ../lib/pki_scard.cpp:52 + #, qt-format + msgctxt "pki_scard|" + msgid "Successfully imported the token key '%1'" + msgstr "La clé du jeton '%1' a été importée avec succès" + +-#: ../lib/pki_scard.cpp:58 ++#: ../lib/pki_scard.cpp:53 + #, qt-format + msgctxt "pki_scard|" + msgid "Delete the token key '%1'?" + msgstr "Détruire la clé du jeton '%1' ?" + +-#: ../lib/pki_scard.cpp:59 ++#: ../lib/pki_scard.cpp:54 + #, qt-format + msgctxt "pki_scard|" + msgid "Successfully created the token key '%1'" + msgstr "La clé du jeton '%1' a été créée avec succès" + +-#: ../lib/pki_scard.cpp:61 ++#: ../lib/pki_scard.cpp:56 + #, qt-format + msgctxt "pki_scard|" + msgid "Delete the %1 keys: %2?" + msgstr "Détruire les %1 clés: %2?" + +-#: ../lib/pki_scard.cpp:363 ++#: ../lib/pki_scard.cpp:358 + #, qt-format + msgctxt "pki_scard|" + msgid "Delete the private key '%1' from the token '%2 (#%3)' ?" + msgstr "Détruire la clé privée '%1' sur le jeton '%2 (#%3)' ?" + +-#: ../lib/pki_scard.cpp:436 ++#: ../lib/pki_scard.cpp:431 + msgctxt "pki_scard|" + msgid "This Key is already on the token" + msgstr "Cette clé est déjà sur le jeton" + +-#: ../lib/pki_scard.cpp:522 ++#: ../lib/pki_scard.cpp:517 + msgctxt "pki_scard|" + msgid "PIN input aborted" + msgstr "Saisie du NIP abandonnée" + +-#: ../lib/pki_scard.cpp:534 ++#: ../lib/pki_scard.cpp:529 + msgctxt "pki_scard|" + msgid "Unable to find copied key on the token" + msgstr "Impossible de trouver la clé copiée sur le jeton" + +-#: ../lib/pki_scard.cpp:621 ++#: ../lib/pki_scard.cpp:616 + #, qt-format + msgctxt "pki_scard|" + msgid "Please insert card: %1 %2 [%3] with Serial: %4" + msgstr "SVP insérer la carte %1 %2 [%3] avec le numéro de série: %4" + +-#: ../lib/pki_scard.cpp:689 +-msgctxt "pki_scard|" +-msgid "Illegal Key generation method" +-msgstr "Méthode de génération de clé illégale" +- +-#: ../lib/pki_scard.cpp:705 ++#: ../lib/pki_scard.cpp:682 + msgctxt "pki_scard|" + msgid "Unable to find generated key on card" + msgstr "Impossible de trouver la clé générée sur la carte" + +-#: ../lib/pki_scard.cpp:743 ++#: ../lib/pki_scard.cpp:720 + msgctxt "pki_scard|" + msgid "Ignoring unsupported token key" + msgstr "La clé non-supportée sur le jeton est ignorée" + +-#: ../lib/pki_scard.cpp:746 ++#: ../lib/pki_scard.cpp:723 + #, qt-format + msgctxt "pki_scard|" + msgid "Wrong Size %1" + msgstr "Taille fausse %1" + +-#: ../lib/pki_scard.cpp:752 ++#: ../lib/pki_scard.cpp:729 + #, qt-format + msgctxt "pki_scard|" + msgid "Token %1" + msgstr "Jeton %1" + +-#: ../lib/pki_scard.cpp:761 ../lib/pki_scard.cpp:774 ++#: ../lib/pki_scard.cpp:738 ../lib/pki_scard.cpp:751 + msgctxt "pki_scard|" + msgid "Failed to find the key on the token" + msgstr "Impossible de trouver la clé sur le jeton" + +-#: ../lib/pki_scard.cpp:768 ++#: ../lib/pki_scard.cpp:745 + msgctxt "pki_scard|" + msgid "Invalid Pin for the token" + msgstr "NIP invalide pour le jeton" + +-#: ../lib/pki_scard.cpp:780 ++#: ../lib/pki_scard.cpp:757 + msgctxt "pki_scard|" + msgid "Failed to initialize the key on the token" + msgstr "Impossible d'initialiser la clé sur le jeton" + +-#: ../lib/pki_temp.cpp:124 ++#: ../lib/pki_temp.cpp:123 + #, qt-format + msgctxt "pki_temp|" + msgid "Successfully imported the XCA template '%1'" + msgstr "Le modèle XCA '%1' a été importé avec succès" + +-#: ../lib/pki_temp.cpp:125 ++#: ../lib/pki_temp.cpp:124 + #, qt-format + msgctxt "pki_temp|" + msgid "Delete the XCA template '%1'?" + msgstr "Détruire le modèle XCA '%1' ?" + +-#: ../lib/pki_temp.cpp:126 ++#: ../lib/pki_temp.cpp:125 + #, qt-format + msgctxt "pki_temp|" + msgid "Successfully created the XCA template '%1'" + msgstr "Le modèle XCA '%1' a été créé avec succès" + +-#: ../lib/pki_temp.cpp:128 ++#: ../lib/pki_temp.cpp:127 + #, qt-format + msgctxt "pki_temp|" + msgid "Delete the %1 XCA templates: %2?" + msgstr "Détruire les %1 modèles XCA: %2 ?" + +-#: ../lib/pki_temp.cpp:336 ++#: ../lib/pki_temp.cpp:335 + #, qt-format + msgctxt "pki_temp|" + msgid "Wrong Size %1" + msgstr "Taille fausse %1" + +-#: ../lib/pki_temp.cpp:426 ++#: ../lib/pki_temp.cpp:420 + msgctxt "pki_temp|" + msgid "Template file content error (too small)" + msgstr "Erreur de contenu du fichier de modèle (trop petit)" + +-#: ../lib/pki_temp.cpp:481 ++#: ../lib/pki_temp.cpp:469 + msgctxt "pki_temp|" + msgid "Not a PEM encoded XCA Template" + msgstr "Ce n'est pas un modèle XCA en format PEM" + +-#: ../lib/pki_temp.cpp:489 ++#: ../lib/pki_temp.cpp:477 + #, qt-format + msgctxt "pki_temp|" + msgid "Not an XCA Template, but '%1'" + msgstr "Ce n'est pas un modèle XCA, mais '%1'" + +-#: ../lib/pki_x509.cpp:66 ++#: ../lib/pki_x509.cpp:64 + #, qt-format + msgctxt "pki_x509|" + msgid "Successfully imported the certificate '%1'" + msgstr "Le certificat '%1' a été importé avec succès" + +-#: ../lib/pki_x509.cpp:67 ++#: ../lib/pki_x509.cpp:65 + #, qt-format + msgctxt "pki_x509|" + msgid "Delete the certificate '%1'?" + msgstr "Détruire le certificat '%1' ?" + +-#: ../lib/pki_x509.cpp:68 ++#: ../lib/pki_x509.cpp:66 + #, qt-format + msgctxt "pki_x509|" + msgid "Successfully created the certificate '%1'" + msgstr "Le certificat '%1' a été créé avec succès" + +-#: ../lib/pki_x509.cpp:70 ++#: ../lib/pki_x509.cpp:68 + #, qt-format + msgctxt "pki_x509|" + msgid "Delete the %1 certificates: %2?" + msgstr "Détruire les %1 certificats: '%2' ?" + +-#: ../lib/pki_x509.cpp:218 ++#: ../lib/pki_x509.cpp:229 + #, qt-format + msgctxt "pki_x509|" + msgid "" +@@ -4545,45 +4627,45 @@ msgstr "" + "Impossible de charger le certificat du fichier %1. Les formats PEM et DER " + "ont été essayés." + +-#: ../lib/pki_x509.cpp:363 ++#: ../lib/pki_x509.cpp:374 + msgctxt "pki_x509|" + msgid "This certificate is already on the security token" + msgstr "Ce certificat est déjà dans le jeton de sécurité" + +-#: ../lib/pki_x509.cpp:426 ++#: ../lib/pki_x509.cpp:437 + #, qt-format + msgctxt "pki_x509|" + msgid "Delete the certificate '%1' from the token '%2 (#%3)'?" + msgstr "Détruire le certificat '%1' sur le jeton '%2 (#%3)' ?" + +-#: ../lib/pki_x509.cpp:559 ++#: ../lib/pki_x509.cpp:570 + msgctxt "pki_x509|" + msgid "There is no key for signing !" + msgstr "Il n'y a pas de clé pour signer !" + +-#: ../lib/pki_x509.cpp:620 ++#: ../lib/pki_x509.cpp:631 + #, qt-format + msgctxt "pki_x509|" + msgid "Wrong Size %1" + msgstr "Taille fausse %1" + +-#: ../lib/pki_x509.cpp:911 ++#: ../lib/pki_x509.cpp:919 + msgctxt "pki_x509|" + msgid "No" + msgstr "Non" + +-#: ../lib/pki_x509.cpp:913 ++#: ../lib/pki_x509.cpp:921 + msgctxt "pki_x509|" + msgid "Yes" + msgstr "Oui" + +-#: ../lib/pki_x509.cpp:943 ++#: ../lib/pki_x509.cpp:951 + #, qt-format + msgctxt "pki_x509|" + msgid "Renew certificate: %1" + msgstr "Renouvellement du certificat: %1" + +-#: ../lib/pki_x509.cpp:944 ++#: ../lib/pki_x509.cpp:952 + #, qt-format + msgctxt "pki_x509|" + msgid "" +@@ -4593,36 +4675,36 @@ msgstr "" + "Le certificat XCA '%1' émis le %2 expirera le %3.\n" + "Il est stocké dans la base de données XCA '%4'" + +-#: ../lib/pki_x509req.cpp:102 ++#: ../lib/pki_x509req.cpp:110 + msgctxt "pki_x509req|" + msgid "Signing key not valid (public key)" + msgstr "La clé de signature n'est pas valide (c'est une clé publique)" + +-#: ../lib/pki_x509req.cpp:144 ++#: ../lib/pki_x509req.cpp:152 + #, qt-format + msgctxt "pki_x509req|" + msgid "Successfully imported the %1 certificate request '%2'" + msgstr "La requête %1 de signature '%2' a été importée avec succès" + +-#: ../lib/pki_x509req.cpp:145 ++#: ../lib/pki_x509req.cpp:153 + #, qt-format + msgctxt "pki_x509req|" + msgid "Delete the %1 certificate request '%2'?" + msgstr "Détruire la requête %1 de signature '%2' ?" + +-#: ../lib/pki_x509req.cpp:146 ++#: ../lib/pki_x509req.cpp:154 + #, qt-format + msgctxt "pki_x509req|" + msgid "Successfully created the %1 certificate request '%2'" + msgstr "La requête %1 de signature '%2' a été créée avec succès" + +-#: ../lib/pki_x509req.cpp:148 ++#: ../lib/pki_x509req.cpp:156 + #, qt-format + msgctxt "pki_x509req|" + msgid "Delete the %1 certificate requests: %2?" + msgstr "Détruire la requête %1 de signature '%2' ?" + +-#: ../lib/pki_x509req.cpp:176 ++#: ../lib/pki_x509req.cpp:184 + #, qt-format + msgctxt "pki_x509req|" + msgid "" +@@ -4632,18 +4714,18 @@ msgstr "" + "Impossible de charger la requête de signature du fichier %1. Les formats " + "PEM, DER et SPKAC ont été essayés." + +-#: ../lib/pki_x509req.cpp:208 ++#: ../lib/pki_x509req.cpp:216 + #, qt-format + msgctxt "pki_x509req|" + msgid "Wrong Size %1" + msgstr "Taille fausse %1" + +-#: ../lib/pki_x509req.cpp:356 ++#: ../lib/pki_x509req.cpp:383 + msgctxt "pki_x509req|" + msgid "Signed" + msgstr "Signée" + +-#: ../lib/pki_x509req.cpp:356 ++#: ../lib/pki_x509req.cpp:383 + msgctxt "pki_x509req|" + msgid "Unhandled" + msgstr "Non-géré" +@@ -4678,52 +4760,52 @@ msgctxt "v3ext|" + msgid "Cancel" + msgstr "Annuler" + +-#: ../widgets/v3ext.cpp:72 ++#: ../widgets/v3ext.cpp:75 + msgctxt "v3ext|" + msgid "An email address or 'copy'" + msgstr "Une adresse de courriel ou 'copy'" + +-#: ../widgets/v3ext.cpp:74 ++#: ../widgets/v3ext.cpp:77 + msgctxt "v3ext|" + msgid "An email address" + msgstr "Une adresse de courriel" + +-#: ../widgets/v3ext.cpp:76 ++#: ../widgets/v3ext.cpp:79 + msgctxt "v3ext|" + msgid "A registered ID: OBJECT IDENTIFIER" + msgstr "un IDentifiant enregistré: IDENTIFICATEUR.OBJET" + +-#: ../widgets/v3ext.cpp:80 ++#: ../widgets/v3ext.cpp:83 + msgctxt "v3ext|" + msgid "A uniform resource indicator" + msgstr "un indicateur uniforme de ressource" + +-#: ../widgets/v3ext.cpp:85 ++#: ../widgets/v3ext.cpp:88 + msgctxt "v3ext|" + msgid "A DNS domain name or 'copycn'" + msgstr "un nom de domaine DNS ou 'copycn'" + +-#: ../widgets/v3ext.cpp:87 ++#: ../widgets/v3ext.cpp:90 + msgctxt "v3ext|" + msgid "A DNS domain name" + msgstr "un nom de domaine DNS" + +-#: ../widgets/v3ext.cpp:89 ++#: ../widgets/v3ext.cpp:92 + msgctxt "v3ext|" + msgid "An IP address" + msgstr "Une adresse IP" + +-#: ../widgets/v3ext.cpp:92 ++#: ../widgets/v3ext.cpp:95 + msgctxt "v3ext|" + msgid "Syntax: ;TYPE:text like '1.2.3.4:UTF8:name'" + msgstr "Syntaxe: ;TYPE:texte sous la forme '1.2.3.4:UTF8:nom'" + +-#: ../widgets/v3ext.cpp:96 ++#: ../widgets/v3ext.cpp:99 + msgctxt "v3ext|" + msgid "No editing. Only 'copy' allowed here" + msgstr "Pas de modification possible. Seul 'copy' est permis ici" + +-#: ../widgets/v3ext.cpp:165 ++#: ../widgets/v3ext.cpp:168 + #, qt-format + msgctxt "v3ext|" + msgid "" +@@ -4735,7 +4817,7 @@ msgstr "" + "'%1'\n" + "%2" + +-#: ../widgets/v3ext.cpp:170 ++#: ../widgets/v3ext.cpp:173 + #, qt-format + msgctxt "v3ext|" + msgid "" +@@ -4744,3 +4826,13 @@ msgid "" + msgstr "" + "La validation a été effectuée avec succès:\n" + "'%1'" ++ ++#: ../widgets/XcaWarning.cpp:121 ++msgctxt "xcaWarning|" ++msgid "The following error occurred:" ++msgstr "L'erreur suivante s'est produite:" ++ ++#: ../widgets/XcaWarning.cpp:124 ++msgctxt "xcaWarning|" ++msgid "Copy to Clipboard" ++msgstr "Copier dans le presse-papier" diff --git a/xca-2.4.0-lang-it.patch b/xca-2.4.0-lang-it.patch new file mode 100644 index 0000000..cae2369 --- /dev/null +++ b/xca-2.4.0-lang-it.patch @@ -0,0 +1,312 @@ +From 36abc2b4980980d92a1acb697340c36b8cce6e64 Mon Sep 17 00:00:00 2001 +From: albanobattistella <34811668+albanobattistella@users.noreply.github.com> +Date: Mon, 24 May 2021 17:52:22 +0200 +Subject: [PATCH] Update xca_it.ts + +--- + lang/xca_it.ts | 80 +++++++++++++++++++++++++------------------------- + 1 file changed, 40 insertions(+), 40 deletions(-) + +diff --git a/lang/xca_it.ts b/lang/xca_it.ts +index 0bf93bc9..ba06ec62 100644 +--- a/lang/xca_it.ts ++++ b/lang/xca_it.ts +@@ -180,7 +180,7 @@ + + + Revoked: +- Revocato: ++ Revocato: + + + +@@ -1133,7 +1133,7 @@ Ciò eliminerà la chiave '%1' e la renderà non esportabile + + No deleted items found +- Non trovati elementi cancellati ++ Non trovati elementi cancellati + + + +@@ -1228,11 +1228,11 @@ Ciò eliminerà la chiave '%1' e la renderà non esportabile + + &New DataBase +- &Nuovo database ++ &Nuovo database + + + &Open DataBase +- &Apri database ++ &Apri database + + + +@@ -1246,7 +1246,7 @@ Ciò eliminerà la chiave '%1' e la renderà non esportabile + + &Close DataBase +- &Chiudi database ++ &Chiudi database + + + +@@ -1408,7 +1408,7 @@ Ciò eliminerà la chiave '%1' e la renderà non esportabile + + &Content +- &Contenuti ++ &Contenuti + + + +@@ -1417,7 +1417,7 @@ Ciò eliminerà la chiave '%1' e la renderà non esportabile + + no such option: %1 +- opzione inesistente: %1 ++ opzione inesistente: %1 + + + +@@ -1483,30 +1483,30 @@ Ciò eliminerà la chiave '%1' e la renderà non esportabile + Please enter a password, that will be used to encrypt your private keys in the database: + %1 +- Prego inserire una password che verrà utilizzata per crittare le chiavi private nel database: ++ Prego inserire una password che verrà utilizzata per crittare le chiavi private nel database: + %1 + + + Password verify error, please try again +- Errore di verifica password, prego riprovare ++ Errore di verifica password, prego riprovare + + + Password +- Password ++ Password + + + Please enter the password for unlocking the database: + %1 +- Prego inserire la password per sbloccare il database: ++ Prego inserire la password per sbloccare il database: + %1 + + + The following error occurred: +- Incontrato l'errore seguente: ++ Incontrato l'errore seguente: + + + Copy to Clipboard +- Copia negli appunti ++ Copia negli appunti + + + +@@ -1533,7 +1533,7 @@ Prego inserire i bit dei parametri DH + + + Error opening file: '%1': %2 +- Errore in apertura file: '%1': %2 ++ Errore in apertura file: '%1': %2 + + + +@@ -1769,7 +1769,7 @@ Prego inserire i bit dei parametri DH + + + Distinguished name +- Distinguished name ++ Nome distinto + + + +@@ -2279,12 +2279,12 @@ nonostante siano stati dichiarati come obbligatori nel menu opzioni. + + Hostname +- ++ Nome host + + + + Username +- ++ Nome utente + + + +@@ -2309,11 +2309,11 @@ nonostante siano stati dichiarati come obbligatori nel menu opzioni. + + Please enter the password to access the database server %2 as user '%1'. +- Prego inserire la password di accesso al database server %2 come utente: '%1'. ++ Prego inserire la password di accesso al database server %2 come utente: '%1'. + + + The database driver does not support transactions. This may happen if the client and server have different versions. Continue with care. +- Il driver database non supporta le transazioni. Questo può succedere se il client e il server hanno versioni differenti. Continuare con attenzione. ++ Il driver database non supporta le transazioni. Questo può succedere se il client e il server hanno versioni differenti. Continuare con attenzione. + + + +@@ -2524,7 +2524,7 @@ Nello specifico EC e DSA sono definiti solo con SHA1 nelle specifiche PKCS#11. + + E&xit +- E&sci ++ E&sci + + + +@@ -2614,15 +2614,15 @@ Nello specifico EC e DSA sono definiti solo con SHA1 nelle specifiche PKCS#11. + + DB: Rename: '%1' already in use +- DB: Rinomina: '%1' già in uso ++ DB: Rinomina: '%1' già in uso + + + DB: Entry to rename not found: %1 +- DB: Elemento da rinominare non trovato: %1 ++ DB: Elemento da rinominare non trovato: %1 + + + DB: Write error %1 - %2 +- DB: Errore di scrittura %1 - %2 ++ DB: Errore di scrittura %1 - %2 + + + +@@ -2991,7 +2991,7 @@ Nello specifico EC e DSA sono definiti solo con SHA1 nelle specifiche PKCS#11. + + Failed to open PKCS11 library: %1 +- Impossibile aprire libreria PKCS#11: %1 ++ Impossibile aprire libreria PKCS#11: %1 + + + +@@ -3456,7 +3456,7 @@ nella libreria %3 + db_base + + Error opening file: '%1': %2 +- Errore in apertura file: '%1': %2 ++ Errore in apertura file: '%1': %2 + + + +@@ -3607,15 +3607,15 @@ quindi non è stata importata + + + There are no CA certificates for CRL generation +- Non esistono certificati CA per generare la CRL ++ Non esistono certificati CA per generare la CRL + + + Select CA certificate +- Seleziona un certificato CA ++ Seleziona un certificato CA + + + Create CRL +- Crea CRL ++ Crea CRL + + + +@@ -3873,11 +3873,11 @@ e sarà completata con la nuova parte privata della chiave + + + Plain View +- Visualizzazione semplice ++ Visualizzazione semplice + + + Tree View +- Visualizzazione ad albero ++ Visualizzazione ad albero + + + +@@ -4000,7 +4000,7 @@ pertanto non è stato importato + + + X509 Certificates ( *.pem *.cer *.crt *.p12 *.p7b ) +- Certificati x509 ( *.pem *.cer *.crt *.p12 *.p7b ) ++ Certificati x509 ( *.pem *.cer *.crt *.p12 *.p7b ) + + + +@@ -4015,7 +4015,7 @@ pertanto non è stato importato + + + Error opening file: '%1': %2 +- Errore in apertura file: '%1': %2 ++ Errore in apertura file: '%1': %2 + + + +@@ -4024,7 +4024,7 @@ pertanto non è stato importato + + + days +- giorni ++ giorni + + + +@@ -4202,11 +4202,11 @@ pertanto non è stata salvata + pki_base + + Error opening file: '%1': %2 +- Errore in apertura file: '%1': %2 ++ Errore in apertura file: '%1': %2 + + + Error writing to file: '%1': %2 +- Errore scrittura file: '%1': %2 ++ Errore scrittura file: '%1': %2 + + + +@@ -4312,7 +4312,7 @@ Si trova nel database XCA '%5' + + + unknown +- Sconosciuto ++ Sconosciuto + + + +@@ -4322,22 +4322,22 @@ Si trova nel database XCA '%5' + + The XCA CRL '%1', issued by the CA '%2' on %3 will expire on %4. + It is stored in the XCA database '%5' +- La CRL XCA '%1', rilasciata dalla CA '%2' il %3, scadrà il %4. E' mantenuta nel database XCA '%5' ++ La CRL XCA '%1', rilasciata dalla CA '%2' il %3, scadrà il %4. E' mantenuta nel database XCA '%5' + + + + pki_evp + + Failed to decrypt the key (bad password) +- Impossibile decrittare la chiave (password errata) ++ Impossibile decrittare la chiave (password errata) + + + Failed to decrypt the key (bad password) %1 +- Impossibile decrittare la chiave (password errata) %1 ++ Impossibile decrittare la chiave (password errata) %1 + + + Please enter the password to decrypt the private key. +- Prego inserire la password per decrittare la chiave privata. ++ Prego inserire la password per decrittare la chiave privata. + + + diff --git a/xca-2.4.0-mimeicons.patch b/xca-2.4.0-mimeicons.patch new file mode 100644 index 0000000..f8398e3 --- /dev/null +++ b/xca-2.4.0-mimeicons.patch @@ -0,0 +1,17 @@ +diff -Naurp xca-2.4.0.orig/misc/xca.xml xca-2.4.0.new/misc/xca.xml +--- xca-2.4.0.orig/misc/xca.xml 2021-05-07 22:40:29.000000000 +0200 ++++ xca-2.4.0.new/misc/xca.xml 2021-11-13 17:09:16.478893271 +0100 +@@ -3,11 +3,11 @@ + + XCA database + +- ++ + + + XCA template + +- ++ + + diff --git a/xca-2.4.0-noclean.patch b/xca-2.4.0-noclean.patch new file mode 100644 index 0000000..e754f9f --- /dev/null +++ b/xca-2.4.0-noclean.patch @@ -0,0 +1,14 @@ +diff -Naurp xca-2.4.0.orig/Makefile xca-2.4.0.new/Makefile +--- xca-2.4.0.orig/Makefile 2021-05-07 22:40:29.000000000 +0200 ++++ xca-2.4.0.new/Makefile 2021-11-13 16:59:53.656274074 +0100 +@@ -69,7 +69,9 @@ PRINT=: + endif + export PRINT + +-ifneq ($(TOPDIR), $(BUILD)) ++REALBUILD=$(shell realpath $(BUILD)) ++REALTOPDIR=$(shell realpath $(TOPDIR)) ++ifneq ($(REALTOPDIR), $(REALBUILD)) + do.ui: clean_topdir + clean_topdir: + $(MAKE) -C $(TOPDIR) clean diff --git a/xca-2.4.0-openssl3.patch b/xca-2.4.0-openssl3.patch new file mode 100644 index 0000000..7667d02 --- /dev/null +++ b/xca-2.4.0-openssl3.patch @@ -0,0 +1,233 @@ +diff -Naurp xca-2.4.0.orig/lib/pkcs11.cpp xca-2.4.0.new/lib/pkcs11.cpp +--- xca-2.4.0.orig/lib/pkcs11.cpp 2021-05-07 22:40:29.000000000 +0200 ++++ xca-2.4.0.new/lib/pkcs11.cpp 2021-11-13 02:58:27.866824246 +0100 +@@ -840,8 +840,7 @@ EVP_PKEY *pkcs11::getPrivateKey(EVP_PKEY + + switch (EVP_PKEY_type(keytype)) { + case EVP_PKEY_RSA: +- rsa = EVP_PKEY_get0_RSA(pub); +- rsa = RSAPublicKey_dup(rsa); ++ rsa = RSAPublicKey_dup(EVP_PKEY_get0_RSA(pub)); + openssl_error(); + if (!rsa_meth) { + #if OPENSSL_VERSION_NUMBER >= 0x1010000L +@@ -865,8 +864,7 @@ EVP_PKEY *pkcs11::getPrivateKey(EVP_PKEY + EVP_PKEY_assign_RSA(evp, rsa); + break; + case EVP_PKEY_DSA: +- dsa = EVP_PKEY_get0_DSA(pub); +- dsa = DSAparams_dup(dsa); ++ dsa = DSAparams_dup(EVP_PKEY_get0_DSA(pub)); + openssl_error(); + if (!dsa_meth) { + #if OPENSSL_VERSION_NUMBER >= 0x10100000L +@@ -889,8 +887,7 @@ EVP_PKEY *pkcs11::getPrivateKey(EVP_PKEY + break; + #if !defined(OPENSSL_NO_EC) && OPENSSL_VERSION_NUMBER >= 0x10100000L + case EVP_PKEY_EC: +- ec = EVP_PKEY_get0_EC_KEY(pub); +- ec = EC_KEY_dup(ec); ++ ec = EC_KEY_dup(EVP_PKEY_get0_EC_KEY(pub)); + openssl_error(); + if (!ec_key_meth) { + ec_key_meth = setup_ec_key_meth(); +diff -Naurp xca-2.4.0.orig/lib/pki_evp.cpp xca-2.4.0.new/lib/pki_evp.cpp +--- xca-2.4.0.orig/lib/pki_evp.cpp 2021-05-07 22:40:29.000000000 +0200 ++++ xca-2.4.0.new/lib/pki_evp.cpp 2021-11-13 03:00:39.279152488 +0100 +@@ -282,8 +282,8 @@ void pki_evp::fromPEMbyteArray(const QBy + static void search_ec_oid(EVP_PKEY *pkey) + { + #ifndef OPENSSL_NO_EC +- EC_KEY *ec; + EC_GROUP *builtin; ++ const EC_KEY *ec; + const EC_GROUP *ec_group; + + int keytype = EVP_PKEY_id(pkey); +@@ -498,7 +498,7 @@ void pki_evp::fload(const QString &fname + void pki_evp::fromData(const unsigned char *p, db_header_t *head) + { + int version, type, size; +- void *ptr = NULL; ++ const void *ptr = NULL; + + if (key) + EVP_PKEY_free(key); +@@ -518,8 +518,23 @@ void pki_evp::fromData(const unsigned ch + } + pki_openssl_error(); + +- if (key) +- ptr = EVP_PKEY_get0(key); ++ if (key) { ++ switch (EVP_PKEY_type(EVP_PKEY_id(key))) { ++ case EVP_PKEY_RSA: ++ ptr = EVP_PKEY_get0_RSA(key); ++ break; ++ case EVP_PKEY_DSA: ++ ptr = EVP_PKEY_get0_DSA(key); ++ break; ++#ifndef OPENSSL_NO_EX ++ case EVP_PKEY_EC: ++ ptr = EVP_PKEY_get0_EC_KEY(key); ++ break; ++#endif ++ default: ++ ptr = EVP_PKEY_get0(key); ++ } ++ } + if (!ptr) + throw errorEx(tr("Ignoring unsupported private key")); + +@@ -621,8 +636,8 @@ EVP_PKEY *pki_evp::legacyDecryptKey(QByt + + pki_openssl_error(); + if (EVP_PKEY_type(getKeyType()) == EVP_PKEY_RSA) { +- RSA *rsa = EVP_PKEY_get0_RSA(tmpkey); +- RSA_blinding_on(rsa, NULL); ++ const RSA *rsa = EVP_PKEY_get0_RSA(tmpkey); ++ RSA_blinding_on((RSA *) rsa, NULL); + } + myencKey.fill(0); + return tmpkey; +@@ -930,7 +945,7 @@ bool pki_evp::verify_priv(EVP_PKEY *pkey + EVP_MD_CTX_free(ctx); + #endif + if (EVP_PKEY_id(pkey) == EVP_PKEY_RSA && EVP_PKEY_isPrivKey(pkey)) { +- RSA *rsa = EVP_PKEY_get0_RSA(pkey); ++ const RSA *rsa = EVP_PKEY_get0_RSA(pkey); + if (RSA_check_key(rsa) != 1) + verify = false; + } +diff -Naurp xca-2.4.0.orig/lib/pki_key.cpp xca-2.4.0.new/lib/pki_key.cpp +--- xca-2.4.0.orig/lib/pki_key.cpp 2021-05-07 22:40:29.000000000 +0200 ++++ xca-2.4.0.new/lib/pki_key.cpp 2021-11-13 02:58:27.866824246 +0100 +@@ -197,7 +197,7 @@ QString pki_key::length() const + + if (EVP_PKEY_id(key) == EVP_PKEY_DSA) { + const BIGNUM *p = NULL; +- DSA *dsa = EVP_PKEY_get0_DSA(key); ++ const DSA *dsa = EVP_PKEY_get0_DSA(key); + if (dsa) + DSA_get0_pqg(dsa, &p, NULL, NULL); + dsa_unset = p == NULL; +@@ -299,7 +299,7 @@ QString pki_key::modulus() const + if (getKeyType() == EVP_PKEY_RSA) { + const BIGNUM *n = NULL; + +- RSA *rsa = EVP_PKEY_get0_RSA(key); ++ const RSA *rsa = EVP_PKEY_get0_RSA(key); + RSA_get0_key(rsa, &n, NULL, NULL); + return BN2QString(n); + } +@@ -310,7 +310,7 @@ QString pki_key::pubEx() const + { + if (getKeyType() == EVP_PKEY_RSA) { + const BIGNUM *e = NULL; +- RSA *rsa = EVP_PKEY_get0_RSA(key); ++ const RSA *rsa = EVP_PKEY_get0_RSA(key); + RSA_get0_key(rsa, NULL, &e, NULL); + return BN2QString(e); + } +@@ -321,7 +321,7 @@ QString pki_key::subprime() const + { + if (getKeyType() == EVP_PKEY_DSA) { + const BIGNUM *q = NULL; +- DSA *dsa = EVP_PKEY_get0_DSA(key); ++ const DSA *dsa = EVP_PKEY_get0_DSA(key); + if (dsa) + DSA_get0_pqg(dsa, NULL, &q, NULL); + return BN2QString(q); +@@ -333,7 +333,7 @@ QString pki_key::pubkey() const + { + if (getKeyType() == EVP_PKEY_DSA) { + const BIGNUM *pubkey = NULL; +- DSA *dsa = EVP_PKEY_get0_DSA(key); ++ const DSA *dsa = EVP_PKEY_get0_DSA(key); + if (dsa) + DSA_get0_key(dsa, &pubkey, NULL); + return BN2QString(pubkey); +@@ -766,7 +766,7 @@ QByteArray pki_key::SSH2publicQByteArray + txt = "ssh-rsa"; + ssh_key_QBA2data(txt, &data); + { +- RSA *rsa = EVP_PKEY_get0_RSA(key); ++ const RSA *rsa = EVP_PKEY_get0_RSA(key); + const BIGNUM *n, *e; + RSA_get0_key(rsa, &n, &e, NULL); + ssh_key_bn2data(e, &data); +@@ -777,7 +777,7 @@ QByteArray pki_key::SSH2publicQByteArray + txt = "ssh-dss"; + ssh_key_QBA2data(txt, &data); + { +- DSA *dsa = EVP_PKEY_get0_DSA(key); ++ const DSA *dsa = EVP_PKEY_get0_DSA(key); + const BIGNUM *p, *q, *g, *pubkey; + DSA_get0_pqg(dsa, &p, &q, &g); + DSA_get0_key(dsa, &pubkey, NULL); +diff -Naurp xca-2.4.0.orig/lib/pki_scard.cpp xca-2.4.0.new/lib/pki_scard.cpp +--- xca-2.4.0.orig/lib/pki_scard.cpp 2021-05-07 22:40:29.000000000 +0200 ++++ xca-2.4.0.new/lib/pki_scard.cpp 2021-11-13 03:02:20.379174056 +0100 +@@ -293,10 +293,10 @@ void pki_scard::deleteFromToken() + pk11_attlist pki_scard::objectAttributesNoId(EVP_PKEY *pk, bool priv) const + { + QByteArray ba; +- RSA *rsa; +- DSA *dsa; ++ const RSA *rsa; ++ const DSA *dsa; + #ifndef OPENSSL_NO_EC +- EC_KEY *ec; ++ const EC_KEY *ec; + #endif + const BIGNUM *n = NULL; + const BIGNUM *e = NULL; +@@ -401,10 +401,10 @@ int pki_scard::renameOnToken(const sloti + void pki_scard::store_token(const slotid &slot, EVP_PKEY *pkey) + { + QByteArray ba; +- RSA *rsa; +- DSA *dsa; ++ const RSA *rsa; ++ const DSA *dsa; + #ifndef OPENSSL_NO_EC +- EC_KEY *ec; ++ const EC_KEY *ec; + #endif + pk11_attlist pub_atts; + pk11_attlist priv_atts; +@@ -691,7 +691,7 @@ pki_scard::~pki_scard() + void pki_scard::fromData(const unsigned char *p, db_header_t *head ) + { + int version, size; +- void *ptr = NULL; ++ const void *ptr = NULL; + + size = head->len - sizeof(db_header_t); + version = head->version; +@@ -713,8 +713,23 @@ void pki_scard::fromData(const unsigned + + d2i(ba); + +- if (key) +- ptr = EVP_PKEY_get0(key); ++ if (key) { ++ switch (EVP_PKEY_type(EVP_PKEY_id(key))) { ++ case EVP_PKEY_RSA: ++ ptr = EVP_PKEY_get0_RSA(key); ++ break; ++ case EVP_PKEY_DSA: ++ ptr = EVP_PKEY_get0_DSA(key); ++ break; ++#ifndef OPENSSL_NO_EX ++ case EVP_PKEY_EC: ++ ptr = EVP_PKEY_get0_EC_KEY(key); ++ break; ++#endif ++ default: ++ ptr = EVP_PKEY_get0(key); ++ } ++ } + + if (!ptr) + throw errorEx(tr("Ignoring unsupported token key")); diff --git a/xca.spec b/xca.spec index e8c397f..1598542 100644 --- a/xca.spec +++ b/xca.spec @@ -3,21 +3,26 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 2.3.0 -Release: 5%{?dist} +Version: 2.4.0 +Release: 1%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz +Patch1: xca-2.4.0-openssl3.patch +Patch2: xca-2.4.0-noclean.patch +Patch3: xca-2.4.0-mimeicons.patch +Patch4: xca-2.4.0-lang-it.patch +Patch5: xca-2.4.0-lang-fr.patch -BuildRequires: make +BuildRequires: make BuildRequires: gcc-c++ BuildRequires: qt5-qtbase-devel +BuildRequires: qt5-qttools-devel BuildRequires: qt5-linguist BuildRequires: openssl-devel BuildRequires: xdg-utils -BuildRequires: ImageMagick -BuildRequires: linuxdoc-tools BuildRequires: libtool-ltdl-devel +BuildRequires: python3-sphinx Requires: hicolor-icon-theme @@ -51,83 +56,73 @@ format, portable across operating systems. %build #------------------------------------------------------------------------------- -%configure CXXFLAGS="${RPM_OPT_FLAGS}" \ +%configure CXXFLAGS='%{optflags}' \ STRIP=: \ - LIBS="-Wl,-as-needed" + LIBS='-Wl,-as-needed' make %{?_smp_mflags} -convert img/xca.ico xca.png -touch -r img/xca.ico xca.png -convert img/xdb.ico xdb.png -touch -r img/xdb.ico xdb.png - #------------------------------------------------------------------------------- %install #------------------------------------------------------------------------------- -make DESTDIR="${RPM_BUILD_ROOT}" install +make DESTDIR='%{buildroot}' \ + ICON_SIZES='16x16 32x32 48x48 64x64 128x128 256x256' install -# Do not include db statistics program and man. -find "${RPM_BUILD_ROOT}" -name 'xca_db_stat*' -delete +# Do not include db statistics program and man. +find '%{buildroot}' -name 'xca_db_stat*' -delete -install -d -m 755 "${RPM_BUILD_ROOT}%{_datadir}/mime/packages" -install -p -m 644 misc/xca.xml "${RPM_BUILD_ROOT}%{_datadir}/mime/packages/" +# Do not use pixmaps directory. +rm -rf '%{buildroot}%{_datadir}/pixmaps' -export XDG_DATA_DIRS="${RPM_BUILD_ROOT}%{_datadir}" -export XDG_UTILS_INSTALL_MODE=system +# Install mime file types. +install -d -m 755 '%{buildroot}%{_datadir}/mime/packages' +install -p -m 644 misc/xca.xml '%{buildroot}%{_datadir}/mime/packages/' -install -d -m 755 "${XDG_DATA_DIRS}/icons/hicolor" -xdg-icon-resource install --noupdate --context mimetypes \ - --size 32 xdb.png application-x-xca-database -xdg-icon-resource install --noupdate --size 32 xca.png fedora-xca - -# Replace the desktop icon. -rm -rf "${RPM_BUILD_ROOT}%{_datadir}/pixmaps/xca-32x32.xpm" -cp -a img/key.xpm "${RPM_BUILD_ROOT}%{_datadir}/pixmaps/xca.xpm" - -install -d -m 755 "${RPM_BUILD_ROOT}%{_datadir}/applications" +# Install desktop application file. desktop-file-install --mode 0644 \ - --dir "${RPM_BUILD_ROOT}%{_datadir}/applications" \ + --dir '%{buildroot}%{_datadir}/applications' \ --delete-original \ --add-mime-type application/x-xca-database \ --remove-category QT \ --set-icon=xca \ - "${RPM_BUILD_ROOT}%{_datadir}/applications/xca.desktop" - -# Will build the doc directory ourself. - -rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" + '%{buildroot}%{_datadir}/applications/xca.desktop' # Tag translation files. - -( - cd "${RPM_BUILD_ROOT}" - find '.%{_datadir}/xca' -name 'xca_[a-z][a-z]*.qm' -) | - sed -e 's/^\.//' \ - -e 's#^.*/xca_\([a-z][a-z]\)[^/]*\.qm$#%lang(\1) &#' > langfiles +%find_lang '%{name}' --with-qt #------------------------------------------------------------------------------- -%files -f langfiles +%files -f %{name}.lang #------------------------------------------------------------------------------- %doc AUTHORS COPYRIGHT -%doc doc/*.html +%doc %{_docdir}/xca/* %{_bindir}/* %dir %{_datadir}/xca %{_datadir}/xca/*.txt %{_datadir}/xca/*.xca -%{_datadir}/pixmaps/*.xpm %{_datadir}/icons/*/*/*/*.png %{_datadir}/mime/packages/%{name}.* %{_datadir}/applications/* +%{_datadir}/bash-completion/ %attr(0644, root, root) %{_mandir}/*/* #------------------------------------------------------------------------------- %changelog +#------------------------------------------------------------------------------- + +* Sat Nov 13 2021 Patrick Monnerat 2.4.0-1 +- New upstream release. +- Patch "openssl3" for openssl version 3 compatibility. +- Patch "noclean" fixes building in symlinked directory. +- Patch "mimeicons" to declare mime types icons as generic. +- Patch "lang-it" to update italian translation. +- Patch "lang-fr" to update french translation. +- Uses sphinx instead of SGML for documentation. +- Use new icons. + * Tue Sep 14 2021 Sahana Prasad - 2.3.0-5 - Rebuilt with OpenSSL 3.0.0 @@ -137,8 +132,6 @@ rm -rf "${RPM_BUILD_ROOT}%{_docdir}/xca" * Wed Jan 27 2021 Fedora Release Engineering - 2.3.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild -#------------------------------------------------------------------------------- - * Tue Dec 1 2020 Patrick Monnerat 2.3.0-2 - BR translate-toolkit is not needed anymore. From f3ba159c8af3b24d24262bf8fa3d70c848325fe0 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 22 Jan 2022 04:50:48 +0000 Subject: [PATCH 53/72] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 1598542..e821e12 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.4.0 -Release: 1%{?dist} +Release: 2%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -111,6 +111,9 @@ desktop-file-install --mode 0644 \ #------------------------------------------------------------------------------- %changelog +* Sat Jan 22 2022 Fedora Release Engineering - 2.4.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + #------------------------------------------------------------------------------- * Sat Nov 13 2021 Patrick Monnerat 2.4.0-1 From 83a3105eb9e720a63b053eae81fc71904a35a19d Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 23 Jul 2022 12:49:56 +0000 Subject: [PATCH 54/72] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index e821e12..cd65a06 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.4.0 -Release: 2%{?dist} +Release: 3%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -111,6 +111,9 @@ desktop-file-install --mode 0644 \ #------------------------------------------------------------------------------- %changelog +* Sat Jul 23 2022 Fedora Release Engineering - 2.4.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Sat Jan 22 2022 Fedora Release Engineering - 2.4.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild From 2f3b36a60576b15da237b4d166f3ef5a0d59cae1 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 21 Jan 2023 07:11:52 +0000 Subject: [PATCH 55/72] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index cd65a06..512ca2d 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.4.0 -Release: 3%{?dist} +Release: 4%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -111,6 +111,9 @@ desktop-file-install --mode 0644 \ #------------------------------------------------------------------------------- %changelog +* Sat Jan 21 2023 Fedora Release Engineering - 2.4.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Sat Jul 23 2022 Fedora Release Engineering - 2.4.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild From d5527eaef5cf3380ab6bad269c6bb8eaffd15439 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 22 Jul 2023 18:34:04 +0000 Subject: [PATCH 56/72] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 512ca2d..7d3652b 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.4.0 -Release: 4%{?dist} +Release: 5%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -111,6 +111,9 @@ desktop-file-install --mode 0644 \ #------------------------------------------------------------------------------- %changelog +* Sat Jul 22 2023 Fedora Release Engineering - 2.4.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Sat Jan 21 2023 Fedora Release Engineering - 2.4.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From 40fc38a69e69e097bf4bccf1b19e6cdc549c052d Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Sat, 7 Oct 2023 00:31:15 +0200 Subject: [PATCH 57/72] New upstream release. Build using cmake. Doc file "README.IMPORTANT" for needed passord reset. --- .gitignore | 1 + sources | 2 +- xca-2.4.0-lang-fr.patch | 4046 ------------------------------------ xca-2.4.0-lang-it.patch | 312 --- xca-2.4.0-mimeicons.patch | 17 - xca-2.4.0-noclean.patch | 14 - xca-2.4.0-openssl3.patch | 233 --- xca-2.5.0-README.IMPORTANT | 27 + xca.spec | 38 +- 9 files changed, 51 insertions(+), 4639 deletions(-) delete mode 100644 xca-2.4.0-lang-fr.patch delete mode 100644 xca-2.4.0-lang-it.patch delete mode 100644 xca-2.4.0-mimeicons.patch delete mode 100644 xca-2.4.0-noclean.patch delete mode 100644 xca-2.4.0-openssl3.patch create mode 100644 xca-2.5.0-README.IMPORTANT diff --git a/.gitignore b/.gitignore index 56a5ba2..c51d13f 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ xca-0.8.1.tar.gz /xca-2.2.1.tar.gz /xca-2.3.0.tar.gz /xca-2.4.0.tar.gz +/xca-2.5.0.tar.gz diff --git a/sources b/sources index f9652b1..c48f1e0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xca-2.4.0.tar.gz) = e93e2cf9dc48ed43ee9b51e977f825d81ff08835eb4d77fcbe8f9dc8ce31c77c1da879b48c25ab535717542d1fe84faa6e46c410c116edbee02072040c59667c +SHA512 (xca-2.5.0.tar.gz) = 36b9b97ff0649934fbe78e38048e75883555aab5d86ee2cbd629f9789326d16463f182cf0bbcc76b1ac8f631b24fa187f1b64c466e04de010724ea5f9ebfa11e diff --git a/xca-2.4.0-lang-fr.patch b/xca-2.4.0-lang-fr.patch deleted file mode 100644 index 65bb353..0000000 --- a/xca-2.4.0-lang-fr.patch +++ /dev/null @@ -1,4046 +0,0 @@ -From 9b1fce659d24890c896a16f59eb14c38edceff76 Mon Sep 17 00:00:00 2001 -From: Patrick Monnerat -Date: Sat, 15 May 2021 11:50:24 +0200 -Subject: [PATCH] Update french translation - ---- - lang/fr.po | 1490 ++++++++++++++++++++++++++++------------------------ - 1 file changed, 791 insertions(+), 699 deletions(-) - -diff --git a/lang/fr.po b/lang/fr.po -index 2191b870..096abfc4 100644 ---- a/lang/fr.po -+++ b/lang/fr.po -@@ -1,20 +1,20 @@ - # - # demonipuch , 2012, 2014, 2015. --# Patrick Monnerat <.>, 2011-2020. -+# Patrick Monnerat <.>, 2011-2021. - # - msgid "" - msgstr "" - "Project-Id-Version: xca 1.3.3\n" - "Report-Msgid-Bugs-To: \n" - "POT-Creation-Date: 2018-03-16 18:14+0200\n" --"PO-Revision-Date: 2020-04-08 17:42+0200\n" -+"PO-Revision-Date: 2021-05-15 11:49+0200\n" - "Last-Translator: Patrick Monnerat <.>\n" - "Language-Team: French <>\n" - "Language: fr\n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" --"X-Generator: Gtranslator 3.34.0\n" -+"X-Generator: Gtranslator 3.38.0\n" - "Plural-Forms: nplurals=2; plural=(n > 1);\n" - "X-Qt-Contexts: true\n" - -@@ -34,7 +34,7 @@ msgctxt "CaProperties|" - msgid "Default template" - msgstr "Modèle par défaut" - --#: ../ui/CertDetail.ui:30 ../widgets/CertDetail.cpp:99 -+#: ../ui/CertDetail.ui:30 ../widgets/CertDetail.cpp:112 - msgctxt "CertDetail|" - msgid "Details of the Certificate" - msgstr "Détails du Certificat" -@@ -149,58 +149,58 @@ msgctxt "CertDetail|" - msgid "Attributes" - msgstr "Attributs" - --#: ../ui/CertDetail.ui:377 ../widgets/CertDetail.cpp:36 -+#: ../ui/CertDetail.ui:377 ../widgets/CertDetail.cpp:40 - msgctxt "CertDetail|" - msgid "Show config" - msgstr "Afficher la configuration" - --#: ../widgets/CertDetail.cpp:40 -+#: ../widgets/CertDetail.cpp:44 - msgctxt "CertDetail|" - msgid "Show extensions" - msgstr "Afficher les extensions" - --#: ../widgets/CertDetail.cpp:62 -+#: ../widgets/CertDetail.cpp:66 - msgctxt "CertDetail|" - msgid "Show public key" - msgstr "Afficher la clé publique" - --#: ../widgets/CertDetail.cpp:67 -+#: ../widgets/CertDetail.cpp:69 - msgctxt "CertDetail|" - msgid "This key is not in the database." - msgstr "Cette clé ne figure pas dans la base de données" - --#: ../widgets/CertDetail.cpp:69 -+#: ../widgets/CertDetail.cpp:73 - msgctxt "CertDetail|" - msgid "Not available" - msgstr "Non disponible" - --#: ../widgets/CertDetail.cpp:108 -+#: ../widgets/CertDetail.cpp:120 - msgctxt "CertDetail|" - msgid "Signer unknown" - msgstr "Signataire inconnu" - --#: ../widgets/CertDetail.cpp:112 -+#: ../widgets/CertDetail.cpp:124 - msgctxt "CertDetail|" - msgid "Self signed" - msgstr "Auto-signé" - --#: ../widgets/CertDetail.cpp:139 -+#: ../widgets/CertDetail.cpp:154 - #, qt-format - msgctxt "CertDetail|" - msgid "Revoked at %1" - msgstr "Révoqué le %1" - --#: ../widgets/CertDetail.cpp:144 -+#: ../widgets/CertDetail.cpp:159 - msgctxt "CertDetail|" - msgid "Not valid" - msgstr "Invalide" - --#: ../widgets/CertDetail.cpp:148 -+#: ../widgets/CertDetail.cpp:163 - msgctxt "CertDetail|" - msgid "Valid" - msgstr "Valide" - --#: ../widgets/CertDetail.cpp:167 -+#: ../widgets/CertDetail.cpp:184 - msgctxt "CertDetail|" - msgid "Details of the certificate signing request" - msgstr "Détails de la requête de signature" -@@ -322,76 +322,86 @@ msgstr "" - "Le certificat serait valide plus longtemps que son signataire. Ce n'est " - "probablement pas ce qui est désiré." - --#: ../widgets/CertTreeView.cpp:25 -+#: ../widgets/CertTreeView.cpp:30 - msgctxt "CertTreeView|" - msgid "Import PKCS#12" - msgstr "Importer en PKCS#12" - --#: ../widgets/CertTreeView.cpp:26 -+#: ../widgets/CertTreeView.cpp:31 - msgctxt "CertTreeView|" - msgid "Import from PKCS#7" - msgstr "Importer en PKCS#7" - --#: ../widgets/CertTreeView.cpp:54 -+#: ../widgets/CertTreeView.cpp:60 - msgctxt "CertTreeView|" - msgid "Request" - msgstr "Requête" - --#: ../widgets/CertTreeView.cpp:56 -+#: ../widgets/CertTreeView.cpp:62 - msgctxt "CertTreeView|" - msgid "Security token" - msgstr "Jeton de sécurité" - --#: ../widgets/CertTreeView.cpp:58 -+#: ../widgets/CertTreeView.cpp:64 - msgctxt "CertTreeView|" - msgid "Other token" - msgstr "Autre jeton" - --#: ../widgets/CertTreeView.cpp:62 -+#: ../widgets/CertTreeView.cpp:68 - msgctxt "CertTreeView|" - msgid "Similar Certificate" - msgstr "Certificat similaire" - --#: ../widgets/CertTreeView.cpp:65 -+#: ../widgets/CertTreeView.cpp:71 - msgctxt "CertTreeView|" - msgid "Delete from Security token" - msgstr "Détruire sur le jeton de sécurité" - --#: ../widgets/CertTreeView.cpp:68 -+#: ../widgets/CertTreeView.cpp:74 - msgctxt "CertTreeView|" - msgid "CA" - msgstr "CA" - --#: ../widgets/CertTreeView.cpp:69 -+#: ../widgets/CertTreeView.cpp:75 - msgctxt "CertTreeView|" - msgid "Properties" - msgstr "Propriétés" - --#: ../widgets/CertTreeView.cpp:70 -+#: ../widgets/CertTreeView.cpp:76 - msgctxt "CertTreeView|" - msgid "Generate CRL" - msgstr "Générer la liste de révocation" - --#: ../widgets/CertTreeView.cpp:71 -+#: ../widgets/CertTreeView.cpp:77 - msgctxt "CertTreeView|" - msgid "Manage revocations" - msgstr "Gérer les révocations" - --#: ../widgets/CertTreeView.cpp:76 ../widgets/CertTreeView.cpp:79 -+#: ../widgets/CertTreeView.cpp:82 ../widgets/CertTreeView.cpp:85 - msgctxt "CertTreeView|" - msgid "Renewal" - msgstr "Renouvellement" - --#: ../widgets/CertTreeView.cpp:81 -+#: ../widgets/CertTreeView.cpp:87 - msgctxt "CertTreeView|" - msgid "Revoke" - msgstr "Révoquer" - --#: ../widgets/CertTreeView.cpp:83 -+#: ../widgets/CertTreeView.cpp:89 - msgctxt "CertTreeView|" - msgid "Unrevoke" - msgstr "Dé-révoquer" - -+#: ../widgets/CertTreeView.cpp:157 -+msgctxt "CertTreeView|" -+msgid "Plain View" -+msgstr "Vue à plat" -+ -+#: ../widgets/CertTreeView.cpp:157 -+msgctxt "CertTreeView|" -+msgid "Tree View" -+msgstr "Vue arborescente" -+ - #: ../widgets/clicklabel.cpp:37 - msgctxt "ClickLabel|" - msgid "Double click for details" -@@ -407,81 +417,91 @@ msgctxt "CrlDetail|" - msgid "&Status" - msgstr "&Etat" - --#: ../ui/CrlDetail.ui:126 -+#: ../ui/CrlDetail.ui:144 - msgctxt "CrlDetail|" - msgid "Version" - msgstr "Version" - --#: ../ui/CrlDetail.ui:145 -+#: ../ui/CrlDetail.ui:163 - msgctxt "CrlDetail|" - msgid "Signature" - msgstr "Signature" - --#: ../ui/CrlDetail.ui:152 -+#: ../ui/CrlDetail.ui:170 - msgctxt "CrlDetail|" - msgid "Signed by" - msgstr "Signée par" - --#: ../ui/CrlDetail.ui:159 -+#: ../ui/CrlDetail.ui:177 - msgctxt "CrlDetail|" - msgid "Name" - msgstr "Nom" - --#: ../ui/CrlDetail.ui:166 -+#: ../ui/CrlDetail.ui:184 - msgctxt "CrlDetail|" - msgid "The internal name of the CRL in the database" - msgstr "Le nom interne de la liste de révocation dans la base de données" - --#: ../ui/CrlDetail.ui:179 -+#: ../ui/CrlDetail.ui:197 - msgctxt "CrlDetail|" - msgid "issuing dates" - msgstr "dates d'émission" - --#: ../ui/CrlDetail.ui:188 -+#: ../ui/CrlDetail.ui:215 - msgctxt "CrlDetail|" - msgid "Next update" - msgstr "Prochaine mise-à-jour" - --#: ../ui/CrlDetail.ui:195 -+#: ../ui/CrlDetail.ui:222 - msgctxt "CrlDetail|" - msgid "Last update" - msgstr "Dernière mise-à-jour" - --#: ../ui/CrlDetail.ui:228 -+#: ../ui/CrlDetail.ui:255 - msgctxt "CrlDetail|" - msgid "&Issuer" - msgstr "&Emetteur" - --#: ../ui/CrlDetail.ui:241 -+#: ../ui/CrlDetail.ui:277 - msgctxt "CrlDetail|" - msgid "&Extensions" - msgstr "&Extensions" - --#: ../ui/CrlDetail.ui:261 -+#: ../ui/CrlDetail.ui:306 - msgctxt "CrlDetail|" - msgid "&Revocation list" - msgstr "Liste de &révocation" - --#: ../ui/CrlDetail.ui:286 -+#: ../ui/CrlDetail.ui:340 - msgctxt "CrlDetail|" - msgid "Comment" - msgstr "Commentaire" - --#: ../widgets/CrlDetail.cpp:47 -+#: ../widgets/CrlDetail.cpp:52 - msgctxt "CrlDetail|" - msgid "Failed" - msgstr "Echoué" - --#: ../widgets/CrlDetail.cpp:52 -+#: ../widgets/CrlDetail.cpp:57 - msgctxt "CrlDetail|" - msgid "Unknown signer" - msgstr "Signataire inconnu" - --#: ../widgets/CrlDetail.cpp:55 -+#: ../widgets/CrlDetail.cpp:60 - msgctxt "CrlDetail|" - msgid "Verification not possible" - msgstr "Vérification impossible" - -+#: ../widgets/CrlTreeView.cpp:37 -+msgctxt "CrlTreeView|" -+msgid "There are no CA certificates for CRL generation" -+msgstr "Il n'y a pas de certificat CA pour la génération de la CRL" -+ -+#: ../widgets/CrlTreeView.cpp:45 -+msgctxt "CrlTreeView|" -+msgid "Select CA certificate" -+msgstr "Sélectionner un certificat d'autorité" -+ - #: ../ui/ExportDialog.ui:79 - msgctxt "ExportDialog|" - msgid "Name" -@@ -512,80 +532,80 @@ msgctxt "ExportDialog|" - msgid "Export Format" - msgstr "Format d'exportation" - --#: ../widgets/ExportDialog.cpp:36 -+#: ../widgets/ExportDialog.cpp:41 - msgctxt "ExportDialog|" - msgid "All files ( * )" - msgstr "Tous les fichiers ( * )" - --#: ../widgets/ExportDialog.cpp:51 -+#: ../widgets/ExportDialog.cpp:56 - msgctxt "ExportDialog|" - msgid "PEM Text format with headers" - msgstr "Format textuel PEM avec des en-têtes" - --#: ../widgets/ExportDialog.cpp:53 -+#: ../widgets/ExportDialog.cpp:58 - msgctxt "ExportDialog|" - msgid "Concatenated list of all selected items in one PEM text file" - msgstr "" - "Concaténation de tous les éléments sélectionnés dans un seul fichier texte " - "en format PEM" - --#: ../widgets/ExportDialog.cpp:54 -+#: ../widgets/ExportDialog.cpp:59 - msgctxt "ExportDialog|" - msgid "" - "Concatenated text format of the complete certificate chain in one PEM file" - msgstr "" - "Fichier PEM contenant la concaténation de tous les certificats de la chaîne" - --#: ../widgets/ExportDialog.cpp:58 -+#: ../widgets/ExportDialog.cpp:63 - msgctxt "ExportDialog|" - msgid "Concatenated text format of all certificates in one PEM file" - msgstr "Fichier PEM contenant la concaténation de tous les certificats" - --#: ../widgets/ExportDialog.cpp:59 -+#: ../widgets/ExportDialog.cpp:64 - msgctxt "ExportDialog|" - msgid "Binary DER encoded file" - msgstr "Fichier binaire en format DER" - --#: ../widgets/ExportDialog.cpp:60 -+#: ../widgets/ExportDialog.cpp:65 - msgctxt "ExportDialog|" - msgid "PKCS#7 encoded single certificate" - msgstr "Un seul certificat en format PKCS#7" - --#: ../widgets/ExportDialog.cpp:62 -+#: ../widgets/ExportDialog.cpp:67 - msgctxt "ExportDialog|" - msgid "PKCS#7 encoded complete certificate chain" - msgstr "" - "La chaîne complète de certificats en format PKCS#7 dans un seul fichier" - --#: ../widgets/ExportDialog.cpp:56 -+#: ../widgets/ExportDialog.cpp:61 - msgctxt "ExportDialog|" - msgid "Concatenated text format of all unrevoked certificates in one PEM file" - msgstr "" - "Fichier PEM contenant la concaténation de tous les certificats non-révoqués" - --#: ../widgets/ExportDialog.cpp:64 -+#: ../widgets/ExportDialog.cpp:69 - msgctxt "ExportDialog|" - msgid "All unrevoked certificates encoded in one PKCS#7 file" - msgstr "" - "Tous les certificats non-révoqués dans un seul fichier en format PKCS#7" - --#: ../widgets/ExportDialog.cpp:66 -+#: ../widgets/ExportDialog.cpp:71 - msgctxt "ExportDialog|" - msgid "All selected certificates encoded in one PKCS#7 file" - msgstr "" - "Tous les certificats sélectionnés dans un seul fichier en format PKCS#7" - --#: ../widgets/ExportDialog.cpp:68 -+#: ../widgets/ExportDialog.cpp:73 - msgctxt "ExportDialog|" - msgid "All certificates encoded in one PKCS#7 file" - msgstr "Tous les certificats dans un seul fichier en format PKCS#7" - --#: ../widgets/ExportDialog.cpp:70 -+#: ../widgets/ExportDialog.cpp:75 - msgctxt "ExportDialog|" - msgid "The certificate and the private key as encrypted PKCS#12 file" - msgstr "Le certificat et sa clé privée dans un fichier en format PKCS#12" - --#: ../widgets/ExportDialog.cpp:71 -+#: ../widgets/ExportDialog.cpp:76 - msgctxt "ExportDialog|" - msgid "" - "The complete certificate chain and the private key as encrypted PKCS#12 file" -@@ -593,7 +613,7 @@ msgstr "" - "La chaîne complète des certificats et la clé privée en un seul fichier " - "chiffré en format PKCS#12" - --#: ../widgets/ExportDialog.cpp:72 -+#: ../widgets/ExportDialog.cpp:77 - msgctxt "ExportDialog|" - msgid "" - "Concatenation of the certificate and the unencrypted private key in one PEM " -@@ -602,7 +622,7 @@ msgstr "" - "La concaténation du certificat et de sa clé privée non-chiffrée dans un seul " - "fichier PEM" - --#: ../widgets/ExportDialog.cpp:73 -+#: ../widgets/ExportDialog.cpp:78 - msgctxt "ExportDialog|" - msgid "" - "Concatenation of the certificate and the encrypted private key in PKCS#8 " -@@ -611,47 +631,47 @@ msgstr "" - "La concaténation du certificat et de sa clé privée chiffrée en format PKCS#8 " - "dans un seul fichier" - --#: ../widgets/ExportDialog.cpp:74 -+#: ../widgets/ExportDialog.cpp:79 - msgctxt "ExportDialog|" - msgid "Text format of the public key in one PEM file" - msgstr "Formattage textuel de la clé publique dans un fichier PEM" - --#: ../widgets/ExportDialog.cpp:75 -+#: ../widgets/ExportDialog.cpp:80 - msgctxt "ExportDialog|" - msgid "Binary DER format of the public key" - msgstr "Format binaire DER de la clé publique" - --#: ../widgets/ExportDialog.cpp:77 -+#: ../widgets/ExportDialog.cpp:82 - msgctxt "ExportDialog|" - msgid "Unencrypted private key in text format" - msgstr "Clé privée non-chiffrée en format texte" - --#: ../widgets/ExportDialog.cpp:79 -+#: ../widgets/ExportDialog.cpp:84 - msgctxt "ExportDialog|" - msgid "OpenSSL specific encrypted private key in text format" - msgstr "Clé privée chiffrée spécifiquement par OpenSSL en format texte" - --#: ../widgets/ExportDialog.cpp:81 -+#: ../widgets/ExportDialog.cpp:86 - msgctxt "ExportDialog|" - msgid "Unencrypted private key in binary DER format" - msgstr "Clé privée non-chiffrée en format binaire DER" - --#: ../widgets/ExportDialog.cpp:83 -+#: ../widgets/ExportDialog.cpp:88 - msgctxt "ExportDialog|" - msgid "Unencrypted private key in PKCS#8 text format" - msgstr "Clé privée non-chiffrée en format texte PKCS#8" - --#: ../widgets/ExportDialog.cpp:85 -+#: ../widgets/ExportDialog.cpp:90 - msgctxt "ExportDialog|" - msgid "Encrypted private key in PKCS#8 text format" - msgstr "Clé privée chiffrée en format texte PKCS#8" - --#: ../widgets/ExportDialog.cpp:86 -+#: ../widgets/ExportDialog.cpp:91 - msgctxt "ExportDialog|" - msgid "The public key encoded in SSH2 format" - msgstr "La clé publique en format SSH2" - --#: ../widgets/ExportDialog.cpp:87 -+#: ../widgets/ExportDialog.cpp:92 - msgctxt "ExportDialog|" - msgid "" - "OpenSSL specific Certificate Index file as created by the 'ca' command and " -@@ -660,12 +680,12 @@ msgstr "" - "Fichier d'index des certificats spécifique à OpenSSL, tel que créé par la " - "commande 'ca' et nécessaire à l'outil OCSP" - --#: ../widgets/ExportDialog.cpp:88 -+#: ../widgets/ExportDialog.cpp:93 - msgctxt "ExportDialog|" - msgid "vCalendar expiry reminder for the selected items" - msgstr "message vCalendar de rappel d'expiration des éléments sélectionnés" - --#: ../widgets/ExportDialog.cpp:89 -+#: ../widgets/ExportDialog.cpp:94 - msgctxt "ExportDialog|" - msgid "" - "vCalendar expiry reminder containing all issued, valid certificates, the CA " -@@ -674,28 +694,28 @@ msgstr "" - "message vCalendar de rappel d'expiration contenant tous les certificats " - "valides émis, le CA lui-même et la liste de révocation la plus récente" - --#: ../widgets/ExportDialog.cpp:90 -+#: ../widgets/ExportDialog.cpp:95 - msgctxt "ExportDialog|" - msgid "Private key in Microsoft PVK format not encrypted" - msgstr "La clé privée en format Microsoft PVK n'est pas chiffrée" - --#: ../widgets/ExportDialog.cpp:91 -+#: ../widgets/ExportDialog.cpp:96 - msgctxt "ExportDialog|" - msgid "Encrypted private key in Microsoft PVK format" - msgstr "Clé privée chiffrée en format Microsoft PVK" - --#: ../widgets/ExportDialog.cpp:128 -+#: ../widgets/ExportDialog.cpp:133 - #, qt-format - msgctxt "ExportDialog|" - msgid "The file: '%1' already exists!" - msgstr "Le fichier '%1' existe déjà!" - --#: ../widgets/ExportDialog.cpp:130 -+#: ../widgets/ExportDialog.cpp:134 - msgctxt "ExportDialog|" - msgid "Overwrite" - msgstr "Ecraser" - --#: ../widgets/ExportDialog.cpp:132 -+#: ../widgets/ExportDialog.cpp:135 - msgctxt "ExportDialog|" - msgid "Do not overwrite" - msgstr "Ne pas écraser" -@@ -755,7 +775,7 @@ msgctxt "ImportMulti|" - msgid "Rename on token" - msgstr "Renommer dans le jeton" - --#: ../widgets/ImportMulti.cpp:62 -+#: ../widgets/ImportMulti.cpp:64 - #, qt-format - msgctxt "ImportMulti|" - msgid "" -@@ -769,31 +789,30 @@ msgstr "" - "Modèle: %2\n" - "Numéro de série: %3" - --#: ../widgets/ImportMulti.cpp:67 -+#: ../widgets/ImportMulti.cpp:69 - msgctxt "ImportMulti|" - msgid "Manage security token" - msgstr "Gérer les jetons de sécurité" - --#: ../widgets/ImportMulti.cpp:345 -+#: ../widgets/ImportMulti.cpp:281 - #, qt-format - msgctxt "ImportMulti|" - msgid "Details of the item '%1' cannot be shown" - msgstr "Les détails de l'objet '%1' ne peuvent pas être affichés" - --#: ../widgets/ImportMulti.cpp:125 ../widgets/ImportMulti.cpp:287 --#: ../widgets/ImportMulti.cpp:348 -+#: ../widgets/ImportMulti.cpp:103 ../widgets/ImportMulti.cpp:285 - #, qt-format - msgctxt "ImportMulti|" - msgid "The type of the item '%1' is not recognized" - msgstr "Le type de l'objet '%1' n'est pas reconnu" - --#: ../widgets/ImportMulti.cpp:376 -+#: ../widgets/ImportMulti.cpp:313 - #, qt-format - msgctxt "ImportMulti|" - msgid "The file '%1' did not contain PKI data" - msgstr "Le fichier '%1' ne contient pas de données PKI" - --#: ../widgets/ImportMulti.cpp:379 -+#: ../widgets/ImportMulti.cpp:316 - #, qt-format - msgctxt "ImportMulti|" - msgid "The %1 files: '%2' did not contain PKI data" -@@ -809,7 +828,7 @@ msgctxt "ItemProperties|" - msgid "Source" - msgstr "Source" - --#: ../ui/ItemProperties.ui:39 -+#: ../ui/ItemProperties.ui:42 - msgctxt "ItemProperties|" - msgid "Insertion date" - msgstr "Date d'insertion" -@@ -829,7 +848,7 @@ msgctxt "KeyDetail|" - msgid "The internal name of the key used by xca" - msgstr "Le nom interne de la clé utilisé par xca" - --#: ../widgets/KeyDetail.cpp:96 -+#: ../widgets/KeyDetail.cpp:106 - msgctxt "KeyDetail|" - msgid "Security token" - msgstr "Jeton de sécurité" -@@ -899,84 +918,86 @@ msgctxt "KeyDetail|" - msgid "Comment" - msgstr "Commentaire" - --#: ../widgets/KeyDetail.cpp:79 -+#: ../widgets/KeyDetail.cpp:89 - #, qt-format - msgctxt "KeyDetail|" - msgid "Details of the %1 key" - msgstr "Détails de la clé %1" - --#: ../widgets/KeyDetail.cpp:85 -+#: ../widgets/KeyDetail.cpp:95 - msgctxt "KeyDetail|" - msgid "Not available" - msgstr "Non disponible" - --#: ../widgets/KeyDetail.cpp:98 -+#: ../widgets/KeyDetail.cpp:108 - msgctxt "KeyDetail|" - msgid "Available" - msgstr "Disponible" - --#: ../widgets/KeyDetail.cpp:107 -+#: ../widgets/KeyDetail.cpp:117 - msgctxt "KeyDetail|" - msgid "Sub prime" - msgstr "Sous-premier" - --#: ../widgets/KeyDetail.cpp:108 ../widgets/KeyDetail.cpp:117 -+#: ../widgets/KeyDetail.cpp:118 ../widgets/KeyDetail.cpp:127 -+#: ../widgets/KeyDetail.cpp:139 - msgctxt "KeyDetail|" - msgid "Public key" - msgstr "Clé publique" - --#: ../widgets/KeyDetail.cpp:109 ../widgets/KeyDetail.cpp:118 -+#: ../widgets/KeyDetail.cpp:119 ../widgets/KeyDetail.cpp:128 -+#: ../widgets/KeyDetail.cpp:140 - msgctxt "KeyDetail|" - msgid "Private key" - msgstr "Clé privée" - --#: ../widgets/KeyDetail.cpp:119 -+#: ../widgets/KeyDetail.cpp:129 ../widgets/KeyDetail.cpp:141 - msgctxt "KeyDetail|" - msgid "Curve name" - msgstr "Nom de la courbe" - --#: ../widgets/KeyDetail.cpp:129 -+#: ../widgets/KeyDetail.cpp:148 - msgctxt "KeyDetail|" - msgid "Unknown key" - msgstr "Clé inconnue" - --#: ../widgets/KeyTreeView.cpp:28 -+#: ../widgets/KeyTreeView.cpp:30 - msgctxt "KeyTreeView|" - msgid "Change password" - msgstr "Changer le mot de passe" - --#: ../widgets/KeyTreeView.cpp:32 -+#: ../widgets/KeyTreeView.cpp:34 - msgctxt "KeyTreeView|" - msgid "Reset password" - msgstr "Effacer le mot de passe" - --#: ../widgets/KeyTreeView.cpp:44 -+#: ../widgets/KeyTreeView.cpp:46 - msgctxt "KeyTreeView|" - msgid "Change PIN" - msgstr "Changer le NIP" - --#: ../widgets/KeyTreeView.cpp:46 -+#: ../widgets/KeyTreeView.cpp:48 - msgctxt "KeyTreeView|" - msgid "Init PIN with SO PIN (PUK)" - msgstr "Initialiser le NIP avec le PUK" - --#: ../widgets/KeyTreeView.cpp:48 -+#: ../widgets/KeyTreeView.cpp:50 - msgctxt "KeyTreeView|" - msgid "Change SO PIN (PUK)" - msgstr "Changer le PUK" - --#: ../widgets/KeyTreeView.cpp:51 -+#: ../widgets/KeyTreeView.cpp:53 - msgctxt "KeyTreeView|" - msgid "Security token" - msgstr "Jeton de sécurité" - --#: ../widgets/KeyTreeView.cpp:84 ../widgets/KeyTreeView.cpp:102 --#: ../widgets/KeyTreeView.cpp:120 -+#: ../widgets/KeyTreeView.cpp:90 ../widgets/KeyTreeView.cpp:108 -+#: ../widgets/KeyTreeView.cpp:126 - msgctxt "KeyTreeView|" - msgid "This is not a token" - msgstr "Ce n'est pas un jeton" - --#: ../widgets/KeyTreeView.cpp:149 -+#: ../widgets/KeyTreeView.cpp:155 - #, qt-format - msgctxt "KeyTreeView|" - msgid "" -@@ -1036,7 +1057,7 @@ msgctxt "MainWindow|" - msgid "&New Request" - msgstr "&Nouvelle requête" - --#: ../ui/MainWindow.ui:222 ../widgets/MW_menu.cpp:126 -+#: ../ui/MainWindow.ui:222 ../widgets/MW_menu.cpp:132 - msgctxt "MainWindow|" - msgid "Certificates" - msgstr "Certificats" -@@ -1086,7 +1107,7 @@ msgctxt "MainWindow|" - msgid "Revocation lists" - msgstr "Listes de révocation" - --#: ../widgets/MW_database.cpp:333 -+#: ../widgets/MainWindow.cpp:584 - msgctxt "MainWindow|" - msgid "" - "Using or exporting private keys will not be possible without providing the " -@@ -1095,12 +1116,12 @@ msgstr "" - "Il sera impossible d'utiliser ou d'exporter des clés privées sans fournir le " - "mot de passe correct." - --#: ../widgets/MW_database.cpp:341 ../widgets/MainWindow.cpp:868 -+#: ../widgets/MainWindow.cpp:579 ../widgets/MainWindow.cpp:729 - msgctxt "MainWindow|" - msgid "Database" - msgstr "Base de données" - --#: ../widgets/MW_database.cpp:338 -+#: ../widgets/MainWindow.cpp:590 - #, qt-format - msgctxt "MainWindow|" - msgid "" -@@ -1110,34 +1131,12 @@ msgstr "" - "L'algorithme de hachage '%1' sélectionné n'est pas sûr. SVP choisissez au " - "moins 'SHA 224' pour raisons de sécurité." - --#: ../widgets/MW_database.cpp:257 --#, qt-format --msgctxt "MainWindow|" --msgid "" --"Legacy database format detected. Creating a backup copy called: '%1' and " --"converting the database to the new format" --msgstr "" --"Format historique de base de données détecté. Une copie de sauvegarde " --"appelée '%1' est créée et la base de données est convertie au nouveau format" -- --#: ../widgets/MW_database.cpp:263 --msgctxt "MainWindow|" --msgid "Failed to rename the database file, because the target already exists" --msgstr "" --"Le changement de nom du fichier de base de données a échoué parce qu'un " --"autre fichier du même nom existe déjà" -- --#: ../widgets/MW_database.cpp:439 --msgctxt "MainWindow|" --msgid "No deleted items found" --msgstr "Aucun objet détruit n'a été trouvé" -- --#: ../widgets/MW_menu.cpp:79 -+#: ../widgets/MW_menu.cpp:83 - msgctxt "MainWindow|" - msgid "Recent DataBases" - msgstr "Bases de données utilisées recemment" - --#: ../widgets/MW_help.cpp:25 ../widgets/MW_menu.cpp:35 -+#: ../widgets/MW_help.cpp:25 ../widgets/MW_menu.cpp:39 - msgctxt "MainWindow|" - msgid "System" - msgstr "Système" -@@ -1212,242 +1211,236 @@ msgctxt "MainWindow|" - msgid "Turkish" - msgstr "Turc" - --#: ../widgets/MW_menu.cpp:83 -+#: ../widgets/MW_menu.cpp:89 - msgctxt "MainWindow|" - msgid "Language" - msgstr "Langue" - --#: ../widgets/MW_menu.cpp:92 -+#: ../widgets/MW_menu.cpp:98 - msgctxt "MainWindow|" - msgid "&File" - msgstr "&Fichier" - --#: ../widgets/MW_menu.cpp:99 -+#: ../widgets/MW_menu.cpp:105 - msgctxt "MainWindow|" - msgid "Open Remote DataBase" - msgstr "Ouvrir une base de données externe" - --#: ../widgets/MW_menu.cpp:103 -+#: ../widgets/MW_menu.cpp:109 - msgctxt "MainWindow|" - msgid "Set as default DataBase" - msgstr "Définir comme base de données par défaut" - --#: ../widgets/MW_menu.cpp:93 -+#: ../widgets/MW_menu.cpp:99 - msgctxt "MainWindow|" - msgid "New DataBase" - msgstr "Nouvelle base de données" - --#: ../widgets/MW_menu.cpp:96 -+#: ../widgets/MW_menu.cpp:102 - msgctxt "MainWindow|" - msgid "Open DataBase" - msgstr "Ouvrir une base de données" - --#: ../widgets/MW_menu.cpp:105 -+#: ../widgets/MW_menu.cpp:111 - msgctxt "MainWindow|" - msgid "Close DataBase" - msgstr "Fermer la base de données" - --#: ../widgets/MW_menu.cpp:108 -+#: ../widgets/MW_menu.cpp:114 - msgctxt "MainWindow|" - msgid "Options" - msgstr "Options" - --#: ../widgets/MW_menu.cpp:116 -+#: ../widgets/MW_menu.cpp:122 - msgctxt "MainWindow|" - msgid "Exit" - msgstr "Quitter" - --#: ../widgets/MW_menu.cpp:123 -+#: ../widgets/MW_menu.cpp:129 - msgctxt "MainWindow|" - msgid "I&mport" - msgstr "I&mporter" - --#: ../widgets/MW_menu.cpp:124 -+#: ../widgets/MW_menu.cpp:130 - msgctxt "MainWindow|" - msgid "Keys" - msgstr "Clés" - --#: ../widgets/MW_menu.cpp:125 -+#: ../widgets/MW_menu.cpp:131 - msgctxt "MainWindow|" - msgid "Requests" - msgstr "Requêtes" - --#: ../widgets/MW_menu.cpp:127 -+#: ../widgets/MW_menu.cpp:133 - msgctxt "MainWindow|" - msgid "PKCS#12" - msgstr "PKCS#12" - --#: ../widgets/MW_menu.cpp:128 -+#: ../widgets/MW_menu.cpp:134 - msgctxt "MainWindow|" - msgid "PKCS#7" - msgstr "PKCS#7" - --#: ../widgets/MW_menu.cpp:129 -+#: ../widgets/MW_menu.cpp:135 - msgctxt "MainWindow|" - msgid "Template" - msgstr "Modèle" - --#: ../widgets/MW_menu.cpp:130 -+#: ../widgets/MW_menu.cpp:136 - msgctxt "MainWindow|" - msgid "Revocation list" - msgstr "Liste de révocation" - --#: ../widgets/MW_menu.cpp:131 -+#: ../widgets/MW_menu.cpp:137 - msgctxt "MainWindow|" - msgid "PEM file" - msgstr "Fichier PEM" - --#: ../widgets/MW_menu.cpp:132 -+#: ../widgets/MW_menu.cpp:138 - msgctxt "MainWindow|" - msgid "Paste PEM file" - msgstr "Coller un fichier PEM" - --#: ../widgets/MW_menu.cpp:135 -+#: ../widgets/MW_menu.cpp:141 - msgctxt "MainWindow|" - msgid "Token" - msgstr "Jeton" - --#: ../widgets/MW_menu.cpp:152 -+#: ../widgets/MW_menu.cpp:158 - msgctxt "MainWindow|" - msgid "Export Certificate &Index hierarchy" - msgstr "Exporter la hiérarchie de l'index des certificats" - --#: ../widgets/MW_menu.cpp:165 -+#: ../widgets/MW_menu.cpp:171 - msgctxt "MainWindow|" - msgid "Content" - msgstr "Contenu" - --#: ../widgets/MW_menu.cpp:136 -+#: ../widgets/MW_menu.cpp:142 - msgctxt "MainWindow|" - msgid "&Manage Security token" - msgstr "&Gérer le jeton de sécurité" - --#: ../widgets/MW_menu.cpp:138 -+#: ../widgets/MW_menu.cpp:144 - msgctxt "MainWindow|" - msgid "&Init Security token" - msgstr "&Initialiser le jeton de sécurité" - --#: ../widgets/MW_menu.cpp:140 -+#: ../widgets/MW_menu.cpp:146 - msgctxt "MainWindow|" - msgid "&Change PIN" - msgstr "&Changer le NIP" - --#: ../widgets/MW_menu.cpp:142 -+#: ../widgets/MW_menu.cpp:148 - msgctxt "MainWindow|" - msgid "Change &SO PIN" - msgstr "Changer le P&UK" - --#: ../widgets/MW_menu.cpp:144 -+#: ../widgets/MW_menu.cpp:150 - msgctxt "MainWindow|" - msgid "Init PIN" - msgstr "Initialiser le NIP" - --#: ../widgets/MW_menu.cpp:147 -+#: ../widgets/MW_menu.cpp:153 - msgctxt "MainWindow|" - msgid "Extra" - msgstr "Extra" - --#: ../widgets/MW_menu.cpp:148 -+#: ../widgets/MW_menu.cpp:154 - msgctxt "MainWindow|" - msgid "&Dump DataBase" - msgstr "C&licher la base de données" - --#: ../widgets/MW_menu.cpp:150 -+#: ../widgets/MW_menu.cpp:156 - msgctxt "MainWindow|" - msgid "&Export Certificate Index" - msgstr "Exporter l'index des certificats" - --#: ../widgets/MW_menu.cpp:154 -+#: ../widgets/MW_menu.cpp:160 - msgctxt "MainWindow|" - msgid "C&hange DataBase password" - msgstr "C&hanger le mot de passe de la base de données" - --#: ../widgets/MW_menu.cpp:157 -+#: ../widgets/MW_menu.cpp:163 - msgctxt "MainWindow|" - msgid "&Undelete items" - msgstr "&Récupérer des objets détruits" - --#: ../widgets/MW_menu.cpp:160 -+#: ../widgets/MW_menu.cpp:166 - msgctxt "MainWindow|" - msgid "Generate DH parameter" - msgstr "Générer le paramètre DH" - --#: ../widgets/MW_menu.cpp:162 -+#: ../widgets/MW_menu.cpp:168 - msgctxt "MainWindow|" - msgid "OID Resolver" - msgstr "Convertisseur d'OID" - --#: ../widgets/MW_menu.cpp:164 -+#: ../widgets/MW_menu.cpp:170 - msgctxt "MainWindow|" - msgid "&Help" - msgstr "&Aide" - --#: ../widgets/MW_menu.cpp:167 -+#: ../widgets/MW_menu.cpp:173 - msgctxt "MainWindow|" - msgid "About" - msgstr "A propos" - --#: ../widgets/MainWindow.cpp:276 --#, qt-format --msgctxt "MainWindow|" --msgid "no such option: %1" --msgstr "'%1' n'est pas une option" -- --#: ../widgets/MainWindow.cpp:366 -+#: ../widgets/MainWindow.cpp:254 - msgctxt "MainWindow|" - msgid "Import PEM data" - msgstr "Importer les données PEM" - --#: ../widgets/MainWindow.cpp:395 -+#: ../widgets/MainWindow.cpp:283 - #, qt-format - msgctxt "MainWindow|" - msgid "Please enter the original SO PIN (PUK) of the token '%1'" - msgstr "SVP saisir le PUK original du jeton '%1'" - --#: ../widgets/MainWindow.cpp:134 ../widgets/MainWindow.cpp:869 -+#: ../widgets/MainWindow.cpp:118 ../widgets/MainWindow.cpp:731 - msgctxt "MainWindow|" - msgid "Search" - msgstr "Rechercher" - --#: ../widgets/MainWindow.cpp:401 -+#: ../widgets/MainWindow.cpp:289 - #, qt-format - msgctxt "MainWindow|" - msgid "Please enter the new SO PIN (PUK) for the token '%1'" - msgstr "SVP saisir le nouveau NIP SO (PUK) pour le jeton: '%1'" - --#: ../widgets/MainWindow.cpp:408 -+#: ../widgets/MainWindow.cpp:296 - #, qt-format - msgctxt "MainWindow|" - msgid "The new label of the token '%1'" - msgstr "La nouvelle étiquette du jeton '%1'" - --#: ../widgets/MainWindow.cpp:516 -+#: ../widgets/MainWindow.cpp:404 - #, qt-format - msgctxt "MainWindow|" - msgid "The token '%1' did not contain any keys or certificates" - msgstr "Le jeton '%1' ne contient aucune clé ni aucun certificat" - --#: ../widgets/MainWindow.cpp:574 -+#: ../widgets/MainWindow.cpp:450 - msgctxt "MainWindow|" - msgid "Current Password" - msgstr "Mot de passe actuel" - --#: ../widgets/MainWindow.cpp:575 -+#: ../widgets/MainWindow.cpp:451 - msgctxt "MainWindow|" - msgid "Please enter the current database password" - msgstr "SVP saisir le mot de passe de la base de données" - --#: ../widgets/MainWindow.cpp:585 -+#: ../widgets/MainWindow.cpp:461 - msgctxt "MainWindow|" - msgid "The entered password is wrong" - msgstr "Le mot de passe renseigné est inexact" - --#: ../widgets/MainWindow.cpp:590 ../widgets/MainWindow.cpp:668 -+#: ../widgets/MainWindow.cpp:466 - msgctxt "MainWindow|" - msgid "New Password" - msgstr "Nouveau mot de passe" - --#: ../widgets/MainWindow.cpp:590 -+#: ../widgets/MainWindow.cpp:466 - msgctxt "MainWindow|" - msgid "" - "Please enter the new password to encrypt your private keys in the database-" -@@ -1456,70 +1449,28 @@ msgstr "" - "SVP saisir le nouveau mot de passe pour chiffrer les clés privées dans le " - "fichier de base de données" - --#: ../widgets/MainWindow.cpp:614 -+#: ../widgets/MainWindow.cpp:490 - msgctxt "MainWindow|" - msgid "Transaction start failed" - msgstr "Le démarrage de la transaction a échoué" - --#: ../widgets/MainWindow.cpp:668 --#, qt-format --msgctxt "MainWindow|" --msgid "" --"Please enter a password, that will be used to encrypt your private keys in " --"the database:\n" --"%1" --msgstr "" --"Veuillez saisir un mot de passe, qui sera utilisé pour chiffrer vos clés " --"privées dans la base de données:\n" --"%1" -- --#: ../widgets/MainWindow.cpp:689 --msgctxt "MainWindow|" --msgid "Password verify error, please try again" --msgstr "La vérification du mot de passe a échoué. SVP essayez encore" -- --#: ../widgets/MainWindow.cpp:690 --msgctxt "MainWindow|" --msgid "Password" --msgstr "Mot de passe" -- --#: ../widgets/MainWindow.cpp:691 --#, qt-format --msgctxt "MainWindow|" --msgid "" --"Please enter the password for unlocking the database:\n" --"%1" --msgstr "" --"Veuillez entrer le mot passe pour déverrouiller la base de données:\n" --"%1" -- --#: ../widgets/MainWindow.cpp:710 --msgctxt "MainWindow|" --msgid "The following error occurred:" --msgstr "L'erreur suivante s'est produite:" -- --#: ../widgets/MainWindow.cpp:712 --msgctxt "MainWindow|" --msgid "Copy to Clipboard" --msgstr "Copier dans le presse-papier" -- --#: ../widgets/MainWindow.cpp:781 -+#: ../widgets/MainWindow.cpp:648 - msgctxt "MainWindow|" - msgid "Certificate Index ( index.txt )" - msgstr "Index des certificats ( index.txt )" - --#: ../widgets/MainWindow.cpp:782 ../widgets/MainWindow.cpp:842 -+#: ../widgets/MainWindow.cpp:649 ../widgets/MainWindow.cpp:704 - msgctxt "MainWindow|" - msgid "All files ( * )" - msgstr "Tous les fichiers ( * )" - --#: ../widgets/MainWindow.cpp:811 -+#: ../widgets/MainWindow.cpp:673 - #, qt-format - msgctxt "MainWindow|" - msgid "Diffie-Hellman parameters saved as: %1" - msgstr "Les paramètres Diffie-Hellman on été sauvegardés dans: %1" - --#: ../widgets/MainWindow.cpp:827 -+#: ../widgets/MainWindow.cpp:689 - msgctxt "MainWindow|" - msgid "" - "Diffie-Hellman parameters are needed for different applications, but not " -@@ -1600,6 +1551,11 @@ msgctxt "NewCrl|" - msgid "Hash algorithm" - msgstr "Algorithme de hachage" - -+#: ../widgets/NewCrl.cpp:77 -+msgctxt "NewCrl|" -+msgid "Create CRL" -+msgstr "Créer une liste de révocation" -+ - #: ../ui/NewKey.ui:86 - msgctxt "NewKey|" - msgid "Please give a name to the new key and select the desired keysize" -@@ -1651,7 +1607,7 @@ msgctxt "NewKey|" - msgid "Remember as default" - msgstr "Enregistrer comme valeur par défaut" - --#: ../widgets/NewKey.cpp:181 -+#: ../widgets/NewKey.cpp:137 - msgctxt "NewKey|" - msgid "Create" - msgstr "Créer" -@@ -1738,7 +1694,7 @@ msgctxt "NewX509|" - msgid "Apply all" - msgstr "Appliquer tout" - --#: ../ui/NewX509.ui:336 ../widgets/NewX509.cpp:586 -+#: ../ui/NewX509.ui:336 ../widgets/NewX509.cpp:592 - msgctxt "NewX509|" - msgid "Subject" - msgstr "Sujet" -@@ -1910,7 +1866,7 @@ msgid "DNS: IP: URI: email: RID:" - msgstr "DNS: IP: URI: email: RID:" - - #: ../ui/NewX509.ui:745 ../ui/NewX509.ui:762 ../ui/NewX509.ui:795 --#: ../ui/NewX509.ui:831 ../widgets/NewX509.cpp:961 -+#: ../ui/NewX509.ui:831 ../widgets/NewX509.cpp:992 - msgctxt "NewX509|" - msgid "Edit" - msgstr "Modifier" -@@ -1935,7 +1891,7 @@ msgctxt "NewX509|" - msgid "Advanced" - msgstr "Avancé" - --#: ../ui/NewX509.ui:1163 ../widgets/NewX509.cpp:971 -+#: ../ui/NewX509.ui:1163 ../widgets/NewX509.cpp:1002 - msgctxt "NewX509|" - msgid "Validate" - msgstr "Valider" -@@ -1954,123 +1910,123 @@ msgstr "" - "Ce nom est seulement utilisé par xca et n'apparaît pas dans le certificat " - "exporté" - --#: ../widgets/NewX509.cpp:254 -+#: ../widgets/NewX509.cpp:270 - msgctxt "NewX509|" - msgid "Critical" - msgstr "Critique" - --#: ../widgets/NewX509.cpp:294 -+#: ../widgets/NewX509.cpp:310 - msgctxt "NewX509|" - msgid "Create Certificate signing request" - msgstr "Créer une requête de signature de certificat" - --#: ../widgets/NewX509.cpp:321 -+#: ../widgets/NewX509.cpp:336 - #, qt-format - msgctxt "NewX509|" - msgid "minimum size: %1" - msgstr "taille minimale: %1" - --#: ../widgets/NewX509.cpp:323 -+#: ../widgets/NewX509.cpp:338 - #, qt-format - msgctxt "NewX509|" - msgid "maximum size: %1" - msgstr "taille maximale: %1" - --#: ../widgets/NewX509.cpp:325 -+#: ../widgets/NewX509.cpp:340 - msgctxt "NewX509|" - msgid "only a-z A-Z 0-9 '()+,-./:=?" - msgstr "seulement a-z A-Z 0-9 '()+,-./:=?" - --#: ../widgets/NewX509.cpp:329 -+#: ../widgets/NewX509.cpp:344 - msgctxt "NewX509|" - msgid "only 7-bit clean characters" - msgstr "seulement des caractères 7-bit ASCII imprimables" - --#: ../widgets/NewX509.cpp:354 -+#: ../widgets/NewX509.cpp:369 - msgctxt "NewX509|" - msgid "Edit XCA template" - msgstr "Editer un modèle XCA" - --#: ../widgets/NewX509.cpp:367 -+#: ../widgets/NewX509.cpp:382 - msgctxt "NewX509|" - msgid "Create x509 Certificate" - msgstr "Créer un certificat x509" - --#: ../widgets/NewX509.cpp:718 -+#: ../widgets/NewX509.cpp:750 - #, qt-format - msgctxt "NewX509|" - msgid "Template '%1' applied" - msgstr "Le modèle '%1' a été appliqué" - --#: ../widgets/NewX509.cpp:725 -+#: ../widgets/NewX509.cpp:757 - #, qt-format - msgctxt "NewX509|" - msgid "Subject applied from template '%1'" - msgstr "Sujet extrait du modèle '%1'" - --#: ../widgets/NewX509.cpp:733 -+#: ../widgets/NewX509.cpp:765 - #, qt-format - msgctxt "NewX509|" - msgid "Extensions applied from template '%1'" - msgstr "Les extensions du modéle '%1' ont été appliquées" - --#: ../widgets/NewX509.cpp:748 -+#: ../widgets/NewX509.cpp:780 - #, qt-format - msgctxt "NewX509|" - msgid "New key '%1' created" - msgstr "La nouvelle clé '%1' a été créée" - --#: ../widgets/NewX509.cpp:994 -+#: ../widgets/NewX509.cpp:1025 - msgctxt "NewX509|" - msgid "Other Tabs" - msgstr "Autres Onglets" - --#: ../widgets/NewX509.cpp:1008 -+#: ../widgets/NewX509.cpp:1039 - msgctxt "NewX509|" - msgid "Advanced Tab" - msgstr "Onglet Avancé" - --#: ../widgets/NewX509.cpp:1015 -+#: ../widgets/NewX509.cpp:1046 - msgctxt "NewX509|" - msgid "Errors" - msgstr "Erreurs" - --#: ../widgets/NewX509.cpp:1033 -+#: ../widgets/NewX509.cpp:1064 - msgctxt "NewX509|" - msgid "From PKCS#10 request" - msgstr "A partir d'une requête en PKCS#10" - --#: ../widgets/NewX509.cpp:1136 ../widgets/NewX509.cpp:1149 --#: ../widgets/NewX509.cpp:1168 ../widgets/NewX509.cpp:1180 --#: ../widgets/NewX509.cpp:1196 ../widgets/NewX509.cpp:1210 --#: ../widgets/NewX509.cpp:1244 ../widgets/NewX509.cpp:1255 --#: ../widgets/NewX509.cpp:1278 ../widgets/NewX509.cpp:1301 --#: ../widgets/NewX509.cpp:1327 ../widgets/NewX509.cpp:1347 -+#: ../widgets/NewX509.cpp:1172 ../widgets/NewX509.cpp:1185 -+#: ../widgets/NewX509.cpp:1204 ../widgets/NewX509.cpp:1216 -+#: ../widgets/NewX509.cpp:1232 ../widgets/NewX509.cpp:1246 -+#: ../widgets/NewX509.cpp:1280 ../widgets/NewX509.cpp:1299 -+#: ../widgets/NewX509.cpp:1322 ../widgets/NewX509.cpp:1345 -+#: ../widgets/NewX509.cpp:1371 ../widgets/NewX509.cpp:1391 - msgctxt "NewX509|" - msgid "Abort rollout" - msgstr "Interrompre le déploiement" - --#: ../widgets/NewX509.cpp:1145 -+#: ../widgets/NewX509.cpp:1181 - msgctxt "NewX509|" - msgid "The following length restrictions of RFC3280 are violated:" - msgstr "" - "Pour être en conformité avec la RFC3280, les règles de restriction de " - "longueur suivantes ne sont pas respectées:" - --#: ../widgets/NewX509.cpp:1148 ../widgets/NewX509.cpp:1209 -+#: ../widgets/NewX509.cpp:1184 ../widgets/NewX509.cpp:1245 - msgctxt "NewX509|" - msgid "Edit subject" - msgstr "Modifier le sujet" - --#: ../widgets/NewX509.cpp:1150 ../widgets/NewX509.cpp:1211 --#: ../widgets/NewX509.cpp:1256 ../widgets/NewX509.cpp:1279 --#: ../widgets/NewX509.cpp:1302 ../widgets/NewX509.cpp:1328 --#: ../widgets/NewX509.cpp:1348 -+#: ../widgets/NewX509.cpp:1186 ../widgets/NewX509.cpp:1247 -+#: ../widgets/NewX509.cpp:1300 ../widgets/NewX509.cpp:1323 -+#: ../widgets/NewX509.cpp:1346 ../widgets/NewX509.cpp:1372 -+#: ../widgets/NewX509.cpp:1392 - msgctxt "NewX509|" - msgid "Continue rollout" - msgstr "Continuer le déploiement" - --#: ../widgets/NewX509.cpp:1166 -+#: ../widgets/NewX509.cpp:1202 - msgctxt "NewX509|" - msgid "" - "The verification of the Certificate request failed.\n" -@@ -2079,12 +2035,12 @@ msgstr "" - "La vérification de la requête de signature à échoué.\n" - "Le déploiement devrait être interrompu." - --#: ../widgets/NewX509.cpp:1167 -+#: ../widgets/NewX509.cpp:1203 - msgctxt "NewX509|" - msgid "Continue anyway" - msgstr "Continuer quand-même" - --#: ../widgets/NewX509.cpp:1178 -+#: ../widgets/NewX509.cpp:1214 - msgctxt "NewX509|" - msgid "" - "The internal name and the common name are empty.\n" -@@ -2093,22 +2049,22 @@ msgstr "" - "Le nom interne et le nom commun sont vides.\n" - "SVP saisir au moins le nom interne." - --#: ../widgets/NewX509.cpp:1179 -+#: ../widgets/NewX509.cpp:1215 - msgctxt "NewX509|" - msgid "Edit name" - msgstr "Modifier le nom" - --#: ../widgets/NewX509.cpp:1194 -+#: ../widgets/NewX509.cpp:1230 - msgctxt "NewX509|" - msgid "There is no Key selected for signing." - msgstr "Aucune clé n'est sélectionnée pour la signature." - --#: ../widgets/NewX509.cpp:1195 -+#: ../widgets/NewX509.cpp:1231 - msgctxt "NewX509|" - msgid "Select key" - msgstr "Sélectionner la clé" - --#: ../widgets/NewX509.cpp:1207 -+#: ../widgets/NewX509.cpp:1243 - #, qt-format - msgctxt "NewX509|" - msgid "" -@@ -2120,22 +2076,42 @@ msgstr "" - "%1\n" - "bien que vous les avez déclarées comme obligatoires dans le menu des options." - --#: ../widgets/NewX509.cpp:1241 -+#: ../widgets/NewX509.cpp:1277 - msgctxt "NewX509|" - msgid "The key you selected for signing is not a private one." - msgstr "La clé sélectionnée pour la signature n'est pas une clé privée." - --#: ../widgets/NewX509.cpp:1242 -+#: ../widgets/NewX509.cpp:1278 - msgctxt "NewX509|" - msgid "Select other signer" - msgstr "Sélectionner un autre signataire" - --#: ../widgets/NewX509.cpp:1242 -+#: ../widgets/NewX509.cpp:1278 - msgctxt "NewX509|" - msgid "Select other key" - msgstr "Sélectionner une autre clé" - --#: ../widgets/NewX509.cpp:1252 -+#: ../widgets/NewX509.cpp:1288 -+#, qt-format -+msgctxt "NewX509|" -+msgid "" -+"The currently selected hash algorithm '%1' is insecure and should not be " -+"used." -+msgstr "" -+"L'algorithme de hachage sélectionné '%1' est peu sûr et ne devrait pas être " -+"utilisé." -+ -+#: ../widgets/NewX509.cpp:1289 -+msgctxt "NewX509|" -+msgid "Select other algorithm" -+msgstr "Sélectionner un autre algorithme" -+ -+#: ../widgets/NewX509.cpp:1290 -+msgctxt "NewX509|" -+msgid "Use algorithm anyway" -+msgstr "Utiliser quand même cet algorithme" -+ -+#: ../widgets/NewX509.cpp:1296 - msgctxt "NewX509|" - msgid "" - "The certificate will be earlier valid than the signer. This is probably not " -@@ -2144,18 +2120,18 @@ msgstr "" - "Le certificat serait valide avant son signataire. Ce n'est probablement pas " - "ce qui est désiré." - --#: ../widgets/NewX509.cpp:1254 ../widgets/NewX509.cpp:1277 --#: ../widgets/NewX509.cpp:1300 -+#: ../widgets/NewX509.cpp:1298 ../widgets/NewX509.cpp:1321 -+#: ../widgets/NewX509.cpp:1344 - msgctxt "NewX509|" - msgid "Edit dates" - msgstr "Modifier les limites de validité" - --#: ../widgets/NewX509.cpp:1257 ../widgets/NewX509.cpp:1280 -+#: ../widgets/NewX509.cpp:1301 ../widgets/NewX509.cpp:1324 - msgctxt "NewX509|" - msgid "Adjust date and continue" - msgstr "Ajuster la date et continuer" - --#: ../widgets/NewX509.cpp:1275 -+#: ../widgets/NewX509.cpp:1319 - msgctxt "NewX509|" - msgid "" - "The certificate will be longer valid than the signer. This is probably not " -@@ -2164,7 +2140,7 @@ msgstr "" - "Le certificat serait valide plus longtemps que son signataire. Ce n'est " - "probablement pas ce qui est désiré." - --#: ../widgets/NewX509.cpp:1298 -+#: ../widgets/NewX509.cpp:1342 - msgctxt "NewX509|" - msgid "" - "The certificate will be out of date before it becomes valid. You most " -@@ -2173,7 +2149,7 @@ msgstr "" - "Le certificat serait échu avant de devenir actif. Vous avez probablement " - "interverti les deux dates." - --#: ../widgets/NewX509.cpp:1319 -+#: ../widgets/NewX509.cpp:1363 - msgctxt "NewX509|" - msgid "" - "The certificate contains invalid or duplicate extensions. Check the " -@@ -2182,7 +2158,7 @@ msgstr "" - "Le certificat contient des extensions dupliquées ou invalides. Vérifier la " - "validité sur l'onglet \"Avancé\"." - --#: ../widgets/NewX509.cpp:1322 -+#: ../widgets/NewX509.cpp:1366 - msgctxt "NewX509|" - msgid "" - "The certificate contains no extensions. You may apply the extensions of one " -@@ -2191,12 +2167,12 @@ msgstr "" - "Le certificat ne contient aucune extension. Vous pouvez appliquer des " - "extensions à partir de l'un des modèles pour définir l'usage du certificat" - --#: ../widgets/NewX509.cpp:1326 ../widgets/NewX509.cpp:1346 -+#: ../widgets/NewX509.cpp:1370 ../widgets/NewX509.cpp:1390 - msgctxt "NewX509|" - msgid "Edit extensions" - msgstr "Modifier les extensions" - --#: ../widgets/NewX509.cpp:1345 -+#: ../widgets/NewX509.cpp:1389 - msgctxt "NewX509|" - msgid "" - "The subject alternative name shall contain a copy of the common name. " -@@ -2205,7 +2181,7 @@ msgstr "" - "Le nom alternatif du sujet devrait contenir une copie du nom commun. " - "Cependant ce dernier est vide." - --#: ../widgets/NewX509_ext.cpp:195 -+#: ../widgets/NewX509_ext.cpp:189 - #, qt-format - msgctxt "NewX509|" - msgid "Configfile error on line %1\n" -@@ -2276,7 +2252,7 @@ msgctxt "OpenDb|" - msgid "Password" - msgstr "Mot de passe" - --#: ../ui/OpenDb.ui:142 ../widgets/OpenDb.cpp:58 -+#: ../ui/OpenDb.ui:142 ../widgets/OpenDb.cpp:50 - msgctxt "OpenDb|" - msgid "Database name" - msgstr "Nom de la base de données" -@@ -2286,7 +2262,7 @@ msgctxt "OpenDb|" - msgid "Table prefix" - msgstr "Préfixe du nom des tables" - --#: ../widgets/OpenDb.cpp:151 -+#: ../widgets/OpenDb.cpp:121 - msgctxt "OpenDb|" - msgid "" - "No SqLite3 driver available. Please install the qt-sqlite package of your " -@@ -2295,25 +2271,6 @@ msgstr "" - "Le pilote SqLite3 n'est pas disponible. SVP installez le paquetage qt-sqlite " - "de votre distribution" - --#: ../widgets/OpenDb.cpp:195 --#, qt-format --msgctxt "OpenDb|" --msgid "" --"Please enter the password to access the database server %2 as user '%1'." --msgstr "" --"SVP saisir le mot de passe de l'utilisateur '%1' sur le serveur de base de " --"données %2." -- --#: ../widgets/OpenDb.cpp:234 --msgctxt "OpenDb|" --msgid "" --"The database driver does not support transactions. This may happen if the " --"client and server have different versions. Continue with care." --msgstr "" --"Le pilote de base de données ne supporte pas les transactions. Ceci peut se " --"produire si le client et le serveur n'ont pas les mêmes versions. Continuez " --"avec prudence" -- - #: ../ui/Options.ui:28 - msgctxt "Options|" - msgid "XCA Options" -@@ -2446,37 +2403,37 @@ msgctxt "Options|" - msgid "Search" - msgstr "Rechercher" - --#: ../widgets/Options.cpp:31 -+#: ../widgets/Options.cpp:34 - msgctxt "Options|" - msgid "Printable string or UTF8 (default)" - msgstr "Chaîne imprimable ou UTF8 (défaut)" - --#: ../widgets/Options.cpp:32 -+#: ../widgets/Options.cpp:35 - msgctxt "Options|" - msgid "PKIX recommendation in RFC2459" - msgstr "La recommandation PKIX est dans la RFC2459" - --#: ../widgets/Options.cpp:33 -+#: ../widgets/Options.cpp:36 - msgctxt "Options|" - msgid "No BMP strings, only printable and T61" - msgstr "Pas de chaîne BMP, seulement imprimable et T61" - --#: ../widgets/Options.cpp:34 -+#: ../widgets/Options.cpp:37 - msgctxt "Options|" - msgid "UTF8 strings only (RFC2459)" - msgstr "Chaînes UTF8 uniquement (RFC2459)" - --#: ../widgets/Options.cpp:35 -+#: ../widgets/Options.cpp:38 - msgctxt "Options|" - msgid "All strings" - msgstr "Toutes les chaînes" - --#: ../widgets/Options.cpp:57 -+#: ../widgets/Options.cpp:60 - msgctxt "Options|" - msgid "Days" - msgstr "Jours" - --#: ../widgets/Options.cpp:57 -+#: ../widgets/Options.cpp:60 - msgctxt "Options|" - msgid "Weeks" - msgstr "Semaines" -@@ -2495,19 +2452,24 @@ msgctxt "PwDialog|" - msgid "Take as HEX string" - msgstr "Exprimé en hexadécimal" - --#: ../widgets/PwDialog.cpp:85 -+#: ../widgets/PwDialog.cpp:44 -+msgctxt "PwDialog|" -+msgid "Password" -+msgstr "Mot de passe" -+ -+#: ../widgets/PwDialog.cpp:96 - #, qt-format - msgctxt "PwDialog|" - msgid "Repeat %1" - msgstr "Répéter %1" - --#: ../widgets/PwDialog.cpp:98 -+#: ../widgets/PwDialog.cpp:109 - #, qt-format - msgctxt "PwDialog|" - msgid "%1 mismatch" - msgstr "%1 ne correspond pas" - --#: ../widgets/PwDialog.cpp:105 -+#: ../widgets/PwDialog.cpp:116 - msgctxt "PwDialog|" - msgid "" - "Hex password must only contain the characters '0' - '9' and 'a' - 'f' and it " -@@ -2516,62 +2478,92 @@ msgstr "" - "Un mot de passe hexadécimal peut seulement contenir les caractères '0' à '9' " - "et 'a' à 'f' et il doit consister en un nombre pair de caractères" - --#: ../widgets/PwDialog.cpp:131 -+#: ../widgets/PwDialog.cpp:145 - msgctxt "PwDialog|" --msgid "E&xit" --msgstr "&Quitter" -+msgid "Exit" -+msgstr "Quitter" -+ -+#: ../widgets/XcaWarning.cpp:28 -+msgctxt "QMessageBox|" -+msgid "Ok" -+msgstr "OK" -+ -+#: ../widgets/XcaWarning.cpp:29 -+msgctxt "QMessageBox|" -+msgid "Close" -+msgstr "Fermer" -+ -+#: ../widgets/XcaWarning.cpp:30 -+msgctxt "QMessageBox|" -+msgid "Cancel" -+msgstr "Annuler" -+ -+#: ../widgets/XcaWarning.cpp:31 -+msgctxt "QMessageBox|" -+msgid "Apply" -+msgstr "Appliquer" -+ -+#: ../widgets/XcaWarning.cpp:32 -+msgctxt "QMessageBox|" -+msgid "Yes" -+msgstr "Oui" - --#: ../lib/asn1time.cpp:155 -+#: ../widgets/XcaWarning.cpp:33 -+msgctxt "QMessageBox|" -+msgid "No" -+msgstr "Non" -+ -+#: ../lib/asn1time.cpp:157 - msgctxt "QObject|" - msgid "Undefined" - msgstr "Indéfini" - --#: ../lib/asn1time.cpp:157 -+#: ../lib/asn1time.cpp:159 - msgctxt "QObject|" - msgid "Broken / Invalid" - msgstr "Invalide" - --#: ../lib/asn1time.cpp:203 -+#: ../lib/asn1time.cpp:205 - #, qt-format - msgctxt "QObject|" - msgid "in %1 seconds" - msgstr "dans %1 secondes" - --#: ../lib/asn1time.cpp:204 -+#: ../lib/asn1time.cpp:206 - #, qt-format - msgctxt "QObject|" - msgid "%1 seconds ago" - msgstr "il y a %1 secondes" - --#: ../lib/asn1time.cpp:207 -+#: ../lib/asn1time.cpp:209 - #, qt-format - msgctxt "QObject|" - msgid "in %1 minutes" - msgstr "dans %1 minutes" - --#: ../lib/asn1time.cpp:208 -+#: ../lib/asn1time.cpp:210 - #, qt-format - msgctxt "QObject|" - msgid "%1 minutes ago" - msgstr "il y a %1 minutes" - --#: ../lib/asn1time.cpp:210 -+#: ../lib/asn1time.cpp:212 - msgctxt "QObject|" - msgid "Yesterday" - msgstr "Hier" - --#: ../lib/asn1time.cpp:212 -+#: ../lib/asn1time.cpp:214 - msgctxt "QObject|" - msgid "Tomorrow" - msgstr "Demain" - --#: ../lib/asn1time.cpp:215 -+#: ../lib/asn1time.cpp:217 - #, qt-format - msgctxt "QObject|" - msgid "in %1 hours" - msgstr "dans %1 heures" - --#: ../lib/asn1time.cpp:216 -+#: ../lib/asn1time.cpp:218 - #, qt-format - msgctxt "QObject|" - msgid "%1 hours ago" -@@ -2587,7 +2579,7 @@ msgctxt "QObject|" - msgid "Error finding endmarker of string" - msgstr "Erreur: une marque de fin de chaîne n'a pas été trouvée" - --#: ../lib/exception.h:61 -+#: ../lib/exception.h:60 - #, qt-format - msgctxt "QObject|" - msgid "Out of Memory at %1:%2" -@@ -2598,7 +2590,7 @@ msgctxt "QObject|" - msgid "All files ( * )" - msgstr "Tous les fichiers ( * )" - --#: ../lib/load_obj.cpp:55 -+#: ../lib/load_obj.cpp:56 - msgctxt "QObject|" - msgid "" - "PKI Keys ( *.pem *.der *.key );; PKCS#8 Keys ( *.p8 *.pk8 );; Microsoft PVK " -@@ -2607,151 +2599,151 @@ msgstr "" - "Clés PKI ( *.pem *.der *.key );; Clés PKCS#8 ( *.p8 *.pk8 );; Clés Microsoft " - "PVK ( *.pvk );; Clés publiques SSH ( *.pub );;" - --#: ../lib/load_obj.cpp:59 -+#: ../lib/load_obj.cpp:60 - msgctxt "QObject|" - msgid "Import RSA key" - msgstr "Importer une clé RSA" - --#: ../lib/load_obj.cpp:71 -+#: ../lib/load_obj.cpp:72 - msgctxt "QObject|" - msgid "PKCS#10 CSR ( *.pem *.der *.csr );; " - msgstr "PKCS#10 CSR ( *.pem *.der *.csr );;" - --#: ../lib/load_obj.cpp:72 -+#: ../lib/load_obj.cpp:73 - msgctxt "QObject|" - msgid "Import Request" - msgstr "Importer une requête" - --#: ../lib/load_obj.cpp:84 -+#: ../lib/load_obj.cpp:85 - msgctxt "QObject|" - msgid "Certificates ( *.pem *.der *.crt *.cer );;" - msgstr "Certificats ( *.pem *.der *.crt *.cer );;" - --#: ../lib/load_obj.cpp:85 -+#: ../lib/load_obj.cpp:86 - msgctxt "QObject|" - msgid "Import X.509 Certificate" - msgstr "Importer un certificat X.509" - --#: ../lib/load_obj.cpp:97 -+#: ../lib/load_obj.cpp:98 - msgctxt "QObject|" - msgid "PKCS#7 data ( *.p7s *.p7m *.p7b );;" - msgstr "Données PKCS#7 ( *.p7s *.p7m *.p7b );;" - --#: ../lib/load_obj.cpp:98 -+#: ../lib/load_obj.cpp:99 - msgctxt "QObject|" - msgid "Import PKCS#7 Certificates" - msgstr "Importer un certificat PKCS#7" - --#: ../lib/load_obj.cpp:110 -+#: ../lib/load_obj.cpp:111 - msgctxt "QObject|" - msgid "PKCS#12 Certificates ( *.p12 *.pfx );;" - msgstr "Certificats PKCS#12 ( *.p12 *.pfx );;" - --#: ../lib/load_obj.cpp:111 -+#: ../lib/load_obj.cpp:112 - msgctxt "QObject|" - msgid "Import PKCS#12 Private Certificate" - msgstr "Importer un certificat privé PKCS#12" - --#: ../lib/load_obj.cpp:124 -+#: ../lib/load_obj.cpp:125 - msgctxt "QObject|" - msgid "XCA templates ( *.xca );;" - msgstr "Modèles XCA ( *.xca );;" - --#: ../lib/load_obj.cpp:125 -+#: ../lib/load_obj.cpp:126 - msgctxt "QObject|" - msgid "Import XCA Templates" - msgstr "Importer des modèles XCA" - --#: ../lib/load_obj.cpp:137 -+#: ../lib/load_obj.cpp:138 - msgctxt "QObject|" - msgid "Revocation lists ( *.pem *.der *.crl );;" - msgstr "Listes de révocation ( *.pem *.der *.crl );;" - --#: ../lib/load_obj.cpp:138 -+#: ../lib/load_obj.cpp:139 - msgctxt "QObject|" - msgid "Import Certificate Revocation List" - msgstr "Importer une liste de révocation de certificats" - --#: ../lib/load_obj.cpp:150 -+#: ../lib/load_obj.cpp:151 - msgctxt "QObject|" - msgid "XCA Databases ( *.xdb );;" - msgstr "Bases de données XCA ( *.xdb );;" - --#: ../lib/load_obj.cpp:151 -+#: ../lib/load_obj.cpp:152 - msgctxt "QObject|" - msgid "Open XCA Database" - msgstr "Ouvrir une Base de Données XCA" - --#: ../lib/load_obj.cpp:159 -+#: ../lib/load_obj.cpp:160 - msgctxt "QObject|" - msgid "PKCS#11 library ( *.dll );;" - msgstr "Bibliothèque PKCS#11 ( *.dll );;" - --#: ../lib/load_obj.cpp:161 -+#: ../lib/load_obj.cpp:162 - msgctxt "QObject|" - msgid "PKCS#11 library ( *.dylib *.so );;" - msgstr "Bibliothèque PKCS#11 ( *.dylib *.so );;" - --#: ../lib/load_obj.cpp:163 -+#: ../lib/load_obj.cpp:164 - msgctxt "QObject|" - msgid "PKCS#11 library ( *.so );;" - msgstr "Bibliothèque PKCS#11 ( *.so );;" - --#: ../lib/load_obj.cpp:165 -+#: ../lib/load_obj.cpp:166 - msgctxt "QObject|" - msgid "Open PKCS#11 shared library" - msgstr "Ouvrir une bibliothèque partagée PKCS#11" - --#: ../lib/load_obj.cpp:172 -+#: ../lib/load_obj.cpp:173 - msgctxt "QObject|" - msgid "PEM files ( *.pem );;" - msgstr "Fichiers PEM ( *.pem );;" - --#: ../lib/load_obj.cpp:173 -+#: ../lib/load_obj.cpp:174 - msgctxt "QObject|" - msgid "Load PEM encoded file" - msgstr "Charger un fichier en format PEM" - --#: ../lib/pkcs11.cpp:200 -+#: ../lib/pkcs11.cpp:214 - msgctxt "QObject|" - msgid "Please enter the PIN on the PinPad" - msgstr "Saisir le NIP sur le pavé prévu à cet effet SVP" - --#: ../lib/pkcs11.cpp:211 -+#: ../lib/pkcs11.cpp:225 - #, qt-format - msgctxt "QObject|" - msgid "Please enter the SO PIN (PUK) of the token %1" - msgstr "SVP saisir le PUK du jeton '%1'" - --#: ../lib/pkcs11.cpp:212 -+#: ../lib/pkcs11.cpp:226 - #, qt-format - msgctxt "QObject|" - msgid "Please enter the PIN of the token %1" - msgstr "SVP saisir le NIP du jeton '%1'" - --#: ../lib/pkcs11.cpp:265 -+#: ../lib/pkcs11.cpp:280 - msgctxt "QObject|" - msgid "No Security token found" - msgstr "Aucun jeton de sécurité trouvé" - --#: ../lib/pkcs11.cpp:276 -+#: ../lib/pkcs11.cpp:291 - msgctxt "QObject|" - msgid "Select" - msgstr "Sélectionner" - --#: ../lib/pkcs11.cpp:299 -+#: ../lib/pkcs11.cpp:314 - #, qt-format - msgctxt "QObject|" - msgid "Please enter the new SO PIN (PUK) for the token: '%1'" - msgstr "SVP saisir le nouveau PUK pour le jeton: '%1'" - --#: ../lib/pkcs11.cpp:301 -+#: ../lib/pkcs11.cpp:316 - #, qt-format - msgctxt "QObject|" - msgid "Please enter the new PIN for the token: '%1'" - msgstr "SVP saisir le nouveau NIP pour le jeton: '%1'" - --#: ../lib/pkcs11.h:92 -+#: ../lib/pkcs11.h:101 - #, qt-format - msgctxt "QObject|" - msgid "Required PIN size: %1 - %2" -@@ -2788,13 +2780,13 @@ msgctxt "QObject|" - msgid "Library loading failed" - msgstr "Le chargement de la bibliothèque a échoué" - --#: ../lib/pkcs11_lib.cpp:515 -+#: ../lib/pkcs11_lib.cpp:518 - #, qt-format - msgctxt "QObject|" - msgid "PKCS#11 function '%1' failed: %2" - msgstr "La fonction PKCS#11 '%1' a échoué: %2" - --#: ../lib/pkcs11_lib.cpp:523 -+#: ../lib/pkcs11_lib.cpp:526 - #, qt-format - msgctxt "QObject|" - msgid "" -@@ -2806,24 +2798,24 @@ msgstr "" - "Dans la bibliothèque %3\n" - "%4" - --#: ../lib/x509name.cpp:116 -+#: ../lib/x509name.cpp:111 - msgctxt "QObject|" - msgid "Invalid" - msgstr "Invalide" - --#: ../lib/x509name.cpp:240 -+#: ../lib/x509name.cpp:235 - #, qt-format - msgctxt "QObject|" - msgid "%1 is shorter than %2 bytes: '%3'" - msgstr "%1 est plus court que %2 octets: '%3'" - --#: ../lib/x509name.cpp:245 -+#: ../lib/x509name.cpp:240 - #, qt-format - msgctxt "QObject|" - msgid "%1 is longer than %2 bytes: '%3'" - msgstr "%1 est plus long que %2 octets: '%3'" - --#: ../lib/x509v3ext.cpp:85 -+#: ../lib/x509v3ext.cpp:86 - #, qt-format - msgctxt "QObject|" - msgid "String '%1' for '%2' contains invalid characters" -@@ -2867,196 +2859,219 @@ msgctxt "QObject|" - msgid "Failed to start a database transaction" - msgstr "Impossible de démarrer la transaction BDD" - --#: ../lib/func.cpp:598 -+#: ../lib/func.cpp:634 - msgctxt "QObject|" - msgid "Country code" - msgstr "Code de pays" - --#: ../lib/func.cpp:599 -+#: ../lib/func.cpp:635 - msgctxt "QObject|" - msgid "State or Province" - msgstr "Etat ou province" - --#: ../lib/func.cpp:600 -+#: ../lib/func.cpp:636 - msgctxt "QObject|" - msgid "Locality" - msgstr "Localité" - --#: ../lib/func.cpp:601 -+#: ../lib/func.cpp:637 - msgctxt "QObject|" - msgid "Organisation" - msgstr "Organisation" - --#: ../lib/func.cpp:602 -+#: ../lib/func.cpp:638 - msgctxt "QObject|" - msgid "Organisational unit" - msgstr "Unité d'organisation" - --#: ../lib/func.cpp:603 -+#: ../lib/func.cpp:639 - msgctxt "QObject|" - msgid "Common name" - msgstr "Nom commun" - --#: ../lib/func.cpp:604 -+#: ../lib/func.cpp:640 - msgctxt "QObject|" - msgid "E-Mail address" - msgstr "Adresse de courriel" - --#: ../lib/func.cpp:605 -+#: ../lib/func.cpp:641 - msgctxt "QObject|" - msgid "Serial number" - msgstr "Numéro de série" - --#: ../lib/func.cpp:606 -+#: ../lib/func.cpp:642 - msgctxt "QObject|" - msgid "Given name" - msgstr "Prénom" - --#: ../lib/func.cpp:607 -+#: ../lib/func.cpp:643 - msgctxt "QObject|" - msgid "Surname" - msgstr "Nom de famille" - --#: ../lib/func.cpp:608 -+#: ../lib/func.cpp:644 - msgctxt "QObject|" - msgid "Title" - msgstr "Titre" - --#: ../lib/func.cpp:609 -+#: ../lib/func.cpp:645 - msgctxt "QObject|" - msgid "Initials" - msgstr "Initiales" - --#: ../lib/func.cpp:610 -+#: ../lib/func.cpp:646 - msgctxt "QObject|" - msgid "Description" - msgstr "Description" - --#: ../lib/func.cpp:611 -+#: ../lib/func.cpp:647 - msgctxt "QObject|" - msgid "Role" - msgstr "Rôle" - --#: ../lib/func.cpp:612 -+#: ../lib/func.cpp:648 - msgctxt "QObject|" - msgid "Pseudonym" - msgstr "Pseudonyme" - --#: ../lib/func.cpp:613 -+#: ../lib/func.cpp:649 - msgctxt "QObject|" - msgid "Generation Qualifier" - msgstr "Qualifiant de génération" - --#: ../lib/func.cpp:614 -+#: ../lib/func.cpp:650 - msgctxt "QObject|" - msgid "x500 Unique Identifier" - msgstr "Identifiant Unique X500" - --#: ../lib/func.cpp:615 -+#: ../lib/func.cpp:651 - msgctxt "QObject|" - msgid "Name" - msgstr "Nom" - --#: ../lib/func.cpp:616 -+#: ../lib/func.cpp:652 - msgctxt "QObject|" - msgid "DN Qualifier" - msgstr "Qualifiant de DN" - --#: ../lib/func.cpp:617 -+#: ../lib/func.cpp:653 - msgctxt "QObject|" - msgid "Unstructured name" - msgstr "Nom non-structuré" - --#: ../lib/func.cpp:618 -+#: ../lib/func.cpp:654 - msgctxt "QObject|" - msgid "Challenge password" - msgstr "Mot de passe challenge" - --#: ../lib/func.cpp:620 -+#: ../lib/func.cpp:656 - msgctxt "QObject|" - msgid "Basic Constraints" - msgstr "Contraintes de base" - --#: ../lib/func.cpp:621 -+#: ../lib/func.cpp:657 - msgctxt "QObject|" - msgid "Subject alternative name" - msgstr "Nom alternatif du sujet" - --#: ../lib/func.cpp:622 -+#: ../lib/func.cpp:658 - msgctxt "QObject|" - msgid "issuer alternative name" - msgstr "Nom alternatif de l'émetteur" - --#: ../lib/func.cpp:623 -+#: ../lib/func.cpp:659 - msgctxt "QObject|" - msgid "Subject key identifier" - msgstr "Clé d'identification du sujet" - --#: ../lib/func.cpp:624 -+#: ../lib/func.cpp:660 - msgctxt "QObject|" - msgid "Authority key identifier" - msgstr "Clé d'identification de l'autorité" - --#: ../lib/func.cpp:625 -+#: ../lib/func.cpp:661 - msgctxt "QObject|" - msgid "Key usage" - msgstr "Usage de la clé" - --#: ../lib/func.cpp:626 -+#: ../lib/func.cpp:662 - msgctxt "QObject|" - msgid "Extended key usage" - msgstr "Usage étendu de la clé" - --#: ../lib/func.cpp:627 -+#: ../lib/func.cpp:663 - msgctxt "QObject|" - msgid "CRL distribution points" - msgstr "Points de distribution de la CRL" - --#: ../lib/func.cpp:628 -+#: ../lib/func.cpp:664 - msgctxt "QObject|" - msgid "Authority information access" - msgstr "Accès à l'information de l'autorité" - --#: ../lib/func.cpp:629 -+#: ../lib/func.cpp:665 - msgctxt "QObject|" - msgid "Certificate type" - msgstr "Type de certificat" - --#: ../lib/func.cpp:630 -+#: ../lib/func.cpp:666 - msgctxt "QObject|" - msgid "Base URL" - msgstr "URL de base" - --#: ../lib/func.cpp:631 -+#: ../lib/func.cpp:667 - msgctxt "QObject|" - msgid "Revocation URL" - msgstr "URL de révocation" - --#: ../lib/func.cpp:632 -+#: ../lib/func.cpp:668 - msgctxt "QObject|" - msgid "CA Revocation URL" - msgstr "URL de révocation du CA" - --#: ../lib/func.cpp:633 -+#: ../lib/func.cpp:669 - msgctxt "QObject|" - msgid "Certificate renewal URL" - msgstr "URL de renouvellement du certificat" - --#: ../lib/func.cpp:634 -+#: ../lib/func.cpp:670 - msgctxt "QObject|" - msgid "CA policy URL" - msgstr "URL de la politique du CA" - --#: ../lib/func.cpp:635 -+#: ../lib/func.cpp:671 - msgctxt "QObject|" - msgid "SSL server name" - msgstr "Nom du serveur SSL" - --#: ../lib/func.cpp:636 -+#: ../lib/func.cpp:672 - msgctxt "QObject|" - msgid "Comment" - msgstr "Commentaire" - -+#: ../lib/main.cpp:210 -+#, qt-format -+msgctxt "QObject|" -+msgid "Index file written to '%1'" -+msgstr "Fichier d'index écrit dans '%1'" -+ -+#: ../lib/main.cpp:217 -+#, qt-format -+msgctxt "QObject|" -+msgid "Index hierarchy written to '%1'" -+msgstr "Hiérarchie d'index écrite dans '%1'" -+ -+#: ../lib/main.cpp:230 -+#, qt-format -+msgctxt "QObject|" -+msgid "Unknown key type %1" -+msgstr "Type de clé inconnu %1" -+ -+#: ../widgets/XcaWarning.h:23 -+msgctxt "QObject|" -+msgid "Password verify error, please try again" -+msgstr "La vérification du mot de passe a échoué. SVP essayez encore" -+ - #: ../widgets/ReqTreeView.cpp:25 - msgctxt "ReqTreeView|" - msgid "Sign" -@@ -3097,32 +3112,32 @@ msgctxt "RevocationList|" - msgid "Edit" - msgstr "Modifier" - --#: ../widgets/RevocationList.cpp:73 -+#: ../widgets/RevocationList.cpp:75 - msgctxt "RevocationList|" - msgid "No." - msgstr "No." - --#: ../widgets/RevocationList.cpp:73 -+#: ../widgets/RevocationList.cpp:75 - msgctxt "RevocationList|" - msgid "Serial" - msgstr "Numéro de série" - --#: ../widgets/RevocationList.cpp:73 -+#: ../widgets/RevocationList.cpp:75 - msgctxt "RevocationList|" - msgid "Revocation" - msgstr "Révocation" - --#: ../widgets/RevocationList.cpp:73 -+#: ../widgets/RevocationList.cpp:75 - msgctxt "RevocationList|" - msgid "Reason" - msgstr "Raison" - --#: ../widgets/RevocationList.cpp:74 -+#: ../widgets/RevocationList.cpp:76 - msgctxt "RevocationList|" - msgid "Invalidation" - msgstr "Invalidation" - --#: ../widgets/RevocationList.cpp:101 -+#: ../widgets/RevocationList.cpp:104 - msgctxt "RevocationList|" - msgid "Generate CRL" - msgstr "Générer la liste de révocation" -@@ -3193,186 +3208,276 @@ msgctxt "SelectToken|" - msgid "Please select the security token" - msgstr "SVP sélectionner le jeton de sécurité" - --#: ../widgets/TempTreeView.cpp:22 -+#: ../widgets/TempTreeView.cpp:23 - msgctxt "TempTreeView|" - msgid "Duplicate" - msgstr "Dupliquer" - --#: ../widgets/TempTreeView.cpp:23 -+#: ../widgets/TempTreeView.cpp:24 - msgctxt "TempTreeView|" - msgid "Create certificate" - msgstr "Créer un certificat" - --#: ../widgets/TempTreeView.cpp:24 -+#: ../widgets/TempTreeView.cpp:25 - msgctxt "TempTreeView|" - msgid "Create request" - msgstr "Créer une requête" - --#: ../widgets/TempTreeView.cpp:35 -+#: ../widgets/TempTreeView.cpp:34 - msgctxt "TempTreeView|" - msgid "copy" - msgstr "copier" - -+#: ../widgets/TempTreeView.cpp:82 -+msgctxt "TempTreeView|" -+msgid "Preset Template values" -+msgstr "Initialiser les valeurs du modèle" -+ - #: ../widgets/validity.cpp:94 - msgctxt "Validity|" - msgid "yyyy-MM-dd hh:mm" - msgstr "yyyy-MM-dd hh:mm" - --#: ../widgets/X509SuperTreeView.cpp:25 -+#: ../widgets/X509SuperTreeView.cpp:28 - msgctxt "X509SuperTreeView|" - msgid "OpenSSL config" - msgstr "Configuration OpenSSL" - --#: ../widgets/X509SuperTreeView.cpp:26 -+#: ../widgets/X509SuperTreeView.cpp:29 - msgctxt "X509SuperTreeView|" - msgid "Transform" - msgstr "Transformer" - --#: ../widgets/X509SuperTreeView.cpp:27 -+#: ../widgets/X509SuperTreeView.cpp:30 - msgctxt "X509SuperTreeView|" - msgid "Template" - msgstr "Modèle" - --#: ../widgets/X509SuperTreeView.cpp:28 -+#: ../widgets/X509SuperTreeView.cpp:31 - msgctxt "X509SuperTreeView|" - msgid "Public key" - msgstr "Clé publique" - --#: ../widgets/XcaTreeView.cpp:326 -+#: ../widgets/XcaTreeView.cpp:343 - msgctxt "XcaTreeView|" - msgid "Subject entries" - msgstr "Inscriptions du sujet" - --#: ../widgets/XcaTreeView.cpp:327 -+#: ../widgets/XcaTreeView.cpp:344 - msgctxt "XcaTreeView|" - msgid "X509v3 Extensions" - msgstr "Extensions X509v3" - --#: ../widgets/XcaTreeView.cpp:328 -+#: ../widgets/XcaTreeView.cpp:345 - msgctxt "XcaTreeView|" - msgid "Netscape extensions" - msgstr "Extensions Netscape" - --#: ../widgets/XcaTreeView.cpp:329 -+#: ../widgets/XcaTreeView.cpp:346 - msgctxt "XcaTreeView|" - msgid "Key properties" - msgstr "Propriétés de la clé" - --#: ../widgets/XcaTreeView.cpp:330 -+#: ../widgets/XcaTreeView.cpp:347 - msgctxt "XcaTreeView|" - msgid "Reset" - msgstr "Réinitialisation" - --#: ../widgets/XcaTreeView.cpp:333 -+#: ../widgets/XcaTreeView.cpp:350 - msgctxt "XcaTreeView|" - msgid "Hide Column" - msgstr "Cacher la colonne" - --#: ../widgets/XcaTreeView.cpp:335 -+#: ../widgets/XcaTreeView.cpp:352 - msgctxt "XcaTreeView|" - msgid "Details" - msgstr "Détails" - --#: ../widgets/XcaTreeView.cpp:378 -+#: ../widgets/XcaTreeView.cpp:395 - msgctxt "XcaTreeView|" - msgid "Columns" - msgstr "Colonnes" - --#: ../widgets/XcaTreeView.cpp:406 -+#: ../widgets/XcaTreeView.cpp:431 - msgctxt "XcaTreeView|" - msgid "New" - msgstr "Créer" - --#: ../widgets/XcaTreeView.cpp:407 -+#: ../widgets/XcaTreeView.cpp:432 - msgctxt "XcaTreeView|" - msgid "Import" - msgstr "Importer" - --#: ../widgets/XcaTreeView.cpp:408 -+#: ../widgets/XcaTreeView.cpp:433 - msgctxt "XcaTreeView|" - msgid "Paste PEM data" - msgstr "Coller les données en format PEM" - --#: ../widgets/XcaTreeView.cpp:412 -+#: ../widgets/XcaTreeView.cpp:437 - msgctxt "XcaTreeView|" - msgid "Rename" - msgstr "Renommer" - --#: ../widgets/XcaTreeView.cpp:413 -+#: ../widgets/XcaTreeView.cpp:438 - msgctxt "XcaTreeView|" - msgid "Properties" - msgstr "Propriétés" - --#: ../widgets/XcaTreeView.cpp:416 -+#: ../widgets/XcaTreeView.cpp:441 - msgctxt "XcaTreeView|" - msgid "Delete" - msgstr "Enlever" - --#: ../widgets/XcaTreeView.cpp:418 -+#: ../widgets/XcaTreeView.cpp:443 - msgctxt "XcaTreeView|" - msgid "Export" - msgstr "Exporter" - --#: ../widgets/XcaTreeView.cpp:419 -+#: ../widgets/XcaTreeView.cpp:444 - msgctxt "XcaTreeView|" - msgid "Clipboard" - msgstr "Presse-papier" - --#: ../widgets/XcaTreeView.cpp:421 -+#: ../widgets/XcaTreeView.cpp:446 - msgctxt "XcaTreeView|" - msgid "File" - msgstr "Fichier" - --#: ../lib/db_base.cpp:178 -+#: ../lib/database_model.cpp:125 -+#, qt-format -+msgctxt "database_model|" -+msgid "" -+"Legacy database format detected. Creating a backup copy called: '%1' and " -+"converting the database to the new format" -+msgstr "" -+"Format historique de base de données détecté. Une copie de sauvegarde " -+"appelée '%1' est créée et la base de données est convertie au nouveau format" -+ -+#: ../lib/database_model.cpp:134 -+msgctxt "database_model|" -+msgid "Failed to rename the database file, because the target already exists" -+msgstr "" -+"Le changement de nom du fichier de base de données a échoué parce qu'un " -+"autre fichier du même nom existe déjà" -+ -+#: ../lib/database_model.cpp:269 -+#, qt-format -+msgctxt "database_model|" -+msgid "" -+"Please enter the password to access the database server %2 as user '%1'." -+msgstr "" -+"SVP saisir le mot de passe de l'utilisateur '%1' sur le serveur de base de " -+"données %2." -+ -+#: ../lib/database_model.cpp:386 -+#, qt-format -+msgctxt "database_model|" -+msgid "Unable to create '%1': %2" -+msgstr "Impossible de créer '%1': %2" -+ -+#: ../lib/database_model.cpp:557 -+#, qt-format -+msgctxt "database_model|" -+msgid "The file '%1' is not an XCA database" -+msgstr "Le fichier '%1' n'est pas une base de données XCA" -+ -+#: ../lib/database_model.cpp:585 -+msgctxt "database_model|" -+msgid "" -+"No SqLite3 driver available. Please install the qt-sqlite package of your " -+"distribution" -+msgstr "" -+"Le pilote SqLite3 n'est pas disponible. SVP installez le paquetage qt-sqlite " -+"de votre distribution" -+ -+#: ../lib/database_model.cpp:626 -+msgctxt "database_model|" -+msgid "New Password" -+msgstr "Nouveau mot de passe" -+ -+#: ../lib/database_model.cpp:626 -+#, qt-format -+msgctxt "database_model|" -+msgid "" -+"Please enter a password, that will be used to encrypt your private keys in " -+"the database:\n" -+"%1" -+msgstr "" -+"Veuillez saisir un mot de passe, qui sera utilisé pour chiffrer vos clés " -+"privées dans la base de données:\n" -+"%1" -+ -+#: ../lib/database_model.cpp:646 -+msgctxt "database_model|" -+msgid "Password" -+msgstr "Mot de passe" -+ -+#: ../lib/database_model.cpp:647 -+#, qt-format -+msgctxt "database_model|" -+msgid "" -+"Please enter the password for unlocking the database:\n" -+"%1" -+msgstr "" -+"Veuillez entrer le mot passe pour déverrouiller la base de données:\n" -+"%1" -+ -+#: ../lib/db_base.cpp:170 - msgctxt "db_base|" - msgid "Internal name" - msgstr "Nom interne" - --#: ../lib/db_base.cpp:179 -+#: ../lib/db_base.cpp:171 - msgctxt "db_base|" - msgid "No." - msgstr "No." - --#: ../lib/db_base.cpp:180 -+#: ../lib/db_base.cpp:172 - msgctxt "db_base|" - msgid "Primary key" - msgstr "Clé primaire" - --#: ../lib/db_base.cpp:181 -+#: ../lib/db_base.cpp:173 - msgctxt "db_base|" - msgid "Database unique number" - msgstr "Numéro unique de la base de données" - --#: ../lib/db_base.cpp:182 -+#: ../lib/db_base.cpp:174 - msgctxt "db_base|" - msgid "Date" - msgstr "Date" - --#: ../lib/db_base.cpp:183 -+#: ../lib/db_base.cpp:175 - msgctxt "db_base|" - msgid "Date of creation or insertion" - msgstr "Date de création ou d'importation" - --#: ../lib/db_base.cpp:184 -+#: ../lib/db_base.cpp:176 - msgctxt "db_base|" - msgid "Source" - msgstr "Source" - --#: ../lib/db_base.cpp:185 -+#: ../lib/db_base.cpp:177 - msgctxt "db_base|" - msgid "Generated, Imported, Transformed" - msgstr "Généré, Importé, Transformé" - --#: ../lib/db_base.cpp:186 -+#: ../lib/db_base.cpp:178 - msgctxt "db_base|" - msgid "Comment" - msgstr "Commentaire" - --#: ../lib/db_base.cpp:187 -+#: ../lib/db_base.cpp:179 - msgctxt "db_base|" - msgid "First line of the comment field" - msgstr "Première ligne du champ de commentaire" - -+#: ../lib/db_base.cpp:241 -+#, qt-format -+msgctxt "db_base|" -+msgid "Import from: %1" -+msgstr "Importer à partir de: %1" -+ - #: ../lib/db_base.cpp:392 - #, qt-format - msgctxt "db_base|" -@@ -3411,42 +3516,42 @@ msgctxt "db_base|" - msgid "PEM files ( *.pem );; All files ( * )" - msgstr "Fichiers PEM ( *.pem );; Tous les fichiers ( * )" - --#: ../lib/db_crl.cpp:34 -+#: ../lib/db_crl.cpp:30 - msgctxt "db_crl|" - msgid "Signer" - msgstr "Signataire" - --#: ../lib/db_crl.cpp:35 -+#: ../lib/db_crl.cpp:31 - msgctxt "db_crl|" - msgid "Internal name of the signer" - msgstr "Nom interne du signataire" - --#: ../lib/db_crl.cpp:36 -+#: ../lib/db_crl.cpp:32 - msgctxt "db_crl|" - msgid "No. revoked" - msgstr "Numéro révoqué" - --#: ../lib/db_crl.cpp:37 -+#: ../lib/db_crl.cpp:33 - msgctxt "db_crl|" - msgid "Number of revoked certificates" - msgstr "Nombre de certificats révoqués" - --#: ../lib/db_crl.cpp:38 -+#: ../lib/db_crl.cpp:34 - msgctxt "db_crl|" - msgid "Last update" - msgstr "Dernière mise-à-jour" - --#: ../lib/db_crl.cpp:39 -+#: ../lib/db_crl.cpp:35 - msgctxt "db_crl|" - msgid "Next update" - msgstr "Prochaine mise-à-jour" - --#: ../lib/db_crl.cpp:40 -+#: ../lib/db_crl.cpp:36 - msgctxt "db_crl|" - msgid "CRL number" - msgstr "Numéro de la liste de révocation" - --#: ../lib/db_crl.cpp:106 -+#: ../lib/db_crl.cpp:105 - #, qt-format - msgctxt "db_crl|" - msgid "" -@@ -3458,68 +3563,53 @@ msgstr "" - "'%1'\n" - "En conséquence, elle n'a pas été importée" - --#: ../lib/db_crl.cpp:161 -+#: ../lib/db_crl.cpp:130 - msgctxt "db_crl|" - msgid "Revocation list export" - msgstr "Exportation d'une liste de révocation" - --#: ../lib/db_crl.cpp:162 -+#: ../lib/db_crl.cpp:131 - msgctxt "db_crl|" - msgid "CRL ( *.pem *.der *.crl )" - msgstr "Listes de révocation ( *.pem *.der *.crl )" - --#: ../lib/db_crl.cpp:228 --msgctxt "db_crl|" --msgid "There are no CA certificates for CRL generation" --msgstr "Il n'y a pas de certificat CA pour la génération de la CRL" -- --#: ../lib/db_crl.cpp:236 --msgctxt "db_crl|" --msgid "Select CA certificate" --msgstr "Sélectionner un certificat d'autorité" -- --#: ../lib/db_crl.cpp:257 --msgctxt "db_crl|" --msgid "Create CRL" --msgstr "Créer une liste de révocation" -- --#: ../lib/db_crl.cpp:301 -+#: ../lib/db_crl.cpp:194 - msgctxt "db_crl|" - msgid "Failed to initiate DB transaction" - msgstr "Impossible de démarrer la transaction BDD" - --#: ../lib/db_crl.cpp:311 ../lib/db_crl.cpp:319 ../lib/db_crl.cpp:323 -+#: ../lib/db_crl.cpp:204 ../lib/db_crl.cpp:212 ../lib/db_crl.cpp:216 - #, qt-format - msgctxt "db_crl|" - msgid "Database error: %1" - msgstr "Erreur de la base de données: %1" - --#: ../lib/db_key.cpp:65 -+#: ../lib/db_key.cpp:58 - msgctxt "db_key|" - msgid "Type" - msgstr "Type" - --#: ../lib/db_key.cpp:66 -+#: ../lib/db_key.cpp:59 - msgctxt "db_key|" - msgid "Size" - msgstr "Taille" - --#: ../lib/db_key.cpp:68 -+#: ../lib/db_key.cpp:61 - msgctxt "db_key|" - msgid "EC Group" - msgstr "Groupe EC" - --#: ../lib/db_key.cpp:70 -+#: ../lib/db_key.cpp:63 - msgctxt "db_key|" - msgid "Use" - msgstr "Usage" - --#: ../lib/db_key.cpp:71 -+#: ../lib/db_key.cpp:64 - msgctxt "db_key|" - msgid "Password" - msgstr "Mot de passe" - --#: ../lib/db_key.cpp:143 -+#: ../lib/db_key.cpp:138 - #, qt-format - msgctxt "db_key|" - msgid "" -@@ -3531,7 +3621,7 @@ msgstr "" - "'%1'\n" - "En conséquence, elle ne va pas être importée" - --#: ../lib/db_key.cpp:148 -+#: ../lib/db_key.cpp:143 - #, qt-format - msgctxt "db_key|" - msgid "" -@@ -3545,207 +3635,197 @@ msgstr "" - "En conséquence, cette dernière sera complétée par la partie privée de la clé " - "importée" - --#: ../lib/db_key.cpp:150 -+#: ../lib/db_key.cpp:145 - #, qt-format - msgctxt "db_key|" - msgid "Extending public key from %1 by imported key '%2'" - msgstr "Extension de la clé publique de %1 par la clé importée '%2'" - --#: ../lib/db_key.cpp:185 -+#: ../lib/db_key.cpp:163 - msgctxt "db_key|" - msgid "Key size too small !" - msgstr "Taille de clé trop petite !" - --#: ../lib/db_key.cpp:190 -+#: ../lib/db_key.cpp:167 - #, qt-format - msgctxt "db_key|" - msgid "You are sure to create a key of the size: %1 ?" - msgstr "Etes-vous sûr de vouloir créer une clé de taille %1 ?" - --#: ../lib/db_key.cpp:272 ../lib/db_key.cpp:316 -+#: ../lib/db_key.cpp:217 ../lib/db_key.cpp:268 - msgctxt "db_key|" - msgid "PEM public" - msgstr "clé publique PEM" - --#: ../lib/db_key.cpp:275 ../lib/db_key.cpp:321 -+#: ../lib/db_key.cpp:220 ../lib/db_key.cpp:273 - msgctxt "db_key|" - msgid "SSH2 public" - msgstr "Clé publique SSH2" - --#: ../lib/db_key.cpp:278 ../lib/db_key.cpp:340 -+#: ../lib/db_key.cpp:223 ../lib/db_key.cpp:293 - msgctxt "db_key|" - msgid "PEM private" - msgstr "Clé privée PEM" - --#: ../lib/db_key.cpp:283 -+#: ../lib/db_key.cpp:228 ../lib/db_key.cpp:298 -+msgctxt "db_key|" -+msgid "SSH2 private" -+msgstr "Clé privée SSH2" -+ -+#: ../lib/db_key.cpp:231 - msgctxt "db_key|" - msgid "Export keys to Clipboard" - msgstr "Exporter les clés vers le presse-papier" - --#: ../lib/db_key.cpp:286 -+#: ../lib/db_key.cpp:234 - msgctxt "db_key|" - msgid "Clipboard" - msgstr "Presse-papier" - --#: ../lib/db_key.cpp:299 -+#: ../lib/db_key.cpp:247 - #, qt-format - msgctxt "db_key|" - msgid "Export public key [%1]" - msgstr "Exporter la clé publique [%1]" - --#: ../lib/db_key.cpp:317 -+#: ../lib/db_key.cpp:269 - msgctxt "db_key|" - msgid "DER public" - msgstr "Clé publique DER" - --#: ../lib/db_key.cpp:326 -+#: ../lib/db_key.cpp:281 - msgctxt "db_key|" - msgid "DER private" - msgstr "Clé privée DER" - --#: ../lib/db_key.cpp:328 -+#: ../lib/db_key.cpp:278 - msgctxt "db_key|" - msgid "PEM encryped" - msgstr "Chiffrée en PEM" - --#: ../lib/db_key.cpp:334 -+#: ../lib/db_key.cpp:287 - msgctxt "db_key|" - msgid "PVK private" - msgstr "Clé privée PVK" - --#: ../lib/db_key.cpp:336 -+#: ../lib/db_key.cpp:289 - msgctxt "db_key|" - msgid "PVK encrypted" - msgstr "Chiffrée en PVK" - --#: ../lib/db_key.cpp:342 -+#: ../lib/db_key.cpp:295 - msgctxt "db_key|" - msgid "PKCS#8 encrypted" - msgstr "Chiffrée en PKCS#8" - --#: ../lib/db_key.cpp:343 -+#: ../lib/db_key.cpp:299 - #, qt-format - msgctxt "db_key|" - msgid "Export private key [%1]" - msgstr "Exporter la clé privée [%1]" - --#: ../lib/db_key.cpp:348 -+#: ../lib/db_key.cpp:304 - msgctxt "db_key|" - msgid "Private Keys ( *.pem *.der *.pk8 );; SSH Public Keys ( *.pub )" - msgstr "Clés privées ( *.pem *.der *.pk8 );; Clé publiques SSH ( *.pub )" - --#: ../lib/db_key.cpp:405 -+#: ../lib/db_key.cpp:364 - msgctxt "db_key|" - msgid "Internal error" - msgstr "Erreur interne" - --#: ../lib/db_key.cpp:424 -+#: ../lib/db_key.cpp:382 - msgctxt "db_key|" - msgid "Tried to change password of a token" - msgstr "Tentative de changement de mot de passe d'un jeton de sécurité" - --#: ../lib/db_temp.cpp:54 -+#: ../lib/db_temp.cpp:50 - #, qt-format - msgctxt "db_temp|" - msgid "Bad template: %1" - msgstr "Mauvais modèle: %1" - --#: ../lib/db_temp.cpp:38 -+#: ../lib/db_temp.cpp:34 - msgctxt "db_temp|" - msgid "Empty template" - msgstr "Modèle vide" - --#: ../lib/db_temp.cpp:99 --msgctxt "db_temp|" --msgid "Preset Template values" --msgstr "Initaliser les valeurs du modèle" -- --#: ../lib/db_temp.cpp:137 -+#: ../lib/db_temp.cpp:112 - msgctxt "db_temp|" - msgid "Save template as" - msgstr "Enregistrer le modèle sous" - --#: ../lib/db_temp.cpp:138 -+#: ../lib/db_temp.cpp:113 - msgctxt "db_temp|" - msgid "XCA templates ( *.xca );; All files ( * )" - msgstr "Modèles XCA ( *.xca);; Tous les fichiers ( * )" - --#: ../lib/db_x509.cpp:67 -+#: ../lib/db_x509.cpp:71 - msgctxt "db_x509|" - msgid "CA" - msgstr "CA" - --#: ../lib/db_x509.cpp:68 -+#: ../lib/db_x509.cpp:72 - msgctxt "db_x509|" - msgid "reflects the basic Constraints extension" - msgstr "reflète l'extension des contraintes basiques" - --#: ../lib/db_x509.cpp:69 -+#: ../lib/db_x509.cpp:73 - msgctxt "db_x509|" - msgid "Serial" - msgstr "Numéro de série" - --#: ../lib/db_x509.cpp:73 -+#: ../lib/db_x509.cpp:77 - msgctxt "db_x509|" - msgid "Start date" - msgstr "Date de début" - --#: ../lib/db_x509.cpp:75 -+#: ../lib/db_x509.cpp:79 - msgctxt "db_x509|" - msgid "Expiry date" - msgstr "Date d'expiration" - --#: ../lib/db_x509.cpp:70 -+#: ../lib/db_x509.cpp:74 - msgctxt "db_x509|" - msgid "MD5 fingerprint" - msgstr "Empreinte MD5" - --#: ../lib/db_x509.cpp:71 -+#: ../lib/db_x509.cpp:75 - msgctxt "db_x509|" - msgid "SHA1 fingerprint" - msgstr "Empreinte SHA1" - --#: ../lib/db_x509.cpp:72 -+#: ../lib/db_x509.cpp:76 - msgctxt "db_x509|" - msgid "SHA256 fingerprint" - msgstr "Empreinte SHA256" - --#: ../lib/db_x509.cpp:74 -+#: ../lib/db_x509.cpp:78 - msgctxt "db_x509|" - msgid "Not before" - msgstr "Pas avant" - --#: ../lib/db_x509.cpp:76 -+#: ../lib/db_x509.cpp:80 - msgctxt "db_x509|" - msgid "Not after" - msgstr "Pas après" - --#: ../lib/db_x509.cpp:77 -+#: ../lib/db_x509.cpp:81 - msgctxt "db_x509|" - msgid "Revocation" - msgstr "Révocation" - --#: ../lib/db_x509.cpp:78 -+#: ../lib/db_x509.cpp:82 - msgctxt "db_x509|" - msgid "CRL Expiration" - msgstr "Expiration de la CRL" - --#: ../lib/db_x509.cpp:152 --msgctxt "db_x509|" --msgid "Plain View" --msgstr "Vue à plat" -- --#: ../lib/db_x509.cpp:154 --msgctxt "db_x509|" --msgid "Tree View" --msgstr "Vue arborescente" -- --#: ../lib/db_x509.cpp:334 -+#: ../lib/db_x509.cpp:301 - msgctxt "db_x509|" - msgid "Failed to retrieve unique random serial" - msgstr "L'extraction d'un numéro de série aléatoire a échoué" - --#: ../lib/db_x509.cpp:357 -+#: ../lib/db_x509.cpp:324 - #, qt-format - msgctxt "db_x509|" - msgid "" -@@ -3757,177 +3837,183 @@ msgstr "" - "'%1'\n" - "En conséquence, il n'a pas été importé" - --#: ../lib/db_x509.cpp:401 -+#: ../lib/db_x509.cpp:366 - #, qt-format - msgctxt "db_x509|" - msgid "Signed on %1 by '%2'" - msgstr "Signé le %1 par '%2'" - --#: ../lib/db_x509.cpp:402 -+#: ../lib/db_x509.cpp:367 - msgctxt "db_x509|" - msgid "Unknown" - msgstr "Inconnu" - --#: ../lib/db_x509.cpp:494 -+#: ../lib/db_x509.cpp:455 - msgctxt "db_x509|" - msgid "Invalid public key" - msgstr "Clé publique invalide" - --#: ../lib/db_x509.cpp:652 -+#: ../lib/db_x509.cpp:611 - msgctxt "db_x509|" - msgid "PKCS#7 unrevoked" - msgstr "PKCS#7 non-révoqué" - --#: ../lib/db_x509.cpp:656 -+#: ../lib/db_x509.cpp:615 - msgctxt "db_x509|" - msgid "PEM unrevoked" - msgstr "PEM non-révoqué" - --#: ../lib/db_x509.cpp:663 -+#: ../lib/db_x509.cpp:622 - msgctxt "db_x509|" - msgid "vCalendar" - msgstr "message vCalendar" - --#: ../lib/db_x509.cpp:667 -+#: ../lib/db_x509.cpp:626 - msgctxt "db_x509|" - msgid "CA vCalendar" - msgstr "message vCalendar pour le CA" - --#: ../lib/db_x509.cpp:1092 -+#: ../lib/db_x509.cpp:630 -+msgctxt "db_x509|" -+msgid "X509 Certificates ( *.pem *.cer *.crt *.p12 *.pfx *.p7b )" -+msgstr "Certificats X509 ( *.pem *.cer *.crt *.p12 *.pfx *.p7b)" -+ -+#: ../lib/db_x509.cpp:1045 - msgctxt "db_x509|" - msgid "days" - msgstr " jours" - --#: ../lib/db_x509.cpp:1101 -+#: ../lib/db_x509.cpp:1054 - msgctxt "db_x509|" - msgid "No template" - msgstr "Pas de modèle" - --#: ../lib/db_x509.cpp:520 -+#: ../lib/db_x509.cpp:481 - msgctxt "db_x509|" - msgid "The key you selected for signing is not a private one." - msgstr "La clé sélectionnée pour la signature n'est pas une clé privée." - --#: ../lib/db_x509.cpp:562 -+#: ../lib/db_x509.cpp:253 -+#, qt-format -+msgctxt "db_x509|" -+msgid "Failed to create directory '%1'" -+msgstr "Impossible de créer le répertoire %1" -+ -+#: ../lib/db_x509.cpp:523 - #, qt-format - msgctxt "db_x509|" - msgid "Store the certificate to the key on the token '%1 (#%2)' ?" - msgstr "Enregistrer le certificate avec la clé sur le jeton '%1 (#%2)' ?" - --#: ../lib/db_x509.cpp:629 -+#: ../lib/db_x509.cpp:588 - msgctxt "db_x509|" - msgid "PEM chain" - msgstr "Chaîne en PEM" - --#: ../lib/db_x509.cpp:631 -+#: ../lib/db_x509.cpp:590 - msgctxt "db_x509|" - msgid "PKCS#7 chain" - msgstr "Chaîne PKCS#7" - --#: ../lib/db_x509.cpp:637 -+#: ../lib/db_x509.cpp:596 - msgctxt "db_x509|" - msgid "PKCS#12 chain" - msgstr "Chaîne PKCS#12" - --#: ../lib/db_x509.cpp:654 -+#: ../lib/db_x509.cpp:613 - msgctxt "db_x509|" - msgid "PKCS#7 all" - msgstr "Tous les certificats en PKCS#7" - --#: ../lib/db_x509.cpp:646 -+#: ../lib/db_x509.cpp:605 - msgctxt "db_x509|" - msgid "PEM + key" - msgstr "PEM + clé" - --#: ../lib/db_x509.cpp:658 -+#: ../lib/db_x509.cpp:617 - msgctxt "db_x509|" - msgid "PEM all" - msgstr "Tous les certificats en PEM" - --#: ../lib/db_x509.cpp:660 -+#: ../lib/db_x509.cpp:619 - msgctxt "db_x509|" - msgid "Certificate Index file" - msgstr "Ficher d'index des certificats" - --#: ../lib/db_x509.cpp:670 -+#: ../lib/db_x509.cpp:629 - msgctxt "db_x509|" - msgid "Certificate export" - msgstr "Exportation de certificat" - --#: ../lib/db_x509.cpp:671 --msgctxt "db_x509|" --msgid "X509 Certificates ( *.pem *.cer *.crt *.p12 *.p7b )" --msgstr "Certificats X509 ( *.pem *.cer *.crt *.p12 *.p7b)" -- --#: ../lib/db_x509.cpp:735 ../lib/db_x509.cpp:801 -+#: ../lib/db_x509.cpp:694 ../lib/db_x509.cpp:764 - #, qt-format - msgctxt "db_x509|" - msgid "There was no key found for the Certificate: '%1'" - msgstr "Aucune clé n'a été trouvée pour le Certificat. '%1'" - --#: ../lib/db_x509.cpp:740 -+#: ../lib/db_x509.cpp:699 - #, qt-format - msgctxt "db_x509|" - msgid "Not possible for a token key: '%1'" - msgstr "Impossible pour une clé d'un jeton de sécurité: '%1'" - --#: ../lib/db_x509.cpp:805 -+#: ../lib/db_x509.cpp:768 - #, qt-format - msgctxt "db_x509|" - msgid "Not possible for the token-key Certificate '%1'" - msgstr "Impossible pour le certificat d'une clé d'un jeton de sécurité: '%1'" - --#: ../lib/db_x509super.cpp:25 -+#: ../lib/db_x509super.cpp:30 - msgctxt "db_x509name|" - msgid "Subject" - msgstr "Sujet" - --#: ../lib/db_x509super.cpp:26 -+#: ../lib/db_x509super.cpp:31 - msgctxt "db_x509name|" - msgid "Complete distinguished name" - msgstr "Nom distinctif complet" - --#: ../lib/db_x509super.cpp:27 -+#: ../lib/db_x509super.cpp:32 - msgctxt "db_x509name|" - msgid "Subject hash" - msgstr "Hachage du sujet" - --#: ../lib/db_x509super.cpp:28 -+#: ../lib/db_x509super.cpp:33 - msgctxt "db_x509name|" - msgid "Hash to lookup certs in directories" - msgstr "Hachage de recherche dans un dossier" - --#: ../lib/db_x509req.cpp:31 -+#: ../lib/db_x509req.cpp:28 - msgctxt "db_x509req|" - msgid "Signed" - msgstr "Signée" - --#: ../lib/db_x509req.cpp:32 -+#: ../lib/db_x509req.cpp:29 - msgctxt "db_x509req|" - msgid "whether the request is already signed or not" - msgstr "si la requête a déjà été signée ou non" - --#: ../lib/db_x509req.cpp:33 -+#: ../lib/db_x509req.cpp:30 - msgctxt "db_x509req|" - msgid "Unstructured name" - msgstr "Nom non-structuré" - --#: ../lib/db_x509req.cpp:35 -+#: ../lib/db_x509req.cpp:32 - msgctxt "db_x509req|" - msgid "Challenge password" - msgstr "Mot de passe challenge" - --#: ../lib/db_x509req.cpp:37 -+#: ../lib/db_x509req.cpp:34 - msgctxt "db_x509req|" - msgid "Certificate count" - msgstr "Nombre de certificats" - --#: ../lib/db_x509req.cpp:38 -+#: ../lib/db_x509req.cpp:35 - msgctxt "db_x509req|" - msgid "Number of certificates in the database with the same public key" - msgstr "Nombre de certificats dans la base de données avec la même clé" - --#: ../lib/db_x509req.cpp:55 -+#: ../lib/db_x509req.cpp:52 - #, qt-format - msgctxt "db_x509req|" - msgid "" -@@ -3939,78 +4025,78 @@ msgstr "" - "'%1'\n" - "En conséquence, elle n'a pas été chargée" - --#: ../lib/db_x509req.cpp:132 -+#: ../lib/db_x509req.cpp:119 - msgctxt "db_x509req|" - msgid "Certificate request export" - msgstr "Exporter la requête de signature" - --#: ../lib/db_x509req.cpp:133 -+#: ../lib/db_x509req.cpp:120 - msgctxt "db_x509req|" - msgid "Certificate request ( *.pem *.der *.csr )" - msgstr "Requête de signature de certificat ( *.pem *.der *.csr )" - --#: ../lib/db_x509super.cpp:79 -+#: ../lib/db_x509super.cpp:81 - msgctxt "db_x509super|" - msgid "Key name" - msgstr "Nom de la clé" - --#: ../lib/db_x509super.cpp:80 -+#: ../lib/db_x509super.cpp:82 - msgctxt "db_x509super|" - msgid "Internal name of the key" - msgstr "Nom interne de la clé" - --#: ../lib/db_x509super.cpp:82 -+#: ../lib/db_x509super.cpp:84 - msgctxt "db_x509super|" - msgid "Signature algorithm" - msgstr "Algorithme de signature" - --#: ../lib/db_x509super.cpp:83 -+#: ../lib/db_x509super.cpp:85 - msgctxt "db_x509super|" - msgid "Key type" - msgstr "Type de clé" - --#: ../lib/db_x509super.cpp:84 -+#: ../lib/db_x509super.cpp:86 - msgctxt "db_x509super|" - msgid "Key size" - msgstr "Taille de la clé" - --#: ../lib/db_x509super.cpp:86 -+#: ../lib/db_x509super.cpp:88 - msgctxt "db_x509super|" - msgid "EC Group" - msgstr "Groupe EC" - --#: ../lib/db_x509super.cpp:140 -+#: ../lib/db_x509super.cpp:142 - #, qt-format - msgctxt "db_x509super|" - msgid "Extracted from %1 '%2'" - msgstr "Extrait de %1 '%2'" - --#: ../lib/db_x509super.cpp:142 ../lib/db_x509super.cpp:193 -+#: ../lib/db_x509super.cpp:144 ../lib/db_x509super.cpp:196 - msgctxt "db_x509super|" - msgid "Certificate" - msgstr "Certificat" - --#: ../lib/db_x509super.cpp:142 ../lib/db_x509super.cpp:193 -+#: ../lib/db_x509super.cpp:144 ../lib/db_x509super.cpp:196 - msgctxt "db_x509super|" - msgid "Certificate request" - msgstr "Requête de certificat" - --#: ../lib/db_x509super.cpp:157 -+#: ../lib/db_x509super.cpp:159 - msgctxt "db_x509super|" - msgid "Save as OpenSSL config" - msgstr "Enregistrer en format de configuration OpenSSL" - --#: ../lib/db_x509super.cpp:158 -+#: ../lib/db_x509super.cpp:160 - msgctxt "db_x509super|" - msgid "Config files ( *.conf *.cnf);; All files ( * )" - msgstr "Fichiers de configuration (*.conf *.cnf);; Tous les fichiers ( * )" - --#: ../lib/db_x509super.cpp:180 -+#: ../lib/db_x509super.cpp:183 - msgctxt "db_x509super|" - msgid "The following extensions were not ported into the template" - msgstr "Les extensions suivantes n'ont pas été enregistrées dans le modèle" - --#: ../lib/db_x509super.cpp:191 -+#: ../lib/db_x509super.cpp:194 - #, qt-format - msgctxt "db_x509super|" - msgid "Transformed from %1 '%2'" -@@ -4026,52 +4112,58 @@ msgctxt "kvView|" - msgid "Content" - msgstr "Contenu" - --#: ../lib/pass_info.cpp:20 -+#: ../lib/pass_info.cpp:15 - msgctxt "pass_info|" - msgid "Password" - msgstr "Mot de passe" - --#: ../lib/pass_info.cpp:26 -+#: ../lib/pass_info.cpp:22 - msgctxt "pass_info|" - msgid "PIN" - msgstr "NIP" - --#: ../lib/pki_base.cpp:284 -+#: ../lib/pki_base.cpp:289 - msgctxt "pki_base|" - msgid "Unknown" - msgstr "Inconnu" - --#: ../lib/pki_base.cpp:285 -+#: ../lib/pki_base.cpp:290 - msgctxt "pki_base|" - msgid "Imported" - msgstr "Importé" - --#: ../lib/pki_base.cpp:286 -+#: ../lib/pki_base.cpp:291 - msgctxt "pki_base|" - msgid "Generated" - msgstr "Généré" - --#: ../lib/pki_base.cpp:287 -+#: ../lib/pki_base.cpp:292 - msgctxt "pki_base|" - msgid "Transformed" - msgstr "Transformé" - --#: ../lib/pki_base.cpp:288 -+#: ../lib/pki_base.cpp:293 - msgctxt "pki_base|" - msgid "Token" - msgstr "Jeton" - --#: ../lib/pki_base.cpp:289 -+#: ../lib/pki_base.cpp:294 - msgctxt "pki_base|" - msgid "Legacy Database" - msgstr "Base de données antérieure" - --#: ../lib/pki_base.cpp:290 -+#: ../lib/pki_base.cpp:295 - msgctxt "pki_base|" - msgid "Renewed" - msgstr "Renouvelé" - --#: ../lib/pki_base.cpp:101 -+#: ../lib/pki_base.cpp:430 -+#, qt-format -+msgctxt "pki_base|" -+msgid "Property '%1' not listed in 'pki_base::print'" -+msgstr "Propriété '%1' non listée dans 'pki_base::print'" -+ -+#: ../lib/pki_base.cpp:125 - #, qt-format - msgctxt "pki_base|" - msgid "Internal error: Unexpected message: %1 %2" -@@ -4122,13 +4214,13 @@ msgctxt "pki_crl|" - msgid "Wrong Size %1" - msgstr "Taille fausse %1" - --#: ../lib/pki_crl.cpp:438 -+#: ../lib/pki_crl.cpp:434 - #, qt-format - msgctxt "pki_crl|" - msgid "CRL Renewal of CA '%1' due" - msgstr "Le renouvellement de la liste de révocation du CA '%1' est nécessaire" - --#: ../lib/pki_crl.cpp:439 -+#: ../lib/pki_crl.cpp:435 - #, qt-format - msgctxt "pki_crl|" - msgid "" -@@ -4138,13 +4230,13 @@ msgstr "" - "La dernière liste de révocation générée par le CA '%1' expirera le %2.\n" - "Elle est stockée dans la base de données XCA '%3'" - --#: ../lib/pki_crl.cpp:447 -+#: ../lib/pki_crl.cpp:443 - #, qt-format - msgctxt "pki_crl|" - msgid "Renew CRL: %1" - msgstr "Renouvellement de CRL: %1" - --#: ../lib/pki_crl.cpp:448 -+#: ../lib/pki_crl.cpp:444 - #, qt-format - msgctxt "pki_crl|" - msgid "" -@@ -4154,24 +4246,19 @@ msgstr "" - "La liste de révocation XCA '%1', émise le %3 expirera le %4.\n" - "Elle est stockée dans la base de données XCA '%5'" - --#: ../lib/pki_evp.cpp:238 -+#: ../lib/pki_evp.cpp:260 - #, qt-format - msgctxt "pki_evp|" --msgid "Failed to decrypt the key (bad password) %1" --msgstr "Le déchiffrage de la clé a échoué (mauvais mot de passe) %1" -- --#: ../lib/pki_evp.cpp:248 --msgctxt "pki_evp|" --msgid "Please enter the password to decrypt the private key." --msgstr "SVP saisir le mot de passe pour déchiffrer la clé privée" -+msgid "Please enter the password to decrypt the private key %1." -+msgstr "SVP saisir le mot de passe pour déchiffrer la clé privée %1," - --#: ../lib/pki_evp.cpp:305 -+#: ../lib/pki_evp.cpp:327 - #, qt-format - msgctxt "pki_evp|" - msgid "The key from file '%1' is incomplete or inconsistent." - msgstr "La clé dans le fichier '%1' est incomplète ou incorrecte." - --#: ../lib/pki_evp.cpp:321 -+#: ../lib/pki_evp.cpp:416 - #, qt-format - msgctxt "pki_evp|" - msgid "" -@@ -4181,7 +4268,7 @@ msgstr "" - "SVP saisir le mot de passe pour déchiffrer la clé privée du fichier:\n" - "%1" - --#: ../lib/pki_evp.cpp:383 -+#: ../lib/pki_evp.cpp:493 - #, qt-format - msgctxt "pki_evp|" - msgid "" -@@ -4192,148 +4279,148 @@ msgstr "" - "ainsi que les types de clés privé, public, PKCS#8 et le format SSH2 ont été " - "essayés." - --#: ../lib/pki_evp.cpp:414 -+#: ../lib/pki_evp.cpp:524 - msgctxt "pki_evp|" - msgid "Ignoring unsupported private key" - msgstr "Clé privée non-supportée: ignorée" - --#: ../lib/pki_evp.cpp:431 -+#: ../lib/pki_evp.cpp:541 - #, qt-format - msgctxt "pki_evp|" - msgid "Please enter the password to decrypt the private key: '%1'" - msgstr "SVP saisir le mot de passe pour déchiffrer la clé privée: '%1'" - --#: ../lib/pki_evp.cpp:434 ../lib/pki_evp.cpp:448 -+#: ../lib/pki_evp.cpp:544 ../lib/pki_evp.cpp:558 - msgctxt "pki_evp|" - msgid "Password input aborted" - msgstr "Saisie du mot de passe abandonnée" - --#: ../lib/pki_evp.cpp:444 -+#: ../lib/pki_evp.cpp:554 - #, qt-format - msgctxt "pki_evp|" - msgid "Please enter the database password for decrypting the key '%1'" - msgstr "" - "SVP saisir le mot de passe de la base de données pour déchiffrer la clé '%1'" - --#: ../lib/pki_evp.cpp:561 -+#: ../lib/pki_evp.cpp:659 - #, qt-format - msgctxt "pki_evp|" - msgid "Please enter the password to protect the private key: '%1'" - msgstr "SVP saisir le mot de passe pour protéger la clé privée: '%1'" - --#: ../lib/pki_evp.cpp:579 -+#: ../lib/pki_evp.cpp:677 - msgctxt "pki_evp|" - msgid "Please enter the database password for encrypting the key" - msgstr "SVP saisir le mot de passe de la base de données pour chiffrer la clé" - --#: ../lib/pki_evp.cpp:694 -+#: ../lib/pki_evp.cpp:789 - #, qt-format - msgctxt "pki_evp|" - msgid "Please enter the password protecting the PKCS#8 key '%1'" - msgstr "SVP saisir le mot de passe protégeant la clé en PKCS#8 '%1'" - --#: ../lib/pki_evp.cpp:713 -+#: ../lib/pki_evp.cpp:808 - #, qt-format - msgctxt "pki_evp|" - msgid "Please enter the password protecting the Microsoft PVK key '%1'" - msgstr "" - "SVP saisir le mot de passe protégeant la clé en format Microsoft PVK '%1'" - --#: ../lib/pki_evp.cpp:776 -+#: ../lib/pki_evp.cpp:863 - #, qt-format - msgctxt "pki_evp|" - msgid "Please enter the export password for the private key '%1'" - msgstr "SVP saisir le mot de passe d'exportation pour la clé privée '%1'" - --#: ../lib/pki_key.cpp:203 -+#: ../lib/pki_key.cpp:238 - #, qt-format - msgctxt "pki_key|" - msgid "Successfully imported the %1 public key '%2'" - msgstr "La clé publique %1 '%2' a été importée avec succès" - --#: ../lib/pki_key.cpp:204 -+#: ../lib/pki_key.cpp:239 - #, qt-format - msgctxt "pki_key|" - msgid "Delete the %1 public key '%2'?" - msgstr "Détruire la clé publique %1 '%2' ?" - --#: ../lib/pki_key.cpp:209 -+#: ../lib/pki_key.cpp:244 - #, qt-format - msgctxt "pki_key|" - msgid "Successfully imported the %1 private key '%2'" - msgstr "La clé privée %1 '%2' a été importée avec succès" - --#: ../lib/pki_key.cpp:210 -+#: ../lib/pki_key.cpp:245 - #, qt-format - msgctxt "pki_key|" - msgid "Delete the %1 private key '%2'?" - msgstr "Détruire la clé privée %1 '%2' ?" - --#: ../lib/pki_key.cpp:211 -+#: ../lib/pki_key.cpp:246 - #, qt-format - msgctxt "pki_key|" - msgid "Successfully created the %1 private key '%2'" - msgstr "La clé privée %1 '%2' a été créée avec succès" - --#: ../lib/pki_key.cpp:217 -+#: ../lib/pki_key.cpp:252 - #, qt-format - msgctxt "pki_key|" - msgid "Delete the %1 keys: %2?" - msgstr "Détruire les %1 clés: %2?" - --#: ../lib/pki_key.cpp:59 ../lib/pki_key.cpp:226 -+#: ../lib/pki_key.cpp:60 ../lib/pki_key.cpp:261 ../lib/pki_key.cpp:938 - msgctxt "pki_key|" - msgid "Public key" - msgstr "Clé publique" - --#: ../lib/pki_key.cpp:427 -+#: ../lib/pki_key.cpp:499 - msgctxt "pki_key|" - msgid "Common" - msgstr "Global" - --#: ../lib/pki_key.cpp:427 -+#: ../lib/pki_key.cpp:499 - msgctxt "pki_key|" - msgid "Private" - msgstr "Privé" - --#: ../lib/pki_key.cpp:427 -+#: ../lib/pki_key.cpp:499 - msgctxt "pki_key|" - msgid "Bogus" - msgstr "Erroné" - --#: ../lib/pki_key.cpp:427 -+#: ../lib/pki_key.cpp:499 - msgctxt "pki_key|" - msgid "PIN" - msgstr "NIP" - --#: ../lib/pki_key.cpp:437 -+#: ../lib/pki_key.cpp:509 - msgctxt "pki_key|" - msgid "No password" - msgstr "Pas de mot de passe" - --#: ../lib/pki_key.cpp:533 ../lib/pki_key.cpp:627 -+#: ../lib/pki_key.cpp:606 ../lib/pki_key.cpp:712 - #, qt-format - msgctxt "pki_key|" - msgid "Unexpected SSH2 content: '%1'" - msgstr "Contenu SSH2 inattendu: '%1'" - --#: ../lib/pki_key.cpp:553 ../lib/pki_key.cpp:559 -+#: ../lib/pki_key.cpp:626 ../lib/pki_key.cpp:632 - msgctxt "pki_key|" - msgid "Invalid SSH2 public key" - msgstr "Clé publique SSH2 invalide" - --#: ../lib/pki_key.cpp:735 -+#: ../lib/pki_key.cpp:830 - #, qt-format - msgctxt "pki_key|" - msgid "Failed writing to %1" - msgstr "Echec d'écriture sur %1" - --#: ../lib/pki_multi.cpp:125 -+#: ../lib/pki_multi.cpp:131 - msgctxt "pki_multi|" - msgid "No known PEM encoded items found" - msgstr "Aucun objet PEM connu n'a été trouvé" - --#: ../lib/pki_pkcs12.cpp:37 -+#: ../lib/pki_pkcs12.cpp:40 - #, qt-format - msgctxt "pki_pkcs12|" - msgid "" -@@ -4343,29 +4430,29 @@ msgstr "" - "SVP saisir le mot de passe pour déchiffrer le fichier en PKCS#12:\n" - "%1" - --#: ../lib/pki_pkcs12.cpp:45 -+#: ../lib/pki_pkcs12.cpp:49 - #, qt-format - msgctxt "pki_pkcs12|" - msgid "Unable to load the PKCS#12 (pfx) file %1." - msgstr "Impossible de charger le fichier en PKCS#12 (pfx) %1." - --#: ../lib/pki_pkcs12.cpp:60 -+#: ../lib/pki_pkcs12.cpp:73 - #, qt-format - msgctxt "pki_pkcs12|" - msgid "The supplied password was wrong (%1)" - msgstr "Le mot de passe renseigné était faux (%1)" - --#: ../lib/pki_pkcs12.cpp:112 -+#: ../lib/pki_pkcs12.cpp:127 - msgctxt "pki_pkcs12|" - msgid "Please enter the password to encrypt the PKCS#12 file" - msgstr "SVP saisir le mot de passe pour chiffrer le fichier en PKCS#12" - --#: ../lib/pki_pkcs12.cpp:116 -+#: ../lib/pki_pkcs12.cpp:130 - msgctxt "pki_pkcs12|" - msgid "No key or no Cert and no pkcs12" - msgstr "Pas de clé ou pas de certificat et pas en PKCS#12" - --#: ../lib/pki_pkcs7.cpp:151 -+#: ../lib/pki_pkcs7.cpp:173 - #, qt-format - msgctxt "pki_pkcs7|" - msgid "Unable to load the PKCS#7 file %1. Tried PEM and DER format." -@@ -4373,170 +4460,165 @@ msgstr "" - "Impossible de charger le fichier en PKCS#7 %1. Les formats PEM et DER ont " - "été essayés." - --#: ../lib/pki_scard.cpp:57 -+#: ../lib/pki_scard.cpp:52 - #, qt-format - msgctxt "pki_scard|" - msgid "Successfully imported the token key '%1'" - msgstr "La clé du jeton '%1' a été importée avec succès" - --#: ../lib/pki_scard.cpp:58 -+#: ../lib/pki_scard.cpp:53 - #, qt-format - msgctxt "pki_scard|" - msgid "Delete the token key '%1'?" - msgstr "Détruire la clé du jeton '%1' ?" - --#: ../lib/pki_scard.cpp:59 -+#: ../lib/pki_scard.cpp:54 - #, qt-format - msgctxt "pki_scard|" - msgid "Successfully created the token key '%1'" - msgstr "La clé du jeton '%1' a été créée avec succès" - --#: ../lib/pki_scard.cpp:61 -+#: ../lib/pki_scard.cpp:56 - #, qt-format - msgctxt "pki_scard|" - msgid "Delete the %1 keys: %2?" - msgstr "Détruire les %1 clés: %2?" - --#: ../lib/pki_scard.cpp:363 -+#: ../lib/pki_scard.cpp:358 - #, qt-format - msgctxt "pki_scard|" - msgid "Delete the private key '%1' from the token '%2 (#%3)' ?" - msgstr "Détruire la clé privée '%1' sur le jeton '%2 (#%3)' ?" - --#: ../lib/pki_scard.cpp:436 -+#: ../lib/pki_scard.cpp:431 - msgctxt "pki_scard|" - msgid "This Key is already on the token" - msgstr "Cette clé est déjà sur le jeton" - --#: ../lib/pki_scard.cpp:522 -+#: ../lib/pki_scard.cpp:517 - msgctxt "pki_scard|" - msgid "PIN input aborted" - msgstr "Saisie du NIP abandonnée" - --#: ../lib/pki_scard.cpp:534 -+#: ../lib/pki_scard.cpp:529 - msgctxt "pki_scard|" - msgid "Unable to find copied key on the token" - msgstr "Impossible de trouver la clé copiée sur le jeton" - --#: ../lib/pki_scard.cpp:621 -+#: ../lib/pki_scard.cpp:616 - #, qt-format - msgctxt "pki_scard|" - msgid "Please insert card: %1 %2 [%3] with Serial: %4" - msgstr "SVP insérer la carte %1 %2 [%3] avec le numéro de série: %4" - --#: ../lib/pki_scard.cpp:689 --msgctxt "pki_scard|" --msgid "Illegal Key generation method" --msgstr "Méthode de génération de clé illégale" -- --#: ../lib/pki_scard.cpp:705 -+#: ../lib/pki_scard.cpp:682 - msgctxt "pki_scard|" - msgid "Unable to find generated key on card" - msgstr "Impossible de trouver la clé générée sur la carte" - --#: ../lib/pki_scard.cpp:743 -+#: ../lib/pki_scard.cpp:720 - msgctxt "pki_scard|" - msgid "Ignoring unsupported token key" - msgstr "La clé non-supportée sur le jeton est ignorée" - --#: ../lib/pki_scard.cpp:746 -+#: ../lib/pki_scard.cpp:723 - #, qt-format - msgctxt "pki_scard|" - msgid "Wrong Size %1" - msgstr "Taille fausse %1" - --#: ../lib/pki_scard.cpp:752 -+#: ../lib/pki_scard.cpp:729 - #, qt-format - msgctxt "pki_scard|" - msgid "Token %1" - msgstr "Jeton %1" - --#: ../lib/pki_scard.cpp:761 ../lib/pki_scard.cpp:774 -+#: ../lib/pki_scard.cpp:738 ../lib/pki_scard.cpp:751 - msgctxt "pki_scard|" - msgid "Failed to find the key on the token" - msgstr "Impossible de trouver la clé sur le jeton" - --#: ../lib/pki_scard.cpp:768 -+#: ../lib/pki_scard.cpp:745 - msgctxt "pki_scard|" - msgid "Invalid Pin for the token" - msgstr "NIP invalide pour le jeton" - --#: ../lib/pki_scard.cpp:780 -+#: ../lib/pki_scard.cpp:757 - msgctxt "pki_scard|" - msgid "Failed to initialize the key on the token" - msgstr "Impossible d'initialiser la clé sur le jeton" - --#: ../lib/pki_temp.cpp:124 -+#: ../lib/pki_temp.cpp:123 - #, qt-format - msgctxt "pki_temp|" - msgid "Successfully imported the XCA template '%1'" - msgstr "Le modèle XCA '%1' a été importé avec succès" - --#: ../lib/pki_temp.cpp:125 -+#: ../lib/pki_temp.cpp:124 - #, qt-format - msgctxt "pki_temp|" - msgid "Delete the XCA template '%1'?" - msgstr "Détruire le modèle XCA '%1' ?" - --#: ../lib/pki_temp.cpp:126 -+#: ../lib/pki_temp.cpp:125 - #, qt-format - msgctxt "pki_temp|" - msgid "Successfully created the XCA template '%1'" - msgstr "Le modèle XCA '%1' a été créé avec succès" - --#: ../lib/pki_temp.cpp:128 -+#: ../lib/pki_temp.cpp:127 - #, qt-format - msgctxt "pki_temp|" - msgid "Delete the %1 XCA templates: %2?" - msgstr "Détruire les %1 modèles XCA: %2 ?" - --#: ../lib/pki_temp.cpp:336 -+#: ../lib/pki_temp.cpp:335 - #, qt-format - msgctxt "pki_temp|" - msgid "Wrong Size %1" - msgstr "Taille fausse %1" - --#: ../lib/pki_temp.cpp:426 -+#: ../lib/pki_temp.cpp:420 - msgctxt "pki_temp|" - msgid "Template file content error (too small)" - msgstr "Erreur de contenu du fichier de modèle (trop petit)" - --#: ../lib/pki_temp.cpp:481 -+#: ../lib/pki_temp.cpp:469 - msgctxt "pki_temp|" - msgid "Not a PEM encoded XCA Template" - msgstr "Ce n'est pas un modèle XCA en format PEM" - --#: ../lib/pki_temp.cpp:489 -+#: ../lib/pki_temp.cpp:477 - #, qt-format - msgctxt "pki_temp|" - msgid "Not an XCA Template, but '%1'" - msgstr "Ce n'est pas un modèle XCA, mais '%1'" - --#: ../lib/pki_x509.cpp:66 -+#: ../lib/pki_x509.cpp:64 - #, qt-format - msgctxt "pki_x509|" - msgid "Successfully imported the certificate '%1'" - msgstr "Le certificat '%1' a été importé avec succès" - --#: ../lib/pki_x509.cpp:67 -+#: ../lib/pki_x509.cpp:65 - #, qt-format - msgctxt "pki_x509|" - msgid "Delete the certificate '%1'?" - msgstr "Détruire le certificat '%1' ?" - --#: ../lib/pki_x509.cpp:68 -+#: ../lib/pki_x509.cpp:66 - #, qt-format - msgctxt "pki_x509|" - msgid "Successfully created the certificate '%1'" - msgstr "Le certificat '%1' a été créé avec succès" - --#: ../lib/pki_x509.cpp:70 -+#: ../lib/pki_x509.cpp:68 - #, qt-format - msgctxt "pki_x509|" - msgid "Delete the %1 certificates: %2?" - msgstr "Détruire les %1 certificats: '%2' ?" - --#: ../lib/pki_x509.cpp:218 -+#: ../lib/pki_x509.cpp:229 - #, qt-format - msgctxt "pki_x509|" - msgid "" -@@ -4545,45 +4627,45 @@ msgstr "" - "Impossible de charger le certificat du fichier %1. Les formats PEM et DER " - "ont été essayés." - --#: ../lib/pki_x509.cpp:363 -+#: ../lib/pki_x509.cpp:374 - msgctxt "pki_x509|" - msgid "This certificate is already on the security token" - msgstr "Ce certificat est déjà dans le jeton de sécurité" - --#: ../lib/pki_x509.cpp:426 -+#: ../lib/pki_x509.cpp:437 - #, qt-format - msgctxt "pki_x509|" - msgid "Delete the certificate '%1' from the token '%2 (#%3)'?" - msgstr "Détruire le certificat '%1' sur le jeton '%2 (#%3)' ?" - --#: ../lib/pki_x509.cpp:559 -+#: ../lib/pki_x509.cpp:570 - msgctxt "pki_x509|" - msgid "There is no key for signing !" - msgstr "Il n'y a pas de clé pour signer !" - --#: ../lib/pki_x509.cpp:620 -+#: ../lib/pki_x509.cpp:631 - #, qt-format - msgctxt "pki_x509|" - msgid "Wrong Size %1" - msgstr "Taille fausse %1" - --#: ../lib/pki_x509.cpp:911 -+#: ../lib/pki_x509.cpp:919 - msgctxt "pki_x509|" - msgid "No" - msgstr "Non" - --#: ../lib/pki_x509.cpp:913 -+#: ../lib/pki_x509.cpp:921 - msgctxt "pki_x509|" - msgid "Yes" - msgstr "Oui" - --#: ../lib/pki_x509.cpp:943 -+#: ../lib/pki_x509.cpp:951 - #, qt-format - msgctxt "pki_x509|" - msgid "Renew certificate: %1" - msgstr "Renouvellement du certificat: %1" - --#: ../lib/pki_x509.cpp:944 -+#: ../lib/pki_x509.cpp:952 - #, qt-format - msgctxt "pki_x509|" - msgid "" -@@ -4593,36 +4675,36 @@ msgstr "" - "Le certificat XCA '%1' émis le %2 expirera le %3.\n" - "Il est stocké dans la base de données XCA '%4'" - --#: ../lib/pki_x509req.cpp:102 -+#: ../lib/pki_x509req.cpp:110 - msgctxt "pki_x509req|" - msgid "Signing key not valid (public key)" - msgstr "La clé de signature n'est pas valide (c'est une clé publique)" - --#: ../lib/pki_x509req.cpp:144 -+#: ../lib/pki_x509req.cpp:152 - #, qt-format - msgctxt "pki_x509req|" - msgid "Successfully imported the %1 certificate request '%2'" - msgstr "La requête %1 de signature '%2' a été importée avec succès" - --#: ../lib/pki_x509req.cpp:145 -+#: ../lib/pki_x509req.cpp:153 - #, qt-format - msgctxt "pki_x509req|" - msgid "Delete the %1 certificate request '%2'?" - msgstr "Détruire la requête %1 de signature '%2' ?" - --#: ../lib/pki_x509req.cpp:146 -+#: ../lib/pki_x509req.cpp:154 - #, qt-format - msgctxt "pki_x509req|" - msgid "Successfully created the %1 certificate request '%2'" - msgstr "La requête %1 de signature '%2' a été créée avec succès" - --#: ../lib/pki_x509req.cpp:148 -+#: ../lib/pki_x509req.cpp:156 - #, qt-format - msgctxt "pki_x509req|" - msgid "Delete the %1 certificate requests: %2?" - msgstr "Détruire la requête %1 de signature '%2' ?" - --#: ../lib/pki_x509req.cpp:176 -+#: ../lib/pki_x509req.cpp:184 - #, qt-format - msgctxt "pki_x509req|" - msgid "" -@@ -4632,18 +4714,18 @@ msgstr "" - "Impossible de charger la requête de signature du fichier %1. Les formats " - "PEM, DER et SPKAC ont été essayés." - --#: ../lib/pki_x509req.cpp:208 -+#: ../lib/pki_x509req.cpp:216 - #, qt-format - msgctxt "pki_x509req|" - msgid "Wrong Size %1" - msgstr "Taille fausse %1" - --#: ../lib/pki_x509req.cpp:356 -+#: ../lib/pki_x509req.cpp:383 - msgctxt "pki_x509req|" - msgid "Signed" - msgstr "Signée" - --#: ../lib/pki_x509req.cpp:356 -+#: ../lib/pki_x509req.cpp:383 - msgctxt "pki_x509req|" - msgid "Unhandled" - msgstr "Non-géré" -@@ -4678,52 +4760,52 @@ msgctxt "v3ext|" - msgid "Cancel" - msgstr "Annuler" - --#: ../widgets/v3ext.cpp:72 -+#: ../widgets/v3ext.cpp:75 - msgctxt "v3ext|" - msgid "An email address or 'copy'" - msgstr "Une adresse de courriel ou 'copy'" - --#: ../widgets/v3ext.cpp:74 -+#: ../widgets/v3ext.cpp:77 - msgctxt "v3ext|" - msgid "An email address" - msgstr "Une adresse de courriel" - --#: ../widgets/v3ext.cpp:76 -+#: ../widgets/v3ext.cpp:79 - msgctxt "v3ext|" - msgid "A registered ID: OBJECT IDENTIFIER" - msgstr "un IDentifiant enregistré: IDENTIFICATEUR.OBJET" - --#: ../widgets/v3ext.cpp:80 -+#: ../widgets/v3ext.cpp:83 - msgctxt "v3ext|" - msgid "A uniform resource indicator" - msgstr "un indicateur uniforme de ressource" - --#: ../widgets/v3ext.cpp:85 -+#: ../widgets/v3ext.cpp:88 - msgctxt "v3ext|" - msgid "A DNS domain name or 'copycn'" - msgstr "un nom de domaine DNS ou 'copycn'" - --#: ../widgets/v3ext.cpp:87 -+#: ../widgets/v3ext.cpp:90 - msgctxt "v3ext|" - msgid "A DNS domain name" - msgstr "un nom de domaine DNS" - --#: ../widgets/v3ext.cpp:89 -+#: ../widgets/v3ext.cpp:92 - msgctxt "v3ext|" - msgid "An IP address" - msgstr "Une adresse IP" - --#: ../widgets/v3ext.cpp:92 -+#: ../widgets/v3ext.cpp:95 - msgctxt "v3ext|" - msgid "Syntax: ;TYPE:text like '1.2.3.4:UTF8:name'" - msgstr "Syntaxe: ;TYPE:texte sous la forme '1.2.3.4:UTF8:nom'" - --#: ../widgets/v3ext.cpp:96 -+#: ../widgets/v3ext.cpp:99 - msgctxt "v3ext|" - msgid "No editing. Only 'copy' allowed here" - msgstr "Pas de modification possible. Seul 'copy' est permis ici" - --#: ../widgets/v3ext.cpp:165 -+#: ../widgets/v3ext.cpp:168 - #, qt-format - msgctxt "v3ext|" - msgid "" -@@ -4735,7 +4817,7 @@ msgstr "" - "'%1'\n" - "%2" - --#: ../widgets/v3ext.cpp:170 -+#: ../widgets/v3ext.cpp:173 - #, qt-format - msgctxt "v3ext|" - msgid "" -@@ -4744,3 +4826,13 @@ msgid "" - msgstr "" - "La validation a été effectuée avec succès:\n" - "'%1'" -+ -+#: ../widgets/XcaWarning.cpp:121 -+msgctxt "xcaWarning|" -+msgid "The following error occurred:" -+msgstr "L'erreur suivante s'est produite:" -+ -+#: ../widgets/XcaWarning.cpp:124 -+msgctxt "xcaWarning|" -+msgid "Copy to Clipboard" -+msgstr "Copier dans le presse-papier" diff --git a/xca-2.4.0-lang-it.patch b/xca-2.4.0-lang-it.patch deleted file mode 100644 index cae2369..0000000 --- a/xca-2.4.0-lang-it.patch +++ /dev/null @@ -1,312 +0,0 @@ -From 36abc2b4980980d92a1acb697340c36b8cce6e64 Mon Sep 17 00:00:00 2001 -From: albanobattistella <34811668+albanobattistella@users.noreply.github.com> -Date: Mon, 24 May 2021 17:52:22 +0200 -Subject: [PATCH] Update xca_it.ts - ---- - lang/xca_it.ts | 80 +++++++++++++++++++++++++------------------------- - 1 file changed, 40 insertions(+), 40 deletions(-) - -diff --git a/lang/xca_it.ts b/lang/xca_it.ts -index 0bf93bc9..ba06ec62 100644 ---- a/lang/xca_it.ts -+++ b/lang/xca_it.ts -@@ -180,7 +180,7 @@ - - - Revoked: -- Revocato: -+ Revocato: - - - -@@ -1133,7 +1133,7 @@ Ciò eliminerà la chiave '%1' e la renderà non esportabile - - No deleted items found -- Non trovati elementi cancellati -+ Non trovati elementi cancellati - - - -@@ -1228,11 +1228,11 @@ Ciò eliminerà la chiave '%1' e la renderà non esportabile - - &New DataBase -- &Nuovo database -+ &Nuovo database - - - &Open DataBase -- &Apri database -+ &Apri database - - - -@@ -1246,7 +1246,7 @@ Ciò eliminerà la chiave '%1' e la renderà non esportabile - - &Close DataBase -- &Chiudi database -+ &Chiudi database - - - -@@ -1408,7 +1408,7 @@ Ciò eliminerà la chiave '%1' e la renderà non esportabile - - &Content -- &Contenuti -+ &Contenuti - - - -@@ -1417,7 +1417,7 @@ Ciò eliminerà la chiave '%1' e la renderà non esportabile - - no such option: %1 -- opzione inesistente: %1 -+ opzione inesistente: %1 - - - -@@ -1483,30 +1483,30 @@ Ciò eliminerà la chiave '%1' e la renderà non esportabile - Please enter a password, that will be used to encrypt your private keys in the database: - %1 -- Prego inserire una password che verrà utilizzata per crittare le chiavi private nel database: -+ Prego inserire una password che verrà utilizzata per crittare le chiavi private nel database: - %1 - - - Password verify error, please try again -- Errore di verifica password, prego riprovare -+ Errore di verifica password, prego riprovare - - - Password -- Password -+ Password - - - Please enter the password for unlocking the database: - %1 -- Prego inserire la password per sbloccare il database: -+ Prego inserire la password per sbloccare il database: - %1 - - - The following error occurred: -- Incontrato l'errore seguente: -+ Incontrato l'errore seguente: - - - Copy to Clipboard -- Copia negli appunti -+ Copia negli appunti - - - -@@ -1533,7 +1533,7 @@ Prego inserire i bit dei parametri DH - - - Error opening file: '%1': %2 -- Errore in apertura file: '%1': %2 -+ Errore in apertura file: '%1': %2 - - - -@@ -1769,7 +1769,7 @@ Prego inserire i bit dei parametri DH - - - Distinguished name -- Distinguished name -+ Nome distinto - - - -@@ -2279,12 +2279,12 @@ nonostante siano stati dichiarati come obbligatori nel menu opzioni. - - Hostname -- -+ Nome host - - - - Username -- -+ Nome utente - - - -@@ -2309,11 +2309,11 @@ nonostante siano stati dichiarati come obbligatori nel menu opzioni. - - Please enter the password to access the database server %2 as user '%1'. -- Prego inserire la password di accesso al database server %2 come utente: '%1'. -+ Prego inserire la password di accesso al database server %2 come utente: '%1'. - - - The database driver does not support transactions. This may happen if the client and server have different versions. Continue with care. -- Il driver database non supporta le transazioni. Questo può succedere se il client e il server hanno versioni differenti. Continuare con attenzione. -+ Il driver database non supporta le transazioni. Questo può succedere se il client e il server hanno versioni differenti. Continuare con attenzione. - - - -@@ -2524,7 +2524,7 @@ Nello specifico EC e DSA sono definiti solo con SHA1 nelle specifiche PKCS#11. - - E&xit -- E&sci -+ E&sci - - - -@@ -2614,15 +2614,15 @@ Nello specifico EC e DSA sono definiti solo con SHA1 nelle specifiche PKCS#11. - - DB: Rename: '%1' already in use -- DB: Rinomina: '%1' già in uso -+ DB: Rinomina: '%1' già in uso - - - DB: Entry to rename not found: %1 -- DB: Elemento da rinominare non trovato: %1 -+ DB: Elemento da rinominare non trovato: %1 - - - DB: Write error %1 - %2 -- DB: Errore di scrittura %1 - %2 -+ DB: Errore di scrittura %1 - %2 - - - -@@ -2991,7 +2991,7 @@ Nello specifico EC e DSA sono definiti solo con SHA1 nelle specifiche PKCS#11. - - Failed to open PKCS11 library: %1 -- Impossibile aprire libreria PKCS#11: %1 -+ Impossibile aprire libreria PKCS#11: %1 - - - -@@ -3456,7 +3456,7 @@ nella libreria %3 - db_base - - Error opening file: '%1': %2 -- Errore in apertura file: '%1': %2 -+ Errore in apertura file: '%1': %2 - - - -@@ -3607,15 +3607,15 @@ quindi non è stata importata - - - There are no CA certificates for CRL generation -- Non esistono certificati CA per generare la CRL -+ Non esistono certificati CA per generare la CRL - - - Select CA certificate -- Seleziona un certificato CA -+ Seleziona un certificato CA - - - Create CRL -- Crea CRL -+ Crea CRL - - - -@@ -3873,11 +3873,11 @@ e sarà completata con la nuova parte privata della chiave - - - Plain View -- Visualizzazione semplice -+ Visualizzazione semplice - - - Tree View -- Visualizzazione ad albero -+ Visualizzazione ad albero - - - -@@ -4000,7 +4000,7 @@ pertanto non è stato importato - - - X509 Certificates ( *.pem *.cer *.crt *.p12 *.p7b ) -- Certificati x509 ( *.pem *.cer *.crt *.p12 *.p7b ) -+ Certificati x509 ( *.pem *.cer *.crt *.p12 *.p7b ) - - - -@@ -4015,7 +4015,7 @@ pertanto non è stato importato - - - Error opening file: '%1': %2 -- Errore in apertura file: '%1': %2 -+ Errore in apertura file: '%1': %2 - - - -@@ -4024,7 +4024,7 @@ pertanto non è stato importato - - - days -- giorni -+ giorni - - - -@@ -4202,11 +4202,11 @@ pertanto non è stata salvata - pki_base - - Error opening file: '%1': %2 -- Errore in apertura file: '%1': %2 -+ Errore in apertura file: '%1': %2 - - - Error writing to file: '%1': %2 -- Errore scrittura file: '%1': %2 -+ Errore scrittura file: '%1': %2 - - - -@@ -4312,7 +4312,7 @@ Si trova nel database XCA '%5' - - - unknown -- Sconosciuto -+ Sconosciuto - - - -@@ -4322,22 +4322,22 @@ Si trova nel database XCA '%5' - - The XCA CRL '%1', issued by the CA '%2' on %3 will expire on %4. - It is stored in the XCA database '%5' -- La CRL XCA '%1', rilasciata dalla CA '%2' il %3, scadrà il %4. E' mantenuta nel database XCA '%5' -+ La CRL XCA '%1', rilasciata dalla CA '%2' il %3, scadrà il %4. E' mantenuta nel database XCA '%5' - - - - pki_evp - - Failed to decrypt the key (bad password) -- Impossibile decrittare la chiave (password errata) -+ Impossibile decrittare la chiave (password errata) - - - Failed to decrypt the key (bad password) %1 -- Impossibile decrittare la chiave (password errata) %1 -+ Impossibile decrittare la chiave (password errata) %1 - - - Please enter the password to decrypt the private key. -- Prego inserire la password per decrittare la chiave privata. -+ Prego inserire la password per decrittare la chiave privata. - - - diff --git a/xca-2.4.0-mimeicons.patch b/xca-2.4.0-mimeicons.patch deleted file mode 100644 index f8398e3..0000000 --- a/xca-2.4.0-mimeicons.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -Naurp xca-2.4.0.orig/misc/xca.xml xca-2.4.0.new/misc/xca.xml ---- xca-2.4.0.orig/misc/xca.xml 2021-05-07 22:40:29.000000000 +0200 -+++ xca-2.4.0.new/misc/xca.xml 2021-11-13 17:09:16.478893271 +0100 -@@ -3,11 +3,11 @@ - - XCA database - -- -+ - - - XCA template - -- -+ - - diff --git a/xca-2.4.0-noclean.patch b/xca-2.4.0-noclean.patch deleted file mode 100644 index e754f9f..0000000 --- a/xca-2.4.0-noclean.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -Naurp xca-2.4.0.orig/Makefile xca-2.4.0.new/Makefile ---- xca-2.4.0.orig/Makefile 2021-05-07 22:40:29.000000000 +0200 -+++ xca-2.4.0.new/Makefile 2021-11-13 16:59:53.656274074 +0100 -@@ -69,7 +69,9 @@ PRINT=: - endif - export PRINT - --ifneq ($(TOPDIR), $(BUILD)) -+REALBUILD=$(shell realpath $(BUILD)) -+REALTOPDIR=$(shell realpath $(TOPDIR)) -+ifneq ($(REALTOPDIR), $(REALBUILD)) - do.ui: clean_topdir - clean_topdir: - $(MAKE) -C $(TOPDIR) clean diff --git a/xca-2.4.0-openssl3.patch b/xca-2.4.0-openssl3.patch deleted file mode 100644 index 7667d02..0000000 --- a/xca-2.4.0-openssl3.patch +++ /dev/null @@ -1,233 +0,0 @@ -diff -Naurp xca-2.4.0.orig/lib/pkcs11.cpp xca-2.4.0.new/lib/pkcs11.cpp ---- xca-2.4.0.orig/lib/pkcs11.cpp 2021-05-07 22:40:29.000000000 +0200 -+++ xca-2.4.0.new/lib/pkcs11.cpp 2021-11-13 02:58:27.866824246 +0100 -@@ -840,8 +840,7 @@ EVP_PKEY *pkcs11::getPrivateKey(EVP_PKEY - - switch (EVP_PKEY_type(keytype)) { - case EVP_PKEY_RSA: -- rsa = EVP_PKEY_get0_RSA(pub); -- rsa = RSAPublicKey_dup(rsa); -+ rsa = RSAPublicKey_dup(EVP_PKEY_get0_RSA(pub)); - openssl_error(); - if (!rsa_meth) { - #if OPENSSL_VERSION_NUMBER >= 0x1010000L -@@ -865,8 +864,7 @@ EVP_PKEY *pkcs11::getPrivateKey(EVP_PKEY - EVP_PKEY_assign_RSA(evp, rsa); - break; - case EVP_PKEY_DSA: -- dsa = EVP_PKEY_get0_DSA(pub); -- dsa = DSAparams_dup(dsa); -+ dsa = DSAparams_dup(EVP_PKEY_get0_DSA(pub)); - openssl_error(); - if (!dsa_meth) { - #if OPENSSL_VERSION_NUMBER >= 0x10100000L -@@ -889,8 +887,7 @@ EVP_PKEY *pkcs11::getPrivateKey(EVP_PKEY - break; - #if !defined(OPENSSL_NO_EC) && OPENSSL_VERSION_NUMBER >= 0x10100000L - case EVP_PKEY_EC: -- ec = EVP_PKEY_get0_EC_KEY(pub); -- ec = EC_KEY_dup(ec); -+ ec = EC_KEY_dup(EVP_PKEY_get0_EC_KEY(pub)); - openssl_error(); - if (!ec_key_meth) { - ec_key_meth = setup_ec_key_meth(); -diff -Naurp xca-2.4.0.orig/lib/pki_evp.cpp xca-2.4.0.new/lib/pki_evp.cpp ---- xca-2.4.0.orig/lib/pki_evp.cpp 2021-05-07 22:40:29.000000000 +0200 -+++ xca-2.4.0.new/lib/pki_evp.cpp 2021-11-13 03:00:39.279152488 +0100 -@@ -282,8 +282,8 @@ void pki_evp::fromPEMbyteArray(const QBy - static void search_ec_oid(EVP_PKEY *pkey) - { - #ifndef OPENSSL_NO_EC -- EC_KEY *ec; - EC_GROUP *builtin; -+ const EC_KEY *ec; - const EC_GROUP *ec_group; - - int keytype = EVP_PKEY_id(pkey); -@@ -498,7 +498,7 @@ void pki_evp::fload(const QString &fname - void pki_evp::fromData(const unsigned char *p, db_header_t *head) - { - int version, type, size; -- void *ptr = NULL; -+ const void *ptr = NULL; - - if (key) - EVP_PKEY_free(key); -@@ -518,8 +518,23 @@ void pki_evp::fromData(const unsigned ch - } - pki_openssl_error(); - -- if (key) -- ptr = EVP_PKEY_get0(key); -+ if (key) { -+ switch (EVP_PKEY_type(EVP_PKEY_id(key))) { -+ case EVP_PKEY_RSA: -+ ptr = EVP_PKEY_get0_RSA(key); -+ break; -+ case EVP_PKEY_DSA: -+ ptr = EVP_PKEY_get0_DSA(key); -+ break; -+#ifndef OPENSSL_NO_EX -+ case EVP_PKEY_EC: -+ ptr = EVP_PKEY_get0_EC_KEY(key); -+ break; -+#endif -+ default: -+ ptr = EVP_PKEY_get0(key); -+ } -+ } - if (!ptr) - throw errorEx(tr("Ignoring unsupported private key")); - -@@ -621,8 +636,8 @@ EVP_PKEY *pki_evp::legacyDecryptKey(QByt - - pki_openssl_error(); - if (EVP_PKEY_type(getKeyType()) == EVP_PKEY_RSA) { -- RSA *rsa = EVP_PKEY_get0_RSA(tmpkey); -- RSA_blinding_on(rsa, NULL); -+ const RSA *rsa = EVP_PKEY_get0_RSA(tmpkey); -+ RSA_blinding_on((RSA *) rsa, NULL); - } - myencKey.fill(0); - return tmpkey; -@@ -930,7 +945,7 @@ bool pki_evp::verify_priv(EVP_PKEY *pkey - EVP_MD_CTX_free(ctx); - #endif - if (EVP_PKEY_id(pkey) == EVP_PKEY_RSA && EVP_PKEY_isPrivKey(pkey)) { -- RSA *rsa = EVP_PKEY_get0_RSA(pkey); -+ const RSA *rsa = EVP_PKEY_get0_RSA(pkey); - if (RSA_check_key(rsa) != 1) - verify = false; - } -diff -Naurp xca-2.4.0.orig/lib/pki_key.cpp xca-2.4.0.new/lib/pki_key.cpp ---- xca-2.4.0.orig/lib/pki_key.cpp 2021-05-07 22:40:29.000000000 +0200 -+++ xca-2.4.0.new/lib/pki_key.cpp 2021-11-13 02:58:27.866824246 +0100 -@@ -197,7 +197,7 @@ QString pki_key::length() const - - if (EVP_PKEY_id(key) == EVP_PKEY_DSA) { - const BIGNUM *p = NULL; -- DSA *dsa = EVP_PKEY_get0_DSA(key); -+ const DSA *dsa = EVP_PKEY_get0_DSA(key); - if (dsa) - DSA_get0_pqg(dsa, &p, NULL, NULL); - dsa_unset = p == NULL; -@@ -299,7 +299,7 @@ QString pki_key::modulus() const - if (getKeyType() == EVP_PKEY_RSA) { - const BIGNUM *n = NULL; - -- RSA *rsa = EVP_PKEY_get0_RSA(key); -+ const RSA *rsa = EVP_PKEY_get0_RSA(key); - RSA_get0_key(rsa, &n, NULL, NULL); - return BN2QString(n); - } -@@ -310,7 +310,7 @@ QString pki_key::pubEx() const - { - if (getKeyType() == EVP_PKEY_RSA) { - const BIGNUM *e = NULL; -- RSA *rsa = EVP_PKEY_get0_RSA(key); -+ const RSA *rsa = EVP_PKEY_get0_RSA(key); - RSA_get0_key(rsa, NULL, &e, NULL); - return BN2QString(e); - } -@@ -321,7 +321,7 @@ QString pki_key::subprime() const - { - if (getKeyType() == EVP_PKEY_DSA) { - const BIGNUM *q = NULL; -- DSA *dsa = EVP_PKEY_get0_DSA(key); -+ const DSA *dsa = EVP_PKEY_get0_DSA(key); - if (dsa) - DSA_get0_pqg(dsa, NULL, &q, NULL); - return BN2QString(q); -@@ -333,7 +333,7 @@ QString pki_key::pubkey() const - { - if (getKeyType() == EVP_PKEY_DSA) { - const BIGNUM *pubkey = NULL; -- DSA *dsa = EVP_PKEY_get0_DSA(key); -+ const DSA *dsa = EVP_PKEY_get0_DSA(key); - if (dsa) - DSA_get0_key(dsa, &pubkey, NULL); - return BN2QString(pubkey); -@@ -766,7 +766,7 @@ QByteArray pki_key::SSH2publicQByteArray - txt = "ssh-rsa"; - ssh_key_QBA2data(txt, &data); - { -- RSA *rsa = EVP_PKEY_get0_RSA(key); -+ const RSA *rsa = EVP_PKEY_get0_RSA(key); - const BIGNUM *n, *e; - RSA_get0_key(rsa, &n, &e, NULL); - ssh_key_bn2data(e, &data); -@@ -777,7 +777,7 @@ QByteArray pki_key::SSH2publicQByteArray - txt = "ssh-dss"; - ssh_key_QBA2data(txt, &data); - { -- DSA *dsa = EVP_PKEY_get0_DSA(key); -+ const DSA *dsa = EVP_PKEY_get0_DSA(key); - const BIGNUM *p, *q, *g, *pubkey; - DSA_get0_pqg(dsa, &p, &q, &g); - DSA_get0_key(dsa, &pubkey, NULL); -diff -Naurp xca-2.4.0.orig/lib/pki_scard.cpp xca-2.4.0.new/lib/pki_scard.cpp ---- xca-2.4.0.orig/lib/pki_scard.cpp 2021-05-07 22:40:29.000000000 +0200 -+++ xca-2.4.0.new/lib/pki_scard.cpp 2021-11-13 03:02:20.379174056 +0100 -@@ -293,10 +293,10 @@ void pki_scard::deleteFromToken() - pk11_attlist pki_scard::objectAttributesNoId(EVP_PKEY *pk, bool priv) const - { - QByteArray ba; -- RSA *rsa; -- DSA *dsa; -+ const RSA *rsa; -+ const DSA *dsa; - #ifndef OPENSSL_NO_EC -- EC_KEY *ec; -+ const EC_KEY *ec; - #endif - const BIGNUM *n = NULL; - const BIGNUM *e = NULL; -@@ -401,10 +401,10 @@ int pki_scard::renameOnToken(const sloti - void pki_scard::store_token(const slotid &slot, EVP_PKEY *pkey) - { - QByteArray ba; -- RSA *rsa; -- DSA *dsa; -+ const RSA *rsa; -+ const DSA *dsa; - #ifndef OPENSSL_NO_EC -- EC_KEY *ec; -+ const EC_KEY *ec; - #endif - pk11_attlist pub_atts; - pk11_attlist priv_atts; -@@ -691,7 +691,7 @@ pki_scard::~pki_scard() - void pki_scard::fromData(const unsigned char *p, db_header_t *head ) - { - int version, size; -- void *ptr = NULL; -+ const void *ptr = NULL; - - size = head->len - sizeof(db_header_t); - version = head->version; -@@ -713,8 +713,23 @@ void pki_scard::fromData(const unsigned - - d2i(ba); - -- if (key) -- ptr = EVP_PKEY_get0(key); -+ if (key) { -+ switch (EVP_PKEY_type(EVP_PKEY_id(key))) { -+ case EVP_PKEY_RSA: -+ ptr = EVP_PKEY_get0_RSA(key); -+ break; -+ case EVP_PKEY_DSA: -+ ptr = EVP_PKEY_get0_DSA(key); -+ break; -+#ifndef OPENSSL_NO_EX -+ case EVP_PKEY_EC: -+ ptr = EVP_PKEY_get0_EC_KEY(key); -+ break; -+#endif -+ default: -+ ptr = EVP_PKEY_get0(key); -+ } -+ } - - if (!ptr) - throw errorEx(tr("Ignoring unsupported token key")); diff --git a/xca-2.5.0-README.IMPORTANT b/xca-2.5.0-README.IMPORTANT new file mode 100644 index 0000000..8e3f25a --- /dev/null +++ b/xca-2.5.0-README.IMPORTANT @@ -0,0 +1,27 @@ +When trying to use a private key when working on a database protected by +a password set by xca version < 2.0.0, version 2.5.0 might issue an error like: + +--- +The following error occurred: +(8pki_x509[]:foo) +error:0300009C:digital envelope routines::unsupported algorithm +error:068C0100:asn1 encoding routines::malloc failure +error:068C0100:asn1 encoding routines::malloc failure + +(pki_x509.cpp:574) +--- + +The database is therefore unusable as it is in xca 2.5.0 for any operation +involving some private key. + +The solution is to reset the database password with xca version 2.4.0 +(Extra --> Change Database password). The new password may be the same as +the old one. + +If some private keys have their own password, reset the latter the same +way (right click --> Change password). + +Once these operations have been performed, the database is ready for use with +xca version 2.5. + +See https://github.com/chris2511/xca/discussions/468. diff --git a/xca.spec b/xca.spec index 7d3652b..039c27b 100644 --- a/xca.spec +++ b/xca.spec @@ -3,17 +3,14 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 2.4.0 -Release: 5%{?dist} +Version: 2.5.0 +Release: 1%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz -Patch1: xca-2.4.0-openssl3.patch -Patch2: xca-2.4.0-noclean.patch -Patch3: xca-2.4.0-mimeicons.patch -Patch4: xca-2.4.0-lang-it.patch -Patch5: xca-2.4.0-lang-fr.patch +Source1: xca-2.5.0-README.IMPORTANT +BuildRequires: cmake BuildRequires: make BuildRequires: gcc-c++ BuildRequires: qt5-qtbase-devel @@ -50,24 +47,23 @@ format, portable across operating systems. #------------------------------------------------------------------------------- %autosetup -p 1 +cp '%{SOURCE1}' README.IMPORTANT #------------------------------------------------------------------------------- %build #------------------------------------------------------------------------------- -%configure CXXFLAGS='%{optflags}' \ - STRIP=: \ - LIBS='-Wl,-as-needed' -make %{?_smp_mflags} +export CXXFLAGS='%{optflags} -DDOCDIR=\"%{_docdir}/xca\"' +%cmake -DCMAKE_SHARED_LINKER_FLAGS="-Wl,--as-needed" +%cmake_build #------------------------------------------------------------------------------- %install #------------------------------------------------------------------------------- -make DESTDIR='%{buildroot}' \ - ICON_SIZES='16x16 32x32 48x48 64x64 128x128 256x256' install +%cmake_install # Do not include db statistics program and man. find '%{buildroot}' -name 'xca_db_stat*' -delete @@ -75,6 +71,10 @@ find '%{buildroot}' -name 'xca_db_stat*' -delete # Do not use pixmaps directory. rm -rf '%{buildroot}%{_datadir}/pixmaps' +# Reinstall documentation. +rm -rf '%{buildroot}%{_docdir}/xca'/* +mv '%{buildroot}%{_datadir}/xca/html' '%{buildroot}%{_docdir}/xca/' + # Install mime file types. install -d -m 755 '%{buildroot}%{_datadir}/mime/packages' install -p -m 644 misc/xca.xml '%{buildroot}%{_datadir}/mime/packages/' @@ -96,7 +96,7 @@ desktop-file-install --mode 0644 \ %files -f %{name}.lang #------------------------------------------------------------------------------- -%doc AUTHORS COPYRIGHT +%doc AUTHORS COPYRIGHT README.IMPORTANT %doc %{_docdir}/xca/* %{_bindir}/* %dir %{_datadir}/xca @@ -111,6 +111,14 @@ desktop-file-install --mode 0644 \ #------------------------------------------------------------------------------- %changelog +#------------------------------------------------------------------------------- + +* Fri Oct 6 2023 Patrick Monnerat 2.5.0-1 +- New upstream release. +- Build using cmake. +- Doc file "README.IMPORTANT" for needed passord reset. + https://github.com/chris2511/xca/issues/458#issuecomment-1740106691 + * Sat Jul 22 2023 Fedora Release Engineering - 2.4.0-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild @@ -123,8 +131,6 @@ desktop-file-install --mode 0644 \ * Sat Jan 22 2022 Fedora Release Engineering - 2.4.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild -#------------------------------------------------------------------------------- - * Sat Nov 13 2021 Patrick Monnerat 2.4.0-1 - New upstream release. - Patch "openssl3" for openssl version 3 compatibility. From b3f37b4db97bd6a4916cfeea19800816c702464a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Tue, 7 Nov 2023 15:58:28 +0100 Subject: [PATCH 58/72] Explicitly BuildRequire python3-sphinxcontrib-qthelp In preparation for making the sphinx -> sphinxcontrib.qthelp dependency optional, I have identified this package uses sphinxcontrib.qthelp and fails without it: [ 9%] Create context sensitive help /usr/bin/sphinx-build -q -b html /builddir/build/BUILD/xca-2.5.0/redhat-linux-build/doc/rst /builddir/build/BUILD/xca-2.5.0/redhat-linux-build/doc/html /usr/bin/sphinx-build -q -b qthelp /builddir/build/BUILD/xca-2.5.0/redhat-linux-build/doc/rst /builddir/build/BUILD/xca-2.5.0/redhat-linux-build/doc/qthelp Sphinx error: Builder name qthelp not registered or available through entry point --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 039c27b..9fccd9c 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.5.0 -Release: 1%{?dist} +Release: 2%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -20,6 +20,7 @@ BuildRequires: openssl-devel BuildRequires: xdg-utils BuildRequires: libtool-ltdl-devel BuildRequires: python3-sphinx +BuildRequires: python3-sphinxcontrib-qthelp Requires: hicolor-icon-theme @@ -112,6 +113,8 @@ desktop-file-install --mode 0644 \ #------------------------------------------------------------------------------- %changelog #------------------------------------------------------------------------------- +* Tue Nov 07 2023 Miro Hrončok - 2.5.0-2 +- Explicitly BuildRequire python3-sphinxcontrib-qthelp * Fri Oct 6 2023 Patrick Monnerat 2.5.0-1 - New upstream release. From e4c2b9f8bf34889b67201cf7dd32dc7596836f16 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Thu, 25 Jan 2024 08:35:31 +0100 Subject: [PATCH 59/72] Fix crashes Patch "pastekey" fixes a crash pasting an encrypted private key. Patch "revokedel" fixes a freeze when deleting a certificate. Patch "delete_after_revoke" fixes a crash deleting+revoking a certificate. --- xca-2.5-delete_after_revoke.patch | 23 ++++++++ xca-2.5-pastekey.patch | 90 +++++++++++++++++++++++++++++++ xca-2.5-revokedel.patch | 46 ++++++++++++++++ xca.spec | 15 +++++- 4 files changed, 173 insertions(+), 1 deletion(-) create mode 100644 xca-2.5-delete_after_revoke.patch create mode 100644 xca-2.5-pastekey.patch create mode 100644 xca-2.5-revokedel.patch diff --git a/xca-2.5-delete_after_revoke.patch b/xca-2.5-delete_after_revoke.patch new file mode 100644 index 0000000..45d33a8 --- /dev/null +++ b/xca-2.5-delete_after_revoke.patch @@ -0,0 +1,23 @@ +diff -Naurp xca-2.5.0.orig/lib/db_x509.cpp xca-2.5.0.new/lib/db_x509.cpp +--- xca-2.5.0.orig/lib/db_x509.cpp 2023-09-24 20:22:03.000000000 +0200 ++++ xca-2.5.0.new/lib/db_x509.cpp 2024-01-22 08:22:11.704982550 +0100 +@@ -768,13 +768,15 @@ void db_x509::certRenewal(QModelIndexLis + newcert->sign(signkey, oldcert->getDigest()); + newcert = dynamic_cast(insert(newcert)); + createSuccess(newcert); +- +- // delete old certificate if requested +- if (doReplace) +- deletePKI(idx); + } + if (doRevoke) + do_revoke(indexes, r); ++ ++ // delete old certificates if requested ++ if (doReplace) ++ foreach(idx, indexes) ++ if (fromIndex(idx)) ++ deletePKI(idx); + } + catch (errorEx &err) { + XCA_ERROR(err); diff --git a/xca-2.5-pastekey.patch b/xca-2.5-pastekey.patch new file mode 100644 index 0000000..78205e3 --- /dev/null +++ b/xca-2.5-pastekey.patch @@ -0,0 +1,90 @@ +From d29d55ab20509d3e7d279f1fcd85374b5fecdcd8 Mon Sep 17 00:00:00 2001 +From: Christian Hohnstaedt +Date: Thu, 2 Nov 2023 14:06:12 +0100 +Subject: [PATCH] Close #477: paste an encrypted private key results in a crash + +Improve error- and password handling: + - Also identify: (ERR_LIB_PROV:PROV_R_BAD_DECRYPT) as password error. + - Do not use the OpenSSL internal bitfield definition (0xff000fff) + but the official API: ERR_GET_LIB(), ERR_GET_REASON() + Especially ERR_LIB_OFFSET changed from 24 to 23 in Openssl 3.0.0 + - First check for "Cancel", then for invalid password to avoid + an "Invalid Password" message after aborting the password input dialog. +--- + lib/pki_evp.cpp | 16 +++++++++++----- + lib/pki_multi.cpp | 3 +++ + 2 files changed, 14 insertions(+), 5 deletions(-) + +diff --git a/lib/pki_evp.cpp b/lib/pki_evp.cpp +index d2097ed2..54846d5c 100644 +--- a/lib/pki_evp.cpp ++++ b/lib/pki_evp.cpp +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + + Passwd pki_evp::passwd; + +@@ -213,10 +214,14 @@ pki_evp::pki_evp(EVP_PKEY *pkey) + + bool pki_evp::openssl_pw_error() const + { +- switch (ERR_peek_error() & 0xff000fff) { ++ unsigned long e = ERR_peek_error(); ++ ++ switch (ERR_PACK(ERR_GET_LIB(e), 0, ERR_GET_REASON(e))) { + case ERR_PACK(ERR_LIB_PEM, 0, PEM_R_BAD_DECRYPT): + case ERR_PACK(ERR_LIB_PEM, 0, PEM_R_BAD_PASSWORD_READ): + case ERR_PACK(ERR_LIB_EVP, 0, EVP_R_BAD_DECRYPT): ++ case ERR_PACK(ERR_LIB_PROV, 0, PROV_R_BAD_DECRYPT): ++ case ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_PKCS12_CIPHERFINAL_ERROR): + pki_ign_openssl_error(); + return true; + } +@@ -230,14 +235,15 @@ void pki_evp::fromPEMbyteArray(const QByteArray &ba, const QString &name) + tr("Please enter the password to decrypt the private key %1.") + .arg(name)); + pkey = load_ssh_ed25519_privatekey(ba, p); ++ pki_ign_openssl_error(); + + while (!pkey) { + pkey = PEM_read_bio_PrivateKey(BioByteArray(ba).ro(), NULL, + PwDialogCore::pwCallback, &p); +- if (openssl_pw_error()) +- XCA_PASSWD_ERROR(); + if (p.getResult() != pw_ok) + throw p.getResult(); ++ if (openssl_pw_error()) ++ XCA_PASSWD_ERROR(); + if (pki_ign_openssl_error()) + break; + } +@@ -396,10 +402,10 @@ void pki_evp::fload(const QString &fname) + do { + pkey = PEM_read_bio_PrivateKey(BioByteArray(ba).ro(), + NULL, cb, &p); +- if (openssl_pw_error()) +- XCA_PASSWD_ERROR(); + if (p.getResult() != pw_ok) + throw p.getResult(); ++ if (openssl_pw_error()) ++ XCA_PASSWD_ERROR(); + if (pki_ign_openssl_error()) + break; + } while (!pkey); +diff --git a/lib/pki_multi.cpp b/lib/pki_multi.cpp +index 1ed81035..f3c6332e 100644 +--- a/lib/pki_multi.cpp ++++ b/lib/pki_multi.cpp +@@ -127,6 +127,9 @@ void pki_multi::fromPEMbyteArray(const QByteArray &_ba, const QString &name) + XCA_ERROR(err); + delete item; + item = NULL; ++ } catch (...) { ++ delete item; ++ item = NULL; + } + ba.remove(0, sizeof BEGIN -1); + } diff --git a/xca-2.5-revokedel.patch b/xca-2.5-revokedel.patch new file mode 100644 index 0000000..c3d3169 --- /dev/null +++ b/xca-2.5-revokedel.patch @@ -0,0 +1,46 @@ +From 43e1b336d23e7512b246da142c78307baad4cbff Mon Sep 17 00:00:00 2001 +From: Christian Hohnstaedt +Date: Mon, 30 Oct 2023 01:11:30 +0100 +Subject: [PATCH] Fix crash when deleting CA certificates + +If a CA certificate is deleted, all issued certificates must be moved to +an other issuer or the top-level list. + +The CA cert will be taken from the model together with the issued certs +first. Then the issued certs are re-inserted. +To make this work correctly, the issuer must be erased from the issued certs +to be interpreted as insertion and not as move. +--- + lib/db_base.cpp | 2 +- + lib/pki_base.cpp | 5 ++++- + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/lib/db_base.cpp b/lib/db_base.cpp +index 4d7cc87d..a2e4250f 100644 +--- a/lib/db_base.cpp ++++ b/lib/db_base.cpp +@@ -302,7 +302,7 @@ void db_base::insertChild(pki_base *child, pki_base *parent) + if (parent != treeItem && treeview) + idx = index(parent); + +- if (curr_parent) { // && curr_parent != parent) ++ if (curr_parent) { + int row = curr_parent->indexOf(child); + beginMoveRows(index(curr_parent), row, row, idx, 0); + curr_parent->takeChild(child); +diff --git a/lib/pki_base.cpp b/lib/pki_base.cpp +index 62ca3ac5..77722cb2 100644 +--- a/lib/pki_base.cpp ++++ b/lib/pki_base.cpp +@@ -269,7 +269,10 @@ QList pki_base::getChildItems() const + + pki_base *pki_base::takeFirst() + { +- return childItems.takeFirst(); ++ pki_base *pki = childItems.takeFirst(); ++ if (pki) ++ pki->setParent(nullptr); ++ return pki; + } + + QString pki_base::pki_source_name() const diff --git a/xca.spec b/xca.spec index 9fccd9c..9860c08 100644 --- a/xca.spec +++ b/xca.spec @@ -4,12 +4,16 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.5.0 -Release: 2%{?dist} +Release: 3%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz Source1: xca-2.5.0-README.IMPORTANT +Patch1: xca-2.5-pastekey.patch +Patch2: xca-2.5-revokedel.patch +Patch3: xca-2.5-delete_after_revoke.patch + BuildRequires: cmake BuildRequires: make BuildRequires: gcc-c++ @@ -113,6 +117,15 @@ desktop-file-install --mode 0644 \ #------------------------------------------------------------------------------- %changelog #------------------------------------------------------------------------------- + +* Mon Jan 22 2024 Patrick Monnerat 2.5.0-3 +- Patch "pastekey" fixes a crash pasting an encrypted private key. + https://github.com/chris2511/xca/commit/d29d55a +- Patch "revokedel" fixes a freeze when deleting a certificate. + https://github.com/chris2511/xca/commit/43e1b33 +- Patch "delete_after_revoke" fixes a crash deleting+revoking a certificate. + https://bugzilla.redhat.com/show_bug.cgi?id=2259477 + * Tue Nov 07 2023 Miro Hrončok - 2.5.0-2 - Explicitly BuildRequire python3-sphinxcontrib-qthelp From c858aac3c377c8c47854f034749f7ca28613e29f Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Sun, 17 Mar 2024 15:15:14 +0100 Subject: [PATCH 60/72] New upstream release. --- .gitignore | 1 + sources | 2 +- xca-2.5-delete_after_revoke.patch | 23 -------- xca-2.5-pastekey.patch | 90 ------------------------------- xca-2.5-revokedel.patch | 46 ---------------- xca.spec | 12 ++--- 6 files changed, 8 insertions(+), 166 deletions(-) delete mode 100644 xca-2.5-delete_after_revoke.patch delete mode 100644 xca-2.5-pastekey.patch delete mode 100644 xca-2.5-revokedel.patch diff --git a/.gitignore b/.gitignore index c51d13f..c0f530c 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ xca-0.8.1.tar.gz /xca-2.3.0.tar.gz /xca-2.4.0.tar.gz /xca-2.5.0.tar.gz +/xca-2.6.0.tar.gz diff --git a/sources b/sources index c48f1e0..e48068e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xca-2.5.0.tar.gz) = 36b9b97ff0649934fbe78e38048e75883555aab5d86ee2cbd629f9789326d16463f182cf0bbcc76b1ac8f631b24fa187f1b64c466e04de010724ea5f9ebfa11e +SHA512 (xca-2.6.0.tar.gz) = 0904df3095cd1cce3c1d19320f207f1997378776728767201a791680d7b937fd947bfdb887cbc7dd4d9ffa18178807cba7844245cf65c84591af7af287ed531e diff --git a/xca-2.5-delete_after_revoke.patch b/xca-2.5-delete_after_revoke.patch deleted file mode 100644 index 45d33a8..0000000 --- a/xca-2.5-delete_after_revoke.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -Naurp xca-2.5.0.orig/lib/db_x509.cpp xca-2.5.0.new/lib/db_x509.cpp ---- xca-2.5.0.orig/lib/db_x509.cpp 2023-09-24 20:22:03.000000000 +0200 -+++ xca-2.5.0.new/lib/db_x509.cpp 2024-01-22 08:22:11.704982550 +0100 -@@ -768,13 +768,15 @@ void db_x509::certRenewal(QModelIndexLis - newcert->sign(signkey, oldcert->getDigest()); - newcert = dynamic_cast(insert(newcert)); - createSuccess(newcert); -- -- // delete old certificate if requested -- if (doReplace) -- deletePKI(idx); - } - if (doRevoke) - do_revoke(indexes, r); -+ -+ // delete old certificates if requested -+ if (doReplace) -+ foreach(idx, indexes) -+ if (fromIndex(idx)) -+ deletePKI(idx); - } - catch (errorEx &err) { - XCA_ERROR(err); diff --git a/xca-2.5-pastekey.patch b/xca-2.5-pastekey.patch deleted file mode 100644 index 78205e3..0000000 --- a/xca-2.5-pastekey.patch +++ /dev/null @@ -1,90 +0,0 @@ -From d29d55ab20509d3e7d279f1fcd85374b5fecdcd8 Mon Sep 17 00:00:00 2001 -From: Christian Hohnstaedt -Date: Thu, 2 Nov 2023 14:06:12 +0100 -Subject: [PATCH] Close #477: paste an encrypted private key results in a crash - -Improve error- and password handling: - - Also identify: (ERR_LIB_PROV:PROV_R_BAD_DECRYPT) as password error. - - Do not use the OpenSSL internal bitfield definition (0xff000fff) - but the official API: ERR_GET_LIB(), ERR_GET_REASON() - Especially ERR_LIB_OFFSET changed from 24 to 23 in Openssl 3.0.0 - - First check for "Cancel", then for invalid password to avoid - an "Invalid Password" message after aborting the password input dialog. ---- - lib/pki_evp.cpp | 16 +++++++++++----- - lib/pki_multi.cpp | 3 +++ - 2 files changed, 14 insertions(+), 5 deletions(-) - -diff --git a/lib/pki_evp.cpp b/lib/pki_evp.cpp -index d2097ed2..54846d5c 100644 ---- a/lib/pki_evp.cpp -+++ b/lib/pki_evp.cpp -@@ -22,6 +22,7 @@ - #include - #include - #include -+#include - - Passwd pki_evp::passwd; - -@@ -213,10 +214,14 @@ pki_evp::pki_evp(EVP_PKEY *pkey) - - bool pki_evp::openssl_pw_error() const - { -- switch (ERR_peek_error() & 0xff000fff) { -+ unsigned long e = ERR_peek_error(); -+ -+ switch (ERR_PACK(ERR_GET_LIB(e), 0, ERR_GET_REASON(e))) { - case ERR_PACK(ERR_LIB_PEM, 0, PEM_R_BAD_DECRYPT): - case ERR_PACK(ERR_LIB_PEM, 0, PEM_R_BAD_PASSWORD_READ): - case ERR_PACK(ERR_LIB_EVP, 0, EVP_R_BAD_DECRYPT): -+ case ERR_PACK(ERR_LIB_PROV, 0, PROV_R_BAD_DECRYPT): -+ case ERR_PACK(ERR_LIB_PKCS12, 0, PKCS12_R_PKCS12_CIPHERFINAL_ERROR): - pki_ign_openssl_error(); - return true; - } -@@ -230,14 +235,15 @@ void pki_evp::fromPEMbyteArray(const QByteArray &ba, const QString &name) - tr("Please enter the password to decrypt the private key %1.") - .arg(name)); - pkey = load_ssh_ed25519_privatekey(ba, p); -+ pki_ign_openssl_error(); - - while (!pkey) { - pkey = PEM_read_bio_PrivateKey(BioByteArray(ba).ro(), NULL, - PwDialogCore::pwCallback, &p); -- if (openssl_pw_error()) -- XCA_PASSWD_ERROR(); - if (p.getResult() != pw_ok) - throw p.getResult(); -+ if (openssl_pw_error()) -+ XCA_PASSWD_ERROR(); - if (pki_ign_openssl_error()) - break; - } -@@ -396,10 +402,10 @@ void pki_evp::fload(const QString &fname) - do { - pkey = PEM_read_bio_PrivateKey(BioByteArray(ba).ro(), - NULL, cb, &p); -- if (openssl_pw_error()) -- XCA_PASSWD_ERROR(); - if (p.getResult() != pw_ok) - throw p.getResult(); -+ if (openssl_pw_error()) -+ XCA_PASSWD_ERROR(); - if (pki_ign_openssl_error()) - break; - } while (!pkey); -diff --git a/lib/pki_multi.cpp b/lib/pki_multi.cpp -index 1ed81035..f3c6332e 100644 ---- a/lib/pki_multi.cpp -+++ b/lib/pki_multi.cpp -@@ -127,6 +127,9 @@ void pki_multi::fromPEMbyteArray(const QByteArray &_ba, const QString &name) - XCA_ERROR(err); - delete item; - item = NULL; -+ } catch (...) { -+ delete item; -+ item = NULL; - } - ba.remove(0, sizeof BEGIN -1); - } diff --git a/xca-2.5-revokedel.patch b/xca-2.5-revokedel.patch deleted file mode 100644 index c3d3169..0000000 --- a/xca-2.5-revokedel.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 43e1b336d23e7512b246da142c78307baad4cbff Mon Sep 17 00:00:00 2001 -From: Christian Hohnstaedt -Date: Mon, 30 Oct 2023 01:11:30 +0100 -Subject: [PATCH] Fix crash when deleting CA certificates - -If a CA certificate is deleted, all issued certificates must be moved to -an other issuer or the top-level list. - -The CA cert will be taken from the model together with the issued certs -first. Then the issued certs are re-inserted. -To make this work correctly, the issuer must be erased from the issued certs -to be interpreted as insertion and not as move. ---- - lib/db_base.cpp | 2 +- - lib/pki_base.cpp | 5 ++++- - 2 files changed, 5 insertions(+), 2 deletions(-) - -diff --git a/lib/db_base.cpp b/lib/db_base.cpp -index 4d7cc87d..a2e4250f 100644 ---- a/lib/db_base.cpp -+++ b/lib/db_base.cpp -@@ -302,7 +302,7 @@ void db_base::insertChild(pki_base *child, pki_base *parent) - if (parent != treeItem && treeview) - idx = index(parent); - -- if (curr_parent) { // && curr_parent != parent) -+ if (curr_parent) { - int row = curr_parent->indexOf(child); - beginMoveRows(index(curr_parent), row, row, idx, 0); - curr_parent->takeChild(child); -diff --git a/lib/pki_base.cpp b/lib/pki_base.cpp -index 62ca3ac5..77722cb2 100644 ---- a/lib/pki_base.cpp -+++ b/lib/pki_base.cpp -@@ -269,7 +269,10 @@ QList pki_base::getChildItems() const - - pki_base *pki_base::takeFirst() - { -- return childItems.takeFirst(); -+ pki_base *pki = childItems.takeFirst(); -+ if (pki) -+ pki->setParent(nullptr); -+ return pki; - } - - QString pki_base::pki_source_name() const diff --git a/xca.spec b/xca.spec index 9860c08..af855bf 100644 --- a/xca.spec +++ b/xca.spec @@ -3,17 +3,13 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 2.5.0 -Release: 3%{?dist} +Version: 2.6.0 +Release: 1%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz Source1: xca-2.5.0-README.IMPORTANT -Patch1: xca-2.5-pastekey.patch -Patch2: xca-2.5-revokedel.patch -Patch3: xca-2.5-delete_after_revoke.patch - BuildRequires: cmake BuildRequires: make BuildRequires: gcc-c++ @@ -111,6 +107,7 @@ desktop-file-install --mode 0644 \ %{_datadir}/mime/packages/%{name}.* %{_datadir}/applications/* %{_datadir}/bash-completion/ +%{_metainfodir}/* %attr(0644, root, root) %{_mandir}/*/* @@ -118,6 +115,9 @@ desktop-file-install --mode 0644 \ %changelog #------------------------------------------------------------------------------- +* Sun Mar 17 2024 Patrick Monnerat 2.6.0-1 +- New upstream release. + * Mon Jan 22 2024 Patrick Monnerat 2.5.0-3 - Patch "pastekey" fixes a crash pasting an encrypted private key. https://github.com/chris2511/xca/commit/d29d55a From 9f6c55a1ff23adb7d7c883f420f8a77e4e520232 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Mon, 6 May 2024 11:29:15 +0200 Subject: [PATCH 61/72] Fix application icon --- xca.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/xca.spec b/xca.spec index af855bf..57c0b47 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.6.0 -Release: 1%{?dist} +Release: 2%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -86,7 +86,6 @@ desktop-file-install --mode 0644 \ --delete-original \ --add-mime-type application/x-xca-database \ --remove-category QT \ - --set-icon=xca \ '%{buildroot}%{_datadir}/applications/xca.desktop' # Tag translation files. @@ -115,6 +114,10 @@ desktop-file-install --mode 0644 \ %changelog #------------------------------------------------------------------------------- +* Mon May 6 2024 Patrick Monnerat 2.6.0-2 +- Fix application icon. + https://bugzilla.redhat.com/show_bug.cgi?id=2279161 + * Sun Mar 17 2024 Patrick Monnerat 2.6.0-1 - New upstream release. From c261cc9651254bc3dc1afae4a7707104bcd68d2a Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 20 Jul 2024 09:45:48 +0000 Subject: [PATCH 62/72] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 57c0b47..f0ceb75 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.6.0 -Release: 2%{?dist} +Release: 3%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -112,6 +112,9 @@ desktop-file-install --mode 0644 \ #------------------------------------------------------------------------------- %changelog +* Sat Jul 20 2024 Fedora Release Engineering - 2.6.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + #------------------------------------------------------------------------------- * Mon May 6 2024 Patrick Monnerat 2.6.0-2 From c190c0e58fbb100cd5c01aca2d6fb6e33e6651b7 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Tue, 23 Jul 2024 08:28:20 +0200 Subject: [PATCH 63/72] BR openssl-devel-engine for Fedora >= 41. --- xca.spec | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/xca.spec b/xca.spec index f0ceb75..a201c67 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.6.0 -Release: 3%{?dist} +Release: 4%{?dist} License: BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz @@ -17,6 +17,9 @@ BuildRequires: qt5-qtbase-devel BuildRequires: qt5-qttools-devel BuildRequires: qt5-linguist BuildRequires: openssl-devel +%if 0%{?fedora} >= 41 +BuildRequires: openssl-devel-engine +%endif BuildRequires: xdg-utils BuildRequires: libtool-ltdl-devel BuildRequires: python3-sphinx @@ -112,11 +115,14 @@ desktop-file-install --mode 0644 \ #------------------------------------------------------------------------------- %changelog +#------------------------------------------------------------------------------- + +* Tue Jul 23 2024 Patrick Monnerat 2.6.0-4 +- BR openssl-devel-engine for Fedora >= 41. + * Sat Jul 20 2024 Fedora Release Engineering - 2.6.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild -#------------------------------------------------------------------------------- - * Mon May 6 2024 Patrick Monnerat 2.6.0-2 - Fix application icon. https://bugzilla.redhat.com/show_bug.cgi?id=2279161 From cee503e376d7c7ac60a5e2e58a444c69fd0ea6d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Such=C3=BD?= Date: Wed, 4 Sep 2024 22:50:31 +0200 Subject: [PATCH 64/72] convert license to SPDX This is part of https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_4 --- xca.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/xca.spec b/xca.spec index a201c67..3aab7e2 100644 --- a/xca.spec +++ b/xca.spec @@ -4,8 +4,9 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.6.0 -Release: 4%{?dist} -License: BSD +Release: 5%{?dist} +# Automatically converted from old format: BSD - review is highly recommended. +License: LicenseRef-Callaway-BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz Source1: xca-2.5.0-README.IMPORTANT @@ -117,6 +118,9 @@ desktop-file-install --mode 0644 \ %changelog #------------------------------------------------------------------------------- +* Wed Sep 4 2024 Miroslav Suchý - 2.6.0-5 +- convert license to SPDX + * Tue Jul 23 2024 Patrick Monnerat 2.6.0-4 - BR openssl-devel-engine for Fedora >= 41. From a649da8913c7761d0d05cb79056211f8fdbf26e7 Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Fri, 6 Sep 2024 12:48:02 +0200 Subject: [PATCH 65/72] New upstream release. --- .gitignore | 1 + sources | 2 +- xca-2.5.0-README.IMPORTANT | 5 +++-- xca.spec | 7 +++++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index c0f530c..b2972f3 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ xca-0.8.1.tar.gz /xca-2.4.0.tar.gz /xca-2.5.0.tar.gz /xca-2.6.0.tar.gz +/xca-2.7.0.tar.gz diff --git a/sources b/sources index e48068e..18e5652 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xca-2.6.0.tar.gz) = 0904df3095cd1cce3c1d19320f207f1997378776728767201a791680d7b937fd947bfdb887cbc7dd4d9ffa18178807cba7844245cf65c84591af7af287ed531e +SHA512 (xca-2.7.0.tar.gz) = 33b19c43b55077b7508420c73d60f9c8c6969d3ab7a9f80fea75ec7b089f7cb44bc8ddccf9d3c1f8d064b877dcb15183f7875b717591972cdae8c67513c4cb16 diff --git a/xca-2.5.0-README.IMPORTANT b/xca-2.5.0-README.IMPORTANT index 8e3f25a..f65ad65 100644 --- a/xca-2.5.0-README.IMPORTANT +++ b/xca-2.5.0-README.IMPORTANT @@ -1,5 +1,6 @@ When trying to use a private key when working on a database protected by -a password set by xca version < 2.0.0, version 2.5.0 might issue an error like: +a password set by xca version < 2.0.0, version 2.5.0 and above might issue an +error like: --- The following error occurred: @@ -22,6 +23,6 @@ If some private keys have their own password, reset the latter the same way (right click --> Change password). Once these operations have been performed, the database is ready for use with -xca version 2.5. +xca version >= 2.5. See https://github.com/chris2511/xca/discussions/468. diff --git a/xca.spec b/xca.spec index 3aab7e2..bd43605 100644 --- a/xca.spec +++ b/xca.spec @@ -3,8 +3,8 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 2.6.0 -Release: 5%{?dist} +Version: 2.7.0 +Release: 1%{?dist} # Automatically converted from old format: BSD - review is highly recommended. License: LicenseRef-Callaway-BSD URL: https://hohnstaedt.de/xca/ @@ -118,6 +118,9 @@ desktop-file-install --mode 0644 \ %changelog #------------------------------------------------------------------------------- +* Fri Sep 6 2024 Patrick Monnerat 2.7.0-1 +- New upstream release. + * Wed Sep 4 2024 Miroslav Suchý - 2.6.0-5 - convert license to SPDX From de9e3ec6fd0e28e69d6d18238741dab5b618e6b1 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 19 Jan 2025 15:29:03 +0000 Subject: [PATCH 66/72] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index bd43605..e633a37 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.7.0 -Release: 1%{?dist} +Release: 2%{?dist} # Automatically converted from old format: BSD - review is highly recommended. License: LicenseRef-Callaway-BSD URL: https://hohnstaedt.de/xca/ @@ -116,6 +116,9 @@ desktop-file-install --mode 0644 \ #------------------------------------------------------------------------------- %changelog +* Sun Jan 19 2025 Fedora Release Engineering - 2.7.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + #------------------------------------------------------------------------------- * Fri Sep 6 2024 Patrick Monnerat 2.7.0-1 From d855066634ca74a146a920e2200485aa487f75d8 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 25 Jul 2025 20:39:23 +0000 Subject: [PATCH 67/72] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index e633a37..e812e59 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.7.0 -Release: 2%{?dist} +Release: 3%{?dist} # Automatically converted from old format: BSD - review is highly recommended. License: LicenseRef-Callaway-BSD URL: https://hohnstaedt.de/xca/ @@ -116,6 +116,9 @@ desktop-file-install --mode 0644 \ #------------------------------------------------------------------------------- %changelog +* Fri Jul 25 2025 Fedora Release Engineering - 2.7.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Sun Jan 19 2025 Fedora Release Engineering - 2.7.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From 1d334f950acb143ccefd136cc733a8d40b0c1fb2 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Sun, 31 Aug 2025 22:50:01 -0400 Subject: [PATCH 68/72] Update to 2.9.0 --- .gitignore | 1 + sources | 2 +- xca.spec | 44 ++++++++++++++++++++++++-------------------- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index b2972f3..ecb192a 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ xca-0.8.1.tar.gz /xca-2.5.0.tar.gz /xca-2.6.0.tar.gz /xca-2.7.0.tar.gz +/xca-2.9.0.tar.gz diff --git a/sources b/sources index 18e5652..fae6ef5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xca-2.7.0.tar.gz) = 33b19c43b55077b7508420c73d60f9c8c6969d3ab7a9f80fea75ec7b089f7cb44bc8ddccf9d3c1f8d064b877dcb15183f7875b717591972cdae8c67513c4cb16 +SHA512 (xca-2.9.0.tar.gz) = e635b83668d0053acb1ad5a8a20a2a1854de90a1e2a8806ecd38e83528d17bc87042d44fcea0f75f2e17df1ed135cc473449547fe273e7e3ea1fe175a4ddf054 diff --git a/xca.spec b/xca.spec index e812e59..5fc0edf 100644 --- a/xca.spec +++ b/xca.spec @@ -3,8 +3,8 @@ Summary: Graphical X.509 certificate management tool Name: xca -Version: 2.7.0 -Release: 3%{?dist} +Version: 2.9.0 +Release: 1%{?dist} # Automatically converted from old format: BSD - review is highly recommended. License: LicenseRef-Callaway-BSD URL: https://hohnstaedt.de/xca/ @@ -12,25 +12,28 @@ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEAS Source1: xca-2.5.0-README.IMPORTANT BuildRequires: cmake -BuildRequires: make BuildRequires: gcc-c++ -BuildRequires: qt5-qtbase-devel -BuildRequires: qt5-qttools-devel -BuildRequires: qt5-linguist +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Widgets) +BuildRequires: cmake(Qt6Sql) +BuildRequires: cmake(Qt6Help) +BuildRequires: cmake(Qt6LinguistTools) +BuildRequires: cmake(Qt6Test) BuildRequires: openssl-devel %if 0%{?fedora} >= 41 BuildRequires: openssl-devel-engine %endif -BuildRequires: xdg-utils +BuildRequires: desktop-file-utils +BuildRequires: libappstream-glib BuildRequires: libtool-ltdl-devel BuildRequires: python3-sphinx BuildRequires: python3-sphinxcontrib-qthelp Requires: hicolor-icon-theme -Suggests: qt5-qtbase-mysql -Suggests: qt5-qtbase-postgresql -Suggests: qt5-qtbase-odbc +Suggests: qt6-qtbase-mysql +Suggests: qt6-qtbase-postgresql +Suggests: qt6-qtbase-odbc %description @@ -84,13 +87,9 @@ mv '%{buildroot}%{_datadir}/xca/html' '%{buildroot}%{_docdir}/xca/' install -d -m 755 '%{buildroot}%{_datadir}/mime/packages' install -p -m 644 misc/xca.xml '%{buildroot}%{_datadir}/mime/packages/' -# Install desktop application file. -desktop-file-install --mode 0644 \ - --dir '%{buildroot}%{_datadir}/applications' \ - --delete-original \ - --add-mime-type application/x-xca-database \ - --remove-category QT \ - '%{buildroot}%{_datadir}/applications/xca.desktop' +# Validate desktop files. +desktop-file-validate %{buildroot}%{_datadir}/applications/de.hohnstaedt.xca.desktop +appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/de.hohnstaedt.xca.metainfo.xml # Tag translation files. %find_lang '%{name}' --with-qt @@ -102,20 +101,25 @@ desktop-file-install --mode 0644 \ %doc AUTHORS COPYRIGHT README.IMPORTANT %doc %{_docdir}/xca/* -%{_bindir}/* +%{_bindir}/xca %dir %{_datadir}/xca %{_datadir}/xca/*.txt %{_datadir}/xca/*.xca %{_datadir}/icons/*/*/*/*.png %{_datadir}/mime/packages/%{name}.* -%{_datadir}/applications/* +%{_datadir}/applications/de.hohnstaedt.xca.desktop %{_datadir}/bash-completion/ -%{_metainfodir}/* +%{_metainfodir}/de.hohnstaedt.xca.metainfo.xml %attr(0644, root, root) %{_mandir}/*/* +# template, contains no translations or language code +%exclude %{_datadir}/xca/i18n/xca.qm #------------------------------------------------------------------------------- %changelog +* Mon Sep 01 2025 Yaakov Selkowitz - 2.9.0-1 +- Update to 2.9.0 + * Fri Jul 25 2025 Fedora Release Engineering - 2.7.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild From ac6e7c196cd19a8e9200e80988fac1be7d4361f2 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 17 Jan 2026 20:29:14 +0000 Subject: [PATCH 69/72] Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 5fc0edf..068f316 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.9.0 -Release: 1%{?dist} +Release: 2%{?dist} # Automatically converted from old format: BSD - review is highly recommended. License: LicenseRef-Callaway-BSD URL: https://hohnstaedt.de/xca/ @@ -117,6 +117,9 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/de.hohnstaedt. #------------------------------------------------------------------------------- %changelog +* Sat Jan 17 2026 Fedora Release Engineering - 2.9.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + * Mon Sep 01 2025 Yaakov Selkowitz - 2.9.0-1 - Update to 2.9.0 From 5fb38df5757096166d585f9d6e22eac8870ef0b9 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Fri, 12 Jun 2026 20:07:25 -0400 Subject: [PATCH 70/72] Rebuilt for openssl 4.0 --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index 068f316..d9193d8 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.9.0 -Release: 2%{?dist} +Release: 3%{?dist} # Automatically converted from old format: BSD - review is highly recommended. License: LicenseRef-Callaway-BSD URL: https://hohnstaedt.de/xca/ @@ -117,6 +117,9 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/de.hohnstaedt. #------------------------------------------------------------------------------- %changelog +* Sat Jun 13 2026 Yaakov Selkowitz - 2.9.0-3 +- Rebuilt for openssl 4.0 + * Sat Jan 17 2026 Fedora Release Engineering - 2.9.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild From 95cf7629c8ab037c0311fd3bee56fa59da588b33 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 17 Jul 2026 09:02:38 +0000 Subject: [PATCH 71/72] Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild --- xca.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xca.spec b/xca.spec index d9193d8..af9321f 100644 --- a/xca.spec +++ b/xca.spec @@ -4,7 +4,7 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.9.0 -Release: 3%{?dist} +Release: 4%{?dist} # Automatically converted from old format: BSD - review is highly recommended. License: LicenseRef-Callaway-BSD URL: https://hohnstaedt.de/xca/ @@ -117,6 +117,9 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/de.hohnstaedt. #------------------------------------------------------------------------------- %changelog +* Fri Jul 17 2026 Fedora Release Engineering - 2.9.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + * Sat Jun 13 2026 Yaakov Selkowitz - 2.9.0-3 - Rebuilt for openssl 4.0 From 8d5e70b6721098a741f2a3c2d20b5c75160a925f Mon Sep 17 00:00:00 2001 From: Patrick Monnerat Date: Wed, 22 Jul 2026 21:14:47 +0200 Subject: [PATCH 72/72] Patch "openssl4" for openssl version 4 compatibility. Remove BR openssl-devel-engine for Fedora > 44. Perform tests. --- xca-2.9.0-openssl4.patch | 504 +++++++++++++++++++++++++++++++++++++++ xca.spec | 42 +++- 2 files changed, 534 insertions(+), 12 deletions(-) create mode 100644 xca-2.9.0-openssl4.patch diff --git a/xca-2.9.0-openssl4.patch b/xca-2.9.0-openssl4.patch new file mode 100644 index 0000000..85d3eca --- /dev/null +++ b/xca-2.9.0-openssl4.patch @@ -0,0 +1,504 @@ +diff -Naurp xca-2.9.0.orig/lib/asn1int.cpp xca-2.9.0.new/lib/asn1int.cpp +--- xca-2.9.0.orig/lib/asn1int.cpp 2025-03-28 19:28:15.000000000 +0100 ++++ xca-2.9.0.new/lib/asn1int.cpp 2026-07-21 14:50:45.138768332 +0200 +@@ -10,6 +10,7 @@ + #include "func_base.h" + #include "exception.h" + #include "limits.h" ++#include "openssl_compat.h" + #include + #include + +@@ -67,7 +68,7 @@ a1int &a1int::set(long l) + QString a1int::toQString(int dec) const + { + QString r; +- if (in->length == 0) { ++ if (xca_asn1_string_length(in.get()) == 0) { + return r; + } + QSharedPointer bn(ASN1_INTEGER_to_BN(get0(), NULL), BN_free); +diff -Naurp xca-2.9.0.orig/lib/asn1time.cpp xca-2.9.0.new/lib/asn1time.cpp +--- xca-2.9.0.orig/lib/asn1time.cpp 2025-03-28 19:28:15.000000000 +0100 ++++ xca-2.9.0.new/lib/asn1time.cpp 2026-07-21 15:48:01.479132516 +0200 +@@ -11,6 +11,7 @@ + #include "func.h" + #include "exception.h" + #include "asn1time.h" ++#include "openssl_compat.h" + #include + #include + #include +@@ -50,7 +51,8 @@ int a1time::from_asn1(const ASN1_TIME *a + gt = ASN1_TIME_to_generalizedtime((ASN1_TIME*)a, NULL); + if (!gt) + return -1; +- t = QString::fromLatin1((char*)gt->data, gt->length); ++ t = QString::fromLatin1((char*)xca_asn1_string_get0_data(gt), ++ xca_asn1_string_length(gt)); + ASN1_GENERALIZEDTIME_free(gt); + return fromPlain(t); + } +@@ -68,11 +70,15 @@ int a1time::fromPlain(const QString &pla + + int a1time::set_asn1(const QString &str, int type) const + { +- if (!atime) +- atime = ASN1_TIME_new(); +- if (!atime) +- return -1; +- atime->type = type; ++ if (atime && xca_asn1_string_type(atime) != type) { ++ ASN1_STRING_free(atime); ++ atime = NULL; ++ } ++ if (!atime) { ++ atime = ASN1_STRING_type_new(type); ++ if (!atime) ++ return -1; ++ } + if (ASN1_STRING_set(atime, str.toLatin1(), str.length())) + return -1; + return 0; +diff -Naurp xca-2.9.0.orig/lib/openssl_compat.h xca-2.9.0.new/lib/openssl_compat.h +--- xca-2.9.0.orig/lib/openssl_compat.h 2025-03-28 19:28:15.000000000 +0100 ++++ xca-2.9.0.new/lib/openssl_compat.h 2026-07-21 16:05:30.252809689 +0200 +@@ -35,4 +35,15 @@ EVP_DigestVerify(EVP_MD_CTX *ctx, const + } + #endif + ++ ++#if OPENSSL_VERSION_NUMBER < 0x40000000L ++#define xca_asn1_string_length(p) ((p)->length) ++#define xca_asn1_string_get0_data(p) ((p)->data) ++#define xca_asn1_string_type(p) ((p)->type) ++#else ++#define xca_asn1_string_length(p) ASN1_STRING_length(p) ++#define xca_asn1_string_get0_data(p) ASN1_STRING_get0_data(p) ++#define xca_asn1_string_type(p) ASN1_STRING_type(p) ++#endif ++ + #endif +diff -Naurp xca-2.9.0.orig/lib/pkcs11.cpp xca-2.9.0.new/lib/pkcs11.cpp +--- xca-2.9.0.orig/lib/pkcs11.cpp 2025-03-28 19:28:15.000000000 +0100 ++++ xca-2.9.0.new/lib/pkcs11.cpp 2026-07-22 17:10:39.158463523 +0200 +@@ -650,29 +650,6 @@ int pkcs11::encrypt(int flen, const unsi + return size; + } + +-#if not defined OPENSSL_NO_EC and defined EVP_PKEY_ED25519 +-// Shared between libressl and openssl +-static int eng_idx = -1; +-static int eng_finish(ENGINE *e) +-{ +- pkcs11 *p11 = (pkcs11 *)ENGINE_get_ex_data(e, eng_idx); +- delete p11; +- ENGINE_set_ex_data(e, eng_idx, NULL); +- return 1; +-} +- +-#if (OPENSSL_VERSION_NUMBER >= 0x30000000L) +-static int eng_pmeth_copy(EVP_PKEY_CTX *dst, const EVP_PKEY_CTX *src) +-#else +-static int eng_pmeth_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src) +-#endif +-{ +- void *p = EVP_PKEY_CTX_get_app_data((EVP_PKEY_CTX *)src); +- EVP_PKEY_CTX_set_app_data(dst, p); +- return 1; +-} +-#endif +- + static int rsa_privdata_free(RSA *rsa) + { + pkcs11 *priv = (pkcs11*)RSA_get_app_data(rsa); +@@ -830,10 +807,33 @@ static EC_KEY_METHOD *setup_ec_key_meth( + ec_set_private_proc, ec_set_public_proc); + return ec_key_meth; + } +-#ifdef EVP_PKEY_ED25519 ++ ++ ++#if defined(EVP_PKEY_ED25519) && OPENSSL_VERSION_NUMBER < 0x40000000L + + static EVP_PKEY_METHOD *p11_eddsa_method; + ++// Shared between libressl and openssl ++static int eng_idx = -1; ++static int eng_finish(ENGINE *e) ++{ ++ pkcs11 *p11 = (pkcs11 *)ENGINE_get_ex_data(e, eng_idx); ++ delete p11; ++ ENGINE_set_ex_data(e, eng_idx, NULL); ++ return 1; ++} ++ ++#if (OPENSSL_VERSION_NUMBER >= 0x30000000L) ++static int eng_pmeth_copy(EVP_PKEY_CTX *dst, const EVP_PKEY_CTX *src) ++#else ++static int eng_pmeth_copy(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src) ++#endif ++{ ++ void *p = EVP_PKEY_CTX_get_app_data((EVP_PKEY_CTX *)src); ++ EVP_PKEY_CTX_set_app_data(dst, p); ++ return 1; ++} ++ + static int eddsa_eng_meths(ENGINE *e, EVP_PKEY_METHOD **m, const int **nids, int nid) + { + static const int my_nids[] = {EVP_PKEY_ED25519 }; +@@ -904,7 +904,7 @@ EVP_PKEY *pkcs11::getPrivateKey(EVP_PKEY + #ifndef OPENSSL_NO_EC + static EC_KEY_METHOD *ec_key_meth = NULL; + EC_KEY *ec; +-#ifdef EVP_PKEY_ED25519 ++#if defined(EVP_PKEY_ED25519) && OPENSSL_VERSION_NUMBER < 0x40000000L + static ENGINE *e = NULL; + + if (!e) { +@@ -991,6 +991,7 @@ EVP_PKEY *pkcs11::getPrivateKey(EVP_PKEY + #ifdef EVP_PKEY_ED25519 + case EVP_PKEY_ED25519: + size_t len; ++#if OPENSSL_VERSION_NUMBER < 0x40000000L + if (ENGINE_get_ex_data(e, eng_idx)) + qWarning() << "We forgot to free the previous Card key."; + ENGINE_set_ex_data(e, eng_idx, this); +@@ -1003,6 +1004,17 @@ EVP_PKEY *pkcs11::getPrivateKey(EVP_PKEY + openssl_error(); + OPENSSL_free(pubkey); + //EVP_PKEY_set1_engine(evp, e); ++#else ++ p11obj = obj; ++ EVP_PKEY_get_raw_public_key(pub, NULL, &len); ++ unsigned char *pubkey = (unsigned char *)OPENSSL_malloc(len); ++ Q_CHECK_PTR(pubkey); ++ EVP_PKEY_get_raw_public_key(pub, pubkey, &len); ++ evp = EVP_PKEY_new_raw_public_key_ex(OSSL_LIB_CTX_get0_global_default(), ++ "ED25519", NULL, pubkey, len); ++ openssl_error(); ++ OPENSSL_free(pubkey); ++#endif + break; + #endif + #endif +diff -Naurp xca-2.9.0.orig/lib/pki_pkcs12.cpp xca-2.9.0.new/lib/pki_pkcs12.cpp +--- xca-2.9.0.orig/lib/pki_pkcs12.cpp 2025-03-28 19:28:15.000000000 +0100 ++++ xca-2.9.0.new/lib/pki_pkcs12.cpp 2026-07-21 14:41:11.421805953 +0200 +@@ -85,7 +85,7 @@ pki_pkcs12::pki_pkcs12(const QString &fn + } + pki_ign_openssl_error(); + if (mycert) { +- unsigned char *str = X509_alias_get0(mycert, NULL); ++ const unsigned char *str = X509_alias_get0(mycert, NULL); + if (str) + alias = QString::fromUtf8((const char *)str); + alias = QString::fromUtf8(alias.toLatin1()); +diff -Naurp xca-2.9.0.orig/lib/pki_scard.cpp xca-2.9.0.new/lib/pki_scard.cpp +--- xca-2.9.0.orig/lib/pki_scard.cpp 2025-03-28 19:28:15.000000000 +0100 ++++ xca-2.9.0.new/lib/pki_scard.cpp 2026-07-21 16:07:19.266072856 +0200 +@@ -14,6 +14,7 @@ + #include "pkcs11.h" + #include "x509name.h" + #include "func.h" ++#include "openssl_compat.h" + #include "XcaProgress.h" + + #include "XcaWarningCore.h" +@@ -187,7 +188,8 @@ EVP_PKEY *pki_scard::load_pubkey(pkcs11 + d2i_bytearray(D2I_VOID(d2i_ASN1_OCTET_STRING), ba); + pki_openssl_error(); + +- BIGNUM *bn = BN_bin2bn(os->data, os->length, NULL); ++ BIGNUM *bn = BN_bin2bn(xca_asn1_string_get0_data(os), ++ xca_asn1_string_length(os), NULL); + pki_openssl_error(); + + EC_POINT *point = EC_POINT_bn2point(group, bn, NULL, NULL); +@@ -215,8 +217,8 @@ EVP_PKEY *pki_scard::load_pubkey(pkcs11 + d2i_bytearray(D2I_VOID(d2i_ASN1_OCTET_STRING), ba); + pki_openssl_error(); + pkey = EVP_PKEY_new_raw_public_key(EVP_PKEY_ED25519, NULL, +- (const uint8_t *)os->data, +- os->length); ++ (const uint8_t *)xca_asn1_string_get0_data(os), ++ xca_asn1_string_length(os)); + pki_openssl_error(); + ASN1_OCTET_STRING_free(os); + pki_openssl_error(); +diff -Naurp xca-2.9.0.orig/lib/pki_x509.cpp xca-2.9.0.new/lib/pki_x509.cpp +--- xca-2.9.0.orig/lib/pki_x509.cpp 2025-03-28 19:28:15.000000000 +0100 ++++ xca-2.9.0.new/lib/pki_x509.cpp 2026-07-21 16:09:29.644513174 +0200 +@@ -836,7 +836,7 @@ pki_key *pki_x509::getPubKey() const + bool pki_x509::compareNameAndKey(pki_x509 *other) + { + int r; +- X509_NAME *s1, *s2; ++ const X509_NAME *s1, *s2; + EVP_PKEY *pub1, *pub2; + + if (!cert || !other->cert) +diff -Naurp xca-2.9.0.orig/lib/pki_x509req.cpp xca-2.9.0.new/lib/pki_x509req.cpp +--- xca-2.9.0.orig/lib/pki_x509req.cpp 2025-03-28 19:28:15.000000000 +0100 ++++ xca-2.9.0.new/lib/pki_x509req.cpp 2026-07-21 16:11:59.068866756 +0200 +@@ -15,6 +15,7 @@ + #include "db_base.h" + #include "x509name.h" + #include "exception.h" ++#include "openssl_compat.h" + #include + + pki_x509req::pki_x509req(const QString &name) +@@ -204,7 +205,9 @@ void pki_x509req::addAttribute(int nid, + return; + + ASN1_STRING *a = QStringToAsn1(content, nid); +- X509_REQ_add1_attr_by_NID(request, nid, a->type, a->data, a->length); ++ X509_REQ_add1_attr_by_NID(request, nid, xca_asn1_string_type(a), ++ xca_asn1_string_get0_data(a), ++ xca_asn1_string_length(a)); + ASN1_STRING_free(a); + openssl_error_msg(QString("'%1' (%2)").arg(content).arg(OBJ_nid2ln(nid))); + } +diff -Naurp xca-2.9.0.orig/lib/x509name.cpp xca-2.9.0.new/lib/x509name.cpp +--- xca-2.9.0.orig/lib/x509name.cpp 2025-03-28 19:28:15.000000000 +0100 ++++ xca-2.9.0.new/lib/x509name.cpp 2026-07-21 15:56:14.876877763 +0200 +@@ -9,6 +9,7 @@ + #include "base.h" + #include "func_base.h" + #include "BioByteArray.h" ++#include "openssl_compat.h" + #include + #include + #include "exception.h" +@@ -89,7 +90,7 @@ QString x509name::getMostPopular() const + QString x509name::getEntry(int i) const + { + QString ret; +- ASN1_STRING *d; ++ const ASN1_STRING *d; + + if ( i<0 || i>entryCount() ) + return ret; +@@ -102,7 +103,7 @@ QString x509name::getEntry(int i) const + QString x509name::getEntryTag(int i) const + { + QString s = QObject::tr("Invalid"); +- ASN1_STRING *d; ++ const ASN1_STRING *d; + + if (i<0 || i>=entryCount()) + i = entryCount() - 1; +@@ -111,7 +112,7 @@ QString x509name::getEntryTag(int i) con + if (!d) + return s; + +- s = ASN1_tag2str(d->type); ++ s = ASN1_tag2str(xca_asn1_string_type(d)); + return s; + } + +@@ -154,13 +155,13 @@ QStringList x509name::entryList(int i) c + + int x509name::nid(int i) const + { +- X509_NAME_ENTRY *ne = X509_NAME_get_entry(get0(), i); ++ const X509_NAME_ENTRY *ne = X509_NAME_get_entry(get0(), i); + return ne ? OBJ_obj2nid(X509_NAME_ENTRY_get_object(ne)) : NID_undef; + } + + QString x509name::getOid(int i) const + { +- X509_NAME_ENTRY *ne = X509_NAME_get_entry(_get(), i); ++ const X509_NAME_ENTRY *ne = X509_NAME_get_entry(_get(), i); + return ne ? OBJ_obj2QString(X509_NAME_ENTRY_get_object(ne), 1) : QString(); + } + +@@ -258,7 +259,10 @@ void x509name::addEntryByNid(int nid, co + if (entry.isEmpty()) + return; + ASN1_STRING *a = QStringToAsn1(entry.simplified(), nid); +- X509_NAME_add_entry_by_NID(_get(), nid, a->type, a->data, a->length, -1, 0); ++ X509_NAME_add_entry_by_NID(_get(), nid, ++ xca_asn1_string_type(a), ++ xca_asn1_string_get0_data(a), ++ xca_asn1_string_length(a), -1, 0); + ASN1_STRING_free(a); + openssl_error_msg(QString("'%1' (%2)").arg(entry).arg(OBJ_nid2ln(nid))); + } +diff -Naurp xca-2.9.0.orig/lib/x509v3ext.cpp xca-2.9.0.new/lib/x509v3ext.cpp +--- xca-2.9.0.orig/lib/x509v3ext.cpp 2025-03-28 19:28:15.000000000 +0100 ++++ xca-2.9.0.new/lib/x509v3ext.cpp 2026-07-22 17:43:52.060374543 +0200 +@@ -10,6 +10,7 @@ + #include "asn1int.h" + #include "func.h" + #include "exception.h" ++#include "openssl_compat.h" + #include + #include + #include +@@ -49,8 +50,8 @@ x509v3ext::~x509v3ext() + x509v3ext &x509v3ext::set(const X509_EXTENSION *n) + { + if (n) { +- ASN1_OCTET_STRING *str = X509_EXTENSION_get_data((X509_EXTENSION *)n); +- if (!str || !str->length) ++ const ASN1_OCTET_STRING *str = X509_EXTENSION_get_data((X509_EXTENSION *)n); ++ if (!str || !xca_asn1_string_length(str)) + n = nullptr; + } + if (ext != nullptr) +@@ -116,7 +117,7 @@ x509v3ext &x509v3ext::create_ia5(int nid + + const ASN1_OBJECT *x509v3ext::object() const + { +- ASN1_OBJECT *obj = nullptr; ++ const ASN1_OBJECT *obj = nullptr; + if (ext) { + obj = X509_EXTENSION_get_object(ext); + ign_openssl_error(); +@@ -166,9 +167,9 @@ int x509v3ext::getCritical() const + return ext ? X509_EXTENSION_get_critical(ext) : 0; + } + +-ASN1_OCTET_STRING *x509v3ext::getData() const ++const ASN1_OCTET_STRING *x509v3ext::getData() const + { +- return ext ? X509_EXTENSION_get_data(ext) : nullptr;; ++ return ext ? X509_EXTENSION_get_data(ext) : nullptr; + } + + QString x509v3ext::getValue() const +@@ -318,7 +319,7 @@ static QString ipv6_from_binary(const un + static bool + genName2conf(GENERAL_NAME *gen, QString tag, QString *single, QString *sect) + { +- unsigned char *p; ++ const unsigned char *p; + QString ret; + + switch (gen->type) { +@@ -335,22 +336,23 @@ genName2conf(GENERAL_NAME *gen, QString + return true; + } + case GEN_IPADD: +- p = gen->d.ip->data; +- if (gen->d.ip->length == 4) { ++ p = xca_asn1_string_get0_data(gen->d.ip); ++ if (xca_asn1_string_length(gen->d.ip) == 4) { + *single = QString("IP:%1.%2.%3.%4"). + arg(p[0]).arg(p[1]).arg(p[2]).arg(p[3]); + return true; +- } else if(gen->d.ip->length == 8) { ++ } else if(xca_asn1_string_length(gen->d.ip) == 8) { + *single = QString("IP:%1.%2.%3.%4/%5.%6.%7.%8"). + arg(p[0]).arg(p[1]).arg(p[2]).arg(p[3]). + arg(p[4]).arg(p[5]).arg(p[6]).arg(p[7]); + return true; +- } else if(gen->d.ip->length == 16) { +- *single = "IP:" + ipv6_from_binary(gen->d.ip->data); ++ } else if(xca_asn1_string_length(gen->d.ip) == 16) { ++ *single = "IP:" + ipv6_from_binary(xca_asn1_string_get0_data(gen->d.ip)); + return true; +- } else if(gen->d.ip->length == 32) { +- *single = "IP:" + ipv6_from_binary(gen->d.ip->data) + +- "/" + ipv6_from_binary(gen->d.ip->data +16); ++ } else if(xca_asn1_string_length(gen->d.ip) == 32) { ++ *single = "IP:" + ++ ipv6_from_binary(xca_asn1_string_get0_data(gen->d.ip)) + ++ "/" + ipv6_from_binary(xca_asn1_string_get0_data(gen->d.ip) + 16); + return true; + } + return false; +@@ -372,9 +374,9 @@ genName2conf(GENERAL_NAME *gen, QString + *single = QString("otherName:%1;FORMAT:HEX,%2"). + arg(obj2SnOid(gen->d.otherName->type_id)). + arg(asn1Type2Name(type)); +- for (int i=0; ilength; i++) { ++ for (int i=0; idata[i]), 2, 16, QChar('0')); ++ arg((int)(xca_asn1_string_get0_data(a)[i]), 2, 16, QChar('0')); + } + } + return true; +@@ -423,12 +425,12 @@ bool x509v3ext::parse_ia5(QString *singl + return false; + + if (!str) { +- const unsigned char *p = getData()->data; +- str = d2i_ASN1_OCTET_STRING(NULL, &p, getData()->length); ++ const unsigned char *p = xca_asn1_string_get0_data(getData()); ++ str = d2i_ASN1_OCTET_STRING(NULL, &p, xca_asn1_string_length(getData())); + if (ign_openssl_error() || !str) + return false; + ret = QString("%2"). +- arg(asn1Type2Name(str->type)). ++ arg(asn1Type2Name(xca_asn1_string_type(str))). + arg(QString(asn1ToQString(str))); + } else { + ret = QString(asn1ToQString(str)); +@@ -824,10 +826,10 @@ bool x509v3ext::parse_generic(QString *, + + const ASN1_OBJECT *o = object(); + QString der, obj = o ? obj2SnOid(o) : QString("INVALID"); +- ASN1_OCTET_STRING *v = getData(); ++ const ASN1_OCTET_STRING *v = getData(); + +- for (int i=0; v && i < v->length; i++) +- der += QString(":%1").arg((int)(v->data[i]), 2, 16, QChar('0')); ++ for (int i=0; v && i < xca_asn1_string_length(v); i++) ++ der += QString(":%1").arg((int)(xca_asn1_string_get0_data(v)[i]), 2, 16, QChar('0')); + + if (adv) + *adv = QString("%1=%2DER%3\n").arg(obj). +@@ -1037,7 +1039,7 @@ X509_EXTENSION *x509v3ext::get() const + + bool x509v3ext::isValid() const + { +- return ext && getData() && getData()->length > 0 && ++ return ext && getData() && xca_asn1_string_length(getData()) > 0 && + OBJ_obj2nid(X509_EXTENSION_get_object(ext)) != NID_undef; + } + +diff -Naurp xca-2.9.0.orig/lib/x509v3ext.h xca-2.9.0.new/lib/x509v3ext.h +--- xca-2.9.0.orig/lib/x509v3ext.h 2025-03-28 19:28:15.000000000 +0100 ++++ xca-2.9.0.new/lib/x509v3ext.h 2026-07-22 17:33:42.586049536 +0200 +@@ -35,7 +35,7 @@ class x509v3ext + // bool operator == (const x509v3ext &x) const; + QString getObject() const; + int getCritical() const; +- ASN1_OCTET_STRING *getData() const; ++ const ASN1_OCTET_STRING *getData() const; + QString getValue() const; + QString getHtmlValue() const; + QString getConsoleValue(const QString &indent) const; +diff -Naurp xca-2.9.0.orig/widgets/CertDetail.cpp xca-2.9.0.new/widgets/CertDetail.cpp +--- xca-2.9.0.orig/widgets/CertDetail.cpp 2025-03-28 19:28:15.000000000 +0100 ++++ xca-2.9.0.new/widgets/CertDetail.cpp 2026-07-22 17:48:13.703356907 +0200 +@@ -16,6 +16,7 @@ + #include "lib/func_base.h" + #include "lib/func.h" + #include "lib/XcaWarningCore.h" ++#include "lib/openssl_compat.h" + #include + #include + #include +@@ -269,7 +270,7 @@ void CertDetail::setReq(pki_x509req *req + + int count = X509_ATTRIBUTE_count(att); + for (int j=0; jvalue.asn1_string); + attrLayout->addWidget(label, ii, j +1); + } +@@ -289,7 +290,7 @@ QLabel *CertDetail::labelFromAsn1String( + QLabel *label; + label = new CopyLabel(this); + label->setText(asn1ToQString(s)); +- label->setToolTip(QString(ASN1_tag2str(s->type))); ++ label->setToolTip(QString(ASN1_tag2str(xca_asn1_string_type(s)))); + return label; + } + diff --git a/xca.spec b/xca.spec index af9321f..d9b5861 100644 --- a/xca.spec +++ b/xca.spec @@ -4,13 +4,15 @@ Summary: Graphical X.509 certificate management tool Name: xca Version: 2.9.0 -Release: 4%{?dist} +Release: 5%{?dist} # Automatically converted from old format: BSD - review is highly recommended. License: LicenseRef-Callaway-BSD URL: https://hohnstaedt.de/xca/ Source0: https://github.com/%{gitowner0}/%{gitproject0}/releases/download/RELEASE.%{version}/%{name}-%{version}.tar.gz Source1: xca-2.5.0-README.IMPORTANT +Patch1: xca-2.9.0-openssl4.patch + BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: cmake(Qt6Core) @@ -20,7 +22,7 @@ BuildRequires: cmake(Qt6Help) BuildRequires: cmake(Qt6LinguistTools) BuildRequires: cmake(Qt6Test) BuildRequires: openssl-devel -%if 0%{?fedora} >= 41 +%if 0%{?fedora} >= 41 && 0%{?fedora} <= 44 BuildRequires: openssl-devel-engine %endif BuildRequires: desktop-file-utils @@ -44,10 +46,10 @@ OpenSSL library for the cryptographic operations. Certificate signing requests (PKCS#10), certificates (X509v3), the signing of requests, the creation of self-signed certificates, certificate revocation lists and SmartCards are supported. For an easy company-wide use, customizable -templates can be used for certificate and request generation. The PKI structures -can be imported and exported in several formats like PKCS#7, PKCS#12, PEM, -DER, PKCS#8. All cryptographic data are stored in a byte order agnostic file -format, portable across operating systems. +templates can be used for certificate and request generation. The PKI +structures can be imported and exported in several formats like PKCS#7, +PKCS#12, PEM, DER, PKCS#8. All cryptographic data are stored in a byte order +agnostic file format, portable across operating systems. #------------------------------------------------------------------------------- @@ -88,13 +90,26 @@ install -d -m 755 '%{buildroot}%{_datadir}/mime/packages' install -p -m 644 misc/xca.xml '%{buildroot}%{_datadir}/mime/packages/' # Validate desktop files. -desktop-file-validate %{buildroot}%{_datadir}/applications/de.hohnstaedt.xca.desktop -appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/de.hohnstaedt.xca.metainfo.xml +desktop-file-validate \ + '%{buildroot}%{_datadir}/applications/de.hohnstaedt.xca.desktop' +appstream-util validate-relax --nonet \ + '%{buildroot}%{_metainfodir}/de.hohnstaedt.xca.metainfo.xml' + +# Template contains neither translations nor language code. +rm -f '%{buildroot}%{_datadir}/xca/i18n/xca.qm' # Tag translation files. %find_lang '%{name}' --with-qt +#------------------------------------------------------------------------------- +%check +#------------------------------------------------------------------------------- + +# Do not test GUI. +%ctest -E '^testxca$' || : + + #------------------------------------------------------------------------------- %files -f %{name}.lang #------------------------------------------------------------------------------- @@ -111,12 +126,17 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/de.hohnstaedt. %{_datadir}/bash-completion/ %{_metainfodir}/de.hohnstaedt.xca.metainfo.xml %attr(0644, root, root) %{_mandir}/*/* -# template, contains no translations or language code -%exclude %{_datadir}/xca/i18n/xca.qm #------------------------------------------------------------------------------- %changelog +#------------------------------------------------------------------------------- + +* Wed Jul 22 2026 Patrick Monnerat 2.9.0-5 +- Patch "openssl4" for openssl version 4 compatibility. +- Remove BR openssl-devel-engine for Fedora > 44. +- Perform tests. + * Fri Jul 17 2026 Fedora Release Engineering - 2.9.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild @@ -135,8 +155,6 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/de.hohnstaedt. * Sun Jan 19 2025 Fedora Release Engineering - 2.7.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild -#------------------------------------------------------------------------------- - * Fri Sep 6 2024 Patrick Monnerat 2.7.0-1 - New upstream release.
Compile time:"OPENSSL_VERSION_TEXT"QT version: "QT_VERSION_STR"" OPENSSL_VERSION_TEXT "QT version: " QT_VERSION_STR "
Run time:%1