text: /*
   * keytools.h
   */
  
  #ifndef _KEYTOOLS_H
  #define _KEYTOOLS_H
  
  #ifdef __cplusplus
  extern          "C" {
  #endif
  
  
  #define USM_LENGTH_EXPANDED_PASSPHRASE	(1024 * 1024)   /* 1Meg. */
  
  #define USM_LENGTH_KU_HASHBLOCK		64      /* In bytes. */
  
  #define USM_LENGTH_P_MIN		8       /* In characters. */
      /*
       * Recommended practice given in <draft-ietf-snmpv3-usm-v2-02.txt>,
       * * Section 11.2 "Defining Users".  Move into cmdline app argument
       * * parsing, and out of the internal routine?  XXX
       */
  
      /*
       * Prototypes.h
       */
      NETSNMP_IMPORT
      int             generate_Ku(const oid * hashtype, u_int hashtype_len,
                                  const u_char * P, size_t pplen,
                                  u_char * Ku, size_t * kulen);
  
      NETSNMP_IMPORT
      int             generate_kul(const oid * hashtype, u_int hashtype_len,
                                   const u_char * engineID, size_t engineID_len,
                                   const u_char * Ku, size_t ku_len,
                                   u_char * Kul, size_t * kul_len);
  
      NETSNMP_IMPORT
      int             encode_keychange(const oid * hashtype,
                                       u_int hashtype_len, u_char * oldkey,
                                       size_t oldkey_len, u_char * newkey,
                                       size_t newkey_len, u_char * kcstring,
                                       size_t * kcstring_len);
  
      NETSNMP_IMPORT
      int             decode_keychange(const oid * hashtype,
                                       u_int hashtype_len, u_char * oldkey,
                                       size_t oldkey_len, u_char * kcstring,
                                       size_t kcstring_len, u_char * newkey,
                                       size_t * newkey_len);
  
  
      /*
       * All functions devolve to the following block if we can't do cryptography
       */
  #define	_KEYTOOLS_NOT_AVAILABLE			\
  {						\
  	return SNMPERR_KT_NOT_AVAILABLE;	\
  }
  
  #ifdef __cplusplus
  }
  #endif
  #endif                          /* _KEYTOOLS_H */
  