typos
[freeradius.git] / src / modules / rlm_otp / otp.h
1 /*
2  * $Id$
3  *
4  *  This program is free software; you can redistribute it and/or modify
5  *  it under the terms of the GNU General Public License as published by
6  *  the Free Software Foundation; either version 2 of the License, or
7  *  (at your option) any later version.
8  *
9  *  This program is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *  GNU General Public License for more details.
13  *
14  *  You should have received a copy of the GNU General Public License
15  *  along with this program; if not, write to the Free Software
16  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  *
18  *  For alternative licensing terms, contact licensing@tri-dsystems.com.
19  *
20  * Copyright 2005-2007 TRI-D Systems, Inc.
21  */
22
23 #ifndef OTP_H
24 #define OTP_H
25
26 #include "ident.h"
27 RCSIDH(otp_h, "$Id$")
28
29 #include <sys/types.h>
30
31 /*
32  * NOTE: This file must be synced between plugins/otpd/lsmd/gsmd/changepin.
33  */
34
35 #ifndef OTP_MAX_CHALLENGE_LEN
36 #define OTP_MAX_CHALLENGE_LEN   16
37 #elif OTP_MAX_CHALLENGE_LEN != 16
38 #error OTP_MAX_CHALLENGE_LEN
39 #endif
40
41 #define OTP_RC_OK               0
42 #define OTP_RC_USER_UNKNOWN     1
43 #define OTP_RC_AUTHINFO_UNAVAIL 2
44 #define OTP_RC_AUTH_ERR         3
45 #define OTP_RC_MAXTRIES         4
46 #define OTP_RC_SERVICE_ERR      5
47
48 #define OTP_MAX_USERNAME_LEN            31
49 /* only needs to be MAX_PIN_LEN (16) + MAX_RESPONSE_LEN (16) */
50 #define OTP_MAX_PASSCODE_LEN            47
51 #define OTP_MAX_CHAP_CHALLENGE_LEN      16
52 #define OTP_MAX_CHAP_RESPONSE_LEN       50
53
54 typedef enum otp_pwe_t {
55   PWE_PAP = 1,
56   PWE_CHAP = 3,
57   PWE_MSCHAP = 5,
58   PWE_MSCHAP2 = 7,
59 } otp_pwe_t;
60
61 typedef struct otp_request_t {
62   int   version;                                        /* 2 */
63   char  username[OTP_MAX_USERNAME_LEN + 1];
64   char  challenge[OTP_MAX_CHALLENGE_LEN + 1];           /* USER challenge */
65   struct {
66     otp_pwe_t     pwe;
67     union {
68       struct {
69         char      passcode[OTP_MAX_PASSCODE_LEN + 1];
70       } pap;
71       struct {
72         unsigned char challenge[OTP_MAX_CHAP_CHALLENGE_LEN]; /* CHAP chal */
73         size_t    clen;
74         unsigned char response[OTP_MAX_CHAP_RESPONSE_LEN];
75         size_t    rlen;
76       } chap;
77     } u;
78   } pwe;
79   int           allow_async;            /* async auth allowed?           */
80   int           allow_sync;             /* sync auth allowed?            */
81   unsigned      challenge_delay;        /* min delay between async auths */
82   int           resync;                 /* resync on async auth?         */
83 } otp_request_t;
84
85 typedef struct otp_reply_t {
86   int   version;                                        /* 1 */
87   int   rc;
88   char  passcode[OTP_MAX_PASSCODE_LEN + 1];
89 } otp_reply_t;
90
91 #endif /* OTP_H */