You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
which means it is compatible for embedded distribution within GPL,
35
-
MPL, MIT and most other open-source licenses, as well as being
36
-
included in commercial binary distributions.
60
+
* Suitable for commercial binary distributions
37
61
38
-
Feel free to use RNP in your software!
62
+
* Flexible embedding options in academic research and proprietary software
63
+
64
+
* No reciprocal licensing requirements unlike copyleft licenses
65
+
66
+
Whether you're developing research software, an open-source tool, or a
67
+
commercial application, RNP provides a reliable, well-maintained OpenPGP
68
+
implementation that you can freely integrate into your software without
69
+
licensing constraints.
39
70
40
71
41
72
== Getting started with RNP
42
73
43
-
If you are deploying OpenPGP in a Ruby-based application,
44
-
there are bindings
74
+
RNP is both a library for direct integration into applications and a set of
75
+
command-line tools. You can use it in several ways:
76
+
77
+
=== As a library
78
+
79
+
If you are developing a Ruby application, there are official bindings
45
80
(see https://www.rubydoc.info/github/rnpgp/ruby-rnp[ruby-rnp RubyDocs]).
46
81
47
-
Since RNP written in {cpp}, you can call it from Objective-C code,
48
-
or with `ctypes` under Python.
82
+
Since RNP is written in {cpp}, you can also integrate it directly into:
83
+
84
+
* C/C++ applications
85
+
* Objective-C code
86
+
* Python applications using `ctypes`
49
87
50
-
The RNP binaries `rnp` and `rnpkeys` can be installed via https://brew.sh[Homebrew]
51
-
or YUM,
52
-
with Debian packages coming next.
53
-
You can use the binaries similarly to GnuPG's command-line tools
88
+
=== As command-line tools
89
+
90
+
The CLI tools `rnp` and `rnpkeys` can be installed via:
91
+
92
+
* https://brew.sh[Homebrew] on macOS
93
+
* YUM on RPM-based Linux distributions
94
+
* Debian packages (coming soon)
95
+
96
+
These tools provide similar functionality to GnuPG's command-line interface
54
97
(see supported flags and use cases in the https://github.com/rnpgp/rnp[README]).
55
98
56
99
57
100
== Why RNP?
101
+
=== True library architecture
102
+
103
+
RNP is designed as a proper library from the ground up, unlike GnuPG/GPGME which
104
+
historically developed as a monolithic application (see
105
+
https://news.ycombinator.com/item?id=5180217[GnuPG is not a library (2013)]).
106
+
107
+
This architectural choice means you can easily integrate RNP into your
108
+
applications without wrestling with process management or complex IPC
109
+
mechanisms. The library provides clean APIs that allow direct integration at the
110
+
code level.
111
+
112
+
=== Extensive language support
113
+
114
+
While RNP's core is written in {cpp}, it offers seamless integration across
115
+
multiple programming languages. Official
116
+
https://www.rubydoc.info/github/rnpgp/ruby-rnp[Ruby bindings] are available and
117
+
actively maintained. Python and Go bindings are under development, making RNP
118
+
accessible to a wider range of developers. Thanks to its {cpp} foundation, you
119
+
can also integrate RNP into any environment that supports native code calling
120
+
conventions.
121
+
122
+
=== Optimized memory management
123
+
124
+
Built with modern {cpp}, RNP implements efficient memory management that
125
+
maintains a constant memory footprint even when processing large amounts of
126
+
data. This makes it particularly suitable for environments with memory
127
+
constraints or when handling large encrypted files. The implementation follows
128
+
best practices for secure memory handling of cryptographic material.
129
+
130
+
=== Comprehensive cipher support
131
+
132
+
RNP stands out with its extensive cryptographic algorithm support, including
133
+
unique implementation of the SM algorithm family - making it one of
134
+
the few OpenPGP implementations suitable for deployment in mainland China. The
135
+
SM series (including SM2, SM3, and SM4) meets Chinese national standards for
136
+
cryptographic algorithms, opening opportunities for applications that need to
137
+
comply with Chinese regulatory requirements.
138
+
139
+
=== Active development and innovation
140
+
141
+
The project maintains an active development cycle, focusing on implementing
142
+
cutting-edge cryptographic features while ensuring backwards compatibility.
143
+
Regular updates bring performance improvements, security enhancements, and
144
+
support for new standards as they emerge. The development team actively engages
145
+
with the community and responds to security considerations in the evolving
146
+
cryptographic landscape.
147
+
148
+
149
+
== Algorithm support in RNP
150
+
151
+
RNP provides comprehensive support for various cryptographic algorithms, ensuring compatibility with different security requirements and standards.
152
+
153
+
=== Symmetric encryption
154
+
155
+
RNP implements a wide range of symmetric encryption algorithms, offering different security levels and performance characteristics:
156
+
157
+
* https://en.wikipedia.org/wiki/International_Data_Encryption_Algorithm[IDEA] - A block cipher that was once used in early versions of PGP
158
+
* https://en.wikipedia.org/wiki/Triple_DES[Triple DES] - A triple-application of the DES cipher, providing additional security over single DES
159
+
* https://en.wikipedia.org/wiki/CAST-128[CAST5] - A block cipher offering good performance and security for legacy systems
160
+
* https://en.wikipedia.org/wiki/Blowfish_(cipher)[Blowfish] - A fast block cipher suitable for environments with limited resources
161
+
* https://en.wikipedia.org/wiki/Advanced_Encryption_Standard[AES] variants (128, 192, 256-bit) - The current industry standard for symmetric encryption
162
+
* https://en.wikipedia.org/wiki/Twofish[Twofish] - A highly secure alternative to AES, offering excellent performance
163
+
* https://en.wikipedia.org/wiki/Camellia_(cipher)[Camellia] variants (128, 192, 256-bit) - A cipher widely used in Japan and compatible with many international standards
164
+
* https://en.wikipedia.org/wiki/SM4_(cipher)[SM4] - The Chinese national standard block cipher, essential for applications requiring Chinese regulatory compliance
165
+
166
+
=== Symmetric encryption modes
167
+
168
+
RNP supports multiple encryption modes that provide different security properties:
58
169
59
-
* It is a proper library, in contrast to GnuPG/GPGME (see https://news.ycombinator.com/item?id=5180217[GnuPG is not a library (2013)]).
170
+
* CFB (Cipher Feedback) - A traditional mode that converts block ciphers into stream ciphers
171
+
* AEAD-EAX - An authenticated encryption mode providing both confidentiality and authenticity
* Ruby bindings are available with Python & Go bindings in the works, and you can use it wherever you can call {cpp} code.
174
+
=== Hash functions
62
175
63
-
* Implemented in {cpp} and offers constant memory footprint with large amounts of data.
176
+
RNP implements various cryptographic hash functions for different use cases:
64
177
65
-
* It offers comprehensive cipher support, including (uniquely) the SM algorithm family -- a desirable feature if you deploy cryptography in mainland Chinese market.
178
+
* MD5 - While cryptographically broken, maintained for legacy compatibility
179
+
* SHA1 - Maintained for backwards compatibility with older systems
180
+
* https://en.wikipedia.org/wiki/RIPEMD[RIPEMD160] - A hash function developed in Europe as an open alternative
181
+
* SHA-2 family (SHA-224, SHA-256, SHA-384, SHA-512) - The current industry standard hash functions providing different security levels
182
+
* https://en.wikipedia.org/wiki/SM3_(hash_function)[SM3] - The Chinese national standard hash function, required for Chinese market compliance
66
183
67
-
* Active development and focused on adding cutting-edge features.
184
+
=== Asymmetric cryptography
68
185
186
+
RNP supports a comprehensive set of public-key algorithms:
69
187
70
-
== Which algorithms does RNP support?
188
+
* https://en.wikipedia.org/wiki/RSA_(cryptosystem)[RSA] - The widely-used public-key cryptosystem for encryption and digital signatures
189
+
* https://en.wikipedia.org/wiki/ElGamal_encryption[ElGamal] - An asymmetric algorithm particularly useful for encryption operations
190
+
* https://en.wikipedia.org/wiki/Digital_Signature_Algorithm[DSA] - The Digital Signature Algorithm, including support for key sizes beyond 1024 bits (DSA2)
* https://en.wikipedia.org/wiki/EdDSA[EdDSA] - Modern elliptic curve signatures providing high security and performance
193
+
* https://en.wikipedia.org/wiki/SM2_(cryptography)[SM2] - The Chinese national standard for public-key cryptography, essential for Chinese market compliance
71
194
72
-
The following ciphers, encryption modes and hash functions are supported:
* True library architecture enabling direct integration without IPC overhead
201
+
* High-performance implementation in modern {cpp}
202
+
* BSD 3-clause license allowing both open-source and commercial use
203
+
* Comprehensive algorithm support including Chinese SM standards
204
+
* Active development with regular updates and security improvements
79
205
80
-
* 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.
206
+
Whether you're building an open-source tool or a commercial application, RNP
207
+
offers a reliable, high-performance OpenPGP implementation that seamlessly
0 commit comments