Curve.hs (914B)
1 {-# LANGUAGE BangPatterns #-} 2 {-# LANGUAGE MagicHash #-} 3 {-# LANGUAGE NumericUnderscores #-} 4 {-# LANGUAGE UnboxedTuples #-} 5 6 module Montgomery.Curve ( 7 tests 8 ) where 9 10 import qualified Data.Word.Wider as W 11 import qualified Numeric.Montgomery.Secp256k1.Curve as C 12 import Test.Tasty 13 import qualified Test.Tasty.HUnit as H 14 15 add :: H.Assertion 16 add = do 17 H.assertBool mempty (W.eq_vartime (1 + 1) (C.from (1 + 1))) 18 H.assertBool mempty (W.eq_vartime (0 + 1) (C.from (0 + 1))) 19 let !m = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F 20 !x = 2 ^ (256 :: Word) - 1 21 !mm = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F 22 !mx = 2 ^ (256 :: Word) - 1 23 H.assertBool mempty (W.eq_vartime 0 (C.from mm)) 24 H.assertBool mempty (W.eq_vartime (x - m) (C.from (mx - mm))) 25 26 tests :: TestTree 27 tests = testGroup "montgomery tests (curve)" [ 28 H.testCase "add" add 29 ] 30