]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libauthsrv/convM2A.c
upas/marshal: fix printinreplyto function
[plan9front.git] / sys / src / libauthsrv / convM2A.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 convM2A(char *ap, int n, Authenticator *f, Ticket *t)
9 {
10         uchar buf[MAXAUTHENTLEN], *p;
11         int m;
12
13         memset(f, 0, sizeof(Authenticator));
14         if(t->form == 0){
15                 m = 1+CHALLEN+4;
16                 if(n < m)
17                         return -m;
18                 memmove(buf, ap, m);
19                 decrypt(t->key, buf, m);
20         } else {
21                 m = 12+CHALLEN+NONCELEN+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->chal, p, CHALLEN);
31         p += CHALLEN;
32         if(t->form == 1)
33                 memmove(f->rand, p, NONCELEN);
34
35         return m;
36 }