Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <aa5751dd-a982-477c-82ff-dafcb91ca0db@zone.ee>
Date: Tue, 6 Jan 2026 11:43:36 +0200
From: Taavi Eomäe <taavi@...e.ee>
To: oss-security@...ts.openwall.com
Cc: Demi Marie Obenour <demiobenour@...il.com>
Subject: Re: Re: Best practices for signature verifcation

Hi,

On 03.01.2026 22:41, Demi Marie Obenour wrote:
> Are you concerned about the attack surface of these libraries?
> OpenSSL has a substantial history of vulnerabilities.  One of the
> goals of OpenSSH signatures is to be easy to correctly implement,
> even in languages like C.
>
> I'd be interested in what ASN.1 compilers and libraries you recommend,
> especially ones that support BER instead of only DER.  I actually tried
> writing one myself and it's not easy, though definitely not impossible.
On 05.01.2026 21:05, Demi Marie Obenour wrote:
> Microsoft has a spec, and it does use a fairly reasonable subset
> of CMS, but it is still quite complex.  Much of the complexity is
> likely in the X.509 certificate handling, though.  This assumes one
> uses a special-purpose CMS implementation and not a general-purpose,
> overcomplicated one.

I have a working implementation for S/MIME with BER support* written in 
Rust. Using RustTLS, the crates behind pyca/cryptography for X.509 
certificate handling and indygreg/cryptography-rs for the CMS. Took me a 
few days to write a PoC, so it's very doable. Especially for a vendor 
with an actual need (for a memory-safe implementation).

In my experience PGP/GPG is much worse to implement and much less 
well-defined than S/MIME. That is just spec-wise, even if you manage to 
write a memory-safe implementation.


I plan on upstreaming S/MIME support to pyca/cryptography for it to be 
able to fully check the certificates conform to the CABf S/MIME 
baseline. The maintainers of the project are also thinking about making 
the crates more generally usable.

There's also an Authenticode/PE implementation written in Rust on 
GitHub, haven't taken a close look though.


* - Because CMS currently requires it. But it's a remnant that could be 
removed, there's even a lazy justification for it in the RFC.


Powered by blists - more mailing lists

Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.