Hmacs

Please Review.
Note, this branch will have to be rebased against latest v3.