【问题标题】:openpgp.js on wp8 errorwp8错误上的openpgp.js
【发布时间】:2015-07-27 02:21:19
【问题描述】:

我在我的应用程序中使用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;,错误消失了。现在它无法加密消息 - 并且很难调试,因为库代码被缩小了

【问题讨论】:

    标签: javascript cordova windows-phone-8 openpgp openpgp.js


    【解决方案1】:

    所以,对于遇到同样问题的人来说。

    1. 使用var openpgp = window.openpgp; 避免“未定义”错误。
    2. 下一个问题在 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?

    希望它可以帮助某人=)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多