summaryrefslogtreecommitdiff
path: root/src/lib/crypt.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/crypt.c')
-rw-r--r--src/lib/crypt.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lib/crypt.c b/src/lib/crypt.c
index e4cf7885..cbbb9bc2 100644
--- a/src/lib/crypt.c
+++ b/src/lib/crypt.c
@@ -887,11 +887,17 @@ int crypt_get_headsz(struct crypt_ctx * ctx)
int crypt_rekey(struct crypt_ctx * ctx,
struct crypt_sk * sk)
{
+ int ret;
+
assert(ctx != NULL);
assert(sk != NULL);
assert(ctx->kr != NULL);
- return keyrot_rekey(ctx->kr, sk->key, sk->epoch) == 0 ? 0 : -ECRYPT;
+ ret = keyrot_rekey(ctx->kr, sk->key, sk->epoch);
+ if (ret == -EREPLAY)
+ return -EREPLAY;
+
+ return ret == 0 ? 0 : -ECRYPT;
}
int crypt_get_tagsz(struct crypt_ctx * ctx)