Skip to content

v0.3.0

@piyush-kurur piyush-kurur tagged this 20 May 10:55
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