Генерация JWT в реакции родной
Я пытаюсь сгенерировать JWT в React Native. react-native-jwt
модуль основан на Node's 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 browser\nuse chrome, FireFox or Internet Explorer 11')
}
var crypto = global.crypto || global.msCrypto // GETS SET TO 'UNDEFINED'
if (crypto && 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.