]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/unix/9pfreebsd/mount_9fs/9auth.h
Import sources from 2011-03-30 iso image - lib
[plan9front.git] / sys / src / cmd / unix / 9pfreebsd / mount_9fs / 9auth.h
1 typedef struct  Ticket          Ticket;
2 typedef struct  Ticketreq       Ticketreq;
3 typedef struct  Authenticator   Authenticator;
4 typedef struct  Nvrsafe         Nvrsafe;
5 typedef struct  Passwordreq     Passwordreq;
6 typedef struct  Chalstate       Chalstate;
7 typedef struct  Apopchalstate   Apopchalstate;
8 typedef struct  Chapreply       Chapreply;
9 typedef struct  MSchapreply     MSchapreply;
10
11 enum
12 {
13         DOMLEN=         48,             /* length of an authentication domain name */
14         U9AUTH_DESKEYLEN=       7,              /* length of a des key for encrypt/decrypt */
15         CHALLEN=        8,              /* length of a challenge */
16         NETCHLEN=       16,             /* max network challenge length */
17         CONFIGLEN=      14,
18         SECRETLEN=      32,             /* max length of a secret */
19         APOPCHLEN=      256,
20         MD5LEN=         16,
21
22         KEYDBOFF=       8,              /* length of random data at the start of key file */
23         OKEYDBLEN=      U9FS_NAMELEN+U9AUTH_DESKEYLEN+4+2,      /* length of an entry in old key file */
24         KEYDBLEN=       OKEYDBLEN+SECRETLEN,    /* length of an entry in key file */
25         U9AUTH_TCPPORT= 567,
26         U9AUTH_ILPORT=  566,
27 };
28
29 /* encryption numberings (anti-replay) */
30 enum
31 {
32         AuthTreq=1,     /* ticket request */
33         AuthChal=2,     /* challenge box request */
34         AuthPass=3,     /* change password */
35         AuthOK=4,       /* fixed length reply follows */
36         AuthErr=5,      /* error follows */
37         AuthMod=6,      /* modify user */
38         AuthApop=7,     /* apop authentication for pop3 */
39         AuthOKvar=9,    /* variable length reply follows */
40         AuthChap=10,    /* chap authentication for ppp */
41         AuthMSchap=11,  /* MS chap authentication for ppp */
42
43
44         AuthTs=64,      /* ticket encrypted with server's key */
45         AuthTc,         /* ticket encrypted with client's key */
46         AuthAs,         /* server generated authenticator */
47         AuthAc,         /* client generated authenticator */
48         AuthTp,         /* ticket encrypted with clien's key for password change */
49 };
50
51 struct Ticketreq
52 {
53         char    type;
54         char    authid[U9FS_NAMELEN];   /* server's encryption id */
55         char    authdom[DOMLEN];        /* server's authentication domain */
56         char    chal[CHALLEN];          /* challenge from server */
57         char    hostid[U9FS_NAMELEN];   /* host's encryption id */
58         char    uid[U9FS_NAMELEN];              /* uid of requesting user on host */
59 };
60 #define TICKREQLEN      (3*U9FS_NAMELEN+CHALLEN+DOMLEN+1)
61
62 struct Ticket
63 {
64         char    num;                    /* replay protection */
65         char    chal[CHALLEN];          /* server challenge */
66         char    cuid[U9FS_NAMELEN];             /* uid on client */
67         char    suid[U9FS_NAMELEN];             /* uid on server */
68         char    key[U9AUTH_DESKEYLEN];          /* nonce DES key */
69 };
70 #define TICKETLEN       (CHALLEN+2*U9FS_NAMELEN+U9AUTH_DESKEYLEN+1)
71
72 struct Authenticator
73 {
74         char    num;                    /* replay protection */
75         char    chal[CHALLEN];
76         u_long  id;                     /* authenticator id, ++'d with each auth */
77 };
78 #define AUTHENTLEN      (CHALLEN+4+1)
79
80 struct Passwordreq
81 {
82         char    num;
83         char    old[U9FS_NAMELEN];
84         char    new[U9FS_NAMELEN];
85         char    changesecret;
86         char    secret[SECRETLEN];      /* new secret */
87 };
88 #define PASSREQLEN      (2*U9FS_NAMELEN+1+1+SECRETLEN)
89
90 struct Nvrsafe
91 {
92         char    machkey[U9AUTH_DESKEYLEN];
93         u_char  machsum;
94         char    authkey[U9AUTH_DESKEYLEN];
95         u_char  authsum;
96         char    config[CONFIGLEN];
97         u_char  configsum;
98         char    authid[U9FS_NAMELEN];
99         u_char  authidsum;
100         char    authdom[DOMLEN];
101         u_char  authdomsum;
102 };
103
104 struct Chalstate
105 {
106         int     afd;                    /* /dev/authenticate */
107         int     asfd;                   /* authdial() */
108         char    chal[NETCHLEN];         /* challenge/response */
109 };
110
111 struct Apopchalstate
112 {
113         int     afd;                    /* /dev/authenticate */
114         int     asfd;                   /* authdial() */
115         char    chal[APOPCHLEN];        /* challenge/response */
116 };
117
118 struct  Chapreply
119 {
120         u_char  id;
121         char    uid[U9FS_NAMELEN];
122         char    resp[MD5LEN];
123 };
124
125 struct  MSchapreply
126 {
127         char    uid[U9FS_NAMELEN];
128         char    LMresp[24];             /* Lan Manager response */
129         char    NTresp[24];             /* NT response */
130 };
131
132 extern  int     convT2M(Ticket*, char*, char*);
133 extern  void    convM2T(char*, Ticket*, char*);
134 extern  void    convM2Tnoenc(char*, Ticket*);
135 extern  int     convA2M(Authenticator*, char*, char*);
136 extern  void    convM2A(char*, Authenticator*, char*);
137 extern  int     convTR2M(Ticketreq*, char*);
138 extern  void    convM2TR(char*, Ticketreq*);
139 extern  int     convPR2M(Passwordreq*, char*, char*);
140 extern  void    convM2PR(char*, Passwordreq*, char*);
141 extern  u_char  nvcsum(void*, int);
142 extern  int     opasstokey(char*, char*);
143 extern  int     passtokey(char*, char*);
144 extern  int     authenticate(int, int);
145 extern  int     newns(char*, char*);
146 extern  int     addns(char*, char*);
147 extern  int     authdial(void);
148 extern  int     auth(int);
149 extern  int     srvauth(int, char*);
150 extern  int     nauth(int, Ticket*);
151 extern  int     nsrvauth(int, char*, Ticket*);
152 extern  int     getchal(Chalstate*, char*);
153 extern  int     chalreply(Chalstate*, char*);
154 extern  int     amount(int, char*, int, char*);
155 extern  int     apopchal(Apopchalstate*);
156 extern  int     apopreply(Apopchalstate*, char*, char*);
157 extern  int     login(char*, char*, char*);
158 extern  int     sslnegotiate(int, Ticket*, char**, char**);
159 extern  int     srvsslnegotiate(int, Ticket*, char**, char**);