Crypto Devel
Development progress of crypto package.
Repo: https://github.com/pszturmaj/phobos/tree/master/std/crypto
Proposed package hierarchy (may change)
- std
- crypto
- cipher (block and stream ciphers)
- aes.d
- blowfish.d
- rc4.d
- ...
- hash (hash functions)
- base.d (base classes and API) [done]
- sha.d (all sha functions) [done]
- md5.d [done]
- tiger.d [done]
- ...
- kdf (key derivation functions)
- hkdf.d (hmac based kdf)
- pbkdf.d (password based kdf)
- mac (message authentication codes)
- hmac.d [currently deferred]
- cmac.d
- cbcmac.d
- umac.d
- ...
- mode (cipher modes of operation)
- cbc.d
- ctr.d
- gcm.d
- ...
- padding
- (various padding schemes for block ciphers)
- pkc (public key cryptography)
- dh.d (diffie-hellman key exchange)
- dsa.d (Digital Signature Algorithm)
- ecdh.d (Elliptic Curve DH)
- ecdsa.d (Elliptic Curve DSA)
- rsa.d
- x509.d (x509 certificates and crls) [in progress]
- ...
In progress
- X.509 Certificates
- ASN.1 parser for DER encoding [in progress]
- ASN.1 writer for DER encoding
- X.509 API
To do
- refactor hash state saving (ForwardOutputRange??)
Implementation switch
Crypto package will include wrappers for external implementations, such as Windows CryptoAPI? and OpenSSL? library.For example SHA1 may support additional implementations (wrapper classes):
User may choose any available implementation.
Wishlist
- Support for bcrypt password hashes, as a safe way to store passwords. Public domain C implementation: https://github.com/rg3/bcrypt http://www.openwall.com/crypt/