X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=secnet.git;a=blobdiff_plain;f=transform-common.h;fp=transform-common.h;h=b3c70a8d30e3bcc49818547b495276330892521d;hp=0000000000000000000000000000000000000000;hb=92a7d254975db245c3320855515bffc1aebda9e4;hpb=9018e07aec9e5a32e85b03d997a272c40ff2d915 diff --git a/transform-common.h b/transform-common.h new file mode 100644 index 0000000..b3c70a8 --- /dev/null +++ b/transform-common.h @@ -0,0 +1,56 @@ + +#ifndef TRANSFORM_COMMON_H +#define TRANSFORM_COMMON_H + +#define KEYED_CHECK do{ \ + if (!ti->keyed) { \ + *errmsg="transform unkeyed"; \ + return 1; \ + } \ + }while(0) + +#define SEQNUM_CHECK(seqnum, max_skew) do{ \ + uint32_t skew=seqnum-ti->lastrecvseq; \ + if (skew<0x8fffffff) { \ + /* Ok */ \ + ti->lastrecvseq=seqnum; \ + } else if ((0-skew)keyed; \ + } + +#define TRANSFORM_DESTROY \ + static void transform_destroy(void *sst) \ + { \ + struct transform_inst *st=sst; \ + \ + FILLZERO(*st); /* Destroy key material */ \ + free(st); \ + } + +#define TRANSFORM_CREATE_CORE \ + struct transform_inst *ti; \ + ti=safe_malloc(sizeof(*ti),"transform_create"); \ + /* mlock XXX */ \ + ti->ops.st=ti; \ + ti->ops.setkey=transform_setkey; \ + ti->ops.valid=transform_valid; \ + ti->ops.delkey=transform_delkey; \ + ti->ops.forwards=transform_forward; \ + ti->ops.reverse=transform_reverse; \ + ti->ops.destroy=transform_destroy; \ + ti->keyed=False; + +#endif /*TRANSFORM_COMMON_H*/