Fast and type safe cryptography.
Raaz is a cryptographic library which provides the state of the art cryptographic primitives via a high-level, type safe interface. The default interface provided to the user is through the top level module Raaz
. Rather than bothering the user with low-level details like the selection of primitives or entropy sources, this top level module only talks about the desired cryptographic operation (whether it is message digest or message encryption etc). A standalone application that needs cryptography should stick to using this top level interface.
Sometimes the selection of primitives is not in our hands --- we may need to interface with other programs written in other languages or using other libraries. For such situation, raaz exposes a primitive specific interface. As an example raaz
exposes the Raaz.Digest.Sha256
module that gives the same interface as that of Raaz.Digest
but uses sha256 as the underlying cryptographic hash.
Raaz: A secure cryptographic library
Raaz is a cryptographic library in Haskell that provide a high level and safe access to a lot of cryptographic operations. The library can be used for standalone cryptographic applications as well as for implementing other network protocols. Some of the features that are unique to raaz are the following
- Pervasive use of types for better safety.
- Default choice of primitives and implementations are safe.
- Mechanism to have multiple implementations for any given cryptographic primitives. An advanced user who has an in-depth knowledge of the platform should be able to plugin the desired implementation.
- Strong emphasis on API design with through documentation.
Building
The recommended way to install raaz is through cabal-install
version 3.0 or above. We also need a version of GHC that supports backpack (for details on which version of GHC is supported, refer to our CI-builds).
cabal build
cabal test
cabal install
Online documentation
About the name
The word Raaz
(राज़) stands for secret in Hindi.
Legal
Copyright 2012 Piyush P Kurur
The library is licensed under
- Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0
- BSD 3-Clause license https://opensource.org/licenses/BSD-3-Clause
You may not use this software except in compliance with one of the above Licenses (at your option).
SPDX-License-Identifier: (Apache-2.0 OR BSD-3-Clause)
Unless required by applicable law or agreed to in writing, software distributed under these Licenses is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. For the exact terms and conditions see the accompanying LICENSE file.