How I implemented my own crypto
I would like to clarify:<p>The thing that I said was &quot;table stakes&quot; for implementing cryptography was <i>passing the algorithm test vectors</i>, which this author&#x27;s previous post claimed as a security feature.<p>If you&#x27;re unfamiliar with the concept, a test vector is a series of strings and intermediate values used to ensure that your (say) OCB3 is the same as everyone else&#x27;s OCB3.<p>Had he asked, I&#x27;d further claim that not having dumb C bugs is also table stakes for cryptography, since serious crypto vulnerabilities happen at a higher level of abstraction. The author grazes past (somewhat disconcertingly) one such class of bugs when he discusses carry propagation and limb scheduling in the context of Poly1305. Improper carry propagation is an example of the kind of security vulnerability for which there are no test vectors and no memory safety validation tools.<p>You just have to know what a carry propagation bug is, where to look for them (not Poly1305), and what the impact of one is.<p>Hopefully, the author of this library does.