home *** CD-ROM | disk | FTP | other *** search
/ Super Net 1 / SUPERNET_1.iso / PC / OTROS / SUN / PPP / SUNOS_OL / PPPD_1_0.TAR / chap.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-01-14  |  2.9 KB  |  107 lines

  1. /*
  2.  * chap.h - Cryptographic Handshake Authentication Protocol definitions.
  3.  *          based on November 1991 draft of PPP Authentication RFC
  4.  *
  5.  * Copyright (c) 1991 Gregory M. Christy
  6.  * All rights reserved.
  7.  *
  8.  * Redistribution and use in source and binary forms are permitted
  9.  * provided that the above copyright notice and this paragraph are
  10.  * duplicated in all such forms and that any documentation,
  11.  * advertising materials, and other materials related to such
  12.  * distribution and use acknowledge that the software was developed
  13.  * by the author.
  14.  *
  15.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  16.  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  17.  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  18.  */
  19.  
  20. #ifndef __CHAP_INCLUDE__
  21.  
  22. /* Code + ID + length */
  23. #define CHAP_HEADERLEN    (sizeof (u_char) + sizeof (u_char) + sizeof (u_short))
  24.  
  25. /*
  26.  * CHAP codes.
  27.  */
  28.  
  29. #define CHAP_DIGEST_MD5 5    /* use MD5 algorithm */
  30.  
  31. #define MD5_SIGNATURE_SIZE 16    /* 16 bytes in a MD5 message digest */
  32.  
  33. #define CHAP_NOCALLBACK 0    /* don't call back after successful auth */
  34. #define CHAP_CALLBACK 1        /* do call back */
  35.  
  36. #define CHAP_CHALLENGE    1
  37. #define CHAP_RESPONSE    2
  38. #define CHAP_SUCCESS    3
  39. #define CHAP_FAILURE    4
  40.  
  41. /*
  42.  *  Challenge lengths
  43.  */
  44.  
  45. #define MIN_CHALLENGE_LENGTH 64
  46. #define MAX_CHALLENGE_LENGTH 128
  47.  
  48. #define MAX_SECRET_LEN 128
  49. /*
  50.  * Each interface is described by chap structure.
  51.  */
  52.  
  53. typedef struct chap_state {
  54.     int unit;        /* Interface unit number */
  55.     u_char chal_str[MAX_CHALLENGE_LENGTH + 1]; /* challenge string */
  56.     u_char chal_len;        /* challenge length */
  57.     int clientstate;        /* Client state */
  58.     int serverstate;        /* Server state */
  59.     int flags;        /* Flags */
  60.     unsigned char id;        /* Current id */
  61.     int timeouttime;        /* Timeout time in milliseconds */
  62.     int retransmits;        /* Number of retransmissions */
  63. } chap_state;
  64.  
  65.  
  66. /*
  67.  * Client states.
  68.  */
  69. #define CHAPCS_CLOSED    1    /* Connection down */
  70. #define CHAPCS_CHALLENGE_SENT    2    /* We've sent a challenge */
  71. #define CHAPCS_OPEN    3    /* We've received an Ack */
  72.  
  73. /*
  74.  * Server states.
  75.  */
  76. #define CHAPSS_CLOSED    1    /* Connection down */
  77. #define CHAPSS_LISTEN    2    /* Listening for a challenge */
  78. #define CHAPSS_OPEN    3    /* We've sent an Ack */
  79.  
  80. /*
  81.  * Flags.
  82.  */
  83. #define CHAPF_LOWERUP     0x01    /* The lower level is UP */
  84. #define CHAPF_AWPPENDING 0x02    /* Auth with peer pending */
  85. #define CHAPF_APPENDING     0x04    /* Auth peer pending */
  86. #define CHAPF_UPVALID     0x08    /* values valid */
  87. #define CHAPF_UPPENDING     0x10    /* values pending */
  88.  
  89.  
  90. /*
  91.  * Timeouts.
  92.  */
  93. #define CHAP_DEFTIMEOUT    3    /* Timeout time in seconds */
  94.  
  95. extern chap_state chap[];
  96.  
  97. void ChapInit __ARGS((int));
  98. void ChapAuthWithPeer __ARGS((int));
  99. void ChapAuthPeer __ARGS((int));
  100. void ChapLowerUp __ARGS((int));
  101. void ChapLowerDown __ARGS((int));
  102. void ChapInput __ARGS((int, u_char *, int));
  103. void ChapProtocolReject __ARGS((int));
  104.  
  105. #define __CHAP_INCLUDE__
  106. #endif /* __CHAP_INCLUDE__ */
  107.