bcgit / pc-dart

Pointy Castle - Dart Derived Bouncy Castle APIs
MIT License
237 stars 122 forks source link

Implement Notable Standards #80

Open AKushWarrior opened 3 years ago

AKushWarrior commented 3 years ago

Seeing as this is a general purpose cryptography library that could feasibly be used on desktop, mobile, and web architectures, we should make an effort to implement widely-used standards from various sources. Some such sources and standards (all currently unimplemented in pointycastle) are listed below. Note that I've tried to whittle down the standards to those with considerable common usage; for example, some NIST standards are outdated and have little market share.

NIST

MACs: KMAC Deterministic Random Bit Generators: Hash_DRBG and HMAC_DRBG Authenticated Block Cipher Modes: CCM Authenticated Block Cipher Modes (Proposals): EAX, GCM-SIV, OCB

Password Hashing Competition (2015, in connection with NIST)

Key Derivation Function: Argon2

eSTREAM Contest (2012, by ECRYPT, the EU's cryptography board)

Stream Ciphers: HC-128, Rabbit

This issue will be updated with more standards as I come across them.

EDIT: I've hyperlinked implementations from BouncyCastle where applicable. EDIT 2: I'm going to strike through algorithms as I implement them (and their tests pass). CCM has been fully implemented.