mirror of https://github.com/keeweb/keeweb.git
plugin signature validation
This commit is contained in:
parent
2aadc27db8
commit
27a0d811be
|
@ -42,10 +42,13 @@ const PluginManager = Backbone.Model.extend({
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
install(url, expectedManifest) {
|
install(url, expectedManifest, skipSignatureValidation) {
|
||||||
this.trigger('change');
|
this.trigger('change');
|
||||||
return Plugin.loadFromUrl(url, expectedManifest).then(plugin => {
|
return Plugin.loadFromUrl(url, expectedManifest).then(plugin => {
|
||||||
return this.uninstall(plugin.id).then(() => {
|
return this.uninstall(plugin.id).then(() => {
|
||||||
|
if (skipSignatureValidation) {
|
||||||
|
plugin.set('skipSignatureValidation', true);
|
||||||
|
}
|
||||||
return plugin.install(true, false).then(() => {
|
return plugin.install(true, false).then(() => {
|
||||||
this.get('plugins').push(plugin);
|
this.get('plugins').push(plugin);
|
||||||
this.trigger('change');
|
this.trigger('change');
|
||||||
|
|
|
@ -41,7 +41,8 @@ const Plugin = Backbone.Model.extend(_.extend({}, PluginStatus, {
|
||||||
installTime: null,
|
installTime: null,
|
||||||
installError: null,
|
installError: null,
|
||||||
updateCheckDate: null,
|
updateCheckDate: null,
|
||||||
updateError: null
|
updateError: null,
|
||||||
|
skipSignatureValidation: false
|
||||||
},
|
},
|
||||||
|
|
||||||
resources: {},
|
resources: {},
|
||||||
|
@ -106,6 +107,9 @@ const Plugin = Backbone.Model.extend(_.extend({}, PluginStatus, {
|
||||||
if (!manifest.publicKey) {
|
if (!manifest.publicKey) {
|
||||||
return 'No plugin public key';
|
return 'No plugin public key';
|
||||||
}
|
}
|
||||||
|
if (!this.get('skipSignatureValidation') && manifest.publicKey !== SignatureVerifier.getPublicKey()) {
|
||||||
|
return 'Public key mismatch';
|
||||||
|
}
|
||||||
if (!manifest.resources || !Object.keys(manifest.resources).length) {
|
if (!manifest.resources || !Object.keys(manifest.resources).length) {
|
||||||
return 'No plugin resources';
|
return 'No plugin resources';
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,7 +125,7 @@ const SettingsPluginsView = Backbone.View.extend({
|
||||||
urlTextBox.prop('disabled', true);
|
urlTextBox.prop('disabled', true);
|
||||||
installBtn.text(Locale.setPlInstallBtnProgress + '...').prop('disabled', true);
|
installBtn.text(Locale.setPlInstallBtnProgress + '...').prop('disabled', true);
|
||||||
this.installFromUrl = { url };
|
this.installFromUrl = { url };
|
||||||
PluginManager.install(url)
|
PluginManager.install(url, undefined, true)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.installFinished();
|
this.installFinished();
|
||||||
this.installFromUrl = null;
|
this.installFromUrl = null;
|
||||||
|
|
|
@ -14,6 +14,7 @@ Release notes
|
||||||
`*` clear clipboard on exit
|
`*` clear clipboard on exit
|
||||||
`*` don't remove spaces in custom fields
|
`*` don't remove spaces in custom fields
|
||||||
`*` auto-type on subdomains
|
`*` auto-type on subdomains
|
||||||
|
`*` plugin signature validation
|
||||||
|
|
||||||
##### v1.5.6 (2017-08-31)
|
##### v1.5.6 (2017-08-31)
|
||||||
`-` fix #722: hang on start in desktop
|
`-` fix #722: hang on start in desktop
|
||||||
|
|
Loading…
Reference in New Issue