anchor.diff:          ]).
   
   %% New interface
  --export([crypto_init/4, crypto_init/3, crypto_init/2, 
  -         crypto_update/2,
  +-export([crypto_init/4,
  +         crypto_update/2, crypto_update/3,
            crypto_one_shot/5
           ]).
   
  
positive.code: %%%-------- helpers
  crypto_stream_emulate({Cipher,{Ref0,flg_undefined}}, Data, EncryptFlag) when is_reference(Ref0) ->
      ?COMPAT(begin
                  Ref = crypto_init(Ref0, EncryptFlag),
                  {{Cipher,Ref}, crypto_update(Ref, Data)}
              end);
  
  
negative.code: 
  -type ng_crypto_error() :: no_return() .
  
  -spec ng_crypto_init_nif(atom(), binary(), binary()|undefined, boolean()|undefined ) -> crypto_state() | ng_crypto_error()
                        ; (crypto_state(), <<>>, <<>>, boolean()) -> crypto_state() | ng_crypto_error().
  ng_crypto_init_nif(_Cipher, _Key, _IVec, _EncryptFlg) -> ?nif_stub.
  
  
  -spec ng_crypto_update_nif(crypto_state(), binary()) -> binary() | ng_crypto_error() .
  ng_crypto_update_nif(_State, _Data) -> ?nif_stub.
  
  -spec ng_crypto_update_nif(crypto_state(), binary(), binary()) -> binary() | ng_crypto_error() .
  ng_crypto_update_nif(_State, _Data, _IV) -> ?nif_stub.
  
  
  -spec ng_crypto_one_shot_nif(atom(), binary(), binary(), binary(), boolean() ) -> binary() | ng_crypto_error().
  