[curves] Microsoft ECCLib for "NUMS" curves
Samuel Neves
sneves at dei.uc.pt
Mon Jun 30 03:08:19 PDT 2014
I've fixed up the 256-bit arithmetic to run on Linux; the arithmetic and curve arithmetic tests pass, at least. The
assembly code has a few extra instructions at the top of each function to adjust the arguments to the correct calling
convention, so there may be a slight slowdown compared to the original.
Here are the results on Sandy Bridge, compiled with gcc-4.8 -O3 -march=corei7-avx:
> TESTING
> --------------------------------------------------------------------------------------------------------
>
> Curve arithmetic: Weierstrass a=-3 over GF(2^256-189)
>
> Point doubling tests .................................................................... PASSED
> (Complete) point addition tests ......................................................... PASSED
> Variable-base scalar multiplication tests ............................................... PASSED
> Fixed-base scalar multiplication tests .................................................. PASSED
> Double-scalar multiplication tests ...................................................... PASSED
>
> --------------------------------------------------------------------------------------------------------
>
> Curve arithmetic: twisted Edwards a=-1 over GF(2^256-189)
>
> Point doubling tests .................................................................... PASSED
> Point addition tests .................................................................... PASSED
> Variable-base scalar multiplication tests ............................................... PASSED
> Fixed-base scalar multiplication tests .................................................. PASSED
> Double-scalar multiplication tests ...................................................... PASSED
>
>
> BENCHMARKING
> --------------------------------------------------------------------------------------------------------
>
> Curve arithmetic: Weierstrass a=-3 over GF(2^256-189)
>
> Point doubling runs in .......................................... 692 cycles
> (Complete) point addition runs in ............................... 1800 cycles
> Variable-base scalar mul runs in ................................ 283459 cycles
> Fixed-base scalar mul (memory model=MEM_LARGE) runs in .......... 110170 cycles
> Double-base scalar mul (memory model=MEM_LARGE) runs in ......... 308682 cycles
>
> --------------------------------------------------------------------------------------------------------
>
> Curve arithmetic: twisted Edwards a=-1 over GF(2^256-189)
>
> Point doubling runs in .......................................... 561 cycles
> (Complete) point addition runs in ............................... 937 cycles
> Variable-base scalar mul runs in ................................ 229518 cycles
> Fixed-base scalar mul (memory model=MEM_LARGE) runs in .......... 84654 cycles
> Double-base scalar mul (memory model=MEM_LARGE) runs in ......... 242049 cycles
More information about the Curves
mailing list