[evolution] I#1063 - Enhance debug prints of PKCS12 file import



commit 4bbd80f613c6b4c4d19938d6b10013c59c2f4b19
Author: Milan Crha <mcrha redhat com>
Date:   Tue Aug 25 12:48:11 2020 +0200

    I#1063 - Enhance debug prints of PKCS12 file import
    
    Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/1063

 src/smime/lib/e-cert-db.c | 12 ++++++------
 src/smime/lib/e-cert-db.h |  2 ++
 src/smime/lib/e-pkcs12.c  | 35 ++++++++++++++++++++++++++++++++++-
 3 files changed, 42 insertions(+), 7 deletions(-)
---
diff --git a/src/smime/lib/e-cert-db.c b/src/smime/lib/e-cert-db.c
index 690da3138e..062f02224f 100644
--- a/src/smime/lib/e-cert-db.c
+++ b/src/smime/lib/e-cert-db.c
@@ -98,8 +98,8 @@ e_certdb_error_quark (void)
        return q;
 }
 
-static const gchar *
-nss_error_to_string (glong errorcode)
+const gchar *
+e_cert_db_nss_error_to_string (gint errorcode)
 {
 #define cs(a,b) case a: return b;
 
@@ -287,7 +287,7 @@ nss_error_to_string (glong errorcode)
 static void
 set_nss_error (GError **error)
 {
-       glong err_code;
+       gint err_code;
        const gchar *err_str;
 
        if (!error)
@@ -300,7 +300,7 @@ set_nss_error (GError **error)
        if (!err_code)
                return;
 
-       err_str = nss_error_to_string (err_code);
+       err_str = e_cert_db_nss_error_to_string (err_code);
        if (!err_str)
                return;
 
@@ -897,10 +897,10 @@ gboolean e_cert_db_change_cert_trust (CERTCertificate *cert, CERTCertTrust *trus
                        cert, trust);
 
        if (srv != SECSuccess) {
-               glong err = PORT_GetError ();
+               gint err = PORT_GetError ();
                g_warning (
                        "CERT_ChangeCertTrust() failed: %s\n",
-                       nss_error_to_string (err));
+                       e_cert_db_nss_error_to_string (err));
                return FALSE;
        }
        return TRUE;
diff --git a/src/smime/lib/e-cert-db.h b/src/smime/lib/e-cert-db.h
index 016cfd94c1..5a4a5837fa 100644
--- a/src/smime/lib/e-cert-db.h
+++ b/src/smime/lib/e-cert-db.h
@@ -113,4 +113,6 @@ gboolean             e_cert_db_login_to_slot      (ECertDB *cert_db,
 gboolean            e_cert_db_change_cert_trust  (CERTCertificate *cert,
                                                   CERTCertTrust *trust);
 
+const gchar *       e_cert_db_nss_error_to_string (gint errorcode);
+
 #endif /* _E_CERT_DB_H_ */
diff --git a/src/smime/lib/e-pkcs12.c b/src/smime/lib/e-pkcs12.c
index 79bf4250f8..a2e6096af7 100644
--- a/src/smime/lib/e-pkcs12.c
+++ b/src/smime/lib/e-pkcs12.c
@@ -465,7 +465,40 @@ nickname_collision (SECItem *oldNick,
 static gboolean
 handle_error (gint myerr)
 {
-       printf ("handle_error (%d)\n", myerr);
+       switch (myerr) {
+       case PKCS12_RESTORE_OK:
+               printf ("PKCS12: Restore succeeded\n");
+               break;
+       case PKCS12_BACKUP_OK:
+               printf ("PKCS12: Backup succeeded\n");
+               break;
+       case PKCS12_USER_CANCELED:
+               printf ("PKCS12: User cancelled operation\n");
+               break;
+       case PKCS12_NOSMARTCARD_EXPORT:
+               printf ("PKCS12: No smart card export\n");
+               break;
+       case PKCS12_RESTORE_FAILED:
+               printf ("PKCS12: Restore failed\n");
+               break;
+       case PKCS12_BACKUP_FAILED:
+               printf ("PKCS12: Backup failed\n");
+               break;
+       case PKCS12_NSS_ERROR: {
+               gint nss_code = PORT_GetError ();
+               const gchar *nss_errstr = e_cert_db_nss_error_to_string (nss_code);
+
+               if (nss_code && nss_errstr)
+                       printf ("PKCS12: NSS error: %d (%s)\n", nss_code, nss_errstr);
+               else if (nss_code)
+                       printf ("PKCS12: NSS error: %d\n", nss_code);
+               else
+                       printf ("PKCS12: Unknown NSS error\n");
+               } break;
+       default:
+               printf ("PKCS12: handle_error (%d)\n", myerr);
+               break;
+       }
 
        return FALSE;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]