anchor.diff:  %% New interface
   -export([crypto_init/4, crypto_init/3,
            crypto_update/2,
  -         crypto_one_shot/5,
  +         crypto_one_time/4, crypto_one_time/5,
  +         crypto_aead/6, crypto_aead/7,
            crypto_init_dyn_iv/3,
            crypto_update_dyn_iv/3
           ]).
  
positive.code:     ?COMPAT(
         case Data of
             {AAD, PlainText} ->
                 aead_encrypt(alias(Type,Key), Key, Ivec, AAD, PlainText, aead_tag_len(Type));
             {AAD, PlainText, TagLength} ->
                 aead_encrypt(alias(Type,Key), Key, Ivec, AAD, PlainText, TagLength);
             PlainText ->
                 crypto_one_shot(alias(Type,Key), Key, Ivec, PlainText, true)
         end).
  
  -spec block_encrypt(Type::block_cipher_no_iv(), Key::key(), PlainText::iodata()) ->
                             binary() | run_time_error().
  
  block_encrypt(Type, Key0, PlainText) ->
      Key = iolist_to_binary(Key0),
      ?COMPAT(crypto_one_shot(alias(Type,Key), Key, <<>>, PlainText, true)).
  
  
  aead_tag_len(chacha20_poly1305) -> 16;
  aead_tag_len(aes_ccm) -> 12;
  aead_tag_len(aes_128_ccm) -> 12;
  aead_tag_len(aes_192_ccm) -> 12;
  aead_tag_len(aes_256_ccm) -> 12;
  aead_tag_len(aes_gcm) -> 16;
  aead_tag_len(aes_128_gcm) -> 16;
  aead_tag_len(aes_192_gcm) -> 16;
  aead_tag_len(aes_256_gcm) -> 16.
  
  %%%----------------------------------------------------------------
  %%%----------------------------------------------------------------
  -spec block_decrypt(Type::block_cipher_iv(), Key::key()|des3_key(), Ivec::binary(), Data::iodata()) ->
                             binary() | run_time_error();
  		   (Type::aead_cipher(), Key::iodata(), Ivec::binary(),
  		    {AAD::binary(), Data::iodata(), Tag::binary()}) ->
  
negative.code: 
  %%%---- Block ciphers
  %%%----------------------------------------------------------------
  -spec block_encrypt(Type::block_cipher_with_iv(), Key::key()|des3_key(), Ivec::binary(), PlainText::iodata()) ->
                             binary() | run_time_error();
                     (Type::aead_cipher(),  Key::iodata(), Ivec::binary(), {AAD::binary(), PlainText::iodata()}) ->
                             {binary(), binary()} | run_time_error();
  