jdk/src/share/native/sun/security/ec/impl/ecp_224.c
changeset 8175 27e80dc06104
parent 5506 202f599c92aa
child 9035 1255eb81cc2f
equal deleted inserted replaced
8165:b67d8b1f4e46 8175:27e80dc06104
    51  *********************************************************************** */
    51  *********************************************************************** */
    52 /*
    52 /*
    53  * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
    53  * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved.
    54  * Use is subject to license terms.
    54  * Use is subject to license terms.
    55  */
    55  */
    56 
       
    57 #pragma ident   "%Z%%M% %I%     %E% SMI"
       
    58 
    56 
    59 #include "ecp.h"
    57 #include "ecp.h"
    60 #include "mpi.h"
    58 #include "mpi.h"
    61 #include "mplogic.h"
    59 #include "mplogic.h"
    62 #include "mpi-priv.h"
    60 #include "mpi-priv.h"
   249                 /* implement r = (a3a,a2,a1,a0)
   247                 /* implement r = (a3a,a2,a1,a0)
   250                         +(a5a, a4,a3b,  0)
   248                         +(a5a, a4,a3b,  0)
   251                         +(  0, a6,a5b,  0)
   249                         +(  0, a6,a5b,  0)
   252                         -(  0    0,    0|a6b, a6a|a5b )
   250                         -(  0    0,    0|a6b, a6a|a5b )
   253                         -(  a6b, a6a|a5b, a5a|a4b, a4a|a3b ) */
   251                         -(  a6b, a6a|a5b, a5a|a4b, a4a|a3b ) */
   254                 MP_ADD_CARRY (r1, a3b, r1, 0,     carry);
   252                 MP_ADD_CARRY_ZERO (r1, a3b, r1, carry);
   255                 MP_ADD_CARRY (r2, a4 , r2, carry, carry);
   253                 MP_ADD_CARRY (r2, a4 , r2, carry, carry);
   256                 MP_ADD_CARRY (r3, a5a, r3, carry, carry);
   254                 MP_ADD_CARRY (r3, a5a, r3, carry, carry);
   257                 MP_ADD_CARRY (r1, a5b, r1, 0,     carry);
   255                 MP_ADD_CARRY_ZERO (r1, a5b, r1, carry);
   258                 MP_ADD_CARRY (r2, a6 , r2, carry, carry);
   256                 MP_ADD_CARRY (r2, a6 , r2, carry, carry);
   259                 MP_ADD_CARRY (r3,   0, r3, carry, carry);
   257                 MP_ADD_CARRY (r3,   0, r3, carry, carry);
   260 
   258 
   261                 MP_SUB_BORROW(r0, a4a_a3b, r0, 0,     carry);
   259                 MP_SUB_BORROW(r0, a4a_a3b, r0, 0,     carry);
   262                 MP_SUB_BORROW(r1, a5a_a4b, r1, carry, carry);
   260                 MP_SUB_BORROW(r1, a5a_a4b, r1, carry, carry);
   273                 /* if the value is negative, r3 has a 2's complement
   271                 /* if the value is negative, r3 has a 2's complement
   274                  * high value */
   272                  * high value */
   275                 r3b = (int)(r3 >>32);
   273                 r3b = (int)(r3 >>32);
   276                 while (r3b > 0) {
   274                 while (r3b > 0) {
   277                         r3 &= 0xffffffff;
   275                         r3 &= 0xffffffff;
   278                         MP_ADD_CARRY(r1,((mp_digit)r3b) << 32, r1, 0, carry);
   276                         MP_ADD_CARRY_ZERO(r1,((mp_digit)r3b) << 32, r1, carry);
   279                         if (carry) {
   277                         if (carry) {
   280                                 MP_ADD_CARRY(r2,  0, r2, carry, carry);
   278                                 MP_ADD_CARRY(r2,  0, r2, carry, carry);
   281                                 MP_ADD_CARRY(r3,  0, r3, carry, carry);
   279                                 MP_ADD_CARRY(r3,  0, r3, carry, carry);
   282                         }
   280                         }
   283                         MP_SUB_BORROW(r0, r3b, r0, 0, carry);
   281                         MP_SUB_BORROW(r0, r3b, r0, 0, carry);
   288                         }
   286                         }
   289                         r3b = (int)(r3 >>32);
   287                         r3b = (int)(r3 >>32);
   290                 }
   288                 }
   291 
   289 
   292                 while (r3b < 0) {
   290                 while (r3b < 0) {
   293                         MP_ADD_CARRY (r0, 1, r0, 0,     carry);
   291                         MP_ADD_CARRY_ZERO (r0, 1, r0, carry);
   294                         MP_ADD_CARRY (r1, MP_DIGIT_MAX <<32, r1, carry, carry);
   292                         MP_ADD_CARRY (r1, MP_DIGIT_MAX <<32, r1, carry, carry);
   295                         MP_ADD_CARRY (r2, MP_DIGIT_MAX, r2, carry, carry);
   293                         MP_ADD_CARRY (r2, MP_DIGIT_MAX, r2, carry, carry);
   296                         MP_ADD_CARRY (r3, MP_DIGIT_MAX >> 32, r3, carry, carry);
   294                         MP_ADD_CARRY (r3, MP_DIGIT_MAX >> 32, r3, carry, carry);
   297                         r3b = (int)(r3 >>32);
   295                         r3b = (int)(r3 >>32);
   298                 }
   296                 }