1.0.5 • Published 4 years ago

@consento/sync-randombytes v1.0.5

Weekly downloads
697
License
MIT
Repository
-
Last release
4 years ago

sync-randombytes

JavaScript Style Guide

sync-randombytes is a polyfill for crypto.randomBytes that works in node, browsers, react-native (with support for versions < 0.60) and expo.

npm i sync-randombytes --save

Usage

You can use it like an other randomBytes function by calling:

const randomBytes = require('sync-randombytes')
const randomUint8Array = randomBytes(new Uint8Array(16))

Why?

  • React-native < 0.60 does not support crypto.randomBytes and you need a custom solution to implement a sync random method
  • Metro bundlers complain when you try to use react-native-randombytes as it's dependencies try to require('crypto') - which is not available in react-native.

How it works?

  • It uses window.crypto.getRandomBytes if available.
  • If 'crypto' can be "required" it will use
    • from node > 6.13: crypo.randomFill - or a polyfill that implements it using crypto.randomBytes for node < 6.13
  • .. else it will use seedrandom
    • with a randomseed from the native environment.
    • if not available: with a custom random-seed if expo is available. Random quality degraded
    • else the default random-seed if. Random quality degraded

License

MIT

with some source code adopted from react-native-randombytes