npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-native-openpgp

v1.0.4

Published

React-Native OpenPGP is an OpenPGP.js implementation made to work under React-Native.

Downloads

185

Readme

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
react-native 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

import * as openpgp from '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((ciphertext) => {
    encrypted = ciphertext.data; // '-----BEGIN PGP MESSAGE ... END PGP MESSAGE-----'
  })
  .catch((error) => {
    console.log("Something went wrong: " + error);
  });
options = {
  message: openpgp.readMessage(encrypted), // parse armored message
  password: 'secret stuff'                         // decrypt with password
};

openpgp.decrypt(options)
  .then((plaintext) => {
    return plaintext.data; // 'Hello, World!'
  })
  .catch((error) => {
    console.log("Something went wrong: " + error);
  });

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((ciphertext) => {
    encrypted = ciphertext.message.packets.write(); // get raw encrypted packets as Uint8Array
  })
  .catch((error) => {
    console.log("Something went wrong: " + error);
  });
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((plaintext) => {
    return plaintext.data // Uint8Array([0x01, 0x01, 0x01])
  })
  .catch((error) => {
    console.log("Something went wrong: " + error);
  });

Generate new key pair

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

openpgp.generateKey(options)
  .then((key) => {
    var privkey = key.privateKeyArmored; // '-----BEGIN PGP PRIVATE KEY BLOCK ... '
    var pubkey = key.publicKeyArmored;   // '-----BEGIN PGP PUBLIC KEY BLOCK ... '
  })
  .catch((error) => {
    console.log("Something went wrong: " + error);
  });