X-Git-Url: https://git.distorted.org.uk/~mdw/secnet/blobdiff_plain/14f78812a935c8f050f12112c19f359eb12f0686..2ad8dd37d1b9c4815539fa05a0839f07713d5e38:/secnet.h diff --git a/secnet.h b/secnet.h index 361c49e..f2840db 100644 --- a/secnet.h +++ b/secnet.h @@ -402,8 +402,8 @@ struct resolver_if { /* RANDOMSRC interface */ -/* Return some random data. Returns TRUE for success. */ -typedef bool_t random_fn(void *st, int32_t bytes, uint8_t *buff); +/* Return some random data. Cannot fail. */ +typedef void random_fn(void *st, int32_t bytes, uint8_t *buff); struct random_if { void *st; @@ -548,9 +548,17 @@ typedef enum { transform_apply_ok = 0, /* all is well (everyone may assume==0) */ transform_apply_err = 1, /* any other problem */ transform_apply_seqrange = 2, - /* message decrypted but sequence number was out of range */ + /* message decrypted but sequence number was out of recent range */ + transform_apply_seqdupe = 3, + /* message decrypted but was dupe of recent packet */ } transform_apply_return; +static inline bool_t +transform_apply_return_badseq(transform_apply_return problem) { + return problem == transform_apply_seqrange || + problem == transform_apply_seqdupe; +} + typedef transform_apply_return transform_apply_fn(void *st, struct buffer_if *buf, const char **errmsg); @@ -566,7 +574,7 @@ struct transform_inst_if { struct transform_if { void *st; - int capab_transformnum; + int capab_bit; int32_t keylen; /* <<< INT_MAX */ transform_createinstance_fn *create; };