packages feed

cryptonite-openssl-0.3: tests/Tests.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ViewPatterns #-}
module Main where

import Imports
import Crypto.OpenSSL.ECC

p256 = maybe (error "p256 not available") id
     $ ecGroupFromCurveOID "1.2.840.10045.3.1.7"

intToInteger :: Int -> Integer
intToInteger i = toInteger i

tests = testGroup "cryptonite-openssl"
    [ testProperty "ring" $ \(Positive (intToInteger -> a)) (Positive (intToInteger -> b)) ->
        let pa = ecPointGeneratorMul p256 a
            pb = ecPointGeneratorMul p256 b
            pc = ecPointGeneratorMul p256 (a+b)
         in ecPointEq p256 (ecPointAdd p256 pa pb) pc
    ]

main = defaultMain tests