From 8aaebfe76c0fd8a76de63441da884bfe8667794b Mon Sep 17 00:00:00 2001 From: "dougt%meer.net" Date: Thu, 1 Sep 2005 18:22:19 +0000 Subject: [PATCH] Adding a minimal Bad Cert handler. minimo-only. git-svn-id: svn://10.0.0.236/trunk@179479 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/minimo/base/Makefile.in | 2 + mozilla/minimo/base/Minimo.cpp | 133 ++++++++++++++++++++++++++++ mozilla/minimo/base/MinimoPrivate.h | 3 + 3 files changed, 138 insertions(+) diff --git a/mozilla/minimo/base/Makefile.in b/mozilla/minimo/base/Makefile.in index 424a9fceda6..e2dd68b64cd 100755 --- a/mozilla/minimo/base/Makefile.in +++ b/mozilla/minimo/base/Makefile.in @@ -68,6 +68,8 @@ REQUIRES = xpcom \ content \ profdirserviceprovider \ pref \ + pipnss \ + intl \ embedcomponents \ appcomps \ phone \ diff --git a/mozilla/minimo/base/Minimo.cpp b/mozilla/minimo/base/Minimo.cpp index 77d29a6a6a6..a64da372414 100755 --- a/mozilla/minimo/base/Minimo.cpp +++ b/mozilla/minimo/base/Minimo.cpp @@ -210,6 +210,123 @@ nsFullScreen::GetChromeItems(nsISimpleEnumerator **_retval) } +class nsBadCertListener : public nsIBadCertListener +{ +public: + NS_DECL_ISUPPORTS + NS_DECL_NSIBADCERTLISTENER + + nsBadCertListener(); + ~nsBadCertListener(); +}; + + +#include "nsIWindowWatcher.h" + +nsBadCertListener::nsBadCertListener() +{ +} + +nsBadCertListener::~nsBadCertListener() +{ +} + +NS_IMPL_ISUPPORTS1(nsBadCertListener, nsIBadCertListener) + +#define MINIMO_PROPERTIES_URL "chrome://minimo/locale/minimo.properties" + + +NS_IMETHODIMP +nsBadCertListener::ConfirmUnknownIssuer(nsIInterfaceRequestor *socketInfo, nsIX509Cert *cert, PRInt16 *certAddType, PRBool *_retval) +{ + nsCOMPtr bundleService = do_GetService(NS_STRINGBUNDLE_CONTRACTID); + if (!bundleService) + return NS_ERROR_FAILURE; + + nsCOMPtr bundle; + bundleService->CreateBundle(MINIMO_PROPERTIES_URL, getter_AddRefs(bundle)); + + if (!bundle) + return NS_ERROR_FAILURE; + + nsXPIDLString message; + nsXPIDLString title; + bundle->GetStringFromName(NS_LITERAL_STRING("confirmUnknownIssuer").get(), getter_Copies(message)); + bundle->GetStringFromName(NS_LITERAL_STRING("securityWarningTitle").get(), getter_Copies(title)); + + PRBool result; + nsCOMPtr dlgService(do_GetService(NS_PROMPTSERVICE_CONTRACTID)); + dlgService->Confirm(nsnull, title, message, &result); + + *_retval = result; + + if (result) + *certAddType = ADD_TRUSTED_FOR_SESSION; + + return NS_OK; +} + +NS_IMETHODIMP +nsBadCertListener::ConfirmMismatchDomain(nsIInterfaceRequestor *socketInfo, const nsACString & targetURL, nsIX509Cert *cert, PRBool *_retval) +{ + nsCOMPtr bundleService = do_GetService(NS_STRINGBUNDLE_CONTRACTID); + if (!bundleService) + return NS_ERROR_FAILURE; + + nsCOMPtr bundle; + bundleService->CreateBundle(MINIMO_PROPERTIES_URL, getter_AddRefs(bundle)); + + if (!bundle) + return NS_ERROR_FAILURE; + + nsXPIDLString message; + nsXPIDLString title; + bundle->GetStringFromName(NS_LITERAL_STRING("confirmMismatch").get(), getter_Copies(message)); + bundle->GetStringFromName(NS_LITERAL_STRING("securityWarningTitle").get(), getter_Copies(title)); + + PRBool result; + nsCOMPtr dlgService(do_GetService(NS_PROMPTSERVICE_CONTRACTID)); + dlgService->Confirm(nsnull, title, message, &result); + + *_retval = result; + + return NS_OK; +} + +NS_IMETHODIMP +nsBadCertListener::ConfirmCertExpired(nsIInterfaceRequestor *socketInfo, nsIX509Cert *cert, PRBool *_retval) +{ + nsCOMPtr bundleService = do_GetService(NS_STRINGBUNDLE_CONTRACTID); + if (!bundleService) + return NS_ERROR_FAILURE; + + nsCOMPtr bundle; + bundleService->CreateBundle(MINIMO_PROPERTIES_URL, getter_AddRefs(bundle)); + + if (!bundle) + return NS_ERROR_FAILURE; + + nsXPIDLString message; + nsXPIDLString title; + bundle->GetStringFromName(NS_LITERAL_STRING("confirmCertExpired").get(), getter_Copies(message)); + bundle->GetStringFromName(NS_LITERAL_STRING("securityWarningTitle").get(), getter_Copies(title)); + + PRBool result; + nsCOMPtr dlgService(do_GetService(NS_PROMPTSERVICE_CONTRACTID)); + dlgService->Confirm(nsnull, title, message, &result); + + *_retval = result; + + return NS_OK; +} + +NS_IMETHODIMP +nsBadCertListener::NotifyCrlNextupdate(nsIInterfaceRequestor *socketInfo, const nsACString & targetURL, nsIX509Cert *cert) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + + nsresult StartupProfile() { NS_TIMELINE_MARK_FUNCTION("Profile Startup"); @@ -255,8 +372,18 @@ void DoPreferences() {0xa5, 0x9b, 0x93, 0x63, 0xa0, 0xbf, 0x9a, 0x87} \ } +#define NS_BADCERTLISTENER_CID \ +{ /* a4bdf79a-ed05-4256-bf12-4581a03f966e */ \ + 0xa4bdf79a, \ + 0xed05, \ + 0x4256, \ + {0xbf, 0x12, 0x45, 0x81, 0xa0, 0x3f, 0x96, 0x6e} \ +} + + NS_GENERIC_FACTORY_CONSTRUCTOR(nsBrowserStatusFilter) NS_GENERIC_FACTORY_CONSTRUCTOR(nsFullScreen) +NS_GENERIC_FACTORY_CONSTRUCTOR(nsBadCertListener) static const nsModuleComponentInfo defaultAppComps[] = { { @@ -273,6 +400,12 @@ static const nsModuleComponentInfo defaultAppComps[] = { nsFullScreenConstructor }, + { + "Bad Cert Dialogs", + NS_BADCERTLISTENER_CID, + NS_BADCERTLISTENER_CONTRACTID, + nsBadCertListenerConstructor + }, }; void OverrideComponents() diff --git a/mozilla/minimo/base/MinimoPrivate.h b/mozilla/minimo/base/MinimoPrivate.h index 1506f19e686..ac5f1163670 100755 --- a/mozilla/minimo/base/MinimoPrivate.h +++ b/mozilla/minimo/base/MinimoPrivate.h @@ -59,6 +59,7 @@ #include "nsIAppShell.h" #include "nsIAppShellService.h" #include "nsIAppStartupNotifier.h" +#include "nsIBadCertListener.h" #include "nsIClipboardCommands.h" #include "nsIComponentRegistrar.h" #include "nsIDOMWindow.h" @@ -70,6 +71,8 @@ #include "nsIPrefBranch.h" #include "nsIPrefService.h" #include "nsIPromptService.h" +#include "nsIPromptService.h" +#include "nsIStringBundle.h" #include "nsITimelineService.h" #include "nsIURI.h" #include "nsIWebBrowserChrome.h"