anchor.diff:  %% AES - in Galois/Counter Mode (GCM)
   %%
   %% The default tag length is EVP_GCM_TLS_TAG_LEN(16),
  -aead_encrypt(Type=aes_ccm, Key, Ivec, AAD, In) -> aead_encrypt(Type, Key, Ivec, AAD, In, 12);
  -aead_encrypt(Type=aes_gcm, Key, Ivec, AAD, In) -> aead_encrypt(Type, Key, Ivec, AAD, In, 16).
  -
   aead_encrypt(_Type, _Key, _Ivec, _AAD, _In, _TagLength) -> ?nif_stub.
   aead_decrypt(_Type, _Key, _Ivec, _AAD, _In, _Tag) -> ?nif_stub.
   
  
positive.code: %%%================================================================
  
  -define(COMPAT(CALL),
          try CALL
          catch
              error:{E,_Reason} when E==notsup ; E==badarg ->
                  error(E)
          end).
  
negative.code:                                     when Type :: stream_cipher_no_iv(),
                                           Key :: iodata(),
                                           State :: stream_state() .
  stream_init(rc4 = Type, Key0) ->
      Key = iolist_to_binary(Key0),
      Ref = ?COMPAT(ng_crypto_init_nif(alias(Type,Key),
                                       Key, <<>>,
                                       undefined)
                   ),
      {Type, {Ref,flg_undefined}}.
  