text: typedef struct {
  	sha256_context ictx,octx;
  } sha256_hmac_context;
  typedef struct {
  	sha512_context ictx,octx;
  } sha512_hmac_context;
  #define SHA256_BLOCKSIZE 64
  #define SHA256_HASHLEN   32
  #define SHA384_BLOCKSIZE 128	/* XXX ok? */
  #define SHA384_HASHLEN   48
  #define SHA512_BLOCKSIZE 128
  #define SHA512_HASHLEN   64
  
  void sha256_hmac_hash(sha256_hmac_context *hctx, const u_int8_t * dat, int len, u_int8_t * hash, int hashlen);
  void sha256_hmac_set_key(sha256_hmac_context *hctx, const u_int8_t * key, int keylen);
  void sha512_hmac_hash(sha512_hmac_context *hctx, const u_int8_t * dat, int len, u_int8_t * hash, int hashlen);
  void sha512_hmac_set_key(sha512_hmac_context *hctx, const u_int8_t * key, int keylen);
  