Генерация JWT в react native

#javascript #ios #cryptography #react-native #jwt

#javascript #iOS #криптография #react-native #jwt

Вопрос:

Я пытаюсь сгенерировать JWT в React Native. react-native-jwt Модуль основан на узлах jwt-simple . Он использует react-native-crypto , который является частичным клоном crypto-browserify с определенными обходными путями, чтобы начать crypto работать вне веб-браузера.

Проблема в том, что randombytes (зависимость от react-native-jwt ) не может найти crypto .

browser.js :

 'use strict'

function oldBrowser () {
  throw new Error('secure random number generation not supported by this browsernuse chrome, FireFox or Internet Explorer 11')
}

var crypto = global.crypto || global.msCrypto // GETS SET TO 'UNDEFINED'

if (crypto amp;amp; crypto.getRandomValues) {
  module.exports = randomBytes
} else {
  module.exports = oldBrowser
}

function randomBytes (size, cb) {
  // phantomjs needs to throw
  if (size > 65536) throw new Error('requested too many random bytes')
  // in case browserify  isn't using the Uint8Array version
  var rawBytes = new global.Uint8Array(size)

  // This will not work in older browsers.
  // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues
  if (size > 0) {  // getRandomValues fails on IE if size == 0
    crypto.getRandomValues(rawBytes)
  }
  // phantomjs doesn't like a buffer being passed here
  var bytes = new Buffer(rawBytes.buffer)

  if (typeof cb === 'function') {
    return process.nextTick(function () {
      cb(null, bytes)
    })
  }

  return bytes
}
  

Похоже, что криптография доступна только на Android, а мне она нужна на iOS.