LWN: Comments on "OpenPGP in Rust: the Sequoia project" https://lwn.net/Articles/830902/ This is a special feed containing comments posted to the individual LWN article titled "OpenPGP in Rust: the Sequoia project". en-us Wed, 01 Oct 2025 17:46:24 +0000 Wed, 01 Oct 2025 17:46:24 +0000 https://www.rssboard.org/rss-specification lwn@lwn.net OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/833482/ https://lwn.net/Articles/833482/ cpitrat <div class="FormattedComment"> &quot;it does avoid the outdated parts of the specification such as the use of MD5 hashes.&quot;<br> <p> Does that mean I may not be able to decipher something I stored on an cd-rom 15 years ago and didn&#x27;t re-encrypt since? It sounds like being retro-compatible is important at least for decoding.<br> </div> Mon, 05 Oct 2020 06:52:50 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/832713/ https://lwn.net/Articles/832713/ oldtomas <div class="FormattedComment"> Now this is interesting.<br> <p> I assume it was private communicaton. If not, I&#x27;d appreciate a link to that, to learn motivation and background.<br> </div> Sun, 27 Sep 2020 17:14:58 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/832337/ https://lwn.net/Articles/832337/ donbarry <div class="FormattedComment"> It all depends on whether you think the point is to improve software freedom or to give firms ammunition to create fear, uncertainty, and doubt. I&#x27;m firmly in the camp of the GPLv3. It addresses problems which arose when billions of dollars of revenues were tied to new ecosystems and methods were developed by their corporate fiefs outside the spirit of the GPLv2 to control those ecosystems, and their fury that they would lose those unprincipled mechanisms back to users.<br> <p> </div> Thu, 24 Sep 2020 03:21:04 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/832330/ https://lwn.net/Articles/832330/ Wol <div class="FormattedComment"> And if your customer is on a metered connection they won&#x27;t thank you ...<br> <p> Cheers,<br> Wol<br> </div> Wed, 23 Sep 2020 23:54:20 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/832328/ https://lwn.net/Articles/832328/ flussence <div class="FormattedComment"> <font class="QuotedText">&gt;and some other things which I’ve forgotten</font><br> <p> …like remediating the sudden death aspect of GPLv2. The old version certainly is better if you&#x27;re Patrick McHardy.<br> </div> Wed, 23 Sep 2020 23:04:44 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/832124/ https://lwn.net/Articles/832124/ jwilk As far as I can see, libfdisk does support EFI partition labels: <pre> extern int fdisk_partition_set_name(struct fdisk_partition *pa, const char *name); extern const char *fdisk_partition_get_name(struct fdisk_partition *pa); </pre> Tue, 22 Sep 2020 06:30:41 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831774/ https://lwn.net/Articles/831774/ Comet <div class="FormattedComment"> Isn&#x27;t that the use-case for the gpgv(1) tool, part of the GnuPG suite?<br> </div> Thu, 17 Sep 2020 20:05:07 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831724/ https://lwn.net/Articles/831724/ alison <div class="FormattedComment"> Neither libfdisk nor libparted fully support EFI. For example, no partition labels.<br> </div> Thu, 17 Sep 2020 14:36:57 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831695/ https://lwn.net/Articles/831695/ mezcalero <div class="FormattedComment"> Use libfdisk from util-linux for the GPT stuff.<br> </div> Thu, 17 Sep 2020 07:48:59 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831565/ https://lwn.net/Articles/831565/ martin.langhoff <div class="FormattedComment"> In GPLv2 the social contract is - share and share _code_ alike. The hardware running software was nowhere in the picture.<br> <p> Good? Bad? That was the social contract under GPLv2. <br> <p> GPLv3 introduces rules about the User Product. We&#x27;re trying to leverage _software_ to put rules on _hardware_. That is a new frontier, and a new social contract. <br> <p> No significant/popular low-level software projects, where this matters, have adopted GPLv3. So on that front, it did not find traction.<br> <p> And here&#x27;s the funny thing -- I personally dislike Tivoization. If the current GPLv3 was called T(ivo)GPL, similar to what happened with AGPL, and we had a GPLv2.1, life would be much better.<br> </div> Tue, 15 Sep 2020 14:23:21 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831555/ https://lwn.net/Articles/831555/ cyphar <p><font class="QuotedText">&gt; No, that does not hold. You get the tools so can build install the executable... somewhere.</font></p> <p>Yes, GPLv2 and GPLv3 are obviously <i>legally speaking</i> quite different on this point.</p> <p>My point is that since the discussion was about "social contracts", it should be noted that the GPLv2 does have a spiritually similar requirement. If you don't see the similarity <i>in spirit</i> between "<font class="QuotedText">scripts that control the compilation and installation of the executable</font>" and "<font class="QuotedText">any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source</font>", I don't really know what else to say. My point was simply that the new requirements didn't come out of <i>nowhere</i>.</p> Tue, 15 Sep 2020 05:06:08 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831548/ https://lwn.net/Articles/831548/ martin.langhoff <div class="FormattedComment"> <font class="QuotedText">&gt; while folks like to wax lyrical about GPLv3&#x27;s tivoisation clause, many seem to forget </font><br> <font class="QuotedText">&gt; that GPLv2 actually had a similar (in spirit) requirement</font><br> <p> No, that does not hold. You get the tools so can build install the executable... somewhere.<br> <p> The _gist_ of GPLv2 is share and share-alike. It&#x27;s about the source code. <br> <p> GPLv3 improved on v2 on many aspects, but also brought it a new front: control of the hardware. Applied to software not tightly tied to hw -- a web app -- it doesn&#x27;t matter. Applied to kernels, device drivers, etc it&#x27;s a massive problem. As a result, folks who work closely to hardware don&#x27;t want to use it.<br> <p> To be clear. I don&#x27;t intend to re-hash the GPLv3 controversies here. Just to point out -- GPLv3 is different, in a meaningful way. Pick GPLv2 or GPLv3, but know they are different beasts.<br> </div> Mon, 14 Sep 2020 21:09:56 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831434/ https://lwn.net/Articles/831434/ abo <div class="FormattedComment"> Even something as simple as verifying that file A is indeed signed by the key in file B, an operation that should be quite common, requires a writable home directory and multiple fragile steps.<br> <p> </div> Mon, 14 Sep 2020 10:21:50 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831391/ https://lwn.net/Articles/831391/ cyphar <p>I do want to point out (since I assume your reference to "change in the social contract" is in relation to the tivoisation clause), that while folks like to wax lyrical about GPLv3's tivoisation clause, many seem to forget that GPLv2 actually had a similar (in spirit) requirement:</p> <p><font class="QuotedText">&gt; For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, <i>plus the scripts used to control compilation and <b>installation</b> of the executable.</i> <i>[emphasis added]</i></font></p> <p>I don't think it's a stretch to say that if firmware keys were widely deployed in 1991 that GPLv2 would've had a more substantial clause dedicated to making sure that the "scripts used to control compilation and installation of the executable" would've included any firmware signing keys necessary to make it possible to actually use the software you've modified. And yes, the modern interpretation of "scripts used to control compilation and installation of the executable" does include instructions on how to install the software on to whatever hardware you've been sold.</p> <p>My point is, maybe you disagree with the tivoisation clause -- but GPLv2 clearly had a similar spirit in this area (it's just that the FSF didn't predict that firmware signing was going to be a widespread method for stopping people from being able to run modified software). So it's less a "change in the social contract" and more "updating the legal wording to match the original intent in a world where firmware signing keys exist"</p> Sun, 13 Sep 2020 23:24:22 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831415/ https://lwn.net/Articles/831415/ vadim <div class="FormattedComment"> Very helpful, thanks a lot!<br> <p> I&#x27;m a complete newbie in Rust, but been thinking of trying to make something in it for some time.<br> </div> Sun, 13 Sep 2020 17:16:24 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831403/ https://lwn.net/Articles/831403/ kushal <div class="FormattedComment"> I am writing a Python module on top of Sequoia. <a href="https://github.com/kushaldas/johnnycanencrypt">https://github.com/kushaldas/johnnycanencrypt</a><br> </div> Sun, 13 Sep 2020 14:42:25 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831398/ https://lwn.net/Articles/831398/ link2xt <div class="FormattedComment"> If you need a library instead of a command line tool, there is rPGP: <a rel="nofollow" href="https://github.com/rpgp/rpgp">https://github.com/rpgp/rpgp</a><br> <p> It is licensed under MIT/Apache 2.0, like most of the code in Rust.<br> </div> Sun, 13 Sep 2020 13:56:00 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831399/ https://lwn.net/Articles/831399/ ballombe <div class="FormattedComment"> Do not bother. Just include a copy of the source in the binary package!<br> </div> Sun, 13 Sep 2020 12:53:11 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831390/ https://lwn.net/Articles/831390/ cyphar <p>If you want compatibility with Apache-2.0 (which GPLv2 doesn't have), you need to have patent grants.</p> Sun, 13 Sep 2020 08:15:31 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831388/ https://lwn.net/Articles/831388/ neal <a href="https://gitlab.com/sequoia-pgp/sequoia/-/blob/master/openpgp/examples/web-of-trust.rs">Here</a> is a small program that iterates over each certificate ("OpenPGP Key") in an SKS dump, and prints a bit of information about the certificate. You can look at the <a href="https://gitlab.com/sequoia-pgp/sequoia/-/blob/master/tool/src/commands/dump.rs">source to "sq dump"</a> to see how to extract other information. Sun, 13 Sep 2020 07:34:55 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831385/ https://lwn.net/Articles/831385/ josh <div class="FormattedComment"> For disk partitioning, you could use libparted. The Debian installer uses that for its partitioner.<br> </div> Sun, 13 Sep 2020 05:35:10 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831382/ https://lwn.net/Articles/831382/ alison <div class="FormattedComment"> <font class="QuotedText">&gt;GPGme tries to fill the role of a library for PGP, but since it&#x27;s just a wrapper around gpg, you need to do things like have a gnupg homedir even if you just want to examine a keyring. </font><br> <p> GnuPG is far from being the only common Linux tool which needs a library in addition to a CLI tool. Two that bit me personally have been mtd-utils and sgdisk. I needed libraries for my own code, so I basically creating what was, in effect, a libmtd and libgpt in a project&#x27;s build system. I was hoping to have employer support to do a cleaner job of creating libraries and posting patches upstream, but they never agreed. As a result, I finally had to rip all of the code out in order to avoid license violations.<br> <p> It&#x27;s great the Sequoia is taking a more sensible approach: make a great library with good test coverage, and then a reference implementation binary that other can try out or even use.<br> </div> Sun, 13 Sep 2020 04:43:26 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831374/ https://lwn.net/Articles/831374/ vadim <div class="FormattedComment"> Yeah, back when I was messing with that, I was looking for libraries. Found GPGme, thought &quot;oh yeah, this is what I need. Wait... WTF?&quot;<br> <p> I think PGP was greatly handicapped by the backwardness of GPG&#x27;s design. Had it been better it&#x27;d be far more pleasant to integrate into other software, would be better supported, more performant, and there&#x27;d be a much larger ecosystem of tools built around it. Pity, really.<br> <p> The bad performance is no joke, by the way. GPG is noticeably slow even on modern hardware. This could probably be avoided with a library that caches data internally, but when you run gpg once per message it requires paying a quite steep startup cost that&#x27;s very noticeable.<br> <p> Still, I think this is a fixable problem, because nothing really superseded it as far as I know, so there&#x27;s still hope that Sequoia and other projects fix this situation.<br> <p> </div> Sat, 12 Sep 2020 22:19:35 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831363/ https://lwn.net/Articles/831363/ dbnichol <div class="FormattedComment"> Completely agree. GPGme tries to fill the role of a library for PGP, but since it&#x27;s just a wrapper around gpg, you need to do things like have a gnupg homedir even if you just want to examine a keyring. The architecture of the gnupg project as a whole is backwards. GPGme literally invokes gpg and scrapes the output instead of gpg being a frontend to a PGP library. Besides being a crazy way to implement an API, it means that any feature in GPGme has to first be represented as some gpg CLI option.<br> <p> I saw sequoia a while ago and am excited to see where it goes.<br> </div> Sat, 12 Sep 2020 20:17:12 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831362/ https://lwn.net/Articles/831362/ martin.langhoff <div class="FormattedComment"> I&#x27;m with Wol. <br> <p> GPLv3 is _different_. <br> <p> Some bug fixes that would be nice to fold into a &quot;GPLv2.1&quot;. <br> <p> And some major changes of social contract, which would be better suited in a different license.<br> </div> Sat, 12 Sep 2020 19:47:38 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831361/ https://lwn.net/Articles/831361/ Wol <div class="FormattedComment"> But it means that OpenPGP becomes a &quot;code donor&quot; project only - they cannot re-use code from other projects because they need to reach out to the copyright holder - the code hasn&#x27;t been submitted to the project.<br> <p> That&#x27;s the problem with any extension to the GPL - you can&#x27;t take advantage of other GPL code to include in your own project.<br> <p> Cheers,<br> Wol<br> </div> Sat, 12 Sep 2020 18:57:40 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831360/ https://lwn.net/Articles/831360/ Wol <div class="FormattedComment"> <font class="QuotedText">&gt; I actually won&#x27;t mind a lawyer-proofed GPL exception to allow distribution through app stores, but that won&#x27;t allow abuse (&quot;my application is a store, so I can distribute GPL-ed app through it!&quot;).</font><br> <p> Just say &quot;it is acceptable to distribute binaries on a binary-only site, provided the download points the user to the corresponding source on a 3rd-party source distribution site (3rd party as in &quot;not yours, not the app-store&quot;). Note that the GPLv3 permits separate distribution of binary and source without triggering the &quot;binary-only means you must offer source for 3 years&quot; clause. (That was a bug in v2, which at least some people would love to have seen make its way into v3). It&#x27;s a bug because it means the actions of the recipient change the liability of the provider.<br> <p> Cheers,<br> Wol<br> </div> Sat, 12 Sep 2020 18:51:04 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831353/ https://lwn.net/Articles/831353/ vadim <div class="FormattedComment"> Very interesting.<br> <p> This sounds exactly like the sort of thing I needed. Some time back I tried doing a PGP related project, and found GPG&#x27;s structure very inconvenient. One of the things I want is to go through the archive of a keyserver and parse the data. The need to invoke GPG, feed it a key, and parse the result was slow and painful. What I really want is a library where I can take an ASCII encoded key, feed it to some function and get all the data back -- who it belongs to, who signed it, when it expires, etc, while ensuring the key is fully valid and all the signatures are correct and so on. All of that should ideally happen without needing to launch a million processes and needing to work around GPG&#x27;s desire for things like a home directory and a keyring.<br> <p> If this project is usable for such a task, I&#x27;m very interested, and Rust sounds like a bonus because there&#x27;s obvious security concerns in parsing a huge key archive that may well have been attacked in many ways over the years.<br> <p> <p> </div> Sat, 12 Sep 2020 16:55:39 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831349/ https://lwn.net/Articles/831349/ neal <div class="FormattedComment"> The cited text is a bit misleading. It&#x27;s true that private key operations will normally be executed in a separate process. And, you&#x27;re right, that is exactly what gpg-agent is used for. What sq and the sequoia&#x27;s high-level API will encourage, and what is different from GnuPG, is how keys are addressed.<br> <p> Sequoia&#x27;s key store firstly uses petnames to address keys. You can think of a petname like an entry in a personal address book: it&#x27;s controlled by you, not the person who created the key. In this way, address book entries are directly associated with keys. Currently, this is done indirectly: you select a recipient from your address book, your MUA pulls out some information and queries GnuPG&#x27;s key store for a key with a matching identifier, and uses the returned key. That works okay, as long as you carefully curate your keyring, and don&#x27;t have multiple keys with the same identifier. But, once that happens, the logic becomes rather unpredictable for most users.<br> <p> </div> Sat, 12 Sep 2020 16:25:48 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831348/ https://lwn.net/Articles/831348/ rvolgers <div class="FormattedComment"> That&#x27;s not a problem in this case since contributors are required to assign copyright to the foundation, who can relicense with exceptions as needed, if I understand correctly.<br> <p> </div> Sat, 12 Sep 2020 15:40:19 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831346/ https://lwn.net/Articles/831346/ Wol <div class="FormattedComment"> I wouldn&#x27;t call providing patent grants an improvement ...<br> <p> Yes v3 has a bunch of bug-fixes for v2, and if they&#x27;d limited to that it would be a real improvement.<br> <p> (And I&#x27;ve had people say that - for things that the FSF said were bug fixes - they thought v2 was a feature and didn&#x27;t WANT the fix!)<br> <p> So I think a LOT people wouldn&#x27;t say v3 was an improvement.<br> <p> Cheers,<br> Wol<br> </div> Sat, 12 Sep 2020 15:04:27 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831341/ https://lwn.net/Articles/831341/ Deleted user 129183 <div class="FormattedComment"> <font class="QuotedText">&gt; GPLv3 is NOT better...</font><br> <p> Please stop spreading FUD. GPL 3 improves upon GPL 2 by fixing the tivoisation loophole, providing patent grants, increasing compatibility with licences like Apache 2 and some other things which I’ve forgotten.<br> </div> Sat, 12 Sep 2020 13:29:47 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831337/ https://lwn.net/Articles/831337/ grawity <div class="FormattedComment"> <font class="QuotedText">&gt; Key storage is one of the areas where Sequoia&#x27;s plans are unique compared to other OpenPGP implementations. For added security, the project plans to use process separation between the services handling public and private keys; Cap&#x27;n Proto will be used for interprocess communication.</font><br> <p> Is that significantly different from GnuPG 2.x using gpg-agent for all private key operations?<br> </div> Sat, 12 Sep 2020 10:04:50 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831320/ https://lwn.net/Articles/831320/ neal <div class="FormattedComment"> We actually originally picked GPLv3+, but someone asked us to change to GPLv2+ and the request was reasonable, so we did.<br> </div> Fri, 11 Sep 2020 21:33:51 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831319/ https://lwn.net/Articles/831319/ Cyberax <div class="FormattedComment"> <font class="QuotedText">&gt; So, the real question is, why did they pick GPLv2 when GPLv3 is better? They want their program embedded in tivoized devices without any legal recourse? They should upgrade their license.</font><br> GPLv3 is NOT better...<br> </div> Fri, 11 Sep 2020 21:31:09 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831314/ https://lwn.net/Articles/831314/ IanKelling <div class="FormattedComment"> *not be in conflict with the GPL<br> </div> Fri, 11 Sep 2020 20:44:35 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831313/ https://lwn.net/Articles/831313/ IanKelling <div class="FormattedComment"> Why not change the iOS TOS to be conflict with the GPL? <br> <p> I think there are a few GPL apps on iOS (GNU Jami is the one I know of) that have been there for years, so Apple just doesn&#x27;t seem to care or enforce their TOS.<br> <p> So, the real question is, why did they pick GPLv2 when GPLv3 is better? They want their program embedded in tivoized devices without any legal recourse? They should upgrade their license.<br> <p> </div> Fri, 11 Sep 2020 20:43:29 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831307/ https://lwn.net/Articles/831307/ Cyberax <div class="FormattedComment"> The problem is that the GPL+disclaimer is basically a different license, and every contributor must agree to it.<br> <p> This is not really sustainable. For example, if Apple is forced to split the Apple Store into a different company and rename it to &quot;Pear Store&quot;, the disclaimer will become void. They&#x27;ll have to get agreement for a new exception from every copyright holder who has ever contributed to the core code.<br> <p> I actually won&#x27;t mind a lawyer-proofed GPL exception to allow distribution through app stores, but that won&#x27;t allow abuse (&quot;my application is a store, so I can distribute GPL-ed app through it!&quot;).<br> </div> Fri, 11 Sep 2020 19:54:09 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831306/ https://lwn.net/Articles/831306/ geofft The copyright holders can disclaim any restrictions of the GPL that conflict with the App Store terms. For instance, <a href="https://github.com/blinksh/blink">Blink Shell</a> is GPL'd and has been available on iOS for a while, relying on a <a href="https://github.com/mobile-shell/mosh/blob/master/COPYING.iOS">waiver from the mosh developers</a> (since mosh is also GPL'd). Fri, 11 Sep 2020 19:48:18 +0000 OpenPGP in Rust: the Sequoia project https://lwn.net/Articles/831303/ https://lwn.net/Articles/831303/ jazzy <div class="FormattedComment"> Yes, and it will still be invoked as a command line tool by non GPLv2 projects to avoid the copyleft. Why not adopt MPL 2.0 which is copyleft per file and can be used on iOS like VLC.<br> <p> </div> Fri, 11 Sep 2020 19:32:54 +0000