From c56fe4cc53b2ea1856f10a8d82228b4b0bcf9e8a Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Wed, 4 Aug 1999 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1999-08-04 --- port/devssl.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/port/devssl.c b/port/devssl.c index 6f9fdff782c52c2b3de3e3a5256e08f2a5f73a24..481859924f2327dfb884247d48a2845f483a37f4 100644 --- a/port/devssl.c +++ b/port/devssl.c @@ -905,7 +905,8 @@ sslwrite(Chan *c, void *a, long n, vlong off) volatile struct { Dstate *s; } s; volatile struct { Block *b; } b; int m, t; - char *p, *np, *e, buf[32]; + char *p, *np, *e, buf[128]; + uchar *x; ulong offset = off; s.s = dstate[CONV(c->qid)]; @@ -955,17 +956,15 @@ sslwrite(Chan *c, void *a, long n, vlong off) case Qsecretin: setsecret(&s.s->in, a, n); goto out; - return n; case Qsecretout: setsecret(&s.s->out, a, n); goto out; - return n; case Qctl: break; } if(n >= sizeof(buf)) - error(Ebadarg); + error("arg too long"); strncpy(buf, a, n); buf[n] = 0; p = strchr(buf, '\n'); @@ -1016,7 +1015,7 @@ sslwrite(Chan *c, void *a, long n, vlong off) if(parsehashalg(p, s.s) < 0) if(parseencryptalg(p, s.s) < 0) - error(Ebadarg); + error("bad algorithm"); if(np == 0) break; @@ -1024,7 +1023,7 @@ sslwrite(Chan *c, void *a, long n, vlong off) } if(s.s->hf == 0 && s.s->encryptalg == Noencryption) - error(Ebadarg); + error("bad algorithm"); if(s.s->blocklen != 1){ s.s->max = (1<<15) - s.s->diglen - 1; @@ -1033,6 +1032,18 @@ sslwrite(Chan *c, void *a, long n, vlong off) s.s->maxpad -= s.s->maxpad % s.s->blocklen; } else s.s->maxpad = s.s->max = (1<<15) - s.s->diglen - 1; + } else if(strcmp(buf, "secretin") == 0 && p != 0) { + m = (strlen(p)*3)/2; + x = smalloc(m); + n = dec64(x, m, p, strlen(p)); + setsecret(&s.s->in, x, n); + free(x); + } else if(strcmp(buf, "secretout") == 0 && p != 0) { + m = (strlen(p)*3)/2 + 1; + x = smalloc(m); + n = dec64(x, m, p, strlen(p)); + setsecret(&s.s->out, x, n); + free(x); } else error(Ebadarg);