| plan 9 kernel history: overview | file list | diff list |
1997/0327/port/devssl.c (diff list | history)
| 1996/1029/sys/src/9/port/devssl.c:108,119 – 1997/0327/sys/src/9/port/devssl.c:108,114 (short | long | prev | next) | ||
| 1996/1029 | static Dstate* dsclone(Chan *c); static void dsnew(Chan *c, Dstate **); | |
| 1995/1217 | ||
| 1995/1213 |
| |
| 1996/1029 |
| |
| 1997/0327 | static int | |
| 1996/1029 | sslgen(Chan *c, Dirtab *d, int nd, int s, Dir *dp) { Qid q; | |
| 1996/1029/sys/src/9/port/devssl.c:173,179 – 1997/0327/sys/src/9/port/devssl.c:168,174 | ||
| 1996/1029 | return -1; } | |
| 1995/1213 |
| |
| 1997/0327 | static void | |
| 1995/1213 | sslinit(void) { | |
| 1996/1029 | if((dstate = malloc(sizeof(Dstate*) * maxdstate)) == 0) | |
| 1996/1029/sys/src/9/port/devssl.c:180,186 – 1997/0327/sys/src/9/port/devssl.c:175,181 | ||
| 1996/1029 | panic("sslinit"); | |
| 1995/1213 | } | |
| 1997/0327 | static Chan* | |
| 1996/0531 | sslattach(void *spec) | |
| 1995/1213 | { | |
| 1996/1029 | Chan *c; | |
| 1996/1029/sys/src/9/port/devssl.c:191,215 – 1997/0327/sys/src/9/port/devssl.c:186,204 | ||
| 1996/1029 | return c; | |
| 1995/1213 | } | |
| 1997/0327 | static int | |
| 1995/1213 | sslwalk(Chan *c, char *name) { | |
| 1996/1029 | return devwalk(c, name, 0, 0, sslgen); | |
| 1995/1213 | } | |
| 1997/0327 | static void | |
| 1995/1213 | sslstat(Chan *c, char *db) { | |
| 1996/1029 | devstat(c, db, 0, 0, sslgen); | |
| 1995/1213 | } | |
| 1997/0327 | static Chan* | |
| 1995/1213 | sslopen(Chan *c, int omode) { | |
| 1996/1029 | Dstate *s, **pp; | |
| 1996/1029/sys/src/9/port/devssl.c:273,296 – 1997/0327/sys/src/9/port/devssl.c:262,268 | ||
| 1996/1029 | return c; | |
| 1995/1213 | } | |
| 1996/0531 |
| |
| 1995/1213 |
| |
| 1997/0327 | static void | |
| 1995/1213 | sslwstat(Chan *c, char *dp) { | |
| 1996/1029 | Dir d; | |
| 1996/1029/sys/src/9/port/devssl.c:308,314 – 1997/0327/sys/src/9/port/devssl.c:280,286 | ||
| 1996/1029 | s->perm = d.mode; | |
| 1995/1213 | } | |
| 1997/0327 | static void | |
| 1995/1213 | sslclose(Chan *c) { Dstate *s; | |
| 1996/1029/sys/src/9/port/devssl.c:335,341 – 1997/0327/sys/src/9/port/devssl.c:307,313 | ||
| 1996/1029 | sslhangup(s); | |
| 1995/1213 | if(s->c) | |
| 1996/0601 |
| |
| 1997/0327 | cclose(s->c); | |
| 1995/1213 | if(s->in.secret) free(s->in.secret); if(s->out.secret) | |
| 1996/1029/sys/src/9/port/devssl.c:349,364 – 1997/0327/sys/src/9/port/devssl.c:321,326 | ||
| 1995/1213 | } } | |
| 1996/1029 |
| |
| 1996/1029/sys/src/9/port/devssl.c:377,383 – 1997/0327/sys/src/9/port/devssl.c:339,345 | ||
| 1996/1029 | } while(sofar < n){ | |
| 1997/0327 | bl = devtab[s->c->type]->bread(s->c, Maxdmsg, 0); | |
| 1996/1029 | if(bl == 0) error(Ehungup); *l = bl; | |
| 1996/1029/sys/src/9/port/devssl.c:419,438 – 1997/0327/sys/src/9/port/devssl.c:381,386 | ||
| 1996/1029 | } } | |
| 1996/1029/sys/src/9/port/devssl.c:481,487 – 1997/0327/sys/src/9/port/devssl.c:429,435 | ||
| 1996/1029 | return first; } | |
| 1995/1217 |
| |
| 1997/0327 | static Block* | |
| 1995/1217 | sslbread(Chan *c, long n, ulong offset) | |
| 1995/1213 | { | |
| 1996/0531 | volatile struct { Dstate *s; } s; | |
| 1996/1029/sys/src/9/port/devssl.c:560,566 – 1997/0327/sys/src/9/port/devssl.c:508,514 | ||
| 1995/1217 | return b; | |
| 1995/1213 | } | |
| 1997/0327 | static long | |
| 1996/0223 | sslread(Chan *c, void *a, long n, ulong offset) | |
| 1995/1213 | { | |
| 1996/0531 | volatile struct { Block *b; } b; | |
| 1996/1029/sys/src/9/port/devssl.c:627,633 – 1997/0327/sys/src/9/port/devssl.c:575,581 | ||
| 1996/1029 | /* | |
| 1995/1215 | * use SSL record format, add in count and digest or encrypt */ | |
| 1997/0327 | static long | |
| 1995/1215 | sslbwrite(Chan *c, Block *b, ulong offset) | |
| 1995/1213 | { | |
| 1996/0531 | volatile struct { Dstate *s; } s; | |
| 1996/1029/sys/src/9/port/devssl.c:718,724 – 1997/0327/sys/src/9/port/devssl.c:666,672 | ||
| 1996/1029 | } | |
| 1995/1213 | ||
| 1996/1029 | m = BLEN(nb); | |
| 1997/0327 | devtab[s.s->c->type]->bwrite(s.s->c, nb, s.s->c->offset); | |
| 1996/1029 | s.s->c->offset += m; | |
| 1995/1215 | } | |
| 1996/0531 | qunlock(&s.s->out.q); | |
| 1996/1029/sys/src/9/port/devssl.c:776,782 – 1997/0327/sys/src/9/port/devssl.c:724,730 | ||
| 1996/1029 | setupRC4state(w->state, w->secret, w->slen); } | |
| 1996/0223 |
| |
| 1997/0327 | static long | |
| 1996/0223 | sslwrite(Chan *c, void *a, long n, ulong offset) { | |
| 1996/1029 | volatile struct { Dstate *s; } s; | |
| 1996/1029/sys/src/9/port/devssl.c:930,935 – 1997/0327/sys/src/9/port/devssl.c:878,900 | ||
| 1996/1029 | return n; | |
| 1995/1213 | } | |
| 1997/0327 | Dev ssldevtab = { devreset, sslinit, sslattach, devclone, sslwalk, sslstat, sslopen, devcreate, sslclose, sslread, sslbread, sslwrite, sslbwrite, devremove, sslwstat, }; | |
| 1995/1213 | ||
| 1995/1217 | static Block* encryptb(Dstate *s, Block *b, int offset) | |
| 1996/1029/sys/src/9/port/devssl.c:1039,1046 – 1997/0327/sys/src/9/port/devssl.c:1004,1011 | ||
| 1995/1215 | n = BLEN(b) - h; | |
| 1995/1213 | ||
| 1995/1215 | /* hash secret + message */ | |
| 1995/1218 |
| |
| 1997/0327 | s->hf(w->secret, w->slen, 0, &ss); s->hf(b->rp + h, n, 0, &ss); | |
| 1995/1213 | ||
| 1995/1215 | /* hash message id */ p = msgid; | |
| 1996/1029/sys/src/9/port/devssl.c:1049,1055 – 1997/0327/sys/src/9/port/devssl.c:1014,1020 | ||
| 1995/1215 | *p++ = n>>16; *p++ = n>>8; *p = n; | |
| 1995/1218 |
| |
| 1997/0327 | s->hf(msgid, 4, b->rp + offset, &ss); | |
| 1995/1217 | ||
| 1995/1218 | return b; | |
| 1995/1215 | } | |
| 1996/1029/sys/src/9/port/devssl.c:1070,1076 – 1997/0327/sys/src/9/port/devssl.c:1035,1041 | ||
| 1995/1217 | memset(&ss, 0, sizeof(ss)); | |
| 1996/1029 | /* hash secret */ | |
| 1995/1217 |
| |
| 1997/0327 | s->hf(w->secret, w->slen, 0, &ss); | |
| 1995/1217 | ||
| 1996/1029 | /* hash message */ h = s->diglen; | |
| 1996/1029/sys/src/9/port/devssl.c:1078,1084 – 1997/0327/sys/src/9/port/devssl.c:1043,1049 | ||
| 1996/1029 | n = BLEN(b) - h; if(n < 0) panic("checkdigestb"); | |
| 1997/0327 | s->hf(b->rp + h, n, 0, &ss); | |
| 1996/1029 | h = 0; } | |
| 1996/1029/sys/src/9/port/devssl.c:1089,1095 – 1997/0327/sys/src/9/port/devssl.c:1054,1060 | ||
| 1995/1217 | *p++ = n>>16; *p++ = n>>8; *p = n; | |
| 1995/1218 |
| |
| 1997/0327 | s->hf(msgid, 4, digest, &ss); | |
| 1995/1217 | ||
| 1996/1029 | if(memcmp(digest, inb->rp, s->diglen) != 0) | |
| 1995/1217 | error("bad digest"); | |