// test subtract // // input data sections contain: // // u, v, u-v, v-u // #include #include #include #include "impl.h" #define SIZE 66 // 256-bit hex strings have length 64 + '\n' + '\0' int main( void) { char ustr[SIZE], vstr[SIZE], astr[SIZE], msg[100]; int count = 0; C u, v, r, a; D w; printf( "CONSTANT_TIME = %i\n", CONSTANT_TIME); while( fgets( ustr, SIZE, stdin) && fgets( vstr, SIZE, stdin) ) { ++count; convert( u, ustr); print( "u", u, N); convert( v, vstr); print( "v", v, N); for( int i = 1; i < 3; ++i) { switch(i) { case 1: sub( r, u, v); print( "u-v", r, N); break; case 2: sub( r, v, u); print( "v-u", r, N); break; } sprintf( msg, "case %i test%i", count, i); // w = r // for( int i = 0; i < N; ++i) w[i] = r[i]; for( int i = N; i < NN; ++i) w[i] = 0; // r = w mod m // mod( r, w); if( debug) print( "after mod", r, N); adjust(r); if( debug) print( "after adjust", r, N); if( !fgets( astr, SIZE, stdin)) abort(); // expected answer convert( a, astr); if( memcmp( r, a, sizeof(r)) == 0) printf( "%s passed\n", msg); else { printf( "%s failed\n", msg); print( msg, a, N); } } } return 0; }