text: /**
   * Node Native Module for Lib Sodium
   *
   * @Author Pedro Paixao
   * @email paixaop at gmail dot com
   * @License MIT
   */
  #include "node_sodium.h"
  #include "crypto_streams.h"
  
  // Generate the binding methods for each algorithm
  CRYPTO_STREAM_DEF(salsa20)
  CRYPTO_STREAM_DEF_IC(salsa20)
  CRYPTO_STREAM_DEF(xsalsa20)
  CRYPTO_STREAM_DEF_IC(xsalsa20)
  CRYPTO_STREAM_DEF(salsa208)
  CRYPTO_STREAM_DEF(salsa2012)
  CRYPTO_STREAM_DEF(chacha20)
  CRYPTO_STREAM_DEF_IC(chacha20)
  
  // chacha_ietf uses the same key length as crypto_stream_chacha20_KEYBYTES
  // Libsodium does not define it, lets define it here so we don't get compilation errors
  // when expanding the macros
  // #define crypto_stream_chacha20_ietf_KEYBYTES   crypto_stream_chacha20_KEYBYTES
  //#define crypto_stream_chacha20_ietf_NONCEBYTES crypto_stream_chacha20_IETF_NONCEBYTES
  CRYPTO_STREAM_DEF(chacha20_ietf)
  CRYPTO_STREAM_DEF_IC(chacha20_ietf)
  
  
  /**
   * Register function calls in node binding
   */
  void register_crypto_streams(Napi::Env env, Napi::Object exports) {    
      
      METHODS(xsalsa20);
      EXPORT(crypto_stream_xsalsa20_xor_ic);
      PROPS(xsalsa20);
      
      METHODS(salsa20);
      EXPORT(crypto_stream_salsa20_xor_ic);
      PROPS(salsa20);
      
      METHODS(salsa208);
      PROPS(salsa208);
      
      METHODS(salsa2012);
      PROPS(salsa2012);
      
      METHODS(chacha20);
      EXPORT(crypto_stream_chacha20_xor_ic);
      PROPS(chacha20);
      
      METHODS(chacha20_ietf);
      EXPORT(crypto_stream_chacha20_ietf_xor_ic);
      PROPS(chacha20_ietf);
  }