mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-31 22:25:30 +00:00
68 lines
2.0 KiB
JavaScript
68 lines
2.0 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
"use strict";
|
|
|
|
var MasterPassword = {
|
|
pref: "privacy.masterpassword.enabled",
|
|
_tokenName: "",
|
|
|
|
get _secModuleDB() {
|
|
delete this._secModuleDB;
|
|
return this._secModuleDB = Cc["@mozilla.org/security/pkcs11moduledb;1"].getService(Ci.nsIPKCS11ModuleDB);
|
|
},
|
|
|
|
get _pk11DB() {
|
|
delete this._pk11DB;
|
|
return this._pk11DB = Cc["@mozilla.org/security/pk11tokendb;1"].getService(Ci.nsIPK11TokenDB);
|
|
},
|
|
|
|
get enabled() {
|
|
let slot = this._secModuleDB.findSlotByName(this._tokenName);
|
|
if (slot) {
|
|
let status = slot.status;
|
|
return status != Ci.nsIPKCS11Slot.SLOT_UNINITIALIZED && status != Ci.nsIPKCS11Slot.SLOT_READY;
|
|
}
|
|
return false;
|
|
},
|
|
|
|
setPassword: function setPassword(aPassword) {
|
|
try {
|
|
let status;
|
|
let slot = this._secModuleDB.findSlotByName(this._tokenName);
|
|
if (slot)
|
|
status = slot.status;
|
|
else
|
|
return false;
|
|
|
|
let token = this._pk11DB.findTokenByName(this._tokenName);
|
|
|
|
if (status == Ci.nsIPKCS11Slot.SLOT_UNINITIALIZED)
|
|
token.initPassword(aPassword);
|
|
else if (status == Ci.nsIPKCS11Slot.SLOT_READY)
|
|
token.changePassword("", aPassword);
|
|
|
|
BrowserApp.notifyPrefObservers(this.pref);
|
|
return true;
|
|
} catch(e) {
|
|
dump("MasterPassword.setPassword: " + e);
|
|
}
|
|
return false;
|
|
},
|
|
|
|
removePassword: function removePassword(aOldPassword) {
|
|
try {
|
|
let token = this._pk11DB.getInternalKeyToken();
|
|
if (token.checkPassword(aOldPassword)) {
|
|
token.changePassword(aOldPassword, "");
|
|
BrowserApp.notifyPrefObservers(this.pref);
|
|
return true;
|
|
}
|
|
} catch(e) {
|
|
dump("MasterPassword.removePassword: " + e + "\n");
|
|
}
|
|
NativeWindow.toast.show(Strings.browser.GetStringFromName("masterPassword.incorrect"), "short");
|
|
return false;
|
|
}
|
|
};
|