@celo/react-native-fast-crypto

Native C/C++ implemented crypto libraries for React Native apps

Usage no npm install needed!

<script type="module">
  import celoReactNativeFastCrypto from 'https://cdn.skypack.dev/@celo/react-native-fast-crypto';
</script>

README

react-native-fast-crypto

This library implements fast, fully native crypto routines for React Native under iOS and Android. Fully built binaries are committed for both platforms but can also be built from scratch.

Getting started

npm install react-native-fast-crypto --save

Mostly automatic installation

react-native link react-native-fast-crypto

Manual installation

Install in iOS app

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-fast-crypto and add RNFastCrypto.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libRNFastCrypto.a to your project's Build PhasesLink Binary With Libraries
  4. Run your project (Cmd+R)<

Install in Android app

  1. Open up android/app/src/main/java/[...]/MainApplication.java
  • Add import co.airbitz.fastcrypto.RNFastCryptoPackage; to the imports at the top of the file
  • Add new RNFastCryptoPackage() to the list returned by the getPackages() method
  1. Append the following lines to android/settings.gradle:
    include ':react-native-fast-crypto'
    project(':react-native-fast-crypto').projectDir = new File(rootProject.projectDir, 	'../node_modules/react-native-fast-crypto/android')
    
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
      compile project(':react-native-fast-crypto')
    

Usage

import { scrypt } from 'react-native-fast-crypto';

const data = new Uint8Array([1, 250, 3, 4, 34, 64, 39, 43, 12])
const salt = new Uint8Array([45, 124, 45, 29, 172, 238, 35])

const result: Uint8Array = await crypto.scrypt(data, salt, 16384, 8, 1, 32)
console.log(result)

Build the C/C++ binaries from scratch (optional)

The build process requires several pieces of software to be installed on the host system:

  • autoconf
  • automake
  • cmake
  • git
  • libtool
  • pkgconfig
  • protobuf
  • astyle

To install these on the Mac, please use Homebrew:

brew install autoconf automake cmake git libtool pkgconfig protobuf astyle

The 'wget' and 'cmake' that come from MacPorts are known to be broken. If you are building for iOS or Mac native, you also need a working installation of the XCode command-line tools.

Xcode 10

Xcode 10 removes the /usr/include files so they must be re-installed by using the package at

/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

To build npm run build. This can take quite a long time as it builds binaries for multiple different architectures.