openpgp.js 关于 wp8 错误
openpgp.js on wp8 error
我在我的应用程序中使用 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。如果失败,'cause 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;
并且错误消失了。现在它无法加密消息 - 并且很难调试,因为库代码被缩小了
所以,对于遇到同样问题来到这里的任何人。
- 使用
var openpgp = window.openpgp;
避免 "undefined" 错误。
- 下一个问题在
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?
希望对大家有所帮助=)
我在我的应用程序中使用 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。如果失败,'cause 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;
并且错误消失了。现在它无法加密消息 - 并且很难调试,因为库代码被缩小了
所以,对于遇到同样问题来到这里的任何人。
- 使用
var openpgp = window.openpgp;
避免 "undefined" 错误。 - 下一个问题在
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?
希望对大家有所帮助=)