阅读:688回复:0
折腾老古董。去除firefox签名验证
老版本的添加 config.js config-prefs.js文件的方法失效了(54+),在原贴评论区给出了新的去除验证config.js,记得要把 “ // ” 也带上
https://www.ghacks.net/2016/08/14/override-firefox-add-on-signing-requirement/#comment-4260515 // ["Provider", "Install"].forEach(name => {try { Components.utils.import(`resource://gre/modules/addons/XPI${name}.jsm`, {}) .eval("SIGNED_TYPES.clear(); this;").eval(String.raw`"verifyZipSignedState" in this && (uuidg => { var signedState = AddonManager.SIGNEDSTATE_NOT_REQUIRED; var re = /\x06\x03U\x04\x03\x14[\s\S](\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}|[a-z0-9-\._]*\@[a-z0-9-\._]+)0\x82\x02"0\r\x06\t/i; var bsp = Cu.getGlobalForObject(XPIProvider), til = bsp.eval("TemporaryInstallLocation"); var getId = file => { var result, is = {close() {}}, sis = {close() {}}; var uri = bsp.getURIForResourceInFile(file, "META-INF/mozilla.rsa"); try { is = Services.io.newChannelFromURIWithLoadInfo(uri, null).open(); sis = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream); sis.init(is); var str = sis.readBytes(sis.available()); var match = str.match(re); if (match) result = match[1]; } catch(ex) {} sis.close(); is.close(); return result || uuidg.generateUUID().toString(); } verifyZipSignedState = function verifyZipSignedState(aFile, aAddon) { if (aAddon.id || aAddon._installLocation == til) return Promise.resolve({signedState, cert: null}); var root = !AppConstants.MOZ_REQUIRE_SIGNING && Services.prefs.getBoolPref(PREF_XPI_SIGNATURES_DEV_ROOT, false) ? Ci.nsIX509CertDB.AddonsStageRoot : Ci.nsIX509CertDB.AddonsPublicRoot; return new Promise(resolve => { var callback = {openSignedAppFileFinished(rv, zipReader, cert) { zipReader && zipReader.close(); resolve({signedState, cert: cert || {commonName: getId(aFile)}}); }}; gCertDB.openSignedAppFileAsync(root, aFile, callback.wrappedJSObject = callback); }); } })(Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator));`); } catch(ex) {}}); 然后 xpinstall.signatures.required false |
|