From c5c19032e1e91cd2df322deea99dbdf0a8829b6d Mon Sep 17 00:00:00 2001 From: "morse%netscape.com" Date: Thu, 27 Sep 2001 00:46:26 +0000 Subject: [PATCH] bug 101637, expire master password after each time it is used, r=pchen, sr=alecf git-svn-id: svn://10.0.0.236/trunk@103906 18797224-902f-48f8-a5cc-f745e15eee43 --- .../resources/content/pref-passwords.xul | 26 +++++++++++++++-- .../resources/locale/en-US/pref-passwords.dtd | 2 ++ .../extensions/wallet/src/nsWalletService.cpp | 28 +++++++++++++++++++ 3 files changed, 53 insertions(+), 3 deletions(-) diff --git a/mozilla/extensions/wallet/resources/content/pref-passwords.xul b/mozilla/extensions/wallet/resources/content/pref-passwords.xul index 7b1b4a4e222..d3feb182e22 100644 --- a/mozilla/extensions/wallet/resources/content/pref-passwords.xul +++ b/mozilla/extensions/wallet/resources/content/pref-passwords.xul @@ -36,7 +36,7 @@ @@ -63,6 +63,23 @@ wallet.WALLET_InitReencryptCallback(window); } + function encryptionTest() { + var checkbox = document.getElementById("encryptExpire"); + var checked = checkbox.getAttribute("checked"); + + var wallet = Components.classes['@mozilla.org/wallet/wallet-service;1']; + wallet = wallet.getService(); + wallet = wallet.QueryInterface(Components.interfaces.nsIWalletService); + try { + wallet.WALLET_Encrypt("dummy"); + } catch (ex) { + // user could not supply master password, leave checkbox in original state + checkbox.setAttribute("checked", !checked); + return false; + } + return true; + } + ]]> @@ -87,11 +104,14 @@ &encryptDescription.label; - + - + + diff --git a/mozilla/extensions/wallet/resources/locale/en-US/pref-passwords.dtd b/mozilla/extensions/wallet/resources/locale/en-US/pref-passwords.dtd index ce32922b270..80bd8b78d4d 100644 --- a/mozilla/extensions/wallet/resources/locale/en-US/pref-passwords.dtd +++ b/mozilla/extensions/wallet/resources/locale/en-US/pref-passwords.dtd @@ -12,3 +12,5 @@ + + diff --git a/mozilla/extensions/wallet/src/nsWalletService.cpp b/mozilla/extensions/wallet/src/nsWalletService.cpp index a3e900b24db..5fad2e724be 100644 --- a/mozilla/extensions/wallet/src/nsWalletService.cpp +++ b/mozilla/extensions/wallet/src/nsWalletService.cpp @@ -272,6 +272,23 @@ nsWalletlibService::UnregisterProc(nsIComponentManager *aCompMgr, return NS_OK; } +PRBool expireMasterPassword = PR_FALSE; +#define expireMasterPasswordPref "signon.expireMasterPassword" + +MODULE_PRIVATE int PR_CALLBACK +ExpireMasterPasswordPrefChanged(const char * newpref, void * data) { + nsresult rv; + nsCOMPtr prefs(do_GetService(NS_PREF_CONTRACTID, &rv)); + if (NS_FAILED(prefs->GetBoolPref(expireMasterPasswordPref, &expireMasterPassword))) { + expireMasterPassword = PR_FALSE; + } + if (expireMasterPassword) { + PRBool status; + WLLT_ExpirePassword(&status); + } + return 0; +} + nsresult nsWalletlibService::Init() { nsresult rv; @@ -299,6 +316,13 @@ nsresult nsWalletlibService::Init() else NS_ASSERTION(PR_FALSE, "Could not get nsIDocumentLoader"); + /* initialize the expire-master-password feature */ + nsCOMPtr prefs(do_GetService(NS_PREF_CONTRACTID, &rv)); + if (NS_SUCCEEDED(rv)) { + prefs->RegisterCallback(expireMasterPasswordPref, ExpireMasterPasswordPrefChanged, NULL); + prefs->GetBoolPref(expireMasterPasswordPref, &expireMasterPassword); + } + return NS_OK; } @@ -448,6 +472,10 @@ nsWalletlibService::OnStateChange(nsIWebProgress* aWebProgress, } } } + if (expireMasterPassword) { + PRBool status; + WLLT_ExpirePassword(&status); + } return rv; }