<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>RNP Blog</title><description>Releases, news and updates on the RNP project.</description><link>https://www.rnpgp.org/</link><item><title>RNP version 0.18.1 released</title><link>https://www.rnpgp.org/blog/2025-11-20-rnp-release-0-18-1/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2025-11-20-rnp-release-0-18-1/</guid><description>Critical security release fixing CVE-2025-13470: vulnerable PKESK session keys in version 0.18.0, along with Botan 3.7.0 compatibility improvements.</description><pubDate>Thu, 20 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The RNP 0.18.1 release is a critical security update that addresses
CVE-2025-13470, a high-severity vulnerability in session key generation for
public key encryption introduced in version 0.18.0.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;strong&gt;All users of RNP 0.18.0 should upgrade immediately to version 0.18.1.&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_security_vulnerability_cve_2025_13470&quot;&gt;Security vulnerability: CVE-2025-13470&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_summary&quot;&gt;Summary&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP version 0.18.0 contains a critical vulnerability in session key generation
for PKESK (Public Key Encrypted Session Key) packets. Session keys were
generated without cryptographically random values.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CVE&lt;/strong&gt;: &lt;a href=&quot;https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-13470&quot;&gt;CVE-2025-13470&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: High (CVSS 7.5)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Affected Version&lt;/strong&gt;: 0.18.0 ONLY&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fixed Version&lt;/strong&gt;: 0.18.1&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_technical_details&quot;&gt;Technical details&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;During refactoring work in version 0.18.0, the session key initialization for
SKESK (passphrase-based encryption) was correctly updated. However, the
corresponding initialization for PKESK (public key encryption) was not
implemented, resulting in vulnerable session keys.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The vulnerability affects only public key encryption (PKESK packets).
Passphrase-based encryption (SKESK packets) is not affected.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;strong&gt;Root cause&lt;/strong&gt;: Vulnerable session key buffer used in PKESK packet generation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CWE&lt;/strong&gt;: &lt;a href=&quot;https://cwe.mitre.org/data/definitions/330.html&quot;&gt;CWE-330: Use of Insufficiently Random Values&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CVSS Vector&lt;/strong&gt;: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N (Base Score: 7.5)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_impact&quot;&gt;Impact&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Messages encrypted with RNP 0.18.0 using public key encryption use vulnerable
session key values. This is a &lt;strong&gt;confidentiality issue&lt;/strong&gt; for PKESK-encrypted data.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;strong&gt;Encryption types affected:&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Public key encryption (PKESK) - &lt;strong&gt;AFFECTED&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Passphrase-based encryption (SKESK) - &lt;strong&gt;NOT AFFECTED&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_affected_and_unaffected_versions&quot;&gt;Affected and unaffected versions&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;strong&gt;AFFECTED:&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;RNP 0.18.0 ONLY&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;strong&gt;NOT AFFECTED:&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;RNP 0.17.1 and all earlier versions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;RNP 0.18.1 and later versions&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_timeline&quot;&gt;Timeline&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;2025-06-19&lt;/strong&gt;: RNP 0.18.0 released (vulnerability introduced)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;2025-11-07&lt;/strong&gt;: Vulnerability discovered and reported by Johannes Roth (MTG AG)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;2025-11-19&lt;/strong&gt;: CVE-2025-13402 assigned by Red Hat&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;2025-11-20&lt;/strong&gt;: CVE-2025-13470 assigned by &lt;a href=&quot;https://www.ribose.com&quot;&gt;Ribose&lt;/a&gt;/MITRE&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;2025-11-20&lt;/strong&gt;: Fix developed and tested&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;2025-11-21&lt;/strong&gt;: RNP 0.18.1 released with fix&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;2025-11-21&lt;/strong&gt;: Public disclosure (same day as release)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_affected_distributions&quot;&gt;Affected distributions&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Version 0.18.0 was released on 2025-06-19 and has been packaged by numerous
distributions:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Debian 14, unstable&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Devuan unstable&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;EPEL 8, 9, 10&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exherbo&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fedora 41, 42, 43, Rawhide&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FreeBSD Ports&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Homebrew&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kali Linux Rolling&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;nixpkgs unstable&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;OpenBSD Ports&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;openmamba&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;openSUSE Tumbleweed&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.17.1 and earlier versions are NOT affected by this vulnerability.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_thunderbird_status&quot;&gt;Thunderbird status&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://www.thunderbird.net/&quot;&gt;Thunderbird&lt;/a&gt;&apos;s affected status depends on distribution packaging:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;strong&gt;UPSTREAM THUNDERBIRD (NOT AFFECTED):&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Upstream Thunderbird binaries bundle RNP version 0.17.1, which is not affected.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;strong&gt;DISTRIBUTION-PACKAGED THUNDERBIRD (VARIES):&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Some distributions build Thunderbird to use system-installed RNP libraries
instead of the bundled version. Thunderbird&amp;#8217;s affected status depends on:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;olist arabic&quot;&gt;
&lt;ol class=&quot;arabic&quot;&gt;
&lt;li&gt;
&lt;p&gt;Whether the distribution builds Thunderbird with system RNP or bundled RNP&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If using system RNP, which version of RNP is installed&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;strong&gt;Known configurations:&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Gentoo&lt;/strong&gt;: Uses system RNP (via &lt;code&gt;+system-librnp&lt;/code&gt; USE flag). If system RNP
is version 0.18.0, Thunderbird IS AFFECTED.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Most other distributions&lt;/strong&gt;: Use bundled RNP 0.17.1, NOT AFFECTED.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;strong&gt;Distributions should verify their Thunderbird packaging:&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Check if Thunderbird is built with &lt;code&gt;--enable-system-rnp&lt;/code&gt; or similar flags&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check if Thunderbird package has a dependency on system RNP libraries&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If Thunderbird uses system RNP 0.18.0, it is AFFECTED&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_mitigation_and_recommendations&quot;&gt;Mitigation and recommendations&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_for_standalone_rnp_users&quot;&gt;For standalone RNP users&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Upgrade to RNP 0.18.1 immediately.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_for_distributions_that_have_packaged_0_18_0&quot;&gt;For distributions that have packaged 0.18.0&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Please update to 0.18.1 when released, or consider providing 0.17.1 as an
interim option.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_for_thunderbird_packages_using_system_rnp&quot;&gt;For Thunderbird packages using system RNP&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;If your Thunderbird package is built with system RNP support and RNP 0.18.0
is installed, update RNP to 0.18.1 or 0.17.1. Consider whether Thunderbird
should continue using system RNP or switch to bundled RNP.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_for_users&quot;&gt;For users&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Users who encrypted sensitive data using RNP 0.18.0 (standalone or via
Thunderbird with system RNP 0.18.0) should re-encrypt that data with
RNP 0.18.1 or 0.17.1 based on their security requirements.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_additional_improvements&quot;&gt;Additional improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;In addition to the critical security fix, this release includes:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_botan_3_7_0_compatibility&quot;&gt;Botan 3.7.0 compatibility&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Full compatibility with &lt;a href=&quot;https://botan.randombit.net/&quot;&gt;Botan&lt;/a&gt; 3.7.0 has been
ensured, addressing API changes introduced in the latest Botan release.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_bug_fixes&quot;&gt;Bug fixes&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Various bug fixes and minor improvements enhance RNP&amp;#8217;s stability and reliability.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_credits&quot;&gt;Credits&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The vulnerability was discovered and reported by &lt;strong&gt;Johannes Roth&lt;/strong&gt; of &lt;strong&gt;MTG AG&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;We thank Johannes for the responsible disclosure and coordination.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_references&quot;&gt;References&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;CVE: &lt;a href=&quot;https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-13470&quot;&gt;CVE-2025-13470&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Red Hat CVE: &lt;a href=&quot;https://access.redhat.com/security/cve/cve-2025-13402&quot; class=&quot;bare&quot;&gt;https://access.redhat.com/security/cve/cve-2025-13402&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Red Hat Bugzilla: &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=2415863&quot; class=&quot;bare&quot;&gt;https://bugzilla.redhat.com/show_bug.cgi?id=2415863&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Red Hat CSAF: &lt;a href=&quot;https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-13402.json&quot; class=&quot;bare&quot;&gt;https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-13402.json&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ribose CNA Advisory: &lt;a href=&quot;https://open.ribose.com/advisories/ra-2025-11-20/&quot; class=&quot;bare&quot;&gt;https://open.ribose.com/advisories/ra-2025-11-20/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Release 0.18.1: &lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.18.1&quot; class=&quot;bare&quot;&gt;https://github.com/rnpgp/rnp/releases/tag/v0.18.1&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_contact&quot;&gt;Contact&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For security-related questions or coordination: &lt;a href=&quot;mailto:open.source@ribose.com&quot;&gt;open.source@ribose.com&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information and the complete list of changes, please
visit the &lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.18.1&quot;&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP version 0.18.0 released</title><link>https://www.rnpgp.org/blog/2025-06-19-rnp-release-0-18-0/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2025-06-19-rnp-release-0-18-0/</guid><description>Enhanced key generation defaults, improved signature validation with error reporting, expanded FFI capabilities for certifications, and better cryptographic security practices.</description><pubDate>Thu, 19 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The RNP 0.18.0 release brings significant improvements to key generation
defaults, signature validation, and FFI capabilities while strengthening
cryptographic security practices.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release enhances RNP&amp;#8217;s security posture by discouraging weak cryptographic
modes, improving key generation defaults, and providing better tools for
signature validation and certification management.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP continues to evolve as a modern OpenPGP implementation, and this release
focuses on improving security defaults, expanding API capabilities, and
enhancing compatibility with various OpenPGP implementations.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The updates to key generation defaults, signature validation error reporting,
and certification management provide developers with more powerful tools while
maintaining backward compatibility and improving overall security.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_key_generation_enhancements&quot;&gt;Key generation enhancements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_rsa_3072_bit_keys_by_default&quot;&gt;RSA 3072-bit keys by default&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP now generates &lt;a href=&quot;https://en.wikipedia.org/wiki/RSA_(cryptosystem)&quot;&gt;RSA&lt;/a&gt;
3072-bit keys by default, moving away from the previous 2048-bit default.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This change reflects current best practices in cryptographic key strength:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;3072-bit RSA keys provide approximately 128-bit security level&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Aligns with modern security recommendations from
&lt;a href=&quot;https://www.keylength.com/&quot;&gt;cryptographic research&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better future-proofs keys against advances in computational power&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Maintains good performance while significantly improving security&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This enhancement ensures that users benefit from stronger cryptographic
protection without needing to explicitly configure key generation parameters.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_dsa_4096_bit_key_support&quot;&gt;DSA 4096-bit key support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Support for &lt;a href=&quot;https://en.wikipedia.org/wiki/Digital_Signature_Algorithm&quot;&gt;DSA&lt;/a&gt;
4096-bit keys has been added to accommodate existing keys used by various
entities.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;While DSA is generally being phased out in favor of more modern algorithms,
this support ensures:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Compatibility with legacy systems and keys&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Proper handling of existing 4096-bit DSA keys&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Smooth migration paths for organizations with established key infrastructure&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_cryptographic_security_improvements&quot;&gt;Cryptographic security improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_discouraging_eax_aead_mode&quot;&gt;Discouraging EAX AEAD mode&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The release actively discourages the use of
&lt;a href=&quot;https://en.wikipedia.org/wiki/EAX_mode&quot;&gt;EAX AEAD mode&lt;/a&gt; due to security
considerations.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;EAX mode has several limitations compared to more modern AEAD modes:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Limited adoption in the OpenPGP ecosystem&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Potential security concerns with certain usage patterns&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better alternatives available (such as OCB or GCM)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This change helps guide users toward more secure and widely-supported
cryptographic modes.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_64_bit_cipher_restrictions&quot;&gt;64-bit cipher restrictions&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP no longer allows 64-bit ciphers for encryption without an explicit option.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This restriction addresses security concerns:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;64-bit block ciphers are vulnerable to birthday attacks&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://sweet32.info/&quot;&gt;SWEET32 attack&lt;/a&gt; demonstrates practical exploits&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Modern alternatives provide better security&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Users who specifically need 64-bit ciphers for compatibility can still enable
them explicitly, but the default behavior now promotes better security.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_hash_function_updates_on_key_expiration_changes&quot;&gt;Hash function updates on key expiration changes&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;When changing key expiration dates, RNP now automatically updates the hash
function if the current one is considered weak.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This enhancement ensures:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Keys don&amp;#8217;t retain weak hash functions during updates&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Automatic migration to stronger algorithms&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved long-term security without manual intervention&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_signature_validation_enhancements&quot;&gt;Signature validation enhancements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_signature_error_reporting&quot;&gt;Signature error reporting&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New FFI functions have been added to provide detailed signature validation
error information:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_signature_error_count()&lt;/code&gt;: Returns the number of errors encountered during
signature validation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_signature_error_at()&lt;/code&gt;: Retrieves specific error details at a given index&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These functions enable developers to:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Understand exactly why signature validation failed&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provide detailed error messages to users&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Make informed decisions based on specific validation failures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implement more sophisticated error handling&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_invalid_signatures_from_encrypt_only_keys&quot;&gt;Invalid signatures from encrypt-only keys&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Signatures produced by encrypt-only keys or subkeys are now properly marked as
invalid.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This enforcement ensures:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Proper adherence to key usage flags&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Prevention of cryptographic misuse&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better compliance with OpenPGP best practices&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_key_certification_management&quot;&gt;Key certification management&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_new_certification_api&quot;&gt;New certification API&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP now provides comprehensive functions for creating and customizing key
certifications:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_certification_create()&lt;/code&gt;: Creates new key certifications&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_signature_set_*&lt;/code&gt; family: Functions to set various certification properties&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_signature_get_*&lt;/code&gt; family: Functions to retrieve certification properties&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These API enhancements enable:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Programmatic creation of key certifications&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fine-grained control over certification properties&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better integration with key management workflows&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for advanced certification scenarios&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_format_and_compatibility_improvements&quot;&gt;Format and compatibility improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_gnupg_armored_file_support&quot;&gt;GnuPG armored file support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP now supports dearmoring of GnuPG-armored files that use the &lt;code&gt;ARMORED FILE&lt;/code&gt;
header.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This enhancement improves interoperability with
&lt;a href=&quot;https://gnupg.org/&quot;&gt;GnuPG&lt;/a&gt; and other OpenPGP implementations that use this
header format.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_flexible_armored_key_import&quot;&gt;Flexible armored key import&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The armored key import process now allows extra spaces, improving compatibility
with various formatting styles produced by different OpenPGP implementations.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This tolerance for whitespace variations ensures:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Robust handling of keys from diverse sources&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reduced import failures due to formatting differences&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better user experience when working with keys from multiple systems&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_backend_and_build_improvements&quot;&gt;Backend and build improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_botan_3_5_0_support&quot;&gt;Botan 3.5.0+ support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Enhanced support for &lt;a href=&quot;https://botan.randombit.net/&quot;&gt;Botan&lt;/a&gt; 3.5.0 and later
versions ensures compatibility with the latest cryptographic library releases.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_generated_version_header&quot;&gt;Generated version header&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP now generates an &lt;code&gt;rnp_ver.h&lt;/code&gt; header file, providing:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Compile-time version information&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better integration with build systems&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Easier version checking in dependent projects&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_cross_platform_compatibility&quot;&gt;Cross-platform compatibility&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Numerous compatibility fixes have been implemented for different operating
systems and platforms, ensuring RNP works reliably across diverse environments.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_performance_and_code_quality&quot;&gt;Performance and code quality&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_internal_refactoring&quot;&gt;Internal refactoring&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Significant internal refactoring has been conducted to improve:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Code maintainability and readability&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Long-term project sustainability&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Easier contributions and extensions&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_performance_updates&quot;&gt;Performance updates&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Various performance optimizations have been implemented throughout the codebase,
improving efficiency in common operations.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_looking_ahead&quot;&gt;Looking ahead&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release demonstrates RNP&amp;#8217;s continued commitment to security best practices,
API extensibility, and broad compatibility. The improved key generation
defaults, comprehensive signature validation error reporting, and expanded
certification management capabilities provide a solid foundation for
applications requiring robust OpenPGP functionality.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information and the complete list of changes, please
visit the &lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.18.0&quot;&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP proudly supports LibrePGP</title><link>https://www.rnpgp.org/blog/2024-07-22-rnp-and-librepgp/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2024-07-22-rnp-and-librepgp/</guid><description>RNP is excited to announce our support for LibrePGP, a new specification of the OpenPGP encryption standard that builds on the lessons learned from 20 years of experience with GnuPG, the most widely used and adopted implementation of OpenPGP.</description><pubDate>Mon, 22 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;div id=&quot;preamble&quot;&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;At RNP, we are excited to announce our support for
&lt;a href=&quot;https://www.librepgp.org&quot;&gt;LibrePGP&lt;/a&gt;, a new specification of the OpenPGP
encryption standard that builds on the lessons learned from the 20 years of
experience with OpenPGP, allowing secure messages in the past to remain secure
in the future.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_what_is_librepgp&quot;&gt;What is LibrePGP?&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;imageblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;img src=&quot;/assets/librepgp-button.svg&quot; alt=&quot;LibrePGP Logo&quot; width=&quot;400&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;LibrePGP is a new specification of the OpenPGP secure email standard that is
designed to ensure the long-term stability, compatibility and security of
protection communication.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;LibrePGP is conceived and backed by &lt;a href=&quot;https://g10code.com&quot;&gt;g10 Code&lt;/a&gt;,
&lt;a href=&quot;https://www.ribose.com&quot;&gt;Ribose&lt;/a&gt;, and &lt;a href=&quot;https://intevation.de&quot;&gt;Intevation&lt;/a&gt;, and is
maintained by a study group consisting of the founding group with other
interested implementers.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_what_is_the_vision_of_librepgp&quot;&gt;What is the vision of LibrePGP?&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&quot;Libre&quot; is derived from the Latin word for &quot;free&quot;. It emphasizes freedom,
openness, and unrestricted use.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&quot;PGP&quot; stands for Pretty Good Privacy, the original encryption program developed
by Phil Zimmermann in 1991 that became the basis for the OpenPGP standard.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;LibrePGP represents the next step for the future of OpenPGP:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;dlist&quot;&gt;
&lt;dl&gt;
&lt;dt class=&quot;hdlist1&quot;&gt;Free and open&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;LibrePGP aims to keep encryption technology accessible to all, free from
proprietary restrictions or government interference.&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class=&quot;hdlist1&quot;&gt;Stable and compatible&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;It builds on 20+ years of OpenPGP experience, ensuring long-term stability and
compatibility with existing systems.&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class=&quot;hdlist1&quot;&gt;Security-focused&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;LibrePGP prioritizes real-world security concerns over purely academic
interests, making it suitable for deployments in critical sectors.&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class=&quot;hdlist1&quot;&gt;Forward-looking&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;LibrePGP represents a future for encrypted communication that supports rapid
evolution, incorporating new algorithms like OCB when beneficial.&lt;/p&gt;
&lt;/dd&gt;
&lt;dt class=&quot;hdlist1&quot;&gt;Trusted&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;With its commitment to open-source and collaboration among respected developers,
LibrePGP aims to be a globally trusted standard for secure communication.&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The vision for LibrePGP is to ensure that strong, reliable encryption remains
freely available to defend privacy and secure communication worldwide. It seeks
to balance innovation with stability, ensuring that the technology evolves to
meet new challenges while maintaining the interoperability and reliability that
have made PGP a cornerstone of digital security for decades.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_why_is_rnp_supporting_librepgp&quot;&gt;Why is RNP Supporting LibrePGP?&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;We believe that LibrePGP is an essential step forward in preserving the core
principles of openness and compatibility in secure communication.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;We share the concerns that sparked the LibrePGP initiative: changes made to the
OpenPGP specification by a subgroup within the IETF OpenPGP working group were
perceived as potentially disrupting existing implementations, raising concerns
about interoperability and security.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;As a developer of OpenPGP tools, we believe that LibrePGP is a vital effort to
ensure the long-term stability and compatibility of secure communication
protocols. Our involvement in LibrePGP reflects our commitment to preserving the
security, reliability, and flexibility of the OpenPGP standard.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://www.gnupg.org&quot;&gt;GnuPG&lt;/a&gt; (GNU Privacy Guard) has been the de-facto reference
implementation of OpenPGP for over two decades. Its widespread adoption and use
have provided valuable insights into the needs and requirements of secure
communication protocols. LibrePGP builds on these lessons learned, providing a
robust and flexible specification that is designed to meet the evolving needs of
secure communication.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;LibrePGP is not just a specification. It is a movement&amp;#8201;&amp;#8212;&amp;#8201;a collaborative effort
to protect digital rights, support freedom of speech, and provide a robust
foundation for secure communication in an increasingly digital world.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;LibrePGP is our bulwark against attempts to weaken encryption standards,
ensuring that individuals, journalists, activists, and organizations always have
access to strong, trustworthy encryption tools.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This is exactly why we are proud to support LibrePGP and contribute to its
contributions to its development and adoption.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_long_term_collaboration_with_g10_code_and_intevation&quot;&gt;Long-term collaboration with g10 Code and Intevation&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;As the developer of RNP, &lt;a href=&quot;https://www.ribose.com&quot;&gt;Ribose&lt;/a&gt; works closely with &lt;a href=&quot;https://g10code.com&quot;&gt;g10 Code&lt;/a&gt;, the developer of
GnuPG, and &lt;a href=&quot;https://intevation.de&quot;&gt;Intevation&lt;/a&gt;, the developer of Gpg4win, the most prevalent OpenPGP
implementation available on Windows. Our teams perform a significant amount of
interoperability testing to ensure that our implementations are compatible and
secure.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Together, we defend internet mail and sensitive information internationally in a
trusted manner, all through a commitment to open-source. Our shared goal is to
ensure that secure communication is accessible to everyone, regardless of
platform or system.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;In fact, RNP and GnuPG were the first two implementations that supported
&lt;a href=&quot;https://web.cs.ucdavis.edu/~rogaway/ocb/&quot;&gt;OCB (Offset Codebook) encryption&lt;/a&gt;, a
high-performance and secure encryption algorithm designed by Prof. Phillip
Rogaway.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;We successfully interoperated with OCB encryption since 2018, demonstrating our
commitment to implementing and testing new encryption algorithms. OCB encryption
is now a mandatory part of the LibrePGP specification, and we are proud to have
played a key role in its adoption.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_what_does_this_mean_for_rnp_users&quot;&gt;What does this mean for RNP users?&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;As a user of RNP, you can rest assured that our commitment to LibrePGP will
ensure that our software remains compatible with existing OpenPGP
implementations. This includes the &lt;a href=&quot;https://www.gnupg.org&quot;&gt;GnuPG&lt;/a&gt; and
&lt;a href=&quot;https://www.gpg4win.org&quot;&gt;Gpg4win&lt;/a&gt; projects, which are also supporters of
LibrePGP.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_whats_next&quot;&gt;What&amp;#8217;s next?&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;We will continue to work closely with the LibrePGP community to ensure that the
RNP implementation meets the evolving needs of secure communication.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_about_rnp&quot;&gt;About RNP&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP is a set of openly-licensed LibrePGP / OpenPGP tools that work on all major
platforms. RNP provides end-to-end encryption for secure communication,
including email and file encryption.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Learn more about our projects and how we are committed to preserving the
security and compatibility of OpenPGP standards.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_about_librepgp&quot;&gt;About LibrePGP&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;LibrePGP is a new specification of the OpenPGP encryption standard that builds
on the lessons learned from global deployment of OpenPGP technology backed with
over 20 years of experience.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;It is designed to ensure the long-term stability and compatibility of secure
communication protocols. Visit the &lt;a href=&quot;https://www.librepgp.org&quot;&gt;LibrePGP&lt;/a&gt; website to
learn more about the initiative.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP version 0.17.1 released</title><link>https://www.rnpgp.org/blog/2024-05-03-rnp-release-0-17-1/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2024-05-03-rnp-release-0-17-1/</guid><description>Enhanced SHA-1 signature handling, raw encryption support, and improved backend features detection, along with Botan 3 and OpenSSL 3 improvements.</description><pubDate>Fri, 03 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The RNP 0.17.1 release marks a significant step forward in cryptographic backend
support, introducing compatibility with Botan 3 while enhancing OpenSSL 3
integration.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release strengthens RNP&amp;#8217;s position as a flexible OpenPGP implementation by
expanding its cryptographic backend options and improving interoperability.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP continues to evolve as a modern OpenPGP implementation, and this release
focuses on ensuring broad compatibility with major cryptographic libraries.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The addition of Botan 3 support alongside enhanced OpenSSL 3 capabilities gives
users and developers more flexibility in choosing their preferred cryptographic
backend while maintaining RNP&amp;#8217;s high security standards.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_cryptographic_backend_enhancements&quot;&gt;Cryptographic backend enhancements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_botan_3_support&quot;&gt;Botan 3 support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The introduction of &lt;a href=&quot;https://botan.randombit.net/&quot;&gt;Botan 3&lt;/a&gt; support represents a
major advancement for RNP.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Botan 3 brings several improvements over its predecessor:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Modern &lt;a href=&quot;https://en.wikipedia.org/wiki/C%2B%2B17&quot;&gt;C++17&lt;/a&gt; codebase for better type
safety and performance&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved side-channel resistance&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced platform support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Updated cryptographic algorithms and implementations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This addition ensures that RNP users can leverage the latest features and
security improvements from the Botan cryptographic library while maintaining
backward compatibility.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_openssl_3_improvements&quot;&gt;OpenSSL 3 improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The enhanced &lt;a href=&quot;https://www.openssl.org/&quot;&gt;OpenSSL 3&lt;/a&gt; support builds upon RNP&amp;#8217;s
existing OpenSSL backend integration. OpenSSL 3 introduced significant changes
in its architecture and API, including:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.openssl.org/3.4/man7/provider/&quot;&gt;Provider-based architecture&lt;/a&gt; for better modularity&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.openssl.org/3.0/man7/fips_module/&quot;&gt;FIPS 140-3 support&lt;/a&gt;
(&lt;a href=&quot;https://github.com/openssl/openssl/blob/master/README-FIPS.md&quot;&gt;OpenSSL FIPS statement&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved algorithm policy management&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced performance for various cryptographic operations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Our improvements ensure smooth operation with OpenSSL 3, taking advantage of its
modern features while maintaining compatibility with existing systems.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_format_and_encoding_enhancements&quot;&gt;Format and encoding enhancements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_mime_mode_support&quot;&gt;MIME mode support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP now includes comprehensive support for
&lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc2045&quot;&gt;MIME&lt;/a&gt; mode in literal data
packets, addressing a key aspect of email-based OpenPGP implementations. This
enhancement aligns with the
&lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc4880&quot;&gt;RFC 4880&lt;/a&gt; specification for
literal data packet handling.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;MIME mode support is particularly crucial for email applications where OpenPGP
is commonly used. It ensures proper handling of different text encodings and
line endings, which is essential for maintaining message integrity across
various email clients and systems.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The implementation focuses on:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Correct interpretation of &lt;code&gt;Content-Type&lt;/code&gt; headers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Proper handling of multipart messages&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Preservation of original message formatting&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved compatibility with popular email clients like &lt;a href=&quot;https://www.thunderbird.net/&quot;&gt;Thunderbird&lt;/a&gt; and Outlook&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This addition strengthens RNP&amp;#8217;s position as a versatile OpenPGP implementation,
particularly for email-centric applications and systems requiring robust MIME
handling capabilities.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_base64_improvements&quot;&gt;Base64 improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The release includes a more flexible
&lt;a href=&quot;https://en.wikipedia.org/wiki/Base64&quot;&gt;Base64&lt;/a&gt; decoding implementation that now
allows spaces after the checksum. This enhancement improves compatibility with
various OpenPGP implementations and makes the decoder more robust when handling
different formatting styles.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_api_enhancements&quot;&gt;API enhancements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The FFI (Foreign Function Interface) has been expanded with the addition of the
&lt;code&gt;rnp_signature_get_features()&lt;/code&gt; function.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This new API allows developers to:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Query signature features programmatically&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better integrate RNP into their applications&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Make informed decisions based on signature capabilities&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_additional_features_and_improvements&quot;&gt;Additional features and improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_enhanced_signature_handling_and_encryption&quot;&gt;Enhanced signature handling and encryption&lt;/h3&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;More flexible SHA-1 signature handling has been implemented, allowing clear
distinction between key and data signatures. Support for SHA-1 key signatures has
been extended until 2024-01-19 by default.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optional raw encryption capability has been added, enabling encryption of
already signed data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A new option to override the current timestamp provides more flexibility in
signature creation and validation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved packet handling ensures the system doesn&amp;#8217;t fail completely when
encountering packets with unknown versions.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_backend_and_key_management_improvements&quot;&gt;Backend and key management improvements&lt;/h3&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Automatic backend feature detection during the build process enhances system compatibility and setup.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Added support for importing and exporting base64-encoded keys, particularly
useful for &lt;a href=&quot;https://www.autocrypt.org/&quot;&gt;Autocrypt&lt;/a&gt; headers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implemented a default 2-year key expiration time for better key lifecycle management.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_looking_ahead&quot;&gt;Looking ahead&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release continues RNP&amp;#8217;s commitment to providing a robust, flexible, and
modern OpenPGP implementation. The expanded backend support, enhanced signature handling,
and improved format handling lay the groundwork for future enhancements while maintaining
strong compatibility with existing systems.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information and the complete list of changes, please
visit the &lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.17.1&quot;&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP version 0.17.0 released</title><link>https://www.rnpgp.org/blog/2023-05-01-rnp-release-0-17-0/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2023-05-01-rnp-release-0-17-0/</guid><description>Implements AEAD-OCB encryption for OpenSSL backend and enhances key management capabilities with GnuPG 2.3+ compatibility</description><pubDate>Mon, 01 May 2023 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.17.0 brings significant enhancements to encryption capabilities, key
management, and overall functionality.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release introduces AEAD-OCB support for the OpenSSL backend, improves
hidden recipient handling, and adds compatibility with newer GnuPG key storage
formats.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release represents a major step forward in RNP&amp;#8217;s evolution, focusing on
enhanced security features, improved compatibility with other OpenPGP
implementations, and better key management capabilities. The changes make RNP
more versatile while maintaining its commitment to security and usability.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#aead-ocb&quot;&gt;AEAD-OCB encryption support&lt;/a&gt; for improved performance and security&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#hidden-recipients&quot;&gt;Enhanced hidden recipient handling&lt;/a&gt; for better privacy&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#gnupg-compatibility&quot;&gt;GnuPG 2.3+ key storage format compatibility&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#offline-keys&quot;&gt;Improved offline secret key handling&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Other highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;SExp parsing code moved to a separate library (&lt;a href=&quot;https://github.com/rnpgp/sexpp&quot;&gt;SEXPP&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New FFI capabilities for signature export and key verification&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced CLI features for key management and encryption&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configurable compile-time options for legacy algorithm support&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;aead-ocb&quot;&gt;Enhanced encryption capabilities&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_aead_ocb_encryption_support&quot;&gt;AEAD-OCB encryption support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;A major highlight of this release is the addition of
&lt;a href=&quot;https://en.wikipedia.org/wiki/OCB_mode&quot;&gt;AEAD-OCB&lt;/a&gt; (Authenticated Encryption with
Associated Data - Offset Codebook) mode support for the OpenSSL backend.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;OCB mode offers several advantages over traditional encryption modes:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Provides both confidentiality and authenticity in a single pass&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Offers better performance compared to other AEAD modes like &lt;a href=&quot;https://en.wikipedia.org/wiki/EAX_mode&quot;&gt;EAX&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Allows parallel processing of encrypted data&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reduces overhead in encrypted messages&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The implementation now defaults to using OCB instead of EAX when AEAD encryption
is selected, providing better performance without compromising security.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;hidden-recipients&quot;&gt;Hidden recipient handling&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The release introduces comprehensive support for &quot;hidden recipients&quot; during
decryption operations. Hidden recipients, also known as
&lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc4880&quot;&gt;anonymous recipients&lt;/a&gt;
in the OpenPGP specification, allow encrypting messages without revealing the
intended recipient&amp;#8217;s key information in the message metadata.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;When using hidden recipients, the message&amp;#8217;s recipient key IDs are replaced with
zeroes, making it more difficult for third parties to determine who can decrypt
the message. This is particularly valuable in environments where metadata
analysis could reveal sensitive communication patterns or relationships between
parties.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP now fully supports decrypting messages with hidden recipients and includes
new API capabilities through the &lt;code&gt;RNP_VERIFY_ALLOW_HIDDEN_RECIPIENT&lt;/code&gt; flag. This
allows applications to explicitly control whether messages with hidden
recipients should be accepted during decryption operations.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This feature:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Enhances privacy by concealing the intended recipients of encrypted messages&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Maintains compatibility with other OpenPGP implementations that use this
feature&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provides better security for sensitive communications where recipient privacy
is crucial&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_key_management_improvements&quot;&gt;Key management improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;gnupg-compatibility&quot;&gt;GnuPG 2.3+ compatibility&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release adds support for modern key storage formats used by GnuPG 2.3 and
later versions, described in its &lt;a href=&quot;https://web.archive.org/web/20230721165720/https://github.com/gpg/gnupg/blob/master/agent/keyformat.txt&quot;&gt;specification&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The new format, based on S-Expressions (SExp)
(&lt;a href=&quot;https://web.archive.org/web/20071017100533/http://people.csail.mit.edu/rivest/Sexp.txt&quot;&gt;original specification from 1997&lt;/a&gt;),
provides a more structured and extensible way to store OpenPGP keys and their
metadata.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP can now read and write keys in this format, ensuring smooth interoperability
with recent GnuPG versions. This is particularly important for users and
organizations that maintain mixed environments or need to migrate between
different OpenPGP implementations.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;When GnuPG 2.3 was released, it introduced changes in how secret keys are
stored, moving away from the legacy OpenPGP packet format to S-expressions. This
change improved security and flexibility but required other implementations to
adapt. RNP now fully supports this modern approach while maintaining backward
compatibility.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This enhancement:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Enables seamless key sharing between RNP and GnuPG 2.3+&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Supports modern key storage practices&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Maintains backward compatibility with older formats&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;offline-keys&quot;&gt;Offline key handling&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The release includes significant improvements in handling offline secret keys -
keys that are stored separately from the main keyring for enhanced security.
This feature is particularly important for organizations implementing the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Air_gap_(networking)&quot;&gt;air-gapped&lt;/a&gt; security model
where signing keys are kept on isolated systems.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;With these improvements, RNP now provides better support for:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Automatically distinguishing between online and offline keys during operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Smart fallback to available keys when preferred keys are offline&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Integration with hardware security tokens and smart cards&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for detached secret key storage on separate secure systems&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This enhancement is especially valuable for users who follow security best
practices by keeping their primary keys offline and only using subkeys for
day-to-day operations. The improved handling reduces friction when working with
such configurations while maintaining strong security boundaries.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Users can expect:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Improved ease of management for keys stored on separate secure storage&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced implementation of security best practices for key management&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better support for handling keys stored on hardware security devices&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_developer_improvements&quot;&gt;Developer improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_s_expression_library_separation_to_sexpp&quot;&gt;S-Expression library separation to SEXPP&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;S-Expressions (SExp), was originally defined in a
(&lt;a href=&quot;https://web.archive.org/web/20071017100533/http://people.csail.mit.edu/rivest/Sexp.txt&quot;&gt;specification from 1997&lt;/a&gt;),
that provides a structured format for storing cryptographic data. This format is
oft-used in security applications, including GnuPG&amp;#8217;s modern key storage system.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The RNP team has created a reusable C++ Library for working with SEXP data called
&lt;a href=&quot;https://github.com/rnpgp/sexpp&quot;&gt;SEXPP&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;By separating the SExp parsing code into its own library, RNP achieves better
code organization and enables other projects to benefit from this
implementation. The library provides a robust parser for both canonical and
advanced transport S-expression formats, making it valuable for projects dealing
with GnuPG keys or other cryptographic data storage.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The separation also simplifies RNP&amp;#8217;s core codebase while maintaining full
compatibility with GnuPG 2.3+ key storage formats through this dedicated
component. Users and developers can expect better maintainability, easier
updates to the S-expression handling code, and improved performance during
cryptographic operations.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This modularization:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Improves code maintainability&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Allows independent development of SExp parsing functionality&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reduces the core RNP codebase complexity&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_ffi_improvements&quot;&gt;FFI improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New FFI capabilities have been added, including:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_signature_export()&lt;/code&gt; for exporting key signatures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for hidden recipient verification via
&lt;code&gt;RNP_VERIFY_ALLOW_HIDDEN_RECIPIENT&lt;/code&gt; flag&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced key-related checks for better security validation&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_command_line_interface_improvements&quot;&gt;Command-line interface improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The CLI has been improved with several new features:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Default armor message type for &lt;code&gt;--enarmor&lt;/code&gt; command&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New &lt;code&gt;--set-filename&lt;/code&gt; command for specifying stored file names&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced key management with &lt;code&gt;--add-subkey&lt;/code&gt; and &lt;code&gt;set-expire&lt;/code&gt; subcommands&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Additional S2K configuration options with &lt;code&gt;--s2k-iterations&lt;/code&gt; and &lt;code&gt;--s2k-msec&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for weak hash algorithms via &lt;code&gt;--allow-weak-hash&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_security_and_performance_improvements&quot;&gt;Security and performance improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_configurable_features&quot;&gt;Configurable features&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New compile-time options have been added to disable support for legacy
algorithms:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ENABLE_BLOWFISH&lt;/code&gt; for Blowfish algorithm support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ENABLE_CAST5&lt;/code&gt; for CAST5 algorithm support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ENABLE_RIPEMD160&lt;/code&gt; for RIPEMD160 hash function&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This allows users to create builds that exclude potentially vulnerable or
unnecessary algorithms, reducing the attack surface.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_looking_ahead&quot;&gt;Looking ahead&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.17.0 sets a strong foundation for future development with its improved
encryption capabilities, better key management, and enhanced developer tools.
The modularization of components and addition of modern encryption modes
demonstrate RNP&amp;#8217;s commitment to maintaining a secure, efficient, and
user-friendly OpenPGP implementation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For complete technical details and the full changelog, please visit the
&lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.17.0&quot;&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP version 0.16.3 released</title><link>https://www.rnpgp.org/blog/2023-04-13-rnp-release-0-16-3/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2023-04-13-rnp-release-0-16-3/</guid><description>Addresses critical security vulnerabilities affecting input validation and secret key handling</description><pubDate>Thu, 13 Apr 2023 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.16.3 is a critical security release that addresses two important
vulnerabilities. This release focuses on strengthening RNP&amp;#8217;s robustness against
malformed inputs and improving the security of secret key handling.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Security is a paramount concern in cryptographic software, and this release
demonstrates RNP&amp;#8217;s commitment to maintaining a secure OpenPGP implementation.
The fixes address potential denial of service and key material exposure risks,
making this an important update for all RNP users.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#input-validation&quot;&gt;Fixed input validation vulnerability&lt;/a&gt; (CVE-2023-29479) preventing denial of service&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#key-handling&quot;&gt;Improved secret key handling&lt;/a&gt; (CVE-2023-29480) for better security&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Other highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Enhanced security best practices implementation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved key lifecycle management&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Updated input processing safeguards&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Strengthened memory handling for sensitive data&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;input-validation&quot;&gt;Security improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_input_validation_vulnerability_cve_2023_29479&quot;&gt;Input validation vulnerability (CVE-2023-29479)&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The first security fix addresses a vulnerability where malformed inputs could
cause RNP to hang indefinitely. This issue could potentially be exploited to
create a denial of service condition.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The vulnerability:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Could be triggered by specially crafted OpenPGP messages&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Had the potential to make applications using RNP unresponsive&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Affected all operations involving message parsing&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The fix implements proper input validation and adds safeguards against malformed
data, ensuring RNP handles invalid inputs gracefully without entering infinite
processing loops.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;key-handling&quot;&gt;Secret key handling vulnerability (CVE-2023-29480)&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The second security fix resolves an issue where secret keys could remain
unlocked after their intended use.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This vulnerability:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Could potentially expose sensitive key material in memory&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Affected scenarios where keys were temporarily unlocked for operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Created a risk of key material being accessible longer than necessary&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The fix ensures that secret keys are properly locked immediately after use,
implementing a more robust key lifecycle management system.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This enhancement:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Improves the security of secret key handling&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reduces the window of vulnerability for key material&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Follows the principle of least privilege more strictly&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_security_impact_and_mitigation&quot;&gt;Security impact and mitigation&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These vulnerabilities could affect any application using RNP for OpenPGP
operations.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Users should:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Update to RNP 0.16.3 as soon as possible&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Review their applications for any cached or stored key material&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ensure proper key handling practices are followed&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_security_best_practices&quot;&gt;Security best practices&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;To maintain security when using RNP, we recommend:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Regular updates to the latest version&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Proper input validation in applications using RNP&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implementation of secure key handling procedures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Regular security audits of systems using RNP&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_looking_ahead&quot;&gt;Looking ahead&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release reinforces RNP&amp;#8217;s security foundation and demonstrates our
commitment to addressing security issues promptly.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;We continue to:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Monitor for potential security issues&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implement proactive security measures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Maintain transparency in security-related communications&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information and the complete list of changes, please
visit the &lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.16.3&quot;&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP version 0.16.2 released</title><link>https://www.rnpgp.org/blog/2022-09-22-rnp-release-0-16-2/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2022-09-22-rnp-release-0-16-2/</guid><description>Resolves CMake build issues introduced in v0.16.2 affecting cryptographic algorithm support customization</description><pubDate>Thu, 22 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.16.2 addresses important build system configuration issues that affected
the customization of cryptographic algorithm support.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This maintenance release ensures proper functionality of build-time options,
particularly for IDEA cipher and Brainpool elliptic curves, where the
&lt;code&gt;ENABLE_IDEA&lt;/code&gt; and &lt;code&gt;ENABLE_BRAINPOOL&lt;/code&gt; options caused incorrect behavior.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Build system reliability is crucial for cryptographic software, as it ensures
users can properly customize their builds to meet specific security requirements
and compliance standards. This release fixes issues in the CMake configuration
system that affected how certain cryptographic algorithms could be enabled or
disabled during compilation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#cmake-fixes&quot;&gt;Fixed CMake configuration&lt;/a&gt; for IDEA cipher and Brainpool curves support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#algorithm-support&quot;&gt;Improved build-time algorithm customization&lt;/a&gt; for compliance requirements&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Other highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Enhanced build configuration verification&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved documentation for build options&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better support for regulated environments&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Streamlined build customization process&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;cmake-fixes&quot;&gt;Build system improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_cmake_configuration_fixes&quot;&gt;CMake configuration fixes&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The release resolves issues with two important build configuration options:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ENABLE_IDEA&lt;/code&gt;: Controls support for the IDEA (International Data Encryption
Algorithm) cipher&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ENABLE_BRAINPOOL&lt;/code&gt;: Controls support for Brainpool elliptic curves&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These options previously exhibited incorrect behavior, which could lead to:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Unintended inclusion or exclusion of algorithm support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Inconsistent build configurations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Potential compliance issues in regulated environments&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;algorithm-support&quot;&gt;Algorithm support improvements&lt;/h3&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_idea_cipher_implementation&quot;&gt;IDEA cipher implementation&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The &lt;a href=&quot;https://en.wikipedia.org/wiki/International_Data_Encryption_Algorithm&quot;&gt;IDEA (International Data Encryption Algorithm)&lt;/a&gt;
cipher is a significant component in OpenPGP implementations, particularly for:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Historical compatibility with legacy PGP systems and older encrypted data&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Interoperability with systems that require IDEA for regulatory compliance&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Supporting users who need to decrypt messages from legacy PGP implementations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP&amp;#8217;s implementation of IDEA provides:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Full compliance with the &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc4880&quot;&gt;OpenPGP RFC 4880&lt;/a&gt; specification&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Controlled enablement through CMake for organizations with specific compliance needs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Proper key handling and encryption/decryption operations for IDEA-encrypted content&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;While newer algorithms are recommended for modern applications, IDEA support remains important for:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;It was one of the original algorithms supported by PGP&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Some organizations still require it for backwards compatibility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It may be subject to patent restrictions in certain jurisdictions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It is critical in certain legacy systems where PGP is still used&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The fix ensures that the &lt;code&gt;ENABLE_IDEA&lt;/code&gt; option correctly controls the inclusion
of IDEA cipher support, allowing organizations to make informed decisions about
its use.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_brainpool_curves_implementation&quot;&gt;Brainpool curves implementation&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Brainpool elliptic curves are important for:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Meeting specific security requirements, particularly in European standards&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Providing alternative curves to NIST standards&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Supporting high-security applications that require specific curve
characteristics&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The fix ensures proper control over Brainpool curve support, allowing users to
accurately configure their builds according to their security requirements.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_build_configuration_best_practices&quot;&gt;Build configuration best practices&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;When building RNP with these options, users should:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Explicitly set &lt;code&gt;ENABLE_IDEA&lt;/code&gt; and &lt;code&gt;ENABLE_BRAINPOOL&lt;/code&gt; according to their
requirements&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify the final build configuration through RNP&amp;#8217;s feature reporting&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Document their build-time choices for compliance purposes&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_looking_ahead&quot;&gt;Looking ahead&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release reinforces RNP&amp;#8217;s commitment to providing a flexible and reliable
build system. Users can now confidently customize their builds to:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Meet specific security requirements&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Comply with regulatory standards&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optimize the library for their specific use cases&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information and the complete list of changes, please
visit the &lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.16.2&quot;&gt;RNP v0.16.2 release
page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP now with updated approach to OpenPGP signature verification</title><link>https://www.rnpgp.org/blog/2022-09-07-new-verify-behavior/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2022-09-07-new-verify-behavior/</guid><description>A comprehensive look at RNP&apos;s new signature verification approach: simplifying security without compromising integrity.</description><pubDate>Wed, 07 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP version 0.16.1 introduces a fundamental change to OpenPGP signature
verification behavior, making it better aligned with real-world use cases and
user expectations while maintaining robust security guarantees.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This change significantly impacts how RNP validates OpenPGP signatures through
its Foreign Function Interface (FFI).&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP now requires only one valid signature to succeed (or zero, if data was just
encrypted). Previously, it required all signatures to be valid. To change the
default behaviour, the new function &lt;code&gt;rnp_op_verify_set_flags()&lt;/code&gt; may be used.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_understanding_openpgp_signature_verification&quot;&gt;Understanding OpenPGP signature verification&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_what_is_openpgp_signature_verification&quot;&gt;What is OpenPGP signature verification?&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;OpenPGP signature verification is a fundamental cryptographic process in secure
communications. It serves as a cornerstone of the
&lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc4880&quot;&gt;RFC 4880&lt;/a&gt; standard, providing
essential security guarantees for digital communications and document
authenticity.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;At its core, signature verification ensures three critical aspects of secure
communication:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Authentication&lt;/strong&gt;: Verifies the identity of the sender by confirming that the
message was created by someone with access to a specific private key&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Integrity&lt;/strong&gt;: Guarantees that the message content hasn&amp;#8217;t been modified since it
was signed&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Non-repudiation&lt;/strong&gt;: Provides cryptographic proof that the sender cannot later
deny creating the message&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The verification process works through public-key cryptography. When sending a
message, the sender creates a digital signature using their private key. This
signature is a unique cryptographic hash that combines the message content with
the sender&amp;#8217;s private key. The recipient then uses the sender&amp;#8217;s public key to
verify this signature, confirming both the sender&amp;#8217;s identity and message
integrity.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;In RNP&amp;#8217;s implementation, signature verification is handled through the FFI
(Foreign Function Interface) layer, making it accessible to various programming
languages and applications. The process is designed to be both secure and
flexible, accommodating different use cases from simple document signing to
complex multi-signature scenarios.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For technical details on implementing verification in your applications, see the
&lt;a href=&quot;https://github.com/rnpgp/rnp/&quot;&gt;RNP documentation&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_evolution_of_verification_approaches&quot;&gt;Evolution of verification approaches&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_previous_implementation_all_or_nothing&quot;&gt;Previous implementation: All-or-nothing&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Prior to version 0.16.1, RNP adhered to a strict verification model based on
traditional OpenPGP implementations like &lt;a href=&quot;https://www.gnupg.org/&quot;&gt;GnuPG&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This approach prioritized maximum security through rigid verification
requirements, reflecting early cryptographic practices in the
&lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc4880&quot;&gt;OpenPGP standard&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The original implementation required that all signatures present in a message be
valid for the verification process to succeed. This meant:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Every single signature in a message had to be successfully verified&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If any signature failed verification, the entire process would fail&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No distinction was made between encrypted-only content and signed content&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verification requirements were fixed and couldn&amp;#8217;t be adjusted for different use cases&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;While this stringent approach provided strong security guarantees, it led to
several practical challenges in real-world applications:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Multi-signer documents became problematic when not all public keys were
immediately available in the keyring&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mixed content handling (combining both signed and encrypted data) was
complicated and often unintuitive&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The system lacked flexibility to accommodate different verification scenarios
or security requirements&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Legacy signatures or situations with partial key availability could cause
unnecessary verification failures&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These limitations became particularly apparent in modern usage scenarios, such
as in continuous integration pipelines, automated document processing, or
situations where keys might be stored in different locations or hardware
security modules (HSMs).&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The strict verification model also posed challenges for FFI users of RNP, who
often needed more granular control over the verification process or better
feedback about the verification status of individual signatures.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_new_paradigm_flexible_and_practical&quot;&gt;New paradigm: Flexible and practical&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Version 0.16.1 of RNP introduces a modernized verification model through the
&lt;code&gt;rnp_op_verify_execute()&lt;/code&gt; function, representing a significant shift from the
traditional approach used in OpenPGP implementations. This new model responds to
real-world challenges faced by users of cryptographic software while maintaining
strong security guarantees.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_key_features_of_the_new_model&quot;&gt;Key features of the new model&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;At its core, the new verification approach introduces four major improvements:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;It considers verification successful when at least one valid signature is
present, making it more practical for scenarios with multiple signers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It properly handles encrypted-only data that contains no signatures,
addressing a common use case in secure communications&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It provides a more intuitive way to handle multiple signers, aligning with
how most users expect the software to behave&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It offers flexible verification policies that can be adjusted based on
specific security requirements through the verification API.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_practical_benefits&quot;&gt;Practical benefits&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The updated verification approach in RNP 0.16.1 reflects modern cryptographic
system requirements while maintaining strong security. This change particularly
benefits organizations dealing with distributed systems and complex key
management scenarios.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_distributed_key_management&quot;&gt;Distributed key management&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;In distributed systems where public keys might be stored across different
locations or hardware security modules, the new approach significantly improves
operational efficiency.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Modern enterprises often use
&lt;a href=&quot;https://en.wikipedia.org/wiki/Hardware_security_module&quot;&gt;Hardware Security Modules (HSMs)&lt;/a&gt;
or distributed key management systems, making immediate access to all
keys challenging.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_flexible_key_availability&quot;&gt;Flexible key availability&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The new model accommodates situations where immediate access to all signers&apos;
public keys isn&amp;#8217;t practical or possible.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This is particularly relevant in scenarios involving multiple organizations or
when dealing with legacy signatures where some keys might no longer be readily
available.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_customizable_verification_requirements&quot;&gt;Customizable verification requirements&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Different types of documents often require varying levels of verification
stringency. For example, internal documentation might need less strict
verification compared to financial transactions.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP now supports this through configurable verification policies, allowing
organizations to match their security requirements precisely.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_enhanced_feedback_mechanisms&quot;&gt;Enhanced feedback mechanisms&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The updated system provides detailed feedback about the verification status,
crucial for modern application logic and automation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This improvement is especially valuable in continuous integration/continuous
deployment (CI/CD) pipelines and automated document processing systems where
detailed verification status information drives subsequent processing steps.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_improved_interoperability&quot;&gt;Improved interoperability&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The new approach enhances compatibility with other OpenPGP implementations like
&lt;a href=&quot;https://www.gnupg.org/&quot;&gt;GnuPG&lt;/a&gt;, making RNP more practical for integration into
existing cryptographic ecosystems. This compatibility is essential for
organizations transitioning between different OpenPGP implementations or
maintaining hybrid systems.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These changes position RNP as a more versatile solution for modern
cryptographic applications while maintaining the robust security guarantees
expected from an OpenPGP implementation. The flexibility introduced allows for
better integration with contemporary software architectures and deployment
patterns without compromising on security fundamentals.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_technical_implementation_details&quot;&gt;Technical implementation details&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_core_changes_in_the_ffi&quot;&gt;Core changes in the FFI&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The new verification behavior is implemented through several key components:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_op_verify_execute()&lt;/code&gt;: The main verification function that implements the
new behavior&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_op_verify_set_flags()&lt;/code&gt;: Allows fine-tuning of verification requirements&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced status reporting providing detailed information about each signature&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved error handling and feedback mechanisms&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_verification_policies_and_their_implementation&quot;&gt;Verification policies and their implementation&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The new verification system in RNP introduces a flexible policy framework that
allows users to choose how strictly they want to enforce signature verification.
This framework is particularly important for organizations that need to balance
security requirements with practical operational needs.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_default_policy_single_valid_signature&quot;&gt;Default policy: Single valid signature&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The default policy implements a pragmatic approach to signature verification. It
considers a verification operation successful when at least one valid signature
is present in the message. This aligns with most real-world use cases where the
presence of a trusted signature is sufficient to establish authenticity.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key aspects of the default policy include:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Success criteria based on finding at least one valid signature&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Proper handling of encrypted-only content without signatures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Comprehensive status reporting for all signatures present&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_strict_policy_complete_verification&quot;&gt;Strict policy: Complete verification&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For scenarios requiring maximum security, RNP maintains a strict verification
policy option. This policy, similar to traditional OpenPGP implementations,
requires all present signatures to be valid for the verification to succeed.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This policy is particularly useful for:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;High-security environments where complete verification is mandatory&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Maintaining compatibility with legacy systems&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Scenarios where all signers must be verified&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_custom_verification_requirements&quot;&gt;Custom verification requirements&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP provides extensive customization options through its verification flags
system, implemented via the &lt;code&gt;rnp_op_verify_set_flags()&lt;/code&gt; function. This allows
organizations to:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Define specific verification requirements matching their security policies&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implement complex verification workflows&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Balance security needs with operational requirements&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These policies are documented in detail in
&lt;a href=&quot;https://github.com/rnpgp/rnp/&quot;&gt;RNP documentation&lt;/a&gt;. The flexibility of this system
makes RNP suitable for a wide range of applications, from simple document
signing to complex enterprise security systems.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_security_considerations_and_best_practices&quot;&gt;Security considerations and best practices&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_maintaining_security_with_flexibility&quot;&gt;Maintaining security with flexibility&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;While RNP&amp;#8217;s new verification approach offers greater flexibility, it&amp;#8217;s crucial
to maintain robust security practices throughout the verification process. This
balance between flexibility and security ensures that the system remains both
practical and trustworthy.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_security_fundamentals&quot;&gt;Security fundamentals&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The core security principles in OpenPGP signature verification must be preserved
even with a more flexible approach. Modern cryptographic standards, as
recommended by &lt;a href=&quot;https://www.nist.gov/&quot;&gt;NIST&lt;/a&gt; or &lt;a href=&quot;https://www.ietf.org/&quot;&gt;IETF&lt;/a&gt;, must
be rigorously applied when validating signature quality and strength.
Organizations should establish and maintain a robust web of trust or PKI
infrastructure to verify the trust level of signing keys. Additionally,
comprehensive key management practices that adhere to industry standards are
essential, encompassing proper key rotation schedules, effective revocation
handling procedures, and secure storage protocols. For compliance and security
analysis purposes, maintaining detailed verification logs is imperative.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_implementation_recommendations&quot;&gt;Implementation recommendations&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;When implementing OpenPGP signature verification in your applications using RNP,
several key considerations should guide your approach.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These implementation guidelines ensure that RNP&amp;#8217;s flexible verification approach
can be deployed securely and effectively in production environments while
meeting stringent security requirements.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_standard_implementations&quot;&gt;Standard implementations&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For most use cases, the default behavior provides an optimal balance of security
and usability. Organizations should implement the standard single-signature
verification approach, which effectively addresses common requirements for
document signing and secure communication. It&amp;#8217;s essential to develop clear and
comprehensive feedback mechanisms that provide users with detailed information
about the verification status of each signature. Furthermore, proper handling of
both signed and encrypted content must strictly follow the OpenPGP specification
to ensure compliance and security.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_enhanced_security_requirements&quot;&gt;Enhanced security requirements&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;In scenarios demanding heightened security measures, organizations should
leverage the &lt;code&gt;rnp_op_verify_set_flags()&lt;/code&gt; function to implement more stringent
verification policies. For critical documents, supplementary validation checks
should be incorporated, including timestamp verification and organizational
policy compliance assessments. The implementation should be carefully aligned
with specific organizational security policies and compliance requirements to
ensure comprehensive protection.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_robust_error_handling&quot;&gt;Robust error handling&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Error handling forms a critical component of secure operations. Organizations
must implement sophisticated feedback systems that provide detailed information
regarding verification failures and their underlying causes. Comprehensive
logging of all verification attempts, results, and anomalies should be
maintained for security auditing purposes. Furthermore, carefully designed
fallback mechanisms should be implemented to handle edge cases and unexpected
situations while maintaining security integrity.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_future_implications&quot;&gt;Future implications&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This architectural change positions RNP for:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Better integration with modern cryptographic workflows&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved compatibility with other OpenPGP implementations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More flexible security policies that can adapt to different needs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced user experience without compromising security&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The new verification behavior represents a significant step forward in making
OpenPGP more accessible while maintaining its security guarantees. It
demonstrates RNP&amp;#8217;s commitment to balancing security requirements with practical
usability.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information about the new verification behavior and
available options, please refer to
&lt;a href=&quot;https://github.com/rnpgp/rnp/&quot;&gt;RNP documentation&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP version 0.16.1 released</title><link>https://www.rnpgp.org/blog/2022-09-06-rnp-release-0-16-1/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2022-09-06-rnp-release-0-16-1/</guid><description>Implements support for OpenSSL 3.0, flexible SHA1 signature handling, and RHEL 9/Fedora 36</description><pubDate>Tue, 06 Sep 2022 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.16.1 brings significant improvements in security policies, operational
flexibility, and platform support.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The release marks a major milestone in RNP&amp;#8217;s evolution with comprehensive
support for
&lt;a href=&quot;https://openssl-library.org/news/openssl-3.0-notes/&quot;&gt;OpenSSL 3.0&lt;/a&gt;, enabling
seamless integration with the latest enterprise Linux distributions.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Additionally, it introduces more nuanced security policies and several
user-requested features that improve flexibility and ease of use.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#openssl-support&quot;&gt;OpenSSL 3.0 support&lt;/a&gt; for RHEL 9 and Fedora 36 compatibility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#sha1-handling&quot;&gt;Enhanced SHA1 signature handling&lt;/a&gt; for key and data signatures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#raw-encryption&quot;&gt;Raw encryption support&lt;/a&gt; for flexible data processing&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Other highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Configurable timestamp override functionality&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved handling of unknown packet versions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#feature-detection&quot;&gt;Automatic backend feature detection&lt;/a&gt; during build&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Base64-encoded key import/export for Autocrypt&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Two-year default key expiration time&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;openssl-support&quot;&gt;Platform support improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_openssl_3_0_compatibility&quot;&gt;OpenSSL 3.0 compatibility&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://openssl-library.org/news/openssl-3.0-notes/&quot;&gt;OpenSSL 3.0&lt;/a&gt; has
been recently released and RNP 0.16.1 is the only OpenPGP implementation that
fully supports it.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This feature enables:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Native compatibility with
&lt;a href=&quot;https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9&quot;&gt;RHEL 9&lt;/a&gt;,
&lt;a href=&quot;https://www.centos.org/centos-stream/&quot;&gt;CentOS Stream 9&lt;/a&gt;, and
&lt;a href=&quot;https://getfedora.org/&quot;&gt;Fedora 36&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for OpenSSL&amp;#8217;s new provider architecture&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved FIPS compatibility through OpenSSL 3.0&amp;#8217;s FIPS provider&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced performance through OpenSSL 3.0&amp;#8217;s optimizations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The implementation ensures that RNP works seamlessly with these platforms&apos;
default cryptographic backends, eliminating the need for custom builds or
external dependencies.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_security_policy_enhancements&quot;&gt;Security policy enhancements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;sha1-handling&quot;&gt;SHA1 signature handling improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release introduces a more sophisticated approach to SHA1 signatures:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Allows distinguishing between data and key signatures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Extended support for SHA1 key signatures until January 19, 2024 (2024-01-19)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More granular control over signature acceptance policies&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better compatibility with existing key infrastructure&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This change allows organizations to maintain compatibility with legacy systems
while gradually transitioning to stronger algorithms.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_key_expiration_defaults&quot;&gt;Key expiration defaults&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;A new security-focused default has been implemented:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Automatic 2-year expiration time for newly generated keys&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Encourages regular key rotation practices&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Aligns with modern security recommendations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Helps prevent the use of outdated keys&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_operational_improvements&quot;&gt;Operational improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;raw-encryption&quot;&gt;Raw encryption support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The addition of raw encryption capabilities provides:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ability to encrypt already-signed data&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More flexible processing pipelines&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better integration with existing workflows&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved performance for certain use cases&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_timestamp_control&quot;&gt;Timestamp control&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New timestamp override functionality enables:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Testing of time-dependent operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reproduction of specific scenarios&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Validation of expiration handling&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better debugging capabilities&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_enhanced_format_handling&quot;&gt;Enhanced format handling&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Several improvements make RNP more robust when dealing with various OpenPGP implementations:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Graceful handling of unknown packet versions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for base64-encoded keys in Autocrypt headers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More flexible packet processing&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved interoperability&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_developer_improvements&quot;&gt;Developer improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;feature-detection&quot;&gt;Build system feature detection&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The new automatic backend feature detection during build:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Simplifies configuration&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ensures optimal use of available crypto features&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reduces build-time errors&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improves portability&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_api_enhancements&quot;&gt;API enhancements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New FFI capabilities have been added:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_op_encrypt_set_flags()&lt;/code&gt; with &lt;code&gt;RNP_ENCRYPT_NOWRAP&lt;/code&gt; for raw encryption&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Base64 encoding options for key import/export&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Timestamp override functionality&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Updated security rule functions&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_looking_ahead&quot;&gt;Looking ahead&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.16.1 sets a strong foundation for future development with its improved platform support and security policies. The changes demonstrate RNP&amp;#8217;s commitment to:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Maintaining broad platform compatibility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implementing flexible security policies&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improving usability and integration capabilities&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Supporting modern cryptographic practices&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information and the complete list of changes, please visit the &lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.16.1&quot;&gt;RNP v0.16.1 release page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP version 0.16.0 released</title><link>https://www.rnpgp.org/blog/2022-01-20-rnp-release-0-16-0/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2022-01-20-rnp-release-0-16-0/</guid><description>Introduces OpenSSL backend support, and customizable security profiles for enhanced cryptographic policy control</description><pubDate>Thu, 20 Jan 2022 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.16.0 represents a major milestone in the project&amp;#8217;s evolution, introducing
OpenSSL backend support and customizable security profiles.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release significantly enhances RNP&amp;#8217;s flexibility, security, and
compatibility with other OpenPGP implementations.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release marks a transformative moment for RNP, introducing two major
features that expand its utility and security capabilities. The addition of
OpenSSL backend support broadens deployment options, while the new security
profiles system enables fine-grained control over cryptographic policies.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#openssl-backend&quot;&gt;OpenSSL backend support&lt;/a&gt; for flexible deployment options&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#security-profiles&quot;&gt;Customizable security profiles&lt;/a&gt; for granular cryptographic control&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#hash-policies&quot;&gt;Enhanced hash algorithm policies&lt;/a&gt; for improved security&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Other highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Configurable compile-time feature switches&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved signature validation mechanisms&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced cross-platform compatibility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Extended FFI capabilities&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optimized CLI tools with better usability&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Performance improvements for large-scale operations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;openssl-backend&quot;&gt;Major feature improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_openssl_backend_support&quot;&gt;OpenSSL backend support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The introduction of &lt;a href=&quot;https://www.openssl.org&quot;&gt;OpenSSL&lt;/a&gt; backend support is a
game-changing addition that offers several advantages.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;OpenSSL is the most widely deployed and used cryptographic library in the world,
powering the majority of HTTPS connections on the internet. It provides a robust,
commercial-grade, full-featured toolkit for Transport Layer Security (TLS) and
Secure Sockets Layer (SSL) protocols, as well as a general-purpose cryptography
library.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Eliminates the requirement for &lt;a href=&quot;https://botan.randombit.net&quot;&gt;Botan&lt;/a&gt; installation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enables RNP usage on systems with OpenSSL as the primary cryptographic library&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provides alternative implementation choices for different deployment scenarios&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improves integration with existing OpenSSL-based systems&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This feature allows RNP to be built and used on systems without Botan installed,
making it more accessible and easier to deploy in various environments.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;security-profiles&quot;&gt;Security profile system&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The new security profiles system provides unprecedented control over
cryptographic policies:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Customizable security rules for different usage scenarios&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fine-grained control over algorithm acceptance&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Temporal validation of cryptographic algorithms&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configurable policy enforcement&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This system helps organizations implement and maintain their specific security
requirements while ensuring compliance with evolving cryptographic standards.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_security_enhancements&quot;&gt;Security enhancements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;hash-policies&quot;&gt;Hash algorithm policy improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Stricter policies have been implemented for older hash algorithms:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;SHA1 signatures produced after January 19, 2019 (2019-01-19), are now marked as invalid&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;MD5 signatures produced after January 1, 2012 (2012-01-01), are now marked as invalid&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SHA1 and 3DES have been removed from default key preferences&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SHA1 collision detection code has been implemented&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_signature_validation_enhancements&quot;&gt;Signature validation enhancements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Several enhancements to signature validation have been made:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Signatures with unknown critical notation are now marked as invalid&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Secret key validation occurs before first operation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More robust key material validation procedures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Limited number of possible message recipients/signatures to 16k&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_compatibility_improvements&quot;&gt;Compatibility improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_cross_platform_support_enhancements&quot;&gt;Cross-platform support enhancements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The release includes several important compatibility fixes:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Resolved x25519 secret key export compatibility with GnuPG&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed support for Gnu/Hurd systems lacking &lt;code&gt;PATH_MAX&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved support for old RSA sign-only/encrypt-only keys&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced ElGamal key support for sizes larger than 3072 bits&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_build_system_improvements&quot;&gt;Build system improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New compile-time options provide better control over feature sets:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ENABLE_AEAD&lt;/code&gt; for AEAD encryption support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ENABLE_SM2&lt;/code&gt; for SM2/SM3/SM4 algorithm support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ENABLE_BRAINPOOL&lt;/code&gt; for Brainpool curves&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ENABLE_TWOFISH&lt;/code&gt; for Twofish algorithm&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_developer_improvements&quot;&gt;Developer improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_ffi_enhancements&quot;&gt;FFI enhancements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New FFI functions have been added to support the latest features:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_backend_string()&lt;/code&gt; and &lt;code&gt;rnp_backend_version()&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_25519_bits_tweaked()&lt;/code&gt; and &lt;code&gt;rnp_key_25519_bits_tweak()&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Security profile manipulation functions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_signature_get_expiration()&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_command_line_interface_improvements&quot;&gt;Command-line interface improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The CLI has been significantly improved:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;New detailed help messages for both &lt;code&gt;rnp&lt;/code&gt; and &lt;code&gt;rnpkeys&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for stdin/stdout/env input/output specifiers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New &lt;code&gt;--notty&lt;/code&gt; option for batch processing&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced key editing capabilities with &lt;code&gt;--edit-key&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_performance_improvements&quot;&gt;Performance improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Several optimizations have been implemented:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Reduced memory usage for keys with many signatures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved key import performance&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better handling of large ElGamal keys&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optimized signature subpacket processing&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_looking_ahead&quot;&gt;Looking ahead&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.16.0 establishes a strong foundation for future development with its
flexible backend support and customizable security policies. The improvements in
this release demonstrate RNP&amp;#8217;s commitment to:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Providing deployment flexibility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Maintaining strong security standards&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improving compatibility with other implementations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhancing developer experience&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information and the complete list of changes, please
visit the &lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.16.0&quot;&gt;RNP v0.16.0 release page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP version 0.15.2 released</title><link>https://www.rnpgp.org/blog/2021-08-06-rnp-release-0-15-2/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2021-08-06-rnp-release-0-15-2/</guid><description>Enhances key validation mechanisms and improves compatibility with other OpenPGP implementations</description><pubDate>Fri, 06 Aug 2021 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Version: RNP 0.15.2
Release date: 2021-08-05&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.15.2 introduces significant improvements to key validation, signature
handling, and expiration time calculations. This release focuses on enhancing
compatibility with other OpenPGP implementations while maintaining robust
security practices.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key and signature validation are fundamental aspects of any OpenPGP
implementation. This release refines RNP&amp;#8217;s approach to these critical functions,
making it more practical while maintaining security. The changes reflect
real-world usage patterns and improve interoperability with other OpenPGP
software.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#user-id-validation&quot;&gt;Enhanced user ID validation&lt;/a&gt; for expired self-signatures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#signature-validation&quot;&gt;Improved signature validation&lt;/a&gt; based on historical key status&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#expiration-handling&quot;&gt;Fixed expiration time calculations&lt;/a&gt; for better key lifecycle management&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Other highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;New FFI function for intelligent key selection&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced user ID management in FFI&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved CLI error reporting&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better encryption subkey selection&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New key generation options for expiration&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;user-id-validation&quot;&gt;Key validation improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_user_id_validation_enhancements&quot;&gt;User ID validation enhancements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;A major enhancement in this release is the more flexible approach to user ID
validation. The changes include:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Support for user IDs with expired self-signatures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better handling of historical validity periods&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved compatibility with existing key infrastructure&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More intuitive behavior for end users&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This refinement helps users maintain access to their identities while preserving
the security benefits of key expiration mechanisms.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;signature-validation&quot;&gt;Signature validation improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP now recognizes historical validity of keys during signature verification.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Signatures are now validated based on the key&amp;#8217;s status at the time of signing.
This means a signature is not considered as &quot;invalid&quot; if the key which produced
it was valid during signing, even when it is expired at verification time.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Expired keys no longer invalidate their previously valid signatures. This
approach better aligns with OpenPGP specification requirements and other
implementations.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This change ensures that valid signatures remain verifiable even after key
expiration, which is particularly important for long-term document verification.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;expiration-handling&quot;&gt;Expiration time handling&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Several improvements have been made to key expiration handling:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Fixed incorrect expiration time calculations in edge cases&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More accurate handling of certification expiration dates&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better synchronization between primary keys and user IDs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved handling of overlapping validity periods&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These fixes ensure more reliable key lifecycle management and prevent unexpected key invalidation.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_developer_improvements&quot;&gt;Developer improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_ffi_enhancements&quot;&gt;FFI enhancements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New FFI capabilities have been added to improve integration flexibility:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_get_default_key()&lt;/code&gt; function for intelligent key selection&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Automatically selects appropriate subkeys for operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Considers key capabilities and validity&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improves application usability&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced user ID management&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;NULL hash parameter support in &lt;code&gt;rnp_key_add_uid()&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Automatic selection of appropriate hash algorithms&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Simplified API usage&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Consistent encryption subkey selection&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Unified approach across different encryption operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved Autocrypt compatibility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More predictable behavior for developers&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_command_line_interface_improvements&quot;&gt;Command-line interface improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The CLI tools have received important usability improvements:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Better error reporting for encryption operations in &lt;code&gt;rnp&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Clear error messages when encryption fails&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved debugging capabilities&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better user experience&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New key generation options in &lt;code&gt;rnpkeys&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnpkeys&lt;/code&gt; now provides an &lt;code&gt;--expiration&lt;/code&gt; option for setting key validity periods&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More flexible key lifecycle management&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better control over key properties&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_looking_ahead&quot;&gt;Looking ahead&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.15.2 represents an important step in improving the usability and
reliability of OpenPGP implementations. The changes demonstrate RNP&amp;#8217;s commitment
to:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Practical security measures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced compatibility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved developer experience&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better end-user usability&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information and the complete list of changes, please
visit the
&lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.15.2&quot;&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP version 0.15.1 released</title><link>https://www.rnpgp.org/blog/2021-05-31-rnp-release-0-15-1/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2021-05-31-rnp-release-0-15-1/</guid><description>Addresses key protection vulnerability and implements Year 2038 compatibility for cryptographic operations</description><pubDate>Mon, 31 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Version: RNP 0.15.1
Release date: 2021-05-28&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.15.1 delivers critical security fixes and important improvements to key
expiration handling, particularly addressing the Year 2038 problem in
cryptographic applications.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release also enhances build system flexibility and API robustness.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release addresses several important areas: a security vulnerability in key
protection, long-term key expiration handling, and build system improvements.
These changes strengthen RNP&amp;#8217;s security while improving its usability in various
deployment scenarios.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#security-fix&quot;&gt;Fixed key protection vulnerability&lt;/a&gt; (CVE-2021-33589)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#y2038-support&quot;&gt;Implemented &quot;Year 2038&quot; compatibility&lt;/a&gt; for long-term key validity&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#key-expiration&quot;&gt;Enhanced key expiration handling&lt;/a&gt; for complex PKI deployments&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Other highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Man_page&quot;&gt;man pages&lt;/a&gt; building is now optional for flexible deployment&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved FFI feature detection mechanisms&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced timestamp handling throughout codebase&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better support for keys with multiple user IDs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved direct-key signature support&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;security-fix&quot;&gt;Security improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_key_protection_vulnerability_fix_cve_2021_33589&quot;&gt;Key protection vulnerability fix (CVE-2021-33589)&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;A significant security fix addresses a vulnerability in key protection
functions:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Issue: Cleartext key material could remain accessible after &lt;code&gt;rnp_key_unprotect()&lt;/code&gt;/&lt;code&gt;rnp_key_protect()&lt;/code&gt; calls&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Impact: Potential exposure of sensitive key data in memory&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fix: Proper clearing of sensitive data after key operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Importance: Critical for maintaining key confidentiality&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed information about this security fix, please refer to the
&lt;a href=&quot;/advisories/ri-2021-001&quot;&gt;RI 2021-001/CVE-2021-33589 advisory&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;y2038-support&quot;&gt;Year 2038 compatibility improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_long_term_cryptographic_operations&quot;&gt;Long-term cryptographic operations&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The &lt;a href=&quot;https://en.wikipedia.org/wiki/Year_2038_problem&quot;&gt;Year 2038 problem&lt;/a&gt;
presents unique challenges for cryptographic software:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The 32-bit &lt;code&gt;time_t&lt;/code&gt; will overflow on January 19, 2038&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Critical for long-term key validity and expiration&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Particularly important for infrastructure and root certificates&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Affects both key generation and validation&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_post_2038_date_handling&quot;&gt;Post-2038 date handling&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release implements several improvements to handle post-2038 dates:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;New &lt;code&gt;rnp_key_valid_till64()&lt;/code&gt; function for 64-bit time handling&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed key expiry checks for dates beyond 2038&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved timestamp handling throughout the codebase&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better support for long-term key validity&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These changes ensure that RNP can properly handle keys and certificates with
validity periods extending beyond 2038, which is crucial for:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Long-term infrastructure planning&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Root certificate management&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Compliance with modern security practices&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Future-proofing cryptographic operations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;key-expiration&quot;&gt;Key management improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_expiration_time_handling&quot;&gt;Expiration time handling&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The release includes several improvements to key expiration management:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Better handling of keys with multiple user IDs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved expiration time updates&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc4880#section-5.2.1&quot;&gt;direct-key signatures&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced primary user ID certification handling&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These changes provide more accurate and reliable key lifecycle management,
particularly important for:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Enterprise key management&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Certificate authority operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Long-term document signing&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Complex PKI deployments&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_build_system_improvements&quot;&gt;Build system improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_documentation_building_options&quot;&gt;Documentation building options&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The release makes &lt;a href=&quot;https://en.wikipedia.org/wiki/Man_page&quot;&gt;man pages&lt;/a&gt;
building optional, which:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Reduces build dependencies when documentation isn&amp;#8217;t needed&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Simplifies minimal installations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improves build system flexibility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enables faster builds in development environments&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_developer_improvements&quot;&gt;Developer improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_ffi_enhancements&quot;&gt;FFI enhancements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New FFI features improve integration capabilities:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;RNP_FEATURE_*&lt;/code&gt; defines replace raw strings&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;More robust feature detection&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better compile-time checking&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved IDE support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Clearer API documentation&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;64-bit time handling functions&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Future-proof timestamp operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better support for long-term keys&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved platform compatibility&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_looking_ahead&quot;&gt;Looking ahead&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.15.1 strengthens the foundation for secure and reliable OpenPGP
implementations by:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Addressing critical security concerns&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Preparing for future compatibility challenges&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improving build system flexibility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhancing developer experience&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These improvements demonstrate RNP&amp;#8217;s commitment to maintaining a robust, secure,
and future-proof OpenPGP implementation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information and the complete list of changes, please
visit the &lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.15.1&quot;&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP version 0.15 released</title><link>https://www.rnpgp.org/blog/2021-04-05-rnp-release-0-15/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2021-04-05-rnp-release-0-15/</guid><description>Enhances build system flexibility and improves message format handling for better OpenPGP compatibility</description><pubDate>Mon, 05 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Version: RNP 0.15.0
Release date: 2021-04-04&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.15.0 represents a significant milestone in the project&amp;#8217;s evolution,
introducing important changes to library versioning, build system improvements,
and enhanced message format handling.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release focuses on making RNP more accessible to developers while improving
compatibility and usability.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release brings substantial improvements to RNP&amp;#8217;s build system, library
organization, and developer documentation. It also addresses several format
handling issues to improve interoperability with other OpenPGP implementations.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#offline-builds&quot;&gt;Offline build support&lt;/a&gt; for secure environments&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#format-handling&quot;&gt;Enhanced cleartext signature handling&lt;/a&gt; for better compatibility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#library-versioning&quot;&gt;Simplified library versioning&lt;/a&gt; for easier integration&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Other highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Improved MSVC build support and documentation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better 32-bit platform compatibility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced armored message processing&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New FFI functions for key management&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved CLI tools with new commands&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Updated manual pages and documentation&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;offline-builds&quot;&gt;Build system improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_offline_build_support&quot;&gt;Offline build support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;A major enhancement to the build system enables offline builds:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;New &lt;a href=&quot;https://cmake.org&quot;&gt;CMake&lt;/a&gt; options for building without external downloads:&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/google/googletest&quot;&gt;Googletest&lt;/a&gt; can be skipped during build&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rnpgp/ruby-rnp&quot;&gt;ruby-rnp&lt;/a&gt; can be skipped during build&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better support for air-gapped environments&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved build reproducibility&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This change is particularly important for:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Security-conscious environments&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Regulated development environments&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Automated build systems&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Package maintainers&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;library-versioning&quot;&gt;Library versioning improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The library naming scheme has been simplified:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Changed from &lt;code&gt;librnp-0.{so,dll}&lt;/code&gt; to &lt;code&gt;librnp.{so,dll}&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Simplified dependency specifications&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better alignment with common library naming practices&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved package management integration&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_msvc_build_support&quot;&gt;MSVC build support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Enhanced Microsoft Visual Studio support includes:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Updated build instructions for MSVC&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better Windows integration&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved development experience on Windows&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More consistent cross-platform builds&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;format-handling&quot;&gt;Format handling improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_cleartext_signature_enhancements&quot;&gt;Cleartext signature enhancements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Significant improvements have been made to cleartext signature handling:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Better handling of whitespace in empty lines between headers and content&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved compatibility with various email clients&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More robust processing of formatted text&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced interoperability with other OpenPGP implementations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_armored_message_handling&quot;&gt;Armored message handling&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The release includes more flexible handling of armored messages:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Relaxed CRC requirements&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Warning-based approach instead of hard failures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better handling of legacy messages&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved error reporting&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These changes make RNP more resilient when processing messages from different sources while maintaining security.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_platform_compatibility_improvements&quot;&gt;Platform compatibility improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_32_bit_platform_support&quot;&gt;32-bit platform support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Continued improvements for 32-bit systems include:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Better handling of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Year_2038_problem&quot;&gt;Year 2038 problem&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced timestamp processing&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved compatibility with legacy systems&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Future-proofing for long-term key validity&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_documentation_improvements&quot;&gt;Documentation improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_manual_page_enhancements&quot;&gt;Manual page enhancements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New and updated manual pages provide better documentation:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Complete &lt;code&gt;rnp&lt;/code&gt; and &lt;code&gt;rnpkeys&lt;/code&gt; command documentation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Detailed &lt;code&gt;librnp&lt;/code&gt; API reference&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Usage examples and best practices&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implementation guidelines&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_developer_improvements&quot;&gt;Developer improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_key_management_enhancements&quot;&gt;Key management enhancements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New FFI functions enhance key management capabilities:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_signature_remove&lt;/code&gt; for individual signature removal&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_uid_remove&lt;/code&gt; for user ID management&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_remove_signatures&lt;/code&gt; for batch operations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These additions provide:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;More granular control over key data&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better key cleanup capabilities&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved key maintenance workflows&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced key lifecycle management&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_command_line_interface_improvements&quot;&gt;Command-line interface improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The CLI has been enhanced with:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;New &lt;code&gt;--remove-key&lt;/code&gt; command in rnpkeys&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better key management capabilities&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved user experience&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More consistent command behavior&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_looking_ahead&quot;&gt;Looking ahead&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.15.0 establishes a stronger foundation for future development by:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Simplifying the build process&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improving cross-platform support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhancing developer documentation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Providing better key management tools&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These improvements demonstrate RNP&amp;#8217;s commitment to being a developer-friendly,
robust OpenPGP implementation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information and the complete list of changes, please
visit the &lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.15.0&quot;&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP proposal for Google&apos;s Season of Docs 2021</title><link>https://www.rnpgp.org/blog/2021-03-26-rnp-gsod-2021/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2021-03-26-rnp-gsod-2021/</guid><description>Improving RNP documentation through GSoD 2021!</description><pubDate>Fri, 26 Mar 2021 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This is our proposal for Google&amp;#8217;s Season of Docs 2021.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Technical writers: please contact us if you are interested in
helping improve RNP documentation!&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;imageblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;img src=&quot;/assets/blog/2021-03-26-gsod-2021.png&quot; alt=&quot;Google Season of Docs 2021 logo&quot; width=&quot;100%&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;title&quot;&gt;Figure 1. Google Season of Docs 2021 logo&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This is the proposal for Google&amp;#8217;s Season of Docs 2021.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_about_rnp&quot;&gt;About RNP&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP (&lt;a href=&quot;https://www.rnpgp.org&quot; class=&quot;bare&quot;&gt;https://www.rnpgp.org&lt;/a&gt;) is an open-source, openly-licensed (BSD-3)
cryptography suite, which aims to facilitate usable end-to-end
encryption based on zero-trust. Its high-performance C++ library
provides a set of cryptographic primitives fully compliant with the
&lt;a href=&quot;https://tools.ietf.org/html/rfc4880&quot;&gt;OpenPGP standard (IETF RFC 4880)&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;First created in 2017, RNP is now used by Mozilla&amp;#8217;s &lt;a href=&quot;https://www.thunderbird.net/&quot;&gt;Thunderbird&lt;/a&gt; to
enable end-to-end encryption across
its 35+ million users, enabling Thunderbird to be the world’s most
popular mail client that supports end-to-end encryption. RNP has
undergone heavy security testing by &lt;a href=&quot;https://www.mozilla.org&quot;&gt;Mozilla&lt;/a&gt; and
&lt;a href=&quot;https://cure53.de&quot;&gt;Cure53&lt;/a&gt;, with public
security reports provided on the Internet.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The RNP suite is officially supported and funded by the
&lt;a href=&quot;https://www.mozilla.org/en-US/moss/&quot;&gt;Mozilla Open Source Support (MOSS)&lt;/a&gt;
&lt;a href=&quot;https://www.mozilla.org/en-US/moss/foundational-technology/&quot;&gt;Foundational Technology&lt;/a&gt; and
&lt;a href=&quot;https://www.mozilla.org/en-US/moss/secure-open-source/&quot;&gt;Secure Open Source&lt;/a&gt; funds,
and the &lt;a href=&quot;https://web.archive.org/web/20210327014434/https://ec.europa.eu/programmes/horizon2020/&quot;&gt;EU Horizons 2020&lt;/a&gt; program
through NLNet&amp;#8217;s Next Generation Internet initiative.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The following individuals of the project community have offered to act as volunteer mentors for this project:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Daniel Wyatt, Lead Developer of the RNP OpenPGP library. IETF standards participant, previously at FEMA. Contributor to multiple cryptographic tools including OpenSSL, LibreSSL, Botan. 3 times Google Summer of Code participant.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dr. Wai Kit Wong, Head of Research at Ribose. Published heavily in cryptographic cloud systems. Former Associate Professor in Computer Science and Head of the Department of Computing at Hang Seng University of Hong Kong.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_project_description&quot;&gt;Project description&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_current_status&quot;&gt;Current status&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Due to rising popularity of the RNP project, the speedy growth of its
userbase (and the need to address user needs) has caused development
at RNP to outpace documentation efforts.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;There are two aspects in RNP that need better documentation:
the CLI and the API.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Currently, RNP provides minimal API documentation as an integrated
library, which is insufficient for most developers who need to
perform native integration, and inadequate for those who utilize RNP
from the command line.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Better documentation will aid more pairs of eyes to review and
improve adoption of the RNP library, which will help expose
undiscovered problems in RNP.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This category of work aims to provide a reference guide for both the
library and CLI, and provide a set of guides for easier adoption of the RNP
components.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_identified_issues&quot;&gt;Identified issues&lt;/h3&gt;
&lt;div class=&quot;olist arabic&quot;&gt;
&lt;ol class=&quot;arabic&quot;&gt;
&lt;li&gt;
&lt;p&gt;Documentation of code with on-going development is an ongoing challenge
for developers.&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;This issue becomes especially pronounced when the development team
is paced by user needs, where time constraints generally leave code
documentation at a dismal and outdated state. Developers are known
not to be best at technical writing and it is important that the
right skill set is applied for this problem.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Existing documentation is outpaced by development efforts.&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Outdated documentation causes problems ranging from minor
inconveniences (e.g. users need to search for code changes) to
potential security risks (e.g. users utilize outdated cryptographic code).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Streamlining automated documentation for code documentation.&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Maintaining documentation separate from the codebase requires
context-switching and creates friction between the programming
and documenting processes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_project_scope&quot;&gt;Project scope&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Deliverable: Audit report of the current state of documentation&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Familiarize and audit existing documentation and software&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Develop an understanding of existing community needs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Strengths and weaknesses of current documentation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Perform usability test on existing documentation and identify parts most difficult to follow&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Deliverable: Information architecture and use case prioritization&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Prioritize use case focus by using the usability test results to develop more comprehensive documentation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The desired information architecture should:&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Allow the audience to discover the information they need;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use a layered approach, where the audience can learn more detailed information step-by-step, allowing the novice to progress in knowledge without being overwhelmed; and&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Be understandable to the suitable audience. Documentation for CLI is geared towards the normal user, while documentation for API is geared towards the software developer. We need to ensure that these audiences can find what they need.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Deliverable: Library API documentation&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Author a detailed library API reference guide for each component to allow users the ability to find details of library API usage&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Documentation should be built in an automated way through code annotations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Deliverable: CLI documentation&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Author a detailed CLI reference guide to allow users the ability to utilize the CLI&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Documentation should be built in an automated way through code annotations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Deliverable: How-to guides&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Author how-to guide to allow users to easily adopt RNP on a personal computer or for an organization&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Documentation should be built in a code-centric manner for better automation&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Deliverable: GSoD project case study&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Authored by the technical writer and interested project mentors&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Describes the success and challenges faced during the GSoD project for future reference&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Work considered out-of-scope:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;This project is of a pilot nature due to the budget amount - we do not expect every available API signature to be documented to the brim.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;This project will not address documentation on how RNP can be used with other systems (e.g. software that rely on RNP)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;We are seeking a competent open-source technical writer who has an interest in information security and willing to learn about the topic.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_potential_impact_of_the_project&quot;&gt;Potential impact of the project&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP powers 35+ million installs of Mozilla Thunderbird, and its adoption
as an open alternative to existing OpenPGP tools is going strong, especially
for civil society and for those that depend on privacy for safety.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Improved documentation for RNP will enable both typical Internet users
and power users to better protect their privacy through adopting RNP.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_measuring_projects_success&quot;&gt;Measuring project&amp;#8217;s success&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_expected_results&quot;&gt;Expected results&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The developed documentation will be published on the RNP project website at &lt;a href=&quot;https://www.rnpgp.org&quot; class=&quot;bare&quot;&gt;https://www.rnpgp.org&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Goal: A layman user can read the CLI user guide to install, setup, generate keys, and utilize RNP to protect information and send signed/encrypted emails; a developer can read the API guide to compile, setup and utilize RNP in the developer&amp;#8217;s application.&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Indication metric: Amount of people referring to the user guides.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Goal: Allow code annotations to be developed into documentation in an automated fashion&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Indication metric: Number of times that developers have to switch from code annotations to document content on the official website&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_measurable_project_metrics&quot;&gt;Measurable project metrics&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Two goals are sought of the project:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;olist arabic&quot;&gt;
&lt;ol class=&quot;arabic&quot;&gt;
&lt;li&gt;
&lt;p&gt;provide detailed and updated documentation to bring more users into the community.&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;This can be reflected by the number of new users of project documentation.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;make updating documentation as automated and as easy as possible.&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;This can be reflected by the number of PRs on rnpgp.org for contributing documentation
that did not originate from code annotations.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The project would be considered successful if, after the project:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Unique traffic to project documentation increases by 10%; and&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Number of code-documentation PRs to rnpgp.org decreases by 20%.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_project_schedule&quot;&gt;Project schedule&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_project_length&quot;&gt;Project Length&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;3 months&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_project_plan&quot;&gt;Project Plan&lt;/h3&gt;
&lt;table class=&quot;tableblock frame-all grid-all stretch&quot;&gt;
&lt;colgroup&gt;
&lt;col width=&quot;50%&quot;&gt;
&lt;col width=&quot;50%&quot;&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class=&quot;tableblock halign-left valign-top&quot;&gt;Item&lt;/th&gt;
&lt;th class=&quot;tableblock halign-left valign-top&quot;&gt;Duration (month)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;Technical writer acclimatizes to existing project documentation and seeks clarifications from mentors.&lt;/p&gt;&lt;/td&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;0.5&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;Technical writer develops a high-level structure of deliverables under mentorship.&lt;/p&gt;&lt;/td&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;0.5&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;Technical writer develops contents of deliverables with progress overseen by mentors.&lt;/p&gt;&lt;/td&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;1.5&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;Technical writer facilitates testing of the developed deliverables by seeking public feedback and project contributors. Finalizes deliverables addressing community feedback.&lt;/p&gt;&lt;/td&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;0.5&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;Total&lt;/p&gt;&lt;/td&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;3&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_budget&quot;&gt;Budget&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;table class=&quot;tableblock frame-all grid-all stretch&quot;&gt;
&lt;colgroup&gt;
&lt;col width=&quot;25%&quot;&gt;
&lt;col width=&quot;25%&quot;&gt;
&lt;col width=&quot;25%&quot;&gt;
&lt;col width=&quot;25%&quot;&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th class=&quot;tableblock halign-left valign-top&quot;&gt;Item&lt;/th&gt;
&lt;th class=&quot;tableblock halign-left valign-top&quot;&gt;Amount&lt;/th&gt;
&lt;th class=&quot;tableblock halign-left valign-top&quot;&gt;Running Total&lt;/th&gt;
&lt;th class=&quot;tableblock halign-left valign-top&quot;&gt;Notes/justifications&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;Technical writer&lt;/p&gt;&lt;/td&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;4,800.00&lt;/p&gt;&lt;/td&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;4,800.00&lt;/p&gt;&lt;/td&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;Swag&lt;/p&gt;&lt;/td&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;200&lt;/p&gt;&lt;/td&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;5,000.00&lt;/p&gt;&lt;/td&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;Project T-shirts (with shipping)&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;/td&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;TOTAL&lt;/p&gt;&lt;/td&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;p class=&quot;tableblock&quot;&gt;5,000.00&lt;/p&gt;&lt;/td&gt;
&lt;td class=&quot;tableblock halign-left valign-top&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_additional_information&quot;&gt;Additional Information&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The RNP project has mainly been documented by its technical contributors. One of our mentors, Daniel Wyatt, has participated in the Google Summer of Code program as a participant three times!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP 0.14.0 released</title><link>https://www.rnpgp.org/blog/2021-01-21-rnp-014-released/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2021-01-21-rnp-014-released/</guid><description>The long awaited new RNP is finally released with Windows support, major FFI, CLI and security improvements and compatibility fixes.</description><pubDate>Thu, 21 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.14.0 represents a major milestone in the project&amp;#8217;s evolution, introducing
Windows support and comprehensive improvements across key validation,
compatibility, and security.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release significantly expands RNP&amp;#8217;s platform support while enhancing its
robustness and usability.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release marks a transformative moment for RNP, bringing Windows platform
support through both &lt;a href=&quot;https://visualstudio.microsoft.com/&quot;&gt;MSVC&lt;/a&gt; and
&lt;a href=&quot;https://www.msys2.org/&quot;&gt;MinGW/MSYS2&lt;/a&gt; build systems. Additionally, it
introduces substantial improvements to key validation, memory management, and
compatibility with other OpenPGP implementations.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#windows-support&quot;&gt;Windows platform support&lt;/a&gt; via MSVC and MinGW/MSYS2&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#key-validation&quot;&gt;Enhanced key validation&lt;/a&gt; with stricter requirements&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#security-improvements&quot;&gt;Improved security measures&lt;/a&gt; and memory management&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Other highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Comprehensive FFI enhancements for better integration&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved CLI tools with new key management features&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better compatibility with other OpenPGP implementations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optimized memory usage and performance&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced error handling and logging&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Migration to C++ and Python 3 for testing&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;windows-support&quot;&gt;Platform support improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_windows_build_system_support&quot;&gt;Windows build system support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;A major achievement in this release is the addition of comprehensive Windows
support:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Build system support for both MSVC and MinGW/MSYS2&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Native Windows file system compatibility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for widechar parameters and file names&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Integration with Windows development tools&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This expansion makes RNP a truly cross-platform solution, enabling:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Broader deployment options&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better integration with Windows applications&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Consistent behavior across operating systems&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced developer experience on Windows&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;key-validation&quot;&gt;Key management improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_key_validation&quot;&gt;Key validation&lt;/h3&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Improved key validation: require to have at least one valid, non-expiring self signature&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Added support for &apos;stripped&apos; keys without userids and certifications but with valid subkey binding signature&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed secret key locking when it is updated with new signatures/subkeys&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed key expiry/flags calculation (take in account only the latest valid self-signature/subkey binding)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implemented userid validity checks so only certified/non-expired/non-revoked userid may be searched&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Changed behaviour to use latest encryption subkey by default&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_smart_card_integration&quot;&gt;Smart card integration&lt;/h3&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Added basic support for GnuPG&amp;#8217;s offline primary keys (&lt;code&gt;gnupg --export-secret-subkeys&lt;/code&gt;) and secret keys stored on card&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;security-improvements&quot;&gt;Security improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_memory_management_enhancements&quot;&gt;Memory management enhancements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Several improvements reduce memory usage and improve efficiency:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Optimized memory usage for keys with many signatures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved key/uid signatures access performance&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better memory handling during packet processing&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reduced memory leaks in error conditions&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_security_hardening&quot;&gt;Security hardening&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Multiple security improvements:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Removed version headers from armored messages&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced fuzzing coverage via oss-fuzz&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed static analyzer issues&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Updated to Botan 2.14.0 minimum requirement&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_other_issues&quot;&gt;Other issues&lt;/h3&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Fixed MDC reading if it appears on 8k boundary&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed leading zeroes for secp521r1 b &amp;amp; n field constants&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Allowed keys and signatures with invalid MPI bit count&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed support for old RSA sign-only/encrypt-only and ElGamal encrypt-and-sign keys&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed support for ElGamal keys larger than 3072 bits&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Replaced usage of deprecated &lt;code&gt;botan_pbkdf()&lt;/code&gt; with &lt;code&gt;botan_pwdhash()&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_compatibility_improvements&quot;&gt;Compatibility improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_legacy_algorithm_support&quot;&gt;Legacy algorithm support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Enhanced support for various key types and algorithms:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Improved handling of RSA sign-only and encrypt-only keys&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better support for ElGamal keys larger than 3072 bits&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed secp521r1 curve parameter handling&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for private/experimental signature subpackets, used by GnuPG and other implementations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for reserved/placeholder signatures&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These improvements ensure:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Better interoperability with older systems&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for legacy key formats&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved compatibility with other OpenPGP implementations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More robust key processing&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_format_handling_improvements&quot;&gt;Format handling improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Significant improvements in message format handling:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Better processing of armored messages&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for zero-size userid/attr packet&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for unknown experimental s2ks&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved text-mode signature handling&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced CR character handling in text documents&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_other_issues_2&quot;&gt;Other issues&lt;/h3&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Fixed GnuPG compatibility issues with CR (&lt;code&gt;\r&lt;/code&gt;) characters in text-mode and cleartext-signed documents&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed support for widechar parameters/file names on Windows&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_performance_optimizations&quot;&gt;Performance optimizations&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_memory_management&quot;&gt;Memory management&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Several improvements reduce memory usage and improve efficiency:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Significantly reduced memory usage for keys with large number of signatures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved performance of the key/uid signatures access&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed multiple memory leaks related to invalid algorithms/versions/etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed symbol visibility so only FFI functions are exposed outside of the library&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_robustness_improvements&quot;&gt;Robustness improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Enhanced error handling and stability:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Limited allowed nesting levels for OpenPGP packets&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Relaxed packet dumping, ignoring invalid packets and allowing to find wrong packets easier&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved logging of errored keys/subkeys information for easier debugging&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Disabled logging by default in release builds and added support for environment variable &lt;code&gt;RNP_LOG_CONSOLE&lt;/code&gt; to enable it back&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_command_line_interface_enhancements&quot;&gt;Command-line interface enhancements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_key_management&quot;&gt;Key management&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New key management capabilities:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Flexible password handling options&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Do not load keyring when it is not required, avoiding extra &lt;code&gt;keyring not found&lt;/code&gt; output.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Input/output data via the tty, if available, instead of stdin/stdout.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed possible crash when HOME variable is not set.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnpkeys&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;New &lt;code&gt;--import-sigs&lt;/code&gt; argument and changed behavior of &lt;code&gt;--import&lt;/code&gt; to check
whether input is key or signature.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New &lt;code&gt;--export-rev&lt;/code&gt; command to export key&amp;#8217;s revocation, parameters &lt;code&gt;--rev-type&lt;/code&gt;, &lt;code&gt;--rev-reason&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New &lt;code&gt;--revoke-key&lt;/code&gt; command.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New &lt;code&gt;--permissive&lt;/code&gt; parameter to &lt;code&gt;--import-keys&lt;/code&gt; command.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New &lt;code&gt;--password&lt;/code&gt; options, allowing to specify password and/or generate unprotected key.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_usability_improvements&quot;&gt;Usability improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Better user experience through:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Smarter keyring loading&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved TTY handling&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better error messages&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More flexible import options&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_developer_interface_improvements&quot;&gt;Developer interface improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_enhanced_ffi_capabilities&quot;&gt;Enhanced FFI capabilities&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Comprehensive new FFI functions for:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Key validation and status checking&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Signature management&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Protection information retrieval&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Autocrypt compatibility&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New keystore type constants:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;RNP_KEYSTORE_*&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New FFI functions:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_import_signatures&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_export_revocation&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_revoke&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_request_password&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_set_expiration&lt;/code&gt; to update key&amp;#8217;s/subkey&amp;#8217;s expiration time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_op_verify_get_protection_info&lt;/code&gt; to check mode and cipher used to encrypt message.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;functions to retrieve recipients information (&lt;code&gt;rnp_op_verify_get_recipient_count&lt;/code&gt;, &lt;code&gt;rnp_op_verify_get_symenc_count&lt;/code&gt;, etc.).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_output_pipe&lt;/code&gt; allowing to write data from input to the output.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_output_armor_set_line_length&lt;/code&gt; allowing to change base64 encoding line length.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_export_autocrypt&lt;/code&gt; to export public key in autocrypt-compatible format.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;functions to retrieve information about the secret key&amp;#8217;s protection (&lt;code&gt;rnp_key_get_protection_type&lt;/code&gt;, etc.).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_uid_get_type&lt;/code&gt;, &lt;code&gt;rnp_uid_get_data&lt;/code&gt;, &lt;code&gt;rnp_uid_is_primary&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_uid_is_valid&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_get_revocation_signature&lt;/code&gt; and &lt;code&gt;rnp_uid_get_revocation_signature&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_signature_get_type&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_signature_is_valid&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_is_valid&lt;/code&gt; and &lt;code&gt;rnp_key_valid_till&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New FFI flags:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;flag &lt;code&gt;RNP_LOAD_SAVE_PERMISSIVE&lt;/code&gt; to &lt;code&gt;rnp_import_keys&lt;/code&gt;, allowing to skip erroneous packets.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;flag &lt;code&gt;RNP_LOAD_SAVE_SINGLE&lt;/code&gt;, allowing to import keys one-by-one.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;flag &lt;code&gt;RNP_KEY_REMOVE_SUBKEYS&lt;/code&gt; to &lt;code&gt;rnp_key_remove&lt;/code&gt; function.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Others:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Fixed documentation for the &lt;code&gt;rnp_unload_keys&lt;/code&gt; function.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_improved_integration&quot;&gt;Improved integration&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Better integration support through:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Added exception guards at FFI boundary&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cleaner symbol visibility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better documentation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More consistent API behavior&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_security_enhancements&quot;&gt;Security enhancements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_hardening_measures&quot;&gt;Hardening measures&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Multiple security improvements:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Removed version headers from armored messages&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced fuzzing coverage&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed static analyzer issues&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Updated cryptographic dependencies&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_cryptographic_improvements&quot;&gt;Cryptographic improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Better cryptographic operations:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Updated to Botan 2.14.0&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved key protection&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced signature validation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better random number generation&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_technical_improvements&quot;&gt;Technical improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_code_modernization&quot;&gt;Code modernization&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Major technical improvements:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Migrated most of the internal code to C++&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Updated test suite to Python 3&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better string handling&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Replaced &lt;code&gt;strcpy&lt;/code&gt; calls with &lt;code&gt;std::string&lt;/code&gt; and &lt;code&gt;memcpy&lt;/code&gt; where applicable&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved temporary file management&lt;/p&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Removed usage of &lt;code&gt;mktemp&lt;/code&gt;, replacing it with &lt;code&gt;mkstemp&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_bug_fixes&quot;&gt;Bug fixes&lt;/h3&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Fixed crash with non-detached signature input, fed into the &lt;code&gt;rnp_op_verify_detached_create()&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed long armor header lines processing&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed primary key binding signature validation when hash algorithm differs from the one used in the subkey binding signature&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed possible crashes during processing of malformed armored input&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed support for text-mode signatures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed armored message contents detection (so armored revocation signature is not more reported as the public key)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_looking_ahead&quot;&gt;Looking ahead&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.14.0 establishes a stronger foundation for future development through:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Expanded platform support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced security measures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved developer interfaces&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better compatibility&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These improvements demonstrate RNP&amp;#8217;s commitment to being a robust, secure, and user-friendly OpenPGP implementation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information and the complete list of changes, please visit the &lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.14.0&quot;&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP 0.13.0 released</title><link>https://www.rnpgp.org/blog/2020-01-03-rnp-013-released/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2020-01-03-rnp-013-released/</guid><description>The latest version of the RNP library extends FFI and CLI interfaces, giving more flexibility and control to the user.</description><pubDate>Fri, 03 Jan 2020 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.13.0 brings substantial improvements to the Foreign Function Interface
(FFI) and command-line tools, while also addressing important stability and
security issues. This release focuses on providing developers with more powerful
and flexible APIs while improving the overall robustness of the library.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release represents a significant step forward in RNP&amp;#8217;s evolution as a
developer-friendly OpenPGP implementation. The extensive FFI enhancements
provide developers with more granular control over cryptographic operations,
while stability improvements ensure reliable operation in various scenarios.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#key-generation&quot;&gt;New key generation API&lt;/a&gt; for improved programmatic control&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#armor-handling&quot;&gt;Enhanced armor handling&lt;/a&gt; with better stability and security&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#key-management&quot;&gt;Comprehensive key management functions&lt;/a&gt; in FFI&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Other highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Streamlined CLI interface with better organization&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved RPM package structure&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced debugging capabilities&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better version control integration&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optimized key validation process&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New output handling functions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved feature detection system&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_command_line_interface_updates&quot;&gt;Command-line interface updates&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_rnp&quot;&gt;&lt;code&gt;rnp&lt;/code&gt;&lt;/h3&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Added &lt;code&gt;--list-packets&lt;/code&gt; parameters (&lt;code&gt;--json&lt;/code&gt;, etc.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Removed &lt;code&gt;--show-keys&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_rnpkey&quot;&gt;&lt;code&gt;rnpkey&lt;/code&gt;&lt;/h3&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Removed a few redundant commands (&lt;code&gt;--get-key&lt;/code&gt;, &lt;code&gt;--print-sigs&lt;/code&gt;, &lt;code&gt;--trusted-keys&lt;/code&gt;, &amp;#8230;&amp;#8203;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Added &lt;code&gt;--secret&lt;/code&gt; option&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Display &apos;ssb&apos; for secret subkeys&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_foreign_function_interface_ffi_enhancements&quot;&gt;Foreign Function Interface (FFI) enhancements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_key_generation_and_management&quot;&gt;Key generation and management&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New functions:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A new (non-JSON) key generation API (&lt;code&gt;rnp_op_generate_create&lt;/code&gt; etc.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_unload_keys&lt;/code&gt; function to unload all keys&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_remove&lt;/code&gt; to unload a single key&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_get_subkey_count&lt;/code&gt;/&lt;code&gt;rnp_key_get_subkey_at&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Various key property accessors (&lt;code&gt;rnp_key_get_bits&lt;/code&gt;, &lt;code&gt;rnp_key_get_curve&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_op_generate_set_protection_password&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_get_creation&lt;/code&gt;, &lt;code&gt;rnp_key_get_expiration&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_get_uid_handle_at&lt;/code&gt;, &lt;code&gt;rnp_uid_is_revoked&lt;/code&gt;, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_is_revoked&lt;/code&gt; and related functions to check for revocation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_get_primary_grip&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_op_generate_set_request_password&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_import_keys&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Modified function:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Expanded bit length support for JSON key generation&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_output_and_data_handling&quot;&gt;Output and data handling&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New functions:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_output_to_path&lt;/code&gt; and &lt;code&gt;rnp_output_finish&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_output_to_armor&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_dump_packets_to_output&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_output_write&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_guess_contents&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_key_packets_to_json&lt;/code&gt;/&lt;code&gt;rnp_dump_packets_to_json&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_signature_packet_to_json&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_op_set_file_name&lt;/code&gt;/&lt;code&gt;rnp_op_set_file_mtime&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_op_encrypt_set_aead_bits&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_op_verify_signature_get_handle&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_system_and_debugging&quot;&gt;System and debugging&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New functions:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_version_commit_timestamp&lt;/code&gt; to retrieve the commit timestamp (for non-release builds)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_calculate_iterations&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_supports_feature&lt;/code&gt;/&lt;code&gt;rnp_supported_features&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnp_enable_debug&lt;/code&gt;/&lt;code&gt;rnp_disable_debug&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_package_management&quot;&gt;Package management&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;RPM: Split packages into &lt;code&gt;librnp0&lt;/code&gt;, &lt;code&gt;librnp0-devel&lt;/code&gt;, and &lt;code&gt;rnp0&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_general_stability_fixes&quot;&gt;General stability fixes&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Fixed a double-free on invalid armor headers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed broken versioning when used as a git submodule&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed an infinite loop on parsing truncated armored keys&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed armored stream parsing to be more flexible and allow blank lines before trailer&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed the armor header for detached signatures (previously MESSAGE, now SIGNATURE)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved setting of default qbits for DSA&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed a crash when retrieving signature revocation reason&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Stopped using expensive tests for key material validation&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_looking_ahead&quot;&gt;Looking ahead&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.13.0 establishes a stronger foundation for developers through:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;More comprehensive FFI capabilities&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better stability and security&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved packaging&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced usability&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These improvements demonstrate RNP&amp;#8217;s commitment to providing a robust and
developer-friendly OpenPGP implementation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information and the complete list of changes, please
visit the &lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.13.0&quot;&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP 0.12.0 released</title><link>https://www.rnpgp.org/blog/2019-01-14-rnp-012-released/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2019-01-14-rnp-012-released/</guid><description>Added support for extra ECC curves (Brainpool p256, p384, p512, secp256k1, x25519). Extended FFI with AEAD support and a bunch of examples. CLI functionality extended with `-f` command, allowing to load keys from a file.</description><pubDate>Mon, 14 Jan 2019 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.12.0 significantly expands cryptographic capabilities with support for
additional elliptic curves, introduces AEAD encryption support, and enhances
both the FFI and CLI interfaces.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release also includes important fixes for key handling and signature
validation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release marks a major expansion in RNP&amp;#8217;s cryptographic capabilities,
particularly in the area of
&lt;a href=&quot;https://en.wikipedia.org/wiki/Elliptic_curve_cryptography&quot;&gt;elliptic curve cryptography&lt;/a&gt;.
The addition of new curves and AEAD support, combined with
improved developer interfaces, makes RNP more versatile and secure for a wider
range of applications.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Added support for extra ECC curves (Brainpool p256, p384, p512, secp256k1, x25519).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;CLI functionality extended with &lt;code&gt;-f&lt;/code&gt; command, allowing to load keys directly from a file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FFI enhancements for AEAD support.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Other highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Dependency upgrade: Botan 2.8+.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced key grip calculations across various key types.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved handling of SM2 signatures for hashing the message. See comment in &lt;a href=&quot;https://github.com/rnpgp/rnp/issues/436&quot;&gt;issue #436&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Added support for G10 ECC keys.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced dumping logic for partial-length packets, ensuring accurate handling.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_cryptographic_enhancements&quot;&gt;Cryptographic enhancements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_extended_ecc_support&quot;&gt;Extended ECC support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The release adds support for several important elliptic curves.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP supports the &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc6637&quot;&gt;RFC 6637&lt;/a&gt;
specification which details the implementation and usage of ECC curves in
OpenPGP.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The new implemented curves provide:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;More flexibility in curve selection&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better compliance with various standards&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced interoperability&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved performance options&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_brainpool_curves&quot;&gt;Brainpool curves&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The Brainpool curves (p256, p384, p512) are standardized elliptic curves
developed by the
&lt;a href=&quot;https://www.bsi.bund.de/EN/Home/home_node.html&quot;&gt;German Federal Office for Information Security (BSI)&lt;/a&gt;
as specified in
&lt;a href=&quot;https://tools.ietf.org/html/rfc5639&quot;&gt;RFC 5639&lt;/a&gt;. These curves were designed to
provide verifiably pseudo-random parameters, offering an important alternative
to the NIST curves.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key characteristics of Brainpool curves include:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rigorous security verification through public, transparent generation processes&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Three security levels (256-bit, 384-bit, and 512-bit) matching or exceeding RSA 3072-bit to 15360-bit security&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Widespread adoption in European cryptographic applications and standards&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Official approval by BSI for use in high-security applications&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;In OpenPGP applications, Brainpool curves are particularly valuable when
regulatory compliance or specific security requirements mandate the use of
BSI-approved algorithms. Their implementation in RNP follows the
&lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc5639&quot;&gt;RFC 5639&lt;/a&gt; and enables both ECDSA
(for signatures) and ECDH (for encryption) operations.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The inclusion of Brainpool curves enhances RNP&amp;#8217;s ability to serve European
markets and organizations requiring BSI-approved cryptographic algorithms while
maintaining full interoperability within the OpenPGP ecosystem.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_secp256k1&quot;&gt;secp256k1&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The secp256k1 curve, defined by
&lt;a href=&quot;http://www.secg.org/sec2-v2.pdf&quot;&gt;Standards for Efficient Cryptography (SEC)&lt;/a&gt;,
is a specialized elliptic curve that has gained widespread recognition primarily
through its use in Bitcoin&amp;#8217;s cryptographic operations. This Koblitz curve over a
prime field offers unique mathematical properties that make it particularly
efficient for cryptographic operations while maintaining strong security
characteristics.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key characteristics of secp256k1 include:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;256-bit security level, comparable to 3072-bit RSA&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exceptional performance for ECDSA operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mathematically elegant structure that enables efficient implementation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Strong resistance to known cryptographic attacks&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Widespread adoption and extensive security analysis&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;In OpenPGP applications, secp256k1 serves dual purposes - it can be used both for ECDSA digital
signatures and ECDH key exchange operations, following the
&lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc6637&quot;&gt;RFC 6637&lt;/a&gt; specifications. Its implementation in RNP
enables users to leverage the same high-performance cryptographic primitives used in blockchain
applications while maintaining full compatibility with the OpenPGP ecosystem.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The curve&amp;#8217;s efficiency comes from its specific parameters that enable particularly fast implementation
of scalar multiplication operations, making it ideal for resource-constrained environments. While
initially controversial due to its unusual generation process compared to NIST curves, secp256k1
has undergone extensive scrutiny and real-world testing through its use in cryptocurrency systems,
establishing itself as a trusted option for high-security applications.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect3&quot;&gt;
&lt;h4 id=&quot;_x25519&quot;&gt;x25519&lt;/h4&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The x25519 curve, designed by Daniel J. Bernstein, represents a significant
advancement in elliptic curve cryptography. It is specifically optimized for the
Montgomery ladder implementation of elliptic curve Diffie-Hellman (ECDH) key
exchange, as specified in &lt;a href=&quot;https://cr.yp.to/ecdh/curve25519-20060209.pdf&quot;&gt;curve 25519&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key characteristics of x25519 include:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Designed for high-speed key exchange operations while maintaining strong security&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provides 128 bits of security, comparable to 3072-bit RSA&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Resistant to various side-channel attacks due to its constant-time implementation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Widely adopted in protocols like TLS 1.3, Signal, and Wireguard&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;In OpenPGP applications, x25519 is particularly valuable for secure key exchange
operations, offering an excellent balance of security and performance. Its
inclusion in RNP, following
&lt;a href=&quot;https://datatracker.ietf.org/doc/html/draft-ietf-openpgp-crypto-refresh#name-curves-for-elliptic-curve-pu&quot;&gt;OpenPGP specification&lt;/a&gt;,
enables modern, high-performance encrypted communications while
maintaining compatibility with the OpenPGP ecosystem.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Additionally, the x25519 curve strengthens the overall security framework,
ensuring efficient and robust encryption methods are employed across various
applications. It also positions RNP as a leader in the adoption of contemporary
cryptographic practices, facilitating secure communication in today’s digital
landscape.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_dependency_updates&quot;&gt;Dependency updates&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_botan_upgrade_requirement&quot;&gt;Botan upgrade requirement&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Starting with this release, RNP requires &lt;a href=&quot;https://botan.randombit.net/&quot;&gt;Botan&lt;/a&gt; 2.8
or higher as its cryptographic backend. This upgrade represents a significant
step forward in RNP&amp;#8217;s cryptographic capabilities and performance.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Botan 2.8+ brings several crucial improvements:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Modern cryptographic implementations, including optimized ECC operations and AEAD support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced security features and fixes for known vulnerabilities&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved performance through optimized algorithms and better hardware acceleration&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More comprehensive API support, enabling better integration and feature expansion&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For users, this upgrade means:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Stronger security guarantees through up-to-date cryptographic implementations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better performance in key operations, especially with modern CPU features&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Access to newer cryptographic algorithms and modes&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved stability and reliability&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;While this change requires updating existing Botan installations, the benefits
in security and performance make this upgrade essential for modern cryptographic
applications. For installation instructions, see the
&lt;a href=&quot;https://botan.randombit.net/handbook/building.html&quot;&gt;Botan installation guide&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_foreign_function_interface_ffi_enhancements&quot;&gt;Foreign Function Interface (FFI) enhancements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_aead&quot;&gt;AEAD&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Authenticated_encryption&quot;&gt;Authenticated Encryption with Associated Data (AEAD)&lt;/a&gt;
is now fully supported through FFI, having been available through the CLI. This
expansion brings modern encryption capabilities to developers integrating RNP
into their applications.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;AEAD provides both confidentiality and authenticity of encrypted data, making it
a crucial feature for secure communications. The implementation follows
&lt;a href=&quot;https://datatracker.ietf.org/doc/html/draft-ietf-openpgp-rfc4880bis&quot;&gt;RFC 4880bis&lt;/a&gt;,
ensuring interoperability while providing strong security guarantees.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The FFI enhancements in this release include:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Comprehensive AEAD support for programmatic encryption operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New example code demonstrating common usage patterns&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed regression issues with direct subkey loading&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implementation of per-signature hash and timing controls&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Extended API documentation and usage examples&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These improvements particularly benefit:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Developers integrating RNP into their applications&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Systems requiring high-performance authenticated encryption&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Applications needing fine-grained control over cryptographic operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Projects requiring modern encryption standards compliance&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The expanded FFI capabilities make RNP more accessible as a cryptographic
library while maintaining its security standards and OpenPGP compliance.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Extensive FFI-AEAD examples are provided to help developers quickly integrate AEAD
encryption into their applications.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_other_improvements&quot;&gt;Other improvements&lt;/h3&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Fixed regression with loading subkeys directly.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_implemented_support_for_per_signature_hash_and_creationexpiration_time&quot;&gt;Implemented support for per-signature hash and creation/expiration time&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release implements support for per-signature hash and creation/expiration time.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Specifically, the FFI provides fine-grained control over signature creation,
allowing developers to specify:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Custom hash algorithms for individual signatures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creation time for signatures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Expiration time for signatures&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This enhancement follows &lt;a href=&quot;https://tools.ietf.org/html/rfc4880&quot;&gt;RFC 4880&lt;/a&gt;
specifications for signature creation timestamps and provides greater
flexibility in signature generation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key benefits include:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Better control over signature properties&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for specific compliance requirements&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced timestamp accuracy&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved signature verification capabilities&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The implementation is particularly valuable for:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Applications requiring precise signature timing&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Systems with specific hash algorithm requirements&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Compliance-focused implementations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Long-term document signing solutions&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This feature enables developers to create more precise and compliant signature
implementations while maintaining full OpenPGP compatibility. Example code
demonstrating these capabilities is available in the FFI documentation.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_key_handling_improvements&quot;&gt;Key handling improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_support_for_g10_ecc_keys&quot;&gt;Support for G10 ECC keys&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release adds support for G10 format ECC keys, expanding RNP&amp;#8217;s compatibility
with various OpenPGP implementations. G10 is the native key format used by
GnuPG 2.x, making this addition particularly important for interoperability.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key features of G10 ECC key support:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Full compatibility with GnuPG 2.x key storage&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for all implemented ECC curves&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Seamless import and export capabilities&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Proper handling of secret key material&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This enhancement is particularly beneficial for:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Systems migrating from GnuPG&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Multi-implementation environments&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Key management systems&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cross-platform applications&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The implementation follows the GnuPG key storage specification, ensuring
reliable key handling across different OpenPGP implementations while maintaining
security standards.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_other_improvements_2&quot;&gt;Other improvements&lt;/h3&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Better key grip calculations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved subkey handling&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More accurate key identification&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_command_line_interface_enhancements&quot;&gt;Command-line interface enhancements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_rnp&quot;&gt;&lt;code&gt;rnp&lt;/code&gt;&lt;/h3&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Direct key file loading with &lt;code&gt;-f&lt;/code&gt;/&lt;code&gt;--keyfile&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fixed issue with selecting G10 secret keys via userid.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_rnpkeys&quot;&gt;&lt;code&gt;rnpkeys&lt;/code&gt;&lt;/h3&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rnpkeys&lt;/code&gt; now supports SM2 with arbitrary hashes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved key information display&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_redumper&quot;&gt;&lt;code&gt;redumper&lt;/code&gt;&lt;/h3&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Added &lt;code&gt;-g&lt;/code&gt; option to dump fingerprints and grips.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Display key id/fingerprint/grip in packet listings.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_debugging_tools&quot;&gt;Debugging tools&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Enhanced debugging capabilities in redumper:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Fingerprint and grip dumping&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better packet listings&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;More detailed key information&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved diagnostic output&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_technical_improvements&quot;&gt;Technical improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Significant codebase improvements:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Removed legacy code&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better packet handling&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved error handling&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced maintainability&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_looking_ahead&quot;&gt;Looking ahead&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.12.0 establishes a stronger foundation for modern cryptographic operations through:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Expanded curve support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Modern encryption modes&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better developer tools&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced usability&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These improvements demonstrate RNP&amp;#8217;s commitment to providing a comprehensive and
secure OpenPGP implementation.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information and the complete list of changes, please
visit the &lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.12.0&quot;&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP 0.11.0 released</title><link>https://www.rnpgp.org/blog/2018-09-17-rnp-011-released/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2018-09-17-rnp-011-released/</guid><description>This update improves key import/merge operations and support for automating S2K iterations calculation.</description><pubDate>Mon, 17 Sep 2018 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.11.0 introduces significant improvements to key management and security
features, particularly in the areas of key protection and key operations. This
release focuses on enhancing usability while maintaining strong security
practices.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_introduction&quot;&gt;Introduction&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This release brings important enhancements to how RNP handles key operations and
protection mechanisms. The improvements to String-to-Key (S2K) calculations and
key management make RNP more user-friendly while ensuring robust security.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#s2k-iterations&quot;&gt;Dynamic S2K iteration calculation&lt;/a&gt; for optimal key protection&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#key-operations&quot;&gt;Enhanced key import and merge operations&lt;/a&gt; for better management&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;#key-protection&quot;&gt;Improved key protection mechanisms&lt;/a&gt; for stronger security&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Other highlights:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Configurable S2K iteration settings&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Time-based iteration calculation options&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better key distribution workflows&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Simplified key management processes&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Modernized key format support&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced CLI configuration options&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;s2k-iterations&quot;&gt;Security improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_dynamic_s2k_iteration_calculation&quot;&gt;Dynamic S2K iteration calculation&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;String-to-Key (S2K) is a critical security mechanism in OpenPGP that converts
passphrases into cryptographic keys. With version 0.11.0, RNP introduces dynamic
S2K iteration calculation that automatically determines the optimal number of
iterations based on the system&amp;#8217;s capabilities.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This feature significantly improves both security and usability by:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Automatically adjusting iteration counts to match system performance&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ensuring consistent protection levels across different hardware&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Balancing security needs with practical usability&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Adapting to varying computational resources&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Users benefit from enhanced protection against offline attacks without manually
tuning parameters. The system continuously provides optimal security by:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Maintaining strong protection against brute-force attempts&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Delivering consistent performance across platforms&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Automatically scaling with hardware improvements&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reducing configuration complexity&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For technical details on S2K implementation, refer to
&lt;a href=&quot;https://tools.ietf.org/html/rfc4880&quot;&gt;RFC 4880&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The new dynamic calculation system also integrates with RNP&amp;#8217;s
&lt;a href=&quot;#key-protection&quot;&gt;key protection mechanisms&lt;/a&gt; to provide a comprehensive security
solution that stays current with evolving hardware capabilities.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;key-protection&quot;&gt;Key protection enhancements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The release includes several key protection improvements:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;More sophisticated key derivation mechanisms&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better adaptation to system capabilities&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved resistance to offline attacks&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configurable protection levels&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;key-operations&quot;&gt;Key management improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_public_key_extraction_from_secret_keys&quot;&gt;Public key extraction from secret keys&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.11.0 introduces a streamlined process for extracting public keys from secret
keys, addressing a common need in OpenPGP key management. This feature simplifies
the distribution of public keys while keeping secret keys secure.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The improved extraction mechanism provides several benefits:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Automated public key generation from existing secret keys&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Simplified key sharing workflows that reduce manual steps&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Built-in safeguards to prevent accidental secret key exposure&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better integration with key servers and distribution systems&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This enhancement is particularly useful for users who need to:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Share their public keys with collaborators&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Upload keys to keyservers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Maintain separate public and private key rings&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implement key rotation policies&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The feature aligns with OpenPGP best practices as defined in
&lt;a href=&quot;https://tools.ietf.org/html/rfc4880&quot;&gt;RFC 4880&lt;/a&gt;,
ensuring compatibility while improving the user experience.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_support_for_merging_information_between_keys&quot;&gt;Support for merging information between keys&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Key merging is a critical operation in OpenPGP implementations, especially when
dealing with key management across multiple systems or synchronizing with
keyservers. RNP 0.11.0 significantly enhances its key merging capabilities,
making the process more reliable and efficient while adhering to
&lt;a href=&quot;https://tools.ietf.org/html/rfc4880&quot;&gt;RFC 4880&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The improved merge operation intelligently combines key information from multiple sources, ensuring that:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Existing valid signatures are preserved while new signatures are properly added&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;User ID certifications are maintained according to the OpenPGP trust model&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Subkey relationships and bindings remain intact during merges&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Key metadata is combined without conflicts or data loss&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Revocation certificates and updates are properly handled&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These improvements are particularly valuable for:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Organizations managing keys across multiple systems&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Users synchronizing their keyring with public keyservers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Collaborative environments where keys are shared among team members&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Automated key management systems and PKI implementations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The enhanced merging capabilities align with modern OpenPGP implementations
while providing better reliability and consistency in key management operations.
Users can expect smoother key synchronization processes and reduced manual
intervention when managing distributed keys.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_discontinuation_of_old_ssh_key_support&quot;&gt;Discontinuation of old SSH key support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Discontinued old SSH key support in RNP 0.11.0 includes the removal of legacy
methods and interfaces to ensure better security and maintainability.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_command_line_interface_improvements&quot;&gt;Command-line interface improvements&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_s2k_configuration_options&quot;&gt;S2K configuration options&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;New CLI options provide better control over key protection:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Custom S2K iteration count settings&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Time-based iteration calculation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dynamic defaults for optimal security&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Better user control over protection levels&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_looking_ahead&quot;&gt;Looking ahead&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP 0.11.0 establishes better foundations for:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Robust key protection&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Simplified key management&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Improved usability&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Modern security practices&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These improvements demonstrate RNP&amp;#8217;s commitment to providing secure and
user-friendly OpenPGP implementations.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;For detailed technical information and the complete list of changes, please
visit the &lt;a href=&quot;https://github.com/rnpgp/rnp/releases/tag/v0.11.0&quot;&gt;release page&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item><item><title>RNP 0.10.0 released</title><link>https://www.rnpgp.org/blog/2018-08-20-rnp-010-released/</link><guid isPermaLink="true">https://www.rnpgp.org/blog/2018-08-20-rnp-010-released/</guid><description>RNP has evolved into a powerful, modern OpenPGP library with significant improvements in features, performance, and compatibility. This release marks a major milestone in RNP&apos;s development, delivering a robust and versatile cryptographic solution.</description><pubDate>Mon, 20 Aug 2018 00:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_what_is_rnp&quot;&gt;What is RNP?&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Meet RNP, an &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc4880&quot;&gt;RFC 4880&lt;/a&gt;-compliant
OpenPGP library written in C++. As a modern implementation of the OpenPGP standard,
RNP provides a robust foundation for secure communications and data protection.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_origins_and_development&quot;&gt;Origins and development&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP was born at &lt;a href=&quot;https://www.ribose.com&quot;&gt;Ribose&lt;/a&gt; and is continuously maintained under
its initiative. While it originally stemmed from NetPGP, RNP has evolved significantly
through a year of active development, resulting in a complete transformation of the
codebase.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_key_improvements&quot;&gt;Key improvements&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The development team has:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Thoroughly rewritten legacy code for modern systems&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Resolved compatibility issues with GnuPG and other OpenPGP implementations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enhanced performance across all operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Added support for cutting-edge cryptographic features&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Maintained strict RFC 4880 compliance&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_licensing_benefits&quot;&gt;Licensing benefits&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP stands out with its &lt;a href=&quot;http://opensource.org/licenses/BSD-3-Clause&quot;&gt;BSD 3-clause license&lt;/a&gt;,
offering unique advantages for both academic and commercial projects:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Intentionally non-copyleft to enable broad integration options&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Compatible with &lt;a href=&quot;https://opensource.org/licenses/GPL-3.0&quot;&gt;GPL&lt;/a&gt;,
&lt;a href=&quot;https://opensource.org/licenses/MPL-2.0&quot;&gt;MPL&lt;/a&gt;,
&lt;a href=&quot;https://opensource.org/licenses/MIT&quot;&gt;MIT&lt;/a&gt;, and most other open-source licenses&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Suitable for commercial binary distributions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Flexible embedding options in academic research and proprietary software&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No reciprocal licensing requirements unlike copyleft licenses&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Whether you&amp;#8217;re developing research software, an open-source tool, or a
commercial application, RNP provides a reliable, well-maintained OpenPGP
implementation that you can freely integrate into your software without
licensing constraints.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_getting_started_with_rnp&quot;&gt;Getting started with RNP&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP is both a library for direct integration into applications and a set of
command-line tools. You can use it in several ways:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_as_a_library&quot;&gt;As a library&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;If you are developing a Ruby application, there are official bindings
(see &lt;a href=&quot;https://www.rubydoc.info/github/rnpgp/ruby-rnp&quot;&gt;ruby-rnp RubyDocs&lt;/a&gt;).&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Since RNP is written in C++, you can also integrate it directly into:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;C/C++ applications&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Objective-C code&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Python applications using &lt;code&gt;ctypes&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_as_command_line_tools&quot;&gt;As command-line tools&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The CLI tools &lt;code&gt;rnp&lt;/code&gt; and &lt;code&gt;rnpkeys&lt;/code&gt; can be installed via:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://brew.sh&quot;&gt;Homebrew&lt;/a&gt; on macOS&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;YUM on RPM-based Linux distributions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Debian packages (coming soon)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;These tools provide similar functionality to GnuPG&amp;#8217;s command-line interface
(see supported flags and use cases in the &lt;a href=&quot;https://github.com/rnpgp/rnp&quot;&gt;README&lt;/a&gt;).&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_why_rnp&quot;&gt;Why RNP?&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_true_library_architecture&quot;&gt;True library architecture&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP is designed as a proper library from the ground up, unlike GnuPG/GPGME which
historically developed as a monolithic application (see
&lt;a href=&quot;https://news.ycombinator.com/item?id=5180217&quot;&gt;GnuPG is not a library (2013)&lt;/a&gt;).&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;This architectural choice means you can easily integrate RNP into your
applications without wrestling with process management or complex IPC
mechanisms. The library provides clean APIs that allow direct integration at the
code level.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_extensive_language_support&quot;&gt;Extensive language support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;While RNP&amp;#8217;s core is written in C++, it offers seamless integration across
multiple programming languages. Official
&lt;a href=&quot;https://www.rubydoc.info/github/rnpgp/ruby-rnp&quot;&gt;Ruby bindings&lt;/a&gt; are available and
actively maintained. Python and Go bindings are under development, making RNP
accessible to a wider range of developers. Thanks to its C++ foundation, you
can also integrate RNP into any environment that supports native code calling
conventions.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_optimized_memory_management&quot;&gt;Optimized memory management&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Built with modern C++, RNP implements efficient memory management that
maintains a constant memory footprint even when processing large amounts of
data. This makes it particularly suitable for environments with memory
constraints or when handling large encrypted files. The implementation follows
best practices for secure memory handling of cryptographic material.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_comprehensive_cipher_support&quot;&gt;Comprehensive cipher support&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP stands out with its extensive cryptographic algorithm support, including
unique implementation of the SM algorithm family - making it one of
the few OpenPGP implementations suitable for deployment in mainland China. The
SM series (including SM2, SM3, and SM4) meets Chinese national standards for
cryptographic algorithms, opening opportunities for applications that need to
comply with Chinese regulatory requirements.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_active_development_and_innovation&quot;&gt;Active development and innovation&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The project maintains an active development cycle, focusing on implementing
cutting-edge cryptographic features while ensuring backwards compatibility.
Regular updates bring performance improvements, security enhancements, and
support for new standards as they emerge. The development team actively engages
with the community and responds to security considerations in the evolving
cryptographic landscape.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_algorithm_support_in_rnp&quot;&gt;Algorithm support in RNP&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP provides comprehensive support for various cryptographic algorithms, ensuring compatibility with different security requirements and standards.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_symmetric_encryption&quot;&gt;Symmetric encryption&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP implements a wide range of symmetric encryption algorithms, offering different security levels and performance characteristics:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/International_Data_Encryption_Algorithm&quot;&gt;IDEA&lt;/a&gt; - A block cipher that was once used in early versions of PGP&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Triple_DES&quot;&gt;Triple DES&lt;/a&gt; - A triple-application of the DES cipher, providing additional security over single DES&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/CAST-128&quot;&gt;CAST5&lt;/a&gt; - A block cipher offering good performance and security for legacy systems&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Blowfish_(cipher)&quot;&gt;Blowfish&lt;/a&gt; - A fast block cipher suitable for environments with limited resources&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Advanced_Encryption_Standard&quot;&gt;AES&lt;/a&gt; variants (128, 192, 256-bit) - The current industry standard for symmetric encryption&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Twofish&quot;&gt;Twofish&lt;/a&gt; - A highly secure alternative to AES, offering excellent performance&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Camellia_(cipher)&quot;&gt;Camellia&lt;/a&gt; variants (128, 192, 256-bit) - A cipher widely used in Japan and compatible with many international standards&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/SM4_(cipher)&quot;&gt;SM4&lt;/a&gt; - The Chinese national standard block cipher, essential for applications requiring Chinese regulatory compliance&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_symmetric_encryption_modes&quot;&gt;Symmetric encryption modes&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP supports multiple encryption modes that provide different security properties:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;CFB (Cipher Feedback) - A traditional mode that converts block ciphers into stream ciphers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AEAD-EAX - An authenticated encryption mode providing both confidentiality and authenticity&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AEAD-OCB - A high-performance authenticated encryption mode offering parallel processing capabilities&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_hash_functions&quot;&gt;Hash functions&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP implements various cryptographic hash functions for different use cases:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;MD5 - While cryptographically broken, maintained for legacy compatibility&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SHA1 - Maintained for backwards compatibility with older systems&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/RIPEMD&quot;&gt;RIPEMD160&lt;/a&gt; - A hash function developed in Europe as an open alternative&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SHA-2 family (SHA-224, SHA-256, SHA-384, SHA-512) - The current industry standard hash functions providing different security levels&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/SM3_(hash_function)&quot;&gt;SM3&lt;/a&gt; - The Chinese national standard hash function, required for Chinese market compliance&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect2&quot;&gt;
&lt;h3 id=&quot;_asymmetric_cryptography&quot;&gt;Asymmetric cryptography&lt;/h3&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP supports a comprehensive set of public-key algorithms:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/RSA_(cryptosystem)&quot;&gt;RSA&lt;/a&gt; - The widely-used public-key cryptosystem for encryption and digital signatures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/ElGamal_encryption&quot;&gt;ElGamal&lt;/a&gt; - An asymmetric algorithm particularly useful for encryption operations&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Digital_Signature_Algorithm&quot;&gt;DSA&lt;/a&gt; - The Digital Signature Algorithm, including support for key sizes beyond 1024 bits (DSA2)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm&quot;&gt;ECDSA&lt;/a&gt;/ECDH - Elliptic curve cryptography offering strong security with shorter key lengths&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/EdDSA&quot;&gt;EdDSA&lt;/a&gt; - Modern elliptic curve signatures providing high security and performance&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/html/draft-openpgp-oscca-02&quot;&gt;SM2&lt;/a&gt; - The Chinese national standard for public-key cryptography, essential for Chinese market compliance&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_summary&quot;&gt;Summary&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;RNP stands out as a unique solution in the OpenPGP ecosystem by combining:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;True library architecture enabling direct integration without IPC overhead&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;High-performance implementation in modern C++&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;BSD 3-clause license allowing both open-source and commercial use&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Comprehensive algorithm support including Chinese SM standards&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Active development with regular updates and security improvements&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Whether you&amp;#8217;re building an open-source tool or a commercial application, RNP
offers a reliable, high-performance OpenPGP implementation that seamlessly
integrates into your software stack.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content:encoded></item></channel></rss>