# react-native-securerandom

> Generate cryptographically-secure random bytes in react native

Latest version **1.0.1** (published 2022-09-22) · MIT license · 0 weekly downloads

## Install

```sh
npm install react-native-securerandom
pnpm add react-native-securerandom
yarn add react-native-securerandom
bun add react-native-securerandom
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.1 |
| Published | 2022-09-22 |
| First published | 2017-10-11 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 50.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 63 |
| Author | Rob Hogan |
| Maintainers | rh389 |
| Keywords | react-native, SecRandomCopyBytes, PRNG, CSPRNG, SecureRandom, crypto, RandomNumberGenerator, Cryptography |

## Links

- npm: https://www.npmjs.com/package/react-native-securerandom
- Repository: https://github.com/robhogan/react-native-securerandom
- Homepage: https://github.com/robhogan/react-native-securerandom#readme
- Issues: https://github.com/robhogan/react-native-securerandom/issues
- npm.io page: https://npm.io/package/react-native-securerandom

## Dependencies (1)

- [base64-js](https://npm.io/package/base64-js.md) *

## Alternatives

- [@gemini-wallet/core](https://npm.io/package/@gemini-wallet/core.md) — 515.6K weekly downloads
- [utility](https://npm.io/package/utility.md) — 416.6K weekly downloads
- [@primno/dpapi](https://npm.io/package/@primno/dpapi.md) — 7.2K weekly downloads
- [pi-readseek](https://npm.io/package/pi-readseek.md) — 3.7K weekly downloads
- [@emilia-protocol/verify](https://npm.io/package/@emilia-protocol/verify.md) — 1.1K weekly downloads

## Recent versions

- 1.0.1 (latest) — 2022-09-22
- 1.0.0 — 2020-05-23
- 1.0.0-rc.0 — 2019-06-04
- 0.3.1 — 2019-06-04
- 0.3.0 — 2018-10-06
- 0.2.0 — 2018-09-16
- 0.1.1 — 2017-10-11

## README

# react-native-securerandom
[![npm version](https://badge.fury.io/js/react-native-securerandom.svg)](https://badge.fury.io/js/react-native-securerandom)

A library to generate cryptographically-secure random bytes. Uses `SecRandomCopyBytes` on iOS, `SecureRandom` on Android and `System.Security.Cryptography.RandomNumberGenerator` on Windows.

## Usage
The library exports a single function:
### generateSecureRandom(length: number) => Promise\<Uint8Array\>
Takes a length, the number of bytes to generate, and returns a `Promise` that resolves with a `Uint8Array`.

```javascript
import { generateSecureRandom } from 'react-native-securerandom';

generateSecureRandom(12).then(randomBytes => console.log(randomBytes));
```

## Installation

`$ yarn add react-native-securerandom`

### Automatic linking with react-native link

`$ react-native link react-native-securerandom`

### Manual linking

#### iOS

##### With Cocoapods
1. Add `pod 'RNSecureRandom', :path => '../node_modules/react-native-securerandom'` to your `Podfile` (changing your `node_modules` path as appropriate)
2. Run `pod install` from the same directory as your `Podfile`

##### Without Cocoapods
1. In XCode, in the project navigator, right click `Libraries` ➜ `Add Files to [your project's name]`
2. Go to `node_modules` ➜ `react-native-securerandom` and add `RNSecureRandom.xcodeproj`
3. In XCode, in the project navigator, select your project. Add `libRNSecureRandom.a` to your project's `Build Phases` ➜ `Link Binary With Libraries`

#### Android

1. Open up `android/app/src/main/java/[...]/MainActivity.java`
  - Add `import net.rhogan.rnsecurerandom.RNSecureRandomPackage;` to the imports at the top of the file
  - Add `new RNSecureRandomPackage()` to the list returned by the `getPackages()` method
2. Append the following lines to `android/settings.gradle`:
  	```
  	include ':react-native-securerandom'
  	project(':react-native-securerandom').projectDir = new File(rootProject.projectDir, 	'../node_modules/react-native-securerandom/android')
  	```
3. Insert the following lines inside the dependencies block in `android/app/build.gradle`:
  	```
      compile project(':react-native-securerandom')
  	```

#### Windows

See [react-native-windows](https://github.com/Microsoft/react-native-windows)

1. In Visual Studio add `node_modules/react-native-securerandom/windows/RNSecureRandom.sln` folder to your solution, and reference from your app.
2. Open up your app's `MainPage.cs`
  - Add `using Net.Rhogan.RNSecureRandom.RNSecureRandom;` to the usings at the top of the file
  - Add `new RNSecureRandomPackage()` to the `List<IReactPackage>` returned by the `Packages` method

---
_Source: https://npm.io/package/react-native-securerandom · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
