Rustgo: Calling Rust from Go with near-zero overhead
Go has good support for calling into assembly, and a lot of the fast cryptographic code in the stdlib is carefully optimized assembly, bringing speedups of over 20 times.
We now know how the seeds of the NIST elliptic curves were generated: they’re not the hash of some saucy sentence, but the output of drand48() seeded with the time, which was indeed in 1997–98.
Visit blog.filippo.io → RSS feedOn Hacker News Nov 2015 – Dec 2021
Security & Privacy 13Software Engineering 4Web & Frontend 2Tools & Productivity 2Systems & Performance 2Networking & Internet 2
Go has good support for calling into assembly, and a lot of the fast cryptographic code in the stdlib is carefully optimized assembly, bringing speedups of over 20 times.
Cryptography code could be understandable if only we commented it. This Poly1305 implementation is an attempt to prove it. It should be readable with just an idea of what MACs are for, a beginner level of Go, and high school math.
Fully reproducible builds are important because they bridge the gap between auditable open source and convenient binary artifacts. Technologies like TUF and Binary Transparency provide accountability for what binaries are shipped to users, but that’s of limited utility if there is no way (short of reverse engineering)…
Ok, I lied, there’s no weird trick. However, you can easily reduce a Go binary size by more than 6 times with some flags and common tools.