diff options
author | rsc <devnull@localhost> | 2005-02-13 05:59:29 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2005-02-13 05:59:29 +0000 |
commit | 6e527fbc4d8f404a7eec934e5c9efaaaa92ffdff (patch) | |
tree | 4d9ed63c88e5a8dd8a4d5bd3582e7d5e6a24065f /src/cmd/auth/secstore/SConn.h | |
parent | 0f8ec41b0ae522b73085fa1662461e6351ba7e54 (diff) | |
download | plan9port-6e527fbc4d8f404a7eec934e5c9efaaaa92ffdff.tar.gz plan9port-6e527fbc4d8f404a7eec934e5c9efaaaa92ffdff.tar.bz2 plan9port-6e527fbc4d8f404a7eec934e5c9efaaaa92ffdff.zip |
new auth
Diffstat (limited to 'src/cmd/auth/secstore/SConn.h')
-rw-r--r-- | src/cmd/auth/secstore/SConn.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/cmd/auth/secstore/SConn.h b/src/cmd/auth/secstore/SConn.h new file mode 100644 index 00000000..9a428d83 --- /dev/null +++ b/src/cmd/auth/secstore/SConn.h @@ -0,0 +1,26 @@ +// delimited, authenticated, encrypted connection +enum{ Maxmsg=4096 }; // messages > Maxmsg bytes are truncated +typedef struct SConn SConn; + +extern SConn* newSConn(int); // arg is open file descriptor +struct SConn{ + void *chan; + int secretlen; + int (*secret)(SConn*, uchar*, int);// + int (*read)(SConn*, uchar*, int); // <0 if error; errmess in buffer + int (*write)(SConn*, uchar*, int); + void (*free)(SConn*); // also closes file descriptor +}; +// secret(s,b,dir) sets secret for digest, encrypt, using the secretlen +// bytes in b to form keys for the two directions; +// set dir=0 in client, dir=1 in server + +// error convention: write !message in-band +extern void writerr(SConn*, char*); +extern int readstr(SConn*, char*); // call with buf of size Maxmsg+1 + // returns -1 upon error, with error message in buf + +extern void *emalloc(ulong); /* dies on failure; clears memory */ +extern void *erealloc(void *, ulong); +extern char *estrdup(char *); + |