16e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrompackage org.bouncycastle.math.ec;
26e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
36e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom/**
46e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Class holding precomputation data for the WNAF (Window Non-Adjacent Form)
56e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * algorithm.
66e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom */
76e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromclass WNafPreCompInfo implements PreCompInfo
86e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom{
96e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    /**
106e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     * Array holding the precomputed <code>ECPoint</code>s used for the Window
116e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     * NAF multiplication in <code>
126e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     * {@link org.bouncycastle.math.ec.multiplier.WNafMultiplier.multiply()
136e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     * WNafMultiplier.multiply()}</code>.
146e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     */
156e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    private ECPoint[] preComp = null;
166e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
176e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    /**
186e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     * Holds an <code>ECPoint</code> representing twice(this). Used for the
196e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     * Window NAF multiplication in <code>
206e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     * {@link org.bouncycastle.math.ec.multiplier.WNafMultiplier.multiply()
216e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     * WNafMultiplier.multiply()}</code>.
226e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     */
236e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    private ECPoint twiceP = null;
246e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
256e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    protected ECPoint[] getPreComp()
266e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
276e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        return preComp;
286e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
296e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
306e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    protected void setPreComp(ECPoint[] preComp)
316e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
326e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        this.preComp = preComp;
336e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
346e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
356e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    protected ECPoint getTwiceP()
366e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
376e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        return twiceP;
386e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
396e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
406e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    protected void setTwiceP(ECPoint twiceThis)
416e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
426e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        this.twiceP = twiceThis;
436e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
446e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom}
45