X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/blobdiff_plain/5b9f3d3788bafcba79c893b1afc6a1c77bc77d20..f1d5c89163540b40b808527bafa861ca3e5fd371:/server/keymgmt.c diff --git a/server/keymgmt.c b/server/keymgmt.c index 9e4bc5b4..3a20be0f 100644 --- a/server/keymgmt.c +++ b/server/keymgmt.c @@ -203,6 +203,8 @@ static int kh_loadpriv(key_file *kf, key *k, key_data *d, { int rc; const char *err; + dhge *K; + int ok; if ((rc = dh->ldpriv(kf, k, d, kd, t, e)) != 0) goto fail_0; @@ -211,6 +213,13 @@ static int kh_loadpriv(key_file *kf, key *k, key_data *d, a_format(e, "bad-group", "%s", err, A_END); goto fail_1; } + K = kd->grp->ops->mul(kd->grp, kd->k, 0); + ok = kd->grp->ops->eq(kd->grp, kd->K, K); + kd->grp->ops->freege(kd->grp, K); + if (!ok) { + a_format(e, "incorrect-public-key", A_END); + goto fail_1; + } return (0); fail_1: