X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=secnet.git;a=blobdiff_plain;f=secnet.h;h=5e66a175348c9bf6ccc84969a4e1a1632bd1d0ec;hp=037ef804aec8f42e38355265be9508400251a16d;hb=0118121ae6578c69527fb80a60294c48663033b7;hpb=4a1a591973e0be6f33a55b8f1fc5abc827f6969d diff --git a/secnet.h b/secnet.h index 037ef80..5e66a17 100644 --- a/secnet.h +++ b/secnet.h @@ -217,7 +217,7 @@ extern init_module random_module; extern init_module udp_module; extern init_module util_module; extern init_module site_module; -extern init_module transform_module; +extern init_module transform_cbcmac_module; extern init_module netlink_module; extern init_module rsa_module; extern init_module dh_module; @@ -368,10 +368,13 @@ struct site_if { also depend on internal factors (eg. time) and keep internal state. A struct transform_if only represents a particular type of transformation; instances of the transformation (eg. with - particular key material) have a different C type. */ + particular key material) have a different C type. The same + secret key will be used in opposite directions between a pair of + secnets; one of these pairs will get direction==False, the other True. */ typedef struct transform_inst_if *transform_createinstance_fn(void *st); -typedef bool_t transform_setkey_fn(void *st, uint8_t *key, int32_t keylen); +typedef bool_t transform_setkey_fn(void *st, uint8_t *key, int32_t keylen, + bool_t direction); typedef bool_t transform_valid_fn(void *st); /* 0: no key; 1: ok */ typedef void transform_delkey_fn(void *st); typedef void transform_destroyinstance_fn(void *st); @@ -397,7 +400,7 @@ struct transform_if { void *st; int32_t max_start_pad; /* these three are all <<< INT_MAX */ int32_t max_end_pad; - int32_t keylen; + int32_t keylen; /* 0 means give the transform exactly as much as there is */ transform_createinstance_fn *create; }; @@ -444,6 +447,7 @@ typedef void dh_makeshared_fn(void *st, uint8_t *secret, struct dh_if { void *st; int32_t len; /* Approximate size of modulus in bytes */ + int32_t ceil_len; /* Number of bytes just sufficient to contain modulus */ dh_makepublic_fn *makepublic; dh_makeshared_fn *makeshared; };