X-Git-Url: https://git.distorted.org.uk/~mdw/secnet/blobdiff_plain/31dd07884afd1f1d87d398bf344e1ba3a71e293b..HEAD:/secnet.h diff --git a/secnet.h b/secnet.h index 21b94c0..818e946 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,12 +548,15 @@ 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; + return problem == transform_apply_seqrange || + problem == transform_apply_seqdupe; } typedef transform_apply_return transform_apply_fn(void *st,