X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;ds=sidebyside;f=base%2Fchiark-tcl.h;h=10141825f3f3d1f35fd052014e8e7436edba378c;hb=2fbe5a5eee8d5d28af55ea9e161d89543a9d8565;hp=06c98fce518d12654e61912823671b0c2ce58034;hpb=9af88eb2e41e2b6a73643948e31262eee08c5400;p=chiark-tcl.git diff --git a/base/chiark-tcl.h b/base/chiark-tcl.h index 06c98fc..1014182 100644 --- a/base/chiark-tcl.h +++ b/base/chiark-tcl.h @@ -17,6 +17,9 @@ * hbytes overwrite VAR START VALUE * hbytes trimleft VAR removes any leading 0 octets * hbytes repeat VALUE COUNT => COUNT copies of VALUE + * hbytes zeroes COUNT => COUNT zero bytes + * hbytes random COUNT => COUNT random bytes + * hbytes xor VAR VALUE $VAR (+)= VALUE * * hbytes ushort2h LONG => LONG must be <2^16, returns as hex * hbytes h2ushort HEX => |HEX| must be 2 bytes, returns as ulong @@ -28,8 +31,13 @@ * +1 A is B plus a nonempty suffix (ie, A has B as a prefix) * +2 A is lexically later than B and does not have B as a prefix * - * hbytes pkcs5 pa|ua VAR ALG => worked? (always 1 for p) - * hbytes pkcs5 pn|un VAR BLOCKSIZE => worked? (always 1 for p) + * hbytes pad pa|ua VAR ALG METH [METHARGS] => worked? (always 1 for p) + * hbytes pad pn|un VAR BS METH [METHARGS] => worked? (always 1 for p) + * hbytes pad pa|pn VAR ALG|BS pkcs5 => 1 + * hbytes pad ua|un VAR ALG|BS pkcs5 => worked? + * hbytes pad pa|pn VAR ALG|BS rfc2406 NXTHDR => 1 + * hbytes pad ua|un VAR ALG|BS rfc2406 NXTHDRVAR => worked? + * * hbytes blockcipher d|e VAR ALG KEY MODE [IV] => IV * hbytes blockcipher mac MSG ALG KEY MODE IV => final block * hbytes blockcipher prop PROPERTY ALG => property value @@ -67,6 +75,7 @@ * HBYTES LENGTH OVERRUN block too long * HBYTES LENGTH RANGE input length or offset is -ve or silly * HBYTES LENGTH UNDERRUN block too short (or offset too big) + * HBYTES LENGTH MISMATCH when blocks must be exactly same length * HBYTES SYNTAX supposed hex block had wrong syntax * HBYTES VALUE OVERFLOW value to be conv'd to hex too big/long * SOCKADDR AFUNIX LENGTH path for AF_UNIX socket too long @@ -77,6 +86,8 @@ * ULONG BITCOUNT UNDERRUN bitfields add up to less than 32 * ULONG VALUE NEGATIVE attempt convert -ve integers to ulong * ULONG VALUE OVERFLOW converted value does not fit in result + * TUNTAP IFNAME LENGTH tun/tap interface name too long + * TUNTAP MTU OVERRUN tun/tap mtu limited to 2^16 bytes * * Refs: HMAC: RFC2104 */ @@ -169,10 +180,40 @@ int sockaddr_len(const SockAddr_Value*); const struct sockaddr *sockaddr_addr(const SockAddr_Value*); void sockaddr_free(const SockAddr_Value*); +/* from scriptinv.c */ + +typedef struct { /* semi-opaque - read only, and then only where commented */ + Tcl_Interp *ip; /* valid, non-0 and useable if set */ + Tcl_Obj *obj; /* non-0 iff set (but only test for 0/non-0) */ + int llength; +} ScriptToInvoke; + +void scriptinv_init(ScriptToInvoke *si); +int scriptinv_set(ScriptToInvoke *si, Tcl_Interp *ip, Tcl_Obj *newscript); +void scriptinv_cancel(ScriptToInvoke *si); /* then don't invoke */ + /* no separate free function - just cancel */ + +void scriptinv_invoke(ScriptToInvoke *si, int argc, Tcl_Obj **argv); + +/* from idtable.c */ + +typedef struct { + const char *const prefix; + int n; + void **a; +} IdDataTable; + +extern Tcl_ObjType tabledataid_nearlytype; +int tabledataid_parse(Tcl_Interp *ip, Tcl_Obj *o, IdDataTable *tab); + /* from dgram.c */ -extern Tcl_ObjType dgramsockid_type; -typedef struct DgramSocket *DgramSockID; +extern IdDataTable dgram_socks; +int newfdposixerr(Tcl_Interp *ip, int fd, const char *m); + +/* from tuntap.c */ + +extern IdDataTable tuntap_socks; /* from hook.c */ @@ -237,7 +278,7 @@ void memxor(Byte *dest, const Byte *src, int l); typedef struct { const char *name; int pad, use_algname; -} PadMethod; +} PadOp; extern Tcl_ObjType blockcipherkey_type; @@ -269,7 +310,6 @@ typedef struct { typedef struct { const char *name; int blocksize, schedule_size, key_min, key_max; - void (*byteswap)(void *block); BlockCipherPerDirectionInfo encrypt, decrypt; } BlockCipherAlgInfo;