@@ -762,14 +762,14 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t
762
762
/* [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] */
763
763
/* [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] */
764
764
765
- d = c * (R0 >> 4 ) + t0 ;
765
+ d = ( c * ((( uint64_t ) R0 >> 4 ) << 7 ) >> 7 ) + t0 ; /* XXX */
766
766
VERIFY_BITS (d , 56 );
767
767
/* [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] */
768
768
r [0 ] = d & M ; d >>= 26 ;
769
769
VERIFY_BITS (r [0 ], 26 );
770
770
VERIFY_BITS (d , 30 );
771
771
/* [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 */
773
773
VERIFY_BITS (d , 53 );
774
774
VERIFY_CHECK (d <= 0x10000003FFFFBFULL );
775
775
/* [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
1036
1036
/* [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] */
1037
1037
/* [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] */
1038
1038
1039
- d = c * (R0 >> 4 ) + t0 ;
1039
+ d = ( c * (( R0 >> 4 ) << 7 ) >> 7 ) + t0 ; /* XXX */
1040
1040
VERIFY_BITS (d , 56 );
1041
1041
/* [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] */
1042
1042
r [0 ] = d & M ; d >>= 26 ;
1043
1043
VERIFY_BITS (r [0 ], 26 );
1044
1044
VERIFY_BITS (d , 30 );
1045
1045
/* [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 */
1047
1047
VERIFY_BITS (d , 53 );
1048
1048
VERIFY_CHECK (d <= 0x10000003FFFFBFULL );
1049
1049
/* [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