reactjs-alex-alex2006hw / react-native-openpgp

OpenPGP.js adaptation for React-Native

Home Page:http://openpgpjs.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

React-Native-OpenPGP

React-Native-OpenPGP is a Javascript implementation of the OpenPGP protocol based on OpenPGP.js.

Getting started

Installation

npm install --save react-native-openpgp
rnpm link react-native-openpgp

Note: Run npm install -g rnpm if you haven't installed RNPM (React-Native Package Manager) yet! Alternatively you can add the Android and iOS modules library by following the official guide.

Usage

var openpgp = require('react-native-openpgp');

Encrypt and decrypt String data with a password

var options, encrypted;

options = {
    data: 'Hello, World!',      // input as String
    passwords: ['secret stuff'] // multiple passwords possible
};

openpgp.encrypt(options).then(function(ciphertext) {
    encrypted = ciphertext.data; // '-----BEGIN PGP MESSAGE ... END PGP MESSAGE-----'
});
options = {
    message: openpgp.readMessage(encrypted), // parse armored message
    password: 'secret stuff'                         // decrypt with password
};

openpgp.decrypt(options).then(function(plaintext) {
    return plaintext.data; // 'Hello, World!'
});

Encrypt and decrypt Uint8Array data with PGP keys

var options, encrypted;

var pubkey = '-----BEGIN PGP PUBLIC KEY BLOCK ... END PGP PUBLIC KEY BLOCK-----';
var privkey = '-----BEGIN PGP PRIVATE KEY BLOCK ... END PGP PRIVATE KEY BLOCK-----';

options = {
    data: new Uint8Array([0x01, 0x01, 0x01]),           // input as Uint8Array
    publicKeys: openpgp.readArmoredKey(pubkey).keys,   // for encryption
    privateKeys: openpgp.readArmoredKey(privkey).keys, // for signing (optional)
    armor: false                                        // don't ASCII armor
};

openpgp.encrypt(options).then(function(ciphertext) {
    encrypted = ciphertext.message.packets.write(); // get raw encrypted packets as Uint8Array
});
options = {
    message: openpgp.readBinaryMessage(encrypted),             // parse encrypted bytes
    publicKeys: openpgp.readArmoredKey(pubkey).keys,     // for verification (optional)
    privateKey: openpgp.readArmoredKey(privkey).keys[0], // for decryption
    format: 'binary'                                      // output as Uint8Array
};

openpgp.decrypt(options).then(function(plaintext) {
    return plaintext.data // Uint8Array([0x01, 0x01, 0x01])
});

Generate new key pair

var options = {
    userIds: [{ name:'Jon Smith', email:'jon@example.com' }], // multiple user IDs
    numBits: 2048,                                            // RSA key size
    passphrase: 'super long and hard to guess secret'         // protects the private key
};

openpgp.generateKey(options).then(function(key) {
    var privkey = key.privateKeyArmored; // '-----BEGIN PGP PRIVATE KEY BLOCK ... '
    var pubkey = key.publicKeyArmored;   // '-----BEGIN PGP PUBLIC KEY BLOCK ... '
});

About

OpenPGP.js adaptation for React-Native

http://openpgpjs.org


Languages

Language:JavaScript 99.6%Language:Java 0.3%Language:Objective-C 0.1%