anchor.diff:  
   block_decrypt(
     #params{rekey_interval = RekeyInterval} = Params,
  -  Seq, CipherName, Key, IV, Data) ->
  -    %%
  -    case crypto:block_decrypt(CipherName, Key, IV, Data) of
  +  Seq, AeadCipher, Key, IV, Data) ->
  +    %%
  +    case crypto:block_decrypt(AeadCipher, Key, IV, Data) of
           <<?REKEY_CHUNK, Rest/binary>> ->
               KeyLen = byte_size(Key),
  -            IVSaltLen = byte_size(IV) - 6,
  +            IVLen = byte_size(IV),
  +            IVSaltLen = IVLen - 6,
  +            RLen = KeyLen + IVLen,
               case Rest of
  -                <<KeySalt:KeyLen/binary, IVSalt:IVSaltLen/binary, IVNo:48>> ->
  -                    Key_1 =
  -                        hash_key(
  -                          Params#params.hash_algorithm, Key, KeySalt),
  +                <<R:RLen/binary>> ->
  +                    {Key_1, <<IVSalt:IVSaltLen/binary, IVNo:48>>} =
  +                        hmac_key_iv(
  +                          Params#params.hmac_algorithm,
  +                          Key, R, KeyLen, IVLen),
                       Params#params{iv = {IVSalt, IVNo}, key = Key_1};
                   _ ->
                       error
  
positive.code: 
  %% -------------------------------------------------------------------------
  
  -record(params,
          {protocol, % Encryption protocol tag
           socket,
           dist_handle,
           hash_algorithm,
           block_crypto,
           rekey_interval,
           iv,
           key,
           tag_len}).
  
  -define(TCP_ACTIVE, 16).
  -define(CHUNK_SIZE, (65536 - 512)).
  
  
negative.code: -define(DRIVER, inet_tcp).
  -define(FAMILY, inet).
  
  -export([listen/1, accept/1, accept_connection/5,
  	 setup/5, close/1, select/1, is_node_name/1]).
  
  