Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RNP 0.10.0 release / introductory post #10

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions _posts/2018-08-20-rnp-010-released.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
layout: post
title: "RNP 0.10.0 has been released"
date: 2018-08-20 20:37:38 +0700
categories: release
excerpt: >-
After a year since it stemmed off NetPGP, the OpenPGP library
shares little code in common with its ancestor.
Enjoy new features, better performance, and better
compatibility with other implementations.
---

:cpp: C++

Meet RNP, an RFC4880-compliant OpenPGP library written in {cpp}.

RNP was born at Hong Kong-based Ribose and is maintained under its initiative.
Originally stemmed from NetPGP, it has little in common with its ancestor now
after a year of development—after a clean-up of legacy code,
corrected compatibility issues with GnuPG and other implementations,
improved performance and added cutting-edge features.

Feel free to use RNP in your software!
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This line feels a little out of place. I'm thinking it could be reworded to include mention of the BSD licensing though maybe?



== Getting started with RNP

If you’re deploying OpenPGP in a Ruby-based application,
there are bindings
(see RubyDoc footnote:[https://www.rubydoc.info/github/riboseinc/ruby-rnp/]).

Since it’s written in C++, you can call RNP from Objective-C code,
or with ctypes under Python.

RNP’s binaries `rnp` and `rnpkeys` can be installed via Homebrew or YUM,
with Debian packages coming next.
You can use the binaries similarly to GnuPG’s command-line tools
(see supported flags and use cases in RNP’s README footnote:[https://github.com/riboseinc/rnp/blob/master/README.md#usage]).

== Why RNP?

* It’s a proper library, in contrast to GnuPG/GPGME footnote:[See https://news.ycombinator.com/item?id=5180217[GnuPG is not a library (2013)]]. Ruby bindings are available with Python & Go bindings in the works, and you can use it wherever you can call C++ code.
* It’s implemented in C++ and offers constant memory footprint with large amounts of data.
* It offers comprehensive cipher support, including (uniquely) the SM algorithm family—a desirable feature if you deploy cryptography in mainland Chinese market.
* Its development is active (with the help of Ribose) and focused on adding cutting-edge features.

== Which algorithms does RNP support?

The following ciphers, encryption modes and hash functions are supported:

* Symmetric: IDEA, Triple DES, CAST5, Blowfish, AES-128, AES-192, AES-256, Twofish, Camellia-128, Camellia-192, Camellia-256, SM4
* Symmetric encryption modes: CFB, AEAD-EAX, AEAD-OCB
* Hash: MD5, SHA1, RIPEMD160, SHA-256, SHA-384, SHA-512, SHA-224, SM3
* Asymmetric: RSA, ElGamal, DSA, so-called DSA2 (i.e. DSA with keys larger then 1024 bits), ECDSA/ECDH (with some subset of curves which later on will be expanded), EdDSA, SM2.