diff options
Diffstat (limited to 'embed/mozilla')
-rw-r--r-- | embed/mozilla/Makefile.am | 6 | ||||
-rw-r--r-- | embed/mozilla/mozilla-embed-single.cpp | 158 | ||||
-rw-r--r-- | embed/mozilla/mozilla-x509-cert.cpp | 219 | ||||
-rw-r--r-- | embed/mozilla/mozilla-x509-cert.h | 63 |
4 files changed, 0 insertions, 446 deletions
diff --git a/embed/mozilla/Makefile.am b/embed/mozilla/Makefile.am index ef3efed61..007cac5d0 100644 --- a/embed/mozilla/Makefile.am +++ b/embed/mozilla/Makefile.am @@ -91,12 +91,6 @@ libephymozillaembed_la_SOURCES += \ GtkNSSSecurityWarningDialogs.h endif -if ENABLE_CERTIFICATE_MANAGER -libephymozillaembed_la_SOURCES += \ - mozilla-x509-cert.cpp \ - mozilla-x509-cert.h -endif - if ENABLE_SPELLCHECKER libephymozillaembed_la_SOURCES += \ GeckoSpellCheckEngine.cpp \ diff --git a/embed/mozilla/mozilla-embed-single.cpp b/embed/mozilla/mozilla-embed-single.cpp index f8ef54f0d..f95c8a107 100644 --- a/embed/mozilla/mozilla-embed-single.cpp +++ b/embed/mozilla/mozilla-embed-single.cpp @@ -54,11 +54,6 @@ #include <nsMemory.h> #include <nsServiceManagerUtils.h> -#ifdef HAVE_MOZILLA_PSM -#include <nsIX509Cert.h> -#include <nsIX509CertDB.h> -#endif - #ifdef ALLOW_PRIVATE_API #include <nsICacheService.h> #include <nsIFontEnumerator.h> @@ -74,7 +69,6 @@ #include "ephy-file-helpers.h" #include "eel-gconf-extensions.h" -#include "ephy-certificate-manager.h" #include "ephy-cookie-manager.h" #include "ephy-debug.h" #include "ephy-embed-prefs.h" @@ -85,7 +79,6 @@ #include "ephy-string.h" #include "mozilla-embed.h" #include "mozilla-notifiers.h" -#include "mozilla-x509-cert.h" #include "EphyBrowser.h" #include "EphyDirectoryProvider.h" @@ -131,26 +124,6 @@ static void ephy_password_manager_iface_init (EphyPasswordManagerIface *iface); static void ephy_permission_manager_iface_init (EphyPermissionManagerIface *iface); static void mozilla_embed_single_init (MozillaEmbedSingle *ges); -#ifdef ENABLE_CERTIFICATE_MANAGER -static void ephy_certificate_manager_iface_init (EphyCertificateManagerIface *iface); -#endif - -/* Some compilers (like gcc 2.95) don't support preprocessor directives inside macros, - so we have to duplicate the whole thing */ - -#ifdef ENABLE_CERTIFICATE_MANAGER -G_DEFINE_TYPE_WITH_CODE (MozillaEmbedSingle, mozilla_embed_single, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (EPHY_TYPE_EMBED_SINGLE, - ephy_embed_single_iface_init) - G_IMPLEMENT_INTERFACE (EPHY_TYPE_COOKIE_MANAGER, - ephy_cookie_manager_iface_init) - G_IMPLEMENT_INTERFACE (EPHY_TYPE_PASSWORD_MANAGER, - ephy_password_manager_iface_init) - G_IMPLEMENT_INTERFACE (EPHY_TYPE_CERTIFICATE_MANAGER, - ephy_certificate_manager_iface_init) - G_IMPLEMENT_INTERFACE (EPHY_TYPE_PERMISSION_MANAGER, - ephy_permission_manager_iface_init)) -#else G_DEFINE_TYPE_WITH_CODE (MozillaEmbedSingle, mozilla_embed_single, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (EPHY_TYPE_EMBED_SINGLE, ephy_embed_single_iface_init) @@ -160,7 +133,6 @@ G_DEFINE_TYPE_WITH_CODE (MozillaEmbedSingle, mozilla_embed_single, G_TYPE_OBJECT ephy_password_manager_iface_init) G_IMPLEMENT_INTERFACE (EPHY_TYPE_PERMISSION_MANAGER, ephy_permission_manager_iface_init)) -#endif static gboolean mozilla_set_default_prefs (MozillaEmbedSingle *mes) @@ -1188,124 +1160,6 @@ impl_open_window (EphyEmbedSingle *single, return EphyUtils::FindEmbed (newWindow); } -#ifdef ENABLE_CERTIFICATE_MANAGER - -static gboolean -impl_remove_certificate (EphyCertificateManager *manager, - EphyX509Cert *cert) -{ - nsresult rv; - - nsCOMPtr<nsIX509CertDB> certDB; - certDB = do_GetService (NS_X509CERTDB_CONTRACTID); - if (!certDB) return FALSE; - - nsCOMPtr<nsIX509Cert> mozCert; - rv = mozilla_x509_cert_get_mozilla_cert (MOZILLA_X509_CERT (cert), - getter_AddRefs (mozCert)); - if (NS_FAILED (rv)) return FALSE; - - rv = certDB->DeleteCertificate (mozCert); - if (NS_FAILED (rv)) return FALSE; - - return TRUE; -} - -#define NICK_DELIMITER PRUnichar('\001') - -static GList * -retrieveCerts (PRUint32 type) -{ - nsresult rv; - - nsCOMPtr<nsIX509CertDB> certDB; - certDB = do_GetService (NS_X509CERTDB_CONTRACTID); - if (!certDB) return NULL; - - PRUint32 count; - PRUnichar **certNameList = NULL; - - rv = certDB->FindCertNicknames (NULL, type, &count, &certNameList); - if (NS_FAILED (rv)) return NULL; - - LOG("Certificates found: %i", count); - - GList *list = NULL; - for (PRUint32 i = 0; i < count; i++) - { - /* HACK HACK, this is EVIL, the string for each cert is: - <DELIMITER>nicknameOrEmailAddress<DELIMITER>dbKey - So we need to chop off the dbKey to look it up in the database. - - https://bugzilla.mozilla.org/show_bug.cgi?id=214742 - */ - nsCString full_string; - NS_UTF16ToCString (nsString(certNameList[i]), - NS_CSTRING_ENCODING_UTF8, full_string); - - const char *key = full_string.get(); - char *pos = strrchr (key, NICK_DELIMITER); - if (!pos) continue; - - nsCOMPtr<nsIX509Cert> mozilla_cert; - rv = certDB->FindCertByDBKey (pos, NULL, getter_AddRefs (mozilla_cert)); - if (NS_FAILED (rv)) continue; - - MozillaX509Cert *cert = mozilla_x509_cert_new (mozilla_cert); - list = g_list_prepend (list, cert); - } - - NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY (count, certNameList); - return list; -} - -static GList * -impl_get_certificates (EphyCertificateManager *manager, - EphyX509CertType type) -{ - int moz_type = nsIX509Cert::USER_CERT; - switch (type) - { - case PERSONAL_CERTIFICATE: - moz_type = nsIX509Cert::USER_CERT; - break; - case SERVER_CERTIFICATE: - moz_type = nsIX509Cert::SERVER_CERT; - break; - case CA_CERTIFICATE: - moz_type = nsIX509Cert::CA_CERT; - break; - } - return retrieveCerts (moz_type); -} - -static gboolean -impl_import (EphyCertificateManager *manager, - const gchar *file) -{ - nsresult rv; - nsCOMPtr<nsIX509CertDB> certDB; - certDB = do_GetService (NS_X509CERTDB_CONTRACTID); - if (!certDB) return FALSE; - - nsCOMPtr<nsILocalFile> localFile; - localFile = do_CreateInstance (NS_LOCAL_FILE_CONTRACTID); - - // TODO Is this correct ? - nsString path; - NS_CStringToUTF16 (nsCString(file), - NS_CSTRING_ENCODING_UTF8, path); - - - localFile->InitWithPath (path); - rv = certDB->ImportPKCS12File(NULL, localFile); - if (NS_FAILED (rv)) return FALSE; - - return TRUE; -} - -#endif /* ENABLE_CERTIFICATE_MANAGER */ - static void mozilla_embed_single_get_property (GObject *object, guint prop_id, @@ -1391,15 +1245,3 @@ ephy_permission_manager_iface_init (EphyPermissionManagerIface *iface) iface->test = impl_permission_manager_test; iface->list = impl_permission_manager_list; } - -#ifdef ENABLE_CERTIFICATE_MANAGER - -static void -ephy_certificate_manager_iface_init (EphyCertificateManagerIface *iface) -{ - iface->get_certificates = impl_get_certificates; - iface->remove_certificate = impl_remove_certificate; - iface->import = impl_import; -} - -#endif /* ENABLE_CERTIFICATE_MANAGER */ diff --git a/embed/mozilla/mozilla-x509-cert.cpp b/embed/mozilla/mozilla-x509-cert.cpp deleted file mode 100644 index 97885701e..000000000 --- a/embed/mozilla/mozilla-x509-cert.cpp +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright © 2003 Robert Marcano - * Copyright © 2005 Crispin Flowerday - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $Id$ - */ - -#include "mozilla-config.h" -#include "config.h" - -#include <nsStringAPI.h> - -#include "ephy-debug.h" - -#include "mozilla-x509-cert.h" - -#define MOZILLA_X509_CERT_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), \ - MOZILLA_TYPE_X509_CERT, MozillaX509CertPrivate)) - -static void mozilla_x509_cert_class_init (MozillaX509CertClass *klass); -static void ephy_x509_cert_init (EphyX509CertIface *iface); -static void mozilla_x509_cert_init (MozillaX509Cert *cert); - -struct _MozillaX509CertPrivate -{ - nsIX509Cert * mozilla_cert; - gchar *title; -}; - -enum -{ - PROP_0, - PROP_MOZILLA_CERT -}; - -G_DEFINE_TYPE_WITH_CODE (MozillaX509Cert, mozilla_x509_cert, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (EPHY_TYPE_X509_CERT, - ephy_x509_cert_init)) - -static void -mozilla_x509_cert_set_mozilla_cert (MozillaX509Cert *cert, - nsIX509Cert *mozilla_cert) -{ - nsCOMPtr<nsIX509Cert> tmpcert = cert->priv->mozilla_cert; - - if (cert->priv->mozilla_cert) - { - NS_RELEASE (cert->priv->mozilla_cert); - } - - cert->priv->mozilla_cert = mozilla_cert; - NS_IF_ADDREF (cert->priv->mozilla_cert); -} - - -nsresult -mozilla_x509_cert_get_mozilla_cert (MozillaX509Cert *cert, nsIX509Cert**aCert) -{ - *aCert = cert->priv->mozilla_cert; - NS_IF_ADDREF (*aCert); - - return *aCert ? NS_OK : NS_ERROR_FAILURE; -} - -static const char* -impl_get_title (EphyX509Cert *cert) -{ - MozillaX509Cert *m_cert = MOZILLA_X509_CERT (cert); - - /* lazy initialization of the title private variable */ - if (m_cert->priv->title != NULL) - { - return m_cert->priv->title; - } - - /* This title logic is adapted from Mozilla source at - mozilla/security/manager/ssl/src/nsCertTree.cpp */ - nsString name; - m_cert->priv->mozilla_cert->GetCommonName (name); - if (name.Length()) - { - nsCString cname; - NS_UTF16ToCString (name, NS_CSTRING_ENCODING_UTF8, cname); - - m_cert->priv->title = g_strdup (cname.get()); - } - else - { - /* No common name, so get the nickname instead */ - nsString nick; - m_cert->priv->mozilla_cert->GetNickname (nick); - - nsCString cnick; - NS_UTF16ToCString (nick, NS_CSTRING_ENCODING_UTF8, cnick); - - const char * str = cnick.get(); - char * colon = strchr (str, ':'); - if (colon) - { - m_cert->priv->title = g_strdup (colon+1); - } - else - { - m_cert->priv->title = g_strdup (cnick.get()); - } - } - - return m_cert->priv->title; -} - -static void -impl_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - MozillaX509Cert *cert = MOZILLA_X509_CERT (object); - - switch (prop_id) - { - case PROP_MOZILLA_CERT: - mozilla_x509_cert_set_mozilla_cert(cert, - (nsIX509Cert*)g_value_get_pointer (value)); - break; - default: - break; - } -} - -static void -impl_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - MozillaX509Cert *cert = MOZILLA_X509_CERT (object); - - switch (prop_id) - { - case PROP_MOZILLA_CERT: - g_value_set_pointer (value, cert->priv->mozilla_cert); - break; - default: - break; - } -} - -static void -mozilla_x509_cert_init (MozillaX509Cert *cert) -{ - cert->priv = MOZILLA_X509_CERT_GET_PRIVATE (cert); -} - -static void -mozilla_x509_cert_finalize (GObject *object) -{ - MozillaX509Cert *cert = MOZILLA_X509_CERT (object); - - LOG ("Finalizing MozillaX509Cert %p", cert); - - if (cert->priv->mozilla_cert) - { - NS_RELEASE (cert->priv->mozilla_cert); - } - - if (cert->priv->title) - { - g_free (cert->priv->title); - } - - G_OBJECT_CLASS (mozilla_x509_cert_parent_class)->finalize (object); -} - -static void -ephy_x509_cert_init (EphyX509CertIface *iface) -{ - iface->get_title = impl_get_title; -} - -static void -mozilla_x509_cert_class_init (MozillaX509CertClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - object_class->finalize = mozilla_x509_cert_finalize; - object_class->set_property = impl_set_property; - object_class->get_property = impl_get_property; - - g_object_class_install_property (object_class, - PROP_MOZILLA_CERT, - g_param_spec_pointer ("mozilla-cert", - "Mozilla-Cert", - "Mozilla XPCOM certificate", - (GParamFlags)(G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY))); - - g_type_class_add_private (object_class, sizeof (MozillaX509CertPrivate)); -} - -MozillaX509Cert * -mozilla_x509_cert_new (nsIX509Cert *moz_cert) -{ - return g_object_new (MOZILLA_TYPE_X509_CERT, - "mozilla-cert", moz_cert, - NULL); -} diff --git a/embed/mozilla/mozilla-x509-cert.h b/embed/mozilla/mozilla-x509-cert.h deleted file mode 100644 index 1efbdc7d1..000000000 --- a/embed/mozilla/mozilla-x509-cert.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright © 2003 Robert Marcano - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $Id$ - */ - -#ifndef MOZILLA_X509_CERT_H -#define MOZILLA_X509_CERT_H - -#include "ephy-x509-cert.h" - -#include <glib-object.h> - -#include <nsCOMPtr.h> -#include <nsIX509Cert.h> - -G_BEGIN_DECLS - -#define MOZILLA_TYPE_X509_CERT (mozilla_x509_cert_get_type ()) -#define MOZILLA_X509_CERT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MOZILLA_TYPE_X509_CERT, MozillaX509Cert)) -#define MOZILLA_X509_CERT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MOZILLA_TYPE_X509_CERT, MozillaX509CertClass)) -#define MOZILLA_IS_X509_CERT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MOZILLA_TYPE_X509_CERT)) -#define MOZILLA_IS_X509_CERT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MOZILLA_TYPE_X509_CERT)) -#define MOZILLA_X509_CERT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MOZILLA_TYPE_X509_CERT, MozillaX509CertClass)) - -typedef struct _MozillaX509Cert MozillaX509Cert; -typedef struct _MozillaX509CertPrivate MozillaX509CertPrivate; -typedef struct _MozillaX509CertClass MozillaX509CertClass; - -struct _MozillaX509Cert -{ - GObject parent; - MozillaX509CertPrivate *priv; -}; - -struct _MozillaX509CertClass -{ - GObjectClass parent_class; -}; - -GType mozilla_x509_cert_get_type (void); - -MozillaX509Cert *mozilla_x509_cert_new (nsIX509Cert *aMozCert); - -nsresult mozilla_x509_cert_get_mozilla_cert (MozillaX509Cert *cert, nsIX509Cert **aCert); - -G_END_DECLS - -#endif |