summaryrefslogtreecommitdiff
path: root/sys/src/libauthsrv/convM2A.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/src/libauthsrv/convM2A.c')
-rw-r--r--sys/src/libauthsrv/convM2A.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/sys/src/libauthsrv/convM2A.c b/sys/src/libauthsrv/convM2A.c
index 3d58f9b59..b0d6712ca 100644
--- a/sys/src/libauthsrv/convM2A.c
+++ b/sys/src/libauthsrv/convM2A.c
@@ -8,16 +8,24 @@
#define LONG(x) VLONG(f->x)
#define STRING(x,n) memmove(f->x, p, n); p += n
-void
-convM2A(char *ap, Authenticator *f, char *key)
+int
+convM2A(char *ap, int n, Authenticator *f, Ticket *t)
{
- uchar *p;
+ uchar *p, buf[AUTHENTLEN];
- if(key)
- decrypt(key, ap, AUTHENTLEN);
+ memset(f, 0, sizeof(Authenticator));
+ if(n < AUTHENTLEN)
+ return -AUTHENTLEN;
+
+ if(t) {
+ memmove(buf, ap, AUTHENTLEN);
+ ap = (char*)buf;
+ decrypt(t->key, ap, AUTHENTLEN);
+ }
p = (uchar*)ap;
CHAR(num);
STRING(chal, CHALLEN);
LONG(id);
- USED(p);
+ n = p - (uchar*)ap;
+ return n;
}