]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libauthsrv/convM2PR.c
listen(8): add -a option to restrict announce address, document tcp17019 and tcp17020
[plan9front.git] / sys / src / libauthsrv / convM2PR.c
1 #include <u.h>
2 #include <libc.h>
3 #include <authsrv.h>
4
5 extern int form1M2B(char *ap, int n, uchar key[32]);
6
7 int
8 convM2PR(char *ap, int n, Passwordreq *f, Ticket *t)
9 {
10         uchar *p, buf[MAXPASSREQLEN];
11         int m;
12
13         memset(f, 0, sizeof(Passwordreq));
14         if(t->form == 0){
15                 m = 1+2*PASSWDLEN+1+SECRETLEN;
16                 if(n < m)
17                         return -m;
18                 memmove(buf, ap, m);
19                 decrypt(t->key, buf, m);
20         } else {
21                 m = 12+2*PASSWDLEN+1+SECRETLEN+16;
22                 if(n < m)
23                         return -m;
24                 memmove(buf, ap, m);
25                 if(form1M2B((char*)buf, m, t->key) < 0)
26                         return m;
27         }
28         p = buf;
29         f->num = *p++;
30         memmove(f->old, p, PASSWDLEN), p += PASSWDLEN;
31         memmove(f->new, p, PASSWDLEN), p += PASSWDLEN;
32         f->changesecret = *p++;
33         memmove(f->secret, p, SECRETLEN);
34         f->old[PASSWDLEN-1] = 0;
35         f->new[PASSWDLEN-1] = 0;
36         f->secret[SECRETLEN-1] = 0;
37
38         return m;
39 }