我在我的应用中使用openPgpJs库,使用Apache Cordova创建。
以下是代码的一部分:
var publicKey = openpgp.key.readArmored(_publicKey);
openpgp.encryptMessage(publicKey.keys, text).then(function (pgpMessage) {
// success
callback(pgpMessage);
}).catch(function (error) {
// failure
console.error(error);
});
它工作正常,但不适用于WP8。如果失败,'原因openpgp
var未定义。在那个库源中,一开始就有这样的代码:
!function (e) {
"object" == typeof exports ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : "undefined" != typeof window ? window.openpgp = e() : "undefined" != typeof global ? global.openpgp = e() : "undefined" != typeof self && (self.openpgp = e())
}
应该定义openpgp
。我怎样才能使它发挥作用?
更新
我添加了var openpgp = window.openpgp;
,错误消失了。现在它没有加密消息 - 它很难调试,导致库代码缩小
答案 0 :(得分:0)
所以,对于那些来这里遇到同样问题的人来说。
var openpgp = window.openpgp;
来避免“未定义”错误。getRandomValues
函数内部 - 存在异常No secure random number generator available.
。为了避免这个错误,我已经将最后一个(带有异常)语句更改为 var sjcl = window.sjcl;
if (sjcl.random.isReady()) {
var buf = new Uint8Array(1);
bytes = sjcl.random.randomWords(buf.length);
buf.set(bytes);
}else{
var bytes = [];
for (var i = 0; i < buf.length; i++) {
bytes.push(isaac.rand());
buf.set(bytes);
}
}
根据@ZeroG回答这个问题:Secure random numbers in javascript?
希望它可以帮助某人=)