anchor.diff:  -type calendar_time() :: { non_neg_integer(),  non_neg_integer(),  non_neg_integer() }.
   -type calendar_date() :: { integer(),  1..12, 1..31 }.
   
  +-type get_header_fun() :: fun((header_name()) -> header_value()).
   -type http_body() :: binary() | pid().
   -type user_id() :: binary().
   -type http_method() :: binary().
  
positive.code:         error:{badmatch, _} -> {no_authn, bad_sig}
      end.
  
  -spec decrypt_sig(binary(), binary()) -> binary() | decrypt_failed.
  decrypt_sig(Sig, PublicCert) ->
      PK = read_cert(PublicCert),
      try
  
negative.code: -type sha_hash64() :: binary().
  -type erlang_time() :: {calendar_date(), calendar_time()}.
  -type private_key() :: binary().
  -type raw_public_key() :: binary().
  -type header_name() :: binary().
  -type header_value() :: binary() | 'undefined'.
  -type header_fun() :: fun((header_name()) -> header_value()).
  -type time_skew() :: non_neg_integer().
  
  
  -ifdef(TEST).
  -include_lib("eunit/include/eunit.hrl").
  