anchor.diff:  -export([rand_seed/1]).
   
   %% Old interface. Now implemented with the New interface
  +-export([hmac/3, hmac/4, hmac_init/2, hmac_update/2, hmac_final/1, hmac_final_n/2]).
  +-export([cmac/3, cmac/4]).
  +-export([poly1305/2]).
   -export([stream_init/2, stream_init/3,
            stream_encrypt/2,
            stream_decrypt/2,
  
positive.code: %%%
  %%%================================================================
  
  mac(Type, SubType, Key, Data, MacLength) ->
      erlang:binary_part(mac(Type,SubType,Key,Data), 0, MacLength).
  
  mac(poly1305, _, Key, Data) -> mac(poly1305, undefined, Key, Data);
  mac(Type, SubType, Key, Data) -> mac_nif(Type, SubType, Key, Data).
  
  mac(poly1305, Key, Data) -> mac(poly1305, undefined, Key, Data).
  
  
  mac_init(Type, SubType, Key) ->
      mac_init_nif(Type, SubType, Key).
  
negative.code: poly1305(Key, Data) ->
      ?COMPAT(mac(poly1305, Key, Data)).
  
  %%%----------------------------------------------------------------
  %%%----------------------------------------------------------------
  %%% Ciphers
  
  
  %%%---- Cipher info
  -spec cipher_info(Type) -> Result | run_time_error()
                                 when Type :: cipher(),
                                      Result :: #{key_length := integer(),
  