@@ -762,14 +762,14 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t
762762 /* [d 0 0 0 0 0 0 0 -d*R1 r9+(c<<22)-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
763763 /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
764764
765- d = c * (R0 >> 4 ) + t0 ;
765+ d = ( c * ((( uint64_t ) R0 >> 4 ) << 7 ) >> 7 ) + t0 ; /* XXX */
766766 VERIFY_BITS (d , 56 );
767767 /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 d-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
768768 r [0 ] = d & M ; d >>= 26 ;
769769 VERIFY_BITS (r [0 ], 26 );
770770 VERIFY_BITS (d , 30 );
771771 /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1+d r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
772- d += c * (R1 >> 4 ) + t1 ;
772+ d += ( c * ((( uint64_t ) R1 >> 4 ) << 10 ) >> 10 ) + t1 ; /* XXX same */
773773 VERIFY_BITS (d , 53 );
774774 VERIFY_CHECK (d <= 0x10000003FFFFBFULL );
775775 /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 d-c*R1>>4 r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
@@ -1036,14 +1036,14 @@ SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint32_t *r, const uint32_t
10361036 /* [d 0 0 0 0 0 0 0 -d*R1 r9+(c<<22)-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
10371037 /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
10381038
1039- d = c * (R0 >> 4 ) + t0 ;
1039+ d = ( c * (( R0 >> 4 ) << 7 ) >> 7 ) + t0 ; /* XXX */
10401040 VERIFY_BITS (d , 56 );
10411041 /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 d-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
10421042 r [0 ] = d & M ; d >>= 26 ;
10431043 VERIFY_BITS (r [0 ], 26 );
10441044 VERIFY_BITS (d , 30 );
10451045 /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1+d r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
1046- d += c * (R1 >> 4 ) + t1 ;
1046+ d += ( c * (( R1 >> 4 ) << 10 ) >> 10 ) + t1 ; /* XXX */
10471047 VERIFY_BITS (d , 53 );
10481048 VERIFY_CHECK (d <= 0x10000003FFFFBFULL );
10491049 /* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 d-c*R1>>4 r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
0 commit comments