SecureD - A simple cryptography library for D

Adam Wilson via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Sat Nov 12 17:15:54 PST 2016


Hello DLang,

I wanted to announce that I have completed the bulk of the work on my 
Cryptography library for D, SecureD. I was inspired to do this project 
by Stan Drapkin and his Inferno.NET project, however, the two projects 
NOT compatible.

GitHub: https://github.com/LightBender/SecureD
DUB: https://code.dlang.org/packages/secured

Design Philosophy

Developer-Friendly Misuse-Resistant API:
One of the largest problems with most cryptography libraries available 
today is that their API's practically encourage broken implementations.

Safe by design:
Use only safe algorithms with safe modes. Make conservative choices in 
the implementation

Do no re-implement cryptography algorithms:
Use industry standard libraries instead. SecureD is based on OpenSSL.

Minimal Code:
Keep the code to a minimum. This ensures high-maintainability and eases 
understanding of the code.

Unittesting:
All API's are unittested using D's built in unittests. Any developer can 
verify the implementation with a simple 'dub test' command. This ensures 
that the library will perform as advertised.


Algorithms

HASH:				SHA2-384
HMAC:				SHA2-384
KDF:				PBKDF2 (HMAC/SHA2-384)
AEAD Symmetric: 		AES-256-CTR-HMAC384
Asymmetric:			ECC-P384 (Key Derivation + Sign/Verify with SHA2-384)
RNG: 				System RNG on POSIX and Windows
OTHER: 				Constant Time Equality

Why these Algorithms?

SHA2-384 is as fast as SHA2-512 but it's truncated design serves as an 
effective defense against length extensions attacks.

AES-256-CTR is an alternative for GCM that offers greater security for 
cold-stored data when paired with a strong HMAC. GCM use a 96-bit 
authentication tag where the HMAC tag is a full 384 bits.

Let me know what you think!

Adam Wilson
IRC: LightBender
//quiet.dlang.dev


More information about the Digitalmars-d-announce mailing list