Home

Awesome

ExKeccak

CI

ExKeccak is a NIF that wraps the KECCAK-256 function from the tiny-keccak Rust library. KECCAK-256 is used by Ethereum.

Installation

The package can be installed by adding ex_keccak to your list of dependencies in mix.exs:

def deps do
  [
    {:ex_keccak, "~> 0.7.4"}
  ]
end

Force compilation

This library includes pre-compiled binaries for the native Rust code. If you want to force-compile the Rust code, you can add the following configuration to your application:

config :rustler_precompiled, :force_build, ex_keccak: true

You also need to add Rusler to your dependencies:

def deps do
  [
    {:ex_keccak, "~> 0.7.0"},
    {:rustler, ">= 0.0.0", optional: true}
  ]
end

Usage

To calculate KECCAK-256 hash, use ExKeccak.hash_256/1 function. It returns result on success:

  <<28, 138, 255, 149, 6, 133, 194, 237, 75, 195, 23, 79, 52, 114, 40, 123, 86, 217, 81, 123, 156, 148, 129, 39, 49, 154, 9, 167, 163, 109, 234, 200>> = ExKeccak.hash_256("hello")

And it returns ArgumentError is provided data is not binary

Contributing

  1. Fork it!
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

License

ExKeccak is released under the Apache-2.0 License.