0fef006165
Switching to test vector files that contain vectors for one curve only. This covers more test cases, allows to skip test vectors for curves not supported by a library. ecdh_test.json contains tests for multiple curves, but is somewhat limited in coverage. Sanity checks for using expected files are now based on the JSON schema. I.e. if the expected and actual JSON schema of the test vector file match, then the test should pass, otherwise there is a problem with the test setup. Removing tests covered by test vectors from EcdhTest.java. Adding timing test for ECDH: The tests require to run on a system without much noise: E.g. running a regular unit test is too noisy. The confidence level is too low to fail the test: ECDH timing test:secp256r1 Timing for point 0 avg: 4062844.9155273438 std dev: 452064.39579909603 cv:0.11126794283271814 Timing for point 1 avg: 4077776.20703125 std dev: 457662.5685428607 cv:0.1122333706675025 Point 0 multiplication is faster: 1152 Running the same test locally adds less noise. The ratio avg / std dev is 10 times smaller. Here the test run shows that time of a point multiplication depends on the point that is multiplied. ECDH timing test:secp256r1 Timing for point 0 avg: 1611269.970703125 std dev: 30329.312528547747 cv:0.018823234516877802 Timing for point 1 avg: 1618931.3715820312 std dev: 29267.753517245954 cv:0.01807843990857086 Point 0 multiplication is faster: 1655 NOKEYCHECK=True PiperOrigin-RevId: 232286329 GitOrigin-RevId: 1bbbd6422c8fd64f3d5ea2fc3ecb94c6bd7bc171