ExthCrypto handles the majority of cryptographic operations for Exthereum. The goal of this project is to give each Exthereum project a common set of cryptographic functions where the backends can be swapped out as need be. Additionally, more complicated protocols (such as ECIES) can be implemented and tested in this project.
Note: we opt, whenever possible, to use erlang core or open-source implementations for all functions. The goal of this project is to create a consistent API for cryptographic functions that can be referenced from Exthereum projects. The goal of this project is not to re-write such functions in native erlang or Elixir.
We currently support:
- AES symmetric encryption in block mode and (simplified) stream mode
- Elliptic Curve Diffie Hellman (ECDH) key exchange
- ECIES perfect-forward secret generation
- SHA1, SHA2 and Keccak one-way cryptographic hash functions
- NIST-SP-800-56 key derivation function
- HMAC with SHA1, SHA2 or Keccak
- Elliptic Curve Digital Signature Algorithm (ECDSA) with public key recovery
If available in Hex, the package can be installed
by adding exth_crypto
to your list of dependencies in mix.exs
:
def deps do
[{:exth_crypto, "~> 0.1.6"}]
end
Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/exth_crypto.