This is a major rewrite of the raaz library with significant change in the
API and internals.
* Platform requirements
- Cabal >= 3.0.0.0
- GHC >= 8.4
* User facing interface
- Top level `Raaz` module centred around cryptographic operation
instead of specific primitives. This release supports the
following operations
- message digest provided via Blake2b
- message authentication provided via Blake2b
- authenticated encryption via XChaCha20Poly1305
- Explicit primitive based interface meant only for interworking
with other library.
- Dropped support for SHA1, SHA224, SHA384, HMAC, and AES-CBC,
mainly to concentrate efforts and reach stable release soon.
- Pluggable interface for primitive implementations and entropy
source (recommended only for advanced users)
* Internal changes.
- Use libverse for the low level FFI implementations. From now on
newer primitives will be coded up in verse instead of hand written
C/assembly. (See https://github.com/raaz-crypto/libverse/>)
- Backpack based modules and signatures instead of classes for
primitive implementation. Simplifies the library and allows easy
plugging in of custom implementations.
* CSPRG and Entropy
- Entropy on linux: uses getrandom by default with flag to fall back
to `/dev/urandom`.
- The raaz command now exposes the sub-command entropy (just like
rand) mainly for system entropy quality checking.
- A host-endian variant of chacha20 keystream for csprg.
- Backpack based pluggable entropy source (recommended only for
advanced users).
* Type level improvements.
- Using Data.Proxy.Proxy to get rid of some uses of undefined.
- Primitives block sizes to type level.
- Aligned pointer with alignment at type level.
* Other changes.
- Cross testing implementations with the monocypher library
- Licensing changed to Apache-2.0 OR BSD-3-Clause dual licensing.
Assets
2
-
2021-05-20T10:55:15Z
-
2021-05-20T10:55:15Z
-