# Return to Revisions

4 of 4
Replaced potential copyright violating link to PDF version of book with an according link to the oficial publisher: Springer books.

# Gallant-Lambert-Vanstone method

I am experimenting with the GLV method but cannot manage to get the right results according to the literature.

I managed to find lambda, beta, split $$K$$ into $$k_1$$ and $$k_2$$ etc. for the curve I'm interested in.

According to the literature:

$$kP = k_1P + k_2\phi(P)$$

However, to get the right results, it seems to be needed to test if $$k_1$$ and $$k_2$$ are of the same sign, in which case a point addition should be applied. In the case of $$k_1$$ and $$k_2$$ being of different sings, one possibly needs to apply a subtraction.

Relevant part of code applying this method as is such:

BigInteger[] ba=splitK(k);
Point QP=new Point(beta.multiply(Q.x).mod(FIELD),Q.y);
Point A=wNAFMultiply(Q, ba,(byte)4);
Point B=wNAFMultiply(QP,ba,(byte)4);
if (ba.signum()==ba.signum()) // Where is this explained ????
return add(A,B);
else
return subtract(A,B);


It also follows that algo. 3.77 of the book “Guide to elliptic curve cryptography” probably does not work. Am I missing something obvious?