This is an out-of-kernel-tree in-kernel-crypto implementation
of a pseudo 'phmac' crypto algorithm. The original s390 specific
phmac is a protected key ("hardware based encrypted key") hmac
implementation.

However, for test and debug reasons it is handsome to have a
phmac pseudo implementation which offers a phmac(sha256) which
is equal to the hmac(sha256) but only implemented asynchronously.
So in fact this pseudo phmac is a 'simple' asynchronous wrapper
around the hmac(sha256) shash provided by the crypto subsystem.

Build the phmac.ko kernel module with:
  make
This assumes you run the kernel you build for. If that's not the
case modify the Makefile and let the KDIR variable point to your
kernel source dir.

You may eventually sign the module if your kernel is configured to
only accept signed modules. Of course then you need your private
key - which should be located in
  $(KDIR)/certs/signing_key.pem
sign pkey.ko with
  make sign

Use the phmac.ko with:
  insmod `pwd`/phmac.ko
or if you want the dynamic traces enabled, then use:
  insmod `pwd`/phmac.ko dyndbg=+pf
Insmod may fail if the crypto_engine kernel module is not loaded.
So maybe you need to
  modprobe crypto_engine
before the insmod command.

On s390 this module may collide with the phmac_s390 kernel module
(which offers the 'real' phmac algorithms). So make sure only one
of these both is loaded.

Harald Freudenberger <freude@linux.ibm.com>
