diff --git a/Crypto/PubKey/ECC/Prim.hs b/Crypto/PubKey/ECC/Prim.hs index 2428fc8..a4c10b5 100644 --- a/Crypto/PubKey/ECC/Prim.hs +++ b/Crypto/PubKey/ECC/Prim.hs @@ -4,6 +4,7 @@ module Crypto.PubKey.ECC.Prim ( scalarGenerate , pointAdd + , pointNegate , pointDouble , pointBaseMul , pointMul diff --git a/tests/KAT_PubKey/ECC.hs b/tests/KAT_PubKey/ECC.hs index 9c6a923..59e43c2 100644 --- a/tests/KAT_PubKey/ECC.hs +++ b/tests/KAT_PubKey/ECC.hs @@ -155,6 +155,13 @@ eccTests = testGroup "ECC" p2 = ECC.pointMul aCurve r2 curveGen pR = ECC.pointMul aCurve ((r1 + r2) `mod` curveN) curveGen in pR `propertyEq` ECC.pointAdd aCurve p1 p2 + , testProperty "point-negate-add" $ \aCurve -> do + p <- arbitraryPoint aCurve + let o = ECC.pointAdd aCurve p (ECC.pointNegate aCurve p) + return $ ECC.PointO `propertyEq` o + , testProperty "point-negate-negate" $ \aCurve -> do + p <- arbitraryPoint aCurve + return $ p `propertyEq` ECC.pointNegate aCurve (ECC.pointNegate aCurve p) , localOption (QuickCheckTests 20) $ testProperty "point-mul-mul" $ \aCurve (QAInteger n1) (QAInteger n2) -> do p <- arbitraryPoint aCurve