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:

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.

  • $\begingroup$ Nice, Just wondering, why didn't you use NTL or GMP? $\endgroup$
    – kelalaka
    Commented Feb 27, 2022 at 22:11
  • $\begingroup$ Partly because of licensing (I'm releasing to public domain), partly because of code segment memory footprint, partly because of side-channel (I'm not sure if there is any). But mostly I havent heard of (or manage to remember) them, and I wanted my code to be self-sufficient. Also, I'd like to avoid using non-portable SIMD extensions; AESNI was a major exception, because I do want to utilize them whenever CPU has them. $\endgroup$
    – DannyNiu
    Commented Feb 28, 2022 at 0:21
  • $\begingroup$ Also, I have the goal to not use any hosted library calls, and use only free-standing headers in cryptography (but not testing) codes. This means any libraries that make function calls like malloc cannot be used in the suite. $\endgroup$
    – DannyNiu
    Commented Feb 28, 2022 at 0:27
  • $\begingroup$ Well, GMP has a long time of development and they have some side-channel secure implementation 8.1. NTL is an extension to GMP. Also, see Thomas' T1 for embedded platforms, though. $\endgroup$
    – kelalaka
    Commented Feb 28, 2022 at 0:31


You must log in to answer this question.

Browse other questions tagged .