anchor.diff:      State = crypto:hash_update(State0, Increment),
       hash_increment(State, Rest).
   
  +hmac(_, [],[],[]) ->
  +    ok;
  +hmac(Type, [Key | Keys], [Data| Rest], [Expected | Expects]) ->
  +    case crypto:hmac(Type, Key, Data) of
  +        Expected ->
  +            ok;
  +        Other ->
  +            ct:fail({{crypto, hmac, [Type, Key, Data]}, {expected, Expected}, {got, Other}})
  +    end,
  +    hmac(Type, Keys, Rest, Expects).
  +
   iolistify(<<"Test With Truncation">>)->
       %% Do not iolistify as it spoils this special case
       <<"Test With Truncation">>;
  
positive.code: group_config(sha = Type, Config) ->
      Msgs = [rfc_4634_test1(), rfc_4634_test2_1(),long_msg()],
      Digests = rfc_4634_sha_digests() ++ [long_sha_digest()],
      [{hash, {Type, Msgs, Digests}} | Config];
  group_config(sha256 = Type, Config) ->
      Msgs =   [rfc_4634_test1(), rfc_4634_test2_1(), long_msg()],
      Digests = rfc_4634_sha256_digests() ++ [long_sha256_digest()],
  
negative.code:          ].
  
  groups() -> [{md5, [], [hash]},
               {sha, [], [hash, hmac]},
               {sha256, [], [hash]},
               {sha512, [], [hash]},
               {rsa, [], [sign_verify, public_encrypt]}
  