X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-tcl.git;a=blobdiff_plain;f=base%2Fchiark-tcl.h;h=06c98fce518d12654e61912823671b0c2ce58034;hp=0f38890875e7ad304be3dda64f073fd6610a39d8;hb=9af88eb2e41e2b6a73643948e31262eee08c5400;hpb=743de63e7b3214a5abc748ec0fa90160b6983551 diff --git a/base/chiark-tcl.h b/base/chiark-tcl.h index 0f38890..06c98fc 100644 --- a/base/chiark-tcl.h +++ b/base/chiark-tcl.h @@ -32,16 +32,18 @@ * hbytes pkcs5 pn|un VAR BLOCKSIZE => worked? (always 1 for p) * 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 * * hbytes hash ALG MESSAGE => hash * hbytes hmac ALG MESSAGE KEY [MACLENGTH] => mac + * hbytes hash-prop PROPERTY ALG => property value * * ulong ul2int ULONG => INT can fail if >INT_MAX * ulong int2ul INT => ULONG can fail if <0 * ulong mask A B => A & B * ulong add A B => A + B (mod 2^32) * ulong subtract A B => A - B (mod 2^32) - * ulong compare A B => 0/-1/1 + * ulong compare A B => 0 -1 (AB) * ulong shift l|r ULONG BITS fails if BITS >32 * * ulong ul2bitfields VALUE [SIZE TYPE [TYPE-ARG...] ...] => 0/1 @@ -55,6 +57,27 @@ * uint VARNAME/VALUE (VARNAME if ul2bitfields; * ulong VARNAME/VALUE VALUE if bitfields2ul) * + * Error codes + * + * HBYTES BLOCKCIPHER CRYPTFAIL CRYPT block cipher mode failed somehow (!) + * HBYTES BLOCKCIPHER CRYPTFAIL MAC HMAC failed somehow (!) + * HBYTES BLOCKCIPHER LENGTH block cipher input has unsuitable length + * HBYTES BLOCKCIPHER PARAMS key or iv not suitable + * HBYTES HMAC PARAMS key, input or output size not suitable + * 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 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 + * SOCKADDR SYNTAX IPV4 bad IPv4 socket address &/or port + * SOCKADDR SYNTAX OTHER bad socket addr, couldn't tell what kind + * ULONG BITCOUNT NEGATIVE -ve bitcount specified where not allowed + * ULONG BITCOUNT OVERRUN attempt to use more than 32 bits + * 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 + * * Refs: HMAC: RFC2104 */ @@ -153,7 +176,7 @@ typedef struct DgramSocket *DgramSockID; /* from hook.c */ -int staticerr(Tcl_Interp *ip, const char *m); +int staticerr(Tcl_Interp *ip, const char *m, const char *ec); int posixerr(Tcl_Interp *ip, int errnoval, const char *m); void objfreeir(Tcl_Obj *o); int get_urandom(Tcl_Interp *ip, Byte *buffer, int l); @@ -220,6 +243,11 @@ extern Tcl_ObjType blockcipherkey_type; /* from algtables.c */ +typedef struct { + const char *name; + int int_offset; +} BlockCipherPropInfo, HashAlgPropInfo; + typedef struct { const char *name; int hashsize, blocksize, statesize;