Source

skerl / README.org

Full commit
* skerl
** Overview
=skerl= is a NIF wrapper around Skein hashing functions

** Quick Start
   You must have [[http://erlang.org/download.html][Erlang/OTP R13B04]] or later and a GNU-style build
   system to compile and run =skerl=.

#+BEGIN_SRC shell
git clone git://github.com/basho/skerl.git
cd skerl
make
#+END_SRC

   Start up an Erlang shell with the path to =skerl= included.

#+BEGIN_SRC shell
cd path/to/skerl/ebin
erl
#+END_SRC

   Hash a binary by calling =skerl:hash/2= with the desired number of
   bits for the resulting hash:

#+BEGIN_SRC erlang
1> Bits = 256.
256
2> Data = <<"foobarbazquux">>.
<<"foobarbazquux">>
3> {ok, Hash} = skerl:hash(Bits, Data).
{ok,<<206,36,175,108,168,91,124,11,181,108,144,164,36,
      216,130,110,241,197,98,180,65,120,56,225,1,255,54,
      ...>>}
4> bit_size(Hash).
256
#+END_SRC

   You may find =skerl:hexhash/2= more useful, as it returns a
   hexadecimal-encoded string representing the hash:

#+BEGIN_SRC erlang
5> HexHash = skerl:hexhash(Bits, Data).      
<<"ce24af6ca85b7c0bb56c90a424d8826ef1c562b4417838e101ff3627dcc000bc">>
#+END_SRC

** Contributing
   We encourage contributions to =skerl= from the community.

   1) Fork the =skerl= repository on [[https://github.com/basho/skerl][Github]].
   2) Clone your fork or add the remote if you already have a clone of
      the repository.
#+BEGIN_SRC shell
git clone git@github.com:yourusername/skerl.git
# or
git remote add mine git@github.com:yourusername/skerl.git
#+END_SRC
   3) Create a topic branch for your change.
#+BEGIN_SRC shell
git checkout -b some-topic-branch
#+END_SRC
   4) Make your change and commit. Use a clear and descriptive commit
      message, spanning multiple lines if detailed explanation is
      needed.
   5) Push to your fork of the repository and then send a pull-request
      through Github.
#+BEGIN_SRC shell
git push mine some-topic-branch
#+END_SRC
   6) A Basho engineer or community maintainer will review your patch
      and merge it into the main repository or send you feedback.