etcimon / botan

Block & stream ciphers, public key crypto, hashing, KDF, MAC, PKCS, TLS, ASN.1, BER/DER, etc.
Other
86 stars 22 forks source link

Build Status CI

Botan Crypto Library

Botan is a very complete crypto powerhouse packaged in a D library.

It is a translation of the C++ library Botan, although the code is now in D and uses the memutils library as a replacement for the C++ STL.

A TLS client/server with ALPN, SNI and HTTP/2 has been added to the http2-botan vibe.d port.

Getting Started

Botan has been tested on Windows x86, Windows x64, OSX x64, Linux x86, Linux x64 with DMD v2.099.1+ and LDC v1.31.0+

Learning

For further information, start with the GitHub Wiki for information on how to use this library.

You can read the API documentation in the GitHub Pages

Supported Algorithms

Botan supports a range of cryptographic algorithms and protocols, including:

TLS/Public Key Infrastructure

Public Key Cryptography

Block ciphers

Stream Ciphers

Hash functions

Authentication Codes

Other Useful Things

Recommended Algorithms

This section is by no means the last word on selecting which algorithms to use. However, botan includes a sometimes bewildering array of possible algorithms, and unless you're familiar with the latest developments in the field, it can be hard to know what is secure and what is not. The following attributes of the algorithms were evaluated when making this list: security, support by other implementations, patent/IP status, and efficiency (in roughly that order).

If your data is in motion, strongly consider using TLS v1.2 as a pre built, already standard and well studied protocol.

Otherwise, if you simply must do something custom, use:

Issues

You can submit any issues in the github issue tracker. Any issue related to algorithms in the D library must also be submitted to the corresponding Botan C++ issue tracker.

TODO

License

Botan is released under the Simplified BSD License (see LICENSE.md for the specifics).