4272N/A * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. 4272N/A * Use is subject to license terms. 4272N/A * This library is free software; you can redistribute it and/or 4272N/A * modify it under the terms of the GNU Lesser General Public 4272N/A * License as published by the Free Software Foundation; either 4272N/A * version 2.1 of the License, or (at your option) any later version. 4272N/A * This library is distributed in the hope that it will be useful, 4272N/A * but WITHOUT ANY WARRANTY; without even the implied warranty of 4272N/A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4272N/A * Lesser General Public License for more details. 4272N/A * You should have received a copy of the GNU Lesser General Public License 4272N/A * along with this library; if not, write to the Free Software Foundation, 4272N/A * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 4272N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 4272N/A/* ********************************************************************* 1674N/A * The Original Code is the elliptic curve math library for binary polynomial field curves. 1674N/A * The Initial Developer of the Original Code is 1674N/A * Portions created by the Initial Developer are Copyright (C) 2003 1674N/A * the Initial Developer. All Rights Reserved. 1674N/A * Sheueling Chang-Shantz <sheueling.chang@sun.com>, 1674N/A * Stephen Fung <fungstep@hotmail.com>, and 1674N/A * Douglas Stebila <douglas@stebila.ca>, Sun Microsystems Laboratories. 1674N/A *********************************************************************** */ 1674N/A/* Fast reduction for polynomials over a 193-bit curve. Assumes reduction 1674N/A * polynomial with terms {193, 15, 0}. */ 1674N/A /* u[6] only has 2 significant bits */ 1674N/A u[
3] ^= (z <<
14) ^ (z >>
1);
1674N/A u[
2] ^= (z <<
14) ^ (z >>
1);
1674N/A u[
1] ^= (z <<
14) ^ (z >>
1);
1674N/A z = u[
3] >>
1;
/* z only has 63 significant bits */ 1674N/A /* u[12] only has 2 significant bits */ 1674N/A u[
6] ^= (z <<
14) ^ (z >>
1);
1674N/A u[
5] ^= (z <<
14) ^ (z >>
1);
1674N/A u[
4] ^= (z <<
14) ^ (z >>
1);
1674N/A u[
3] ^= (z <<
14) ^ (z >>
1);
1674N/A u[
2] ^= (z <<
14) ^ (z >>
1);
1674N/A u[
1] ^= (z <<
14) ^ (z >>
1);
1674N/A z = u[
6] >>
1;
/* z only has 31 significant bits */ 1674N/A u[
12] = u[
11] = u[
10] = u[
9] = u[
8] = u[
7] = 0;
1674N/A/* Fast squaring for polynomials over a 193-bit curve. Assumes reduction 1674N/A * polynomial with terms {193, 15, 0}. */ 1674N/A/* Fast multiplication for polynomials over a 193-bit curve. Assumes 1674N/A * reduction polynomial with terms {193, 15, 0}. */ 1674N/A/* Wire in fast field arithmetic for 193-bit curves. */