Skip to content

flyskywhy/react-native-cryptoswift

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

react-native-cryptoswift

npm version npm downloads npm licence Platform

Fork from react-native-cryptography v0.0.2

Crypto e.g. "ase-128-ccm" is invalid (always say Error: CipherFactory.createCipher(...): Unknown cipher ase-128-ccm) on iOS with react-native-quick-crypto , so be this react-native-cryptoswift .

  • iOS CryptoSwift

  • Android BouncyCastle !TODO finish md5 and sha256!

Cryptoswift functions

Symetric ciphering

func ios android
AES CCM waiting PR
AES GCM waiting PR
AES 128 waiting PR
AES 192 waiting PR
AES 256 waiting PR
  • AES 128 (pass 16 bytes key and iv)

  • AES 192 (pass 24 bytes key and iv)

  • AES 256 (pass 32 bytes key and iv)

Hashing

func ios android
MD5 waiting PR TODO
SHA256 waiting PR TODO

Install

$ npm install react-native-cryptoswift --save

iOS: cd ios/ && pod install

Usage

import React, { Component } from 'react';
import { Button, StyleSheet, Text, TextInput, View } from 'react-native';
import CryptoSwift from 'react-native-cryptoswift';

const styles = StyleSheet.create({
  container: {
    flex: 1,
    marginTop: 50,
    justifyContent: 'flex-start',
    alignItems: 'center',
  },
});

export default class App extends Component {
  static AES_KEY_128 = Array.from('keykeykeykeykeyk').map(char => char.charCodeAt());
  static AES_IV = Array.from('drowssapdrow').map(char => char.charCodeAt());
  static AUTH_TAG_LENGTH = 4;

  encryptAesCcm() {
    const utf8text = 'Hello, I am the message to cipher';
    const plaintext = Array.from(utf8text).map(char => char.charCodeAt());
    CryptoSwift.encryptAesCcm(plaintext, App.AES_KEY_128, App.AES_IV, App.AUTH_TAG_LENGTH)
      .then(({ciphertext, authTag}) => {
        this.encrypted = {ciphertext, authTag};
        console.log(this.encrypted);
      })
      .catch(err => console.error(err));
  }

  decryptAesCcm() {
    CryptoSwift.decryptAesCcm(this.encrypted.ciphertext, App.AES_KEY_128, App.AES_IV, this.encrypted.authTag, App.AUTH_TAG_LENGTH)
      .then(plaintext => console.log(plaintext))
      .catch(err => console.error(err));
  }

  md5() {
    // CryptoSwift.md5('string to digest').then(digest => console.log(digest));
  }

  sha256() {
    // CryptoSwift.sha256('string to digest').then(digest => console.log(digest));
  }

  render() {
    return (
      <View style={styles.container}>
        <Button onPress={this.encryptAesCcm} title={'encrypt with AES'} />
        <Button onPress={this.decryptAesCcm} title={'decrypt AES'} />
        <Button onPress={this.md5} title={'MD5'} />
        <Button onPress={this.sha256} title={'SHA256'} />
      </View>
    );
  }
}

About

standard cryptographic functions with CryptoSwift on iOS

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors