2015-11-06 20 views
1

我想在我的Firefox AddOn中拨打window.crypto.subtle.generateKey。既然不能在main.js访问window我创建了一个page-workercontent script如何使用Web Crypto生成密钥对并在Firefox AddOn中访问其密钥?

var self = require('sdk/self'); 
var cryptoScript = require('sdk/page-worker').Page({ 
    contentURL: self.data.url('empty.html'), 
    contentScriptFile: self.data.url('call-web-crypto.js') 
}); 

我可以叫window.crypto.subtle.generateKey呼叫网络crypto.js,但我无法访问关键属性生成的密钥对:

XrayWrapper拒绝访问属性publicKey(原因:值与目标值不同)。有关更多信息,请参见https://developer.mozilla.org/en-US/docs/Xray_vision。请注意,只会报告给定全局对象的第一个被拒绝的属性访问。

如何在我的Firefox插件中生成密钥对并访问其密钥?

回答

3

main.js你可以...

const { Cu } = require("chrome"); 
Cu.importGlobalProperties(["crypto"]); 

,那么你将有机会获得crypto.subtle.generateKey以及所有其他crypto善良......注意没有window

+0

也工作正常在* main.js *(或* index.js *,现代名称)需要的所有附加脚本中。 –

+1

@user - 'main.js'' index.js'只是名字 - 它可以是'fred.js' - 我指定'main.js',因为这是原指定的问题:p –

+0

我只是想知道当我阅读这个问题。因此,也许别人也这样做了,这个小小的消息可以帮助他们。 –