As a millennial exposed to information technology, I always try to learn the latest in the industry and academics, and improve my skills through practice. And my biggest programming practice project ever done so far, is MySuiteA.
The MySuiteA project, started out as a toy project that implemented former NSA Suite B algorithms AES and SHA-2, with public-key algorithms replaced with the post-quantum NewHope and BLISS. Over time, I extended the scope of the project, and practiced implementing more algorithms.
Today, with the commit titled Implemented and Tested ECDH (KEM).
a milestone had been reached where the suite now has a complete set of features such as
- Hashing,
- AEAD Encryption,
- Standalone CMAC and HMAC,
- Digital Signature Schemes and Key Encapsulation Mechanism based on PKCS#1 RSA Standard and SEC#1 Elliptic Curve Standard.
As well as XOF, PRNG (NIST-SP-90 DRBGs), blockciphers, permutations, etc.
Throughout the course of me implementing these algorithm, I've solicited many advice from the Cryptography StackExchange community, ranging from design choice and security advices. Here's a select few:
- Choosing between RLWE-KEX methods.
- Problem with Hash-DRBG's seedlen values (and others)
- How to handle modular arithmetic with regard to two's-complement negative numbers?
- What motivated CCM's monstrous design?
- How to determine whether a point is at infinity in homogenous coordinates?
- Is there any "exception-free" coordinates system for Weierstrass curves?
- Can I get away with generating 512-bit k (and d) for ECDSA based on P-521?
I'm grateful to the bottom of my heart to every community member that helped me, either through answering, commenting, or even just voting.
This does not end the development process of MySuiteA. There are still many algorithms of interest; and I will continue my practice and learning, and I will share my knowledge with everyone eager to learn, about cryptography or just anything related to IT that I'm capable of providing insight.
Thank You.
malloc
cannot be used in the suite. $\endgroup$