crypto: ecrdsa - Fix incorrect use of vli_cmp
[platform/kernel/linux-rpi.git] / crypto / ecrdsa.c
index 6a3fd09..f7ed430 100644 (file)
@@ -113,15 +113,15 @@ static int ecrdsa_verify(struct akcipher_request *req)
 
        /* Step 1: verify that 0 < r < q, 0 < s < q */
        if (vli_is_zero(r, ndigits) ||
-           vli_cmp(r, ctx->curve->n, ndigits) == 1 ||
+           vli_cmp(r, ctx->curve->n, ndigits) >= 0 ||
            vli_is_zero(s, ndigits) ||
-           vli_cmp(s, ctx->curve->n, ndigits) == 1)
+           vli_cmp(s, ctx->curve->n, ndigits) >= 0)
                return -EKEYREJECTED;
 
        /* Step 2: calculate hash (h) of the message (passed as input) */
        /* Step 3: calculate e = h \mod q */
        vli_from_le64(e, digest, ndigits);
-       if (vli_cmp(e, ctx->curve->n, ndigits) == 1)
+       if (vli_cmp(e, ctx->curve->n, ndigits) >= 0)
                vli_sub(e, e, ctx->curve->n, ndigits);
        if (vli_is_zero(e, ndigits))
                e[0] = 1;
@@ -137,7 +137,7 @@ static int ecrdsa_verify(struct akcipher_request *req)
        /* Step 6: calculate point C = z_1P + z_2Q, and R = x_c \mod q */
        ecc_point_mult_shamir(&cc, z1, &ctx->curve->g, z2, &ctx->pub_key,
                              ctx->curve);
-       if (vli_cmp(cc.x, ctx->curve->n, ndigits) == 1)
+       if (vli_cmp(cc.x, ctx->curve->n, ndigits) >= 0)
                vli_sub(cc.x, cc.x, ctx->curve->n, ndigits);
 
        /* Step 7: if R == r signature is valid */