关于wp8错误的openpgp.js

时间:2015-05-15 08:19:30

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

我在我的应用中使用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;,错误消失了。现在它没有加密消息 - 它很难调试,导致库代码缩小

1 个答案:

答案 0 :(得分:0)

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

  1. 使用var openpgp = window.openpgp;来避免“未定义”错误。
  2. 下一个问题是getRandomValues函数内部 - 存在异常No secure random number generator available.。为了避免这个错误,我已经将最后一个(带有异常)语句更改为
  3. 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?

    希望它可以帮助某人=)