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: %%% The size must be an integer multiple of the crypto's blocksize.
  %%% 
  
  -spec crypto_one_shot(Cipher, Key, IV, Data, EncryptFlag) ->
                               Result | descriptive_error()
                                   when Cipher :: stream_cipher()
                                                | block_cipher(),
                                        Key :: iodata(),
                                        IV :: iodata() | undefined,
                                        Data :: iodata(),
                                        EncryptFlag :: boolean(),
                                        Result :: binary() .
  
  crypto_one_shot(Cipher, Key, undefined, Data, EncryptFlag) ->
      crypto_one_shot(Cipher, Key, <<>>, Data, EncryptFlag);
  
  crypto_one_shot(Cipher, Key, IV, Data0, EncryptFlag) ->
      case iolist_to_binary(Data0) of
          <<>> ->
              <<>>;                           % Known to fail on OpenSSL 0.9.8h
          Data ->
              ng_crypto_one_shot_nif(alias(Cipher),
                                     iolist_to_binary(Key), iolist_to_binary(IV), Data,
                                     EncryptFlag)
      end.
  
  %%%----------------------------------------------------------------
  %%% NIFs
  
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();
  