packages feed

pairing-1.0.0: test/Test/BN254.hs

module Test.BN254 where

import Protolude

import Data.Curve.Weierstrass as C
import Data.Field.Galois as F
import Data.Pairing.BN254
import Test.Tasty
import Test.Tasty.HUnit

import Test.Curve
import Test.Field
import Test.Pairing

testBN254 :: TestTree
testBN254 = testGroup "BN254"
  [ testField "Fq" (witness :: Fq)
  , testField "Fq2" (witness :: Fq2)
  , testField "Fq6" (witness :: Fq6)
  , testField "Fq12" (witness :: Fq12)
  , testField "Fr" (witness :: Fr)
  , testCurve "G1" (C.gen :: G1')
  , testCurve "G2" (C.gen :: G2')
  , testUnity "GT" (F.gen :: GT')
  , testPairing (witness :: BN254)
  , testCase "Test vector" $ pairing g1 g2 @?= gt
  , testHashBN (witness :: BN254)
  ]

g1 :: G1 BN254
g1 = A
  0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd3
  0x15ed738c0e0a7c92e7845f96b2ae9c0a68a6a449e3538fc7ff3ebf7a5a18a2c4

g2 :: G2 BN254
g2 = A
  ( [ 0x6064e784db10e9051e52826e192715e8d7e478cb09a5e0012defa0694fbc7f5
    , 0x1014772f57bb9742735191cd5dcfe4ebbc04156b6878a0a7c9824f32ffb66e85
    ]
  )
  ( [ 0x58e1d5681b5b9e0074b0f9c8d2c68a069b920d74521e79765036d57666c5597
    , 0x21e2335f3354bb7922ffcc2f38d3323dd9453ac49b55441452aeaca147711b2
    ]
  )

gt :: GT BN254
gt = toU'
  [ [ [ 0x10227b2606c11f22f4b2dec3f69cee4332ebe2e8f869ea8ca9e6d45ce15bd110
      , 0x27d1c9dae835182b272bb25b47b0d871382c9c2765fd1f42e07edbe852830157
      ]
    , [ 0x1f5919cf59b218135aaeb137ac84c6ecf282feda6a8752ca291b7ec1d2f8bab4
      , 0x2b7e44680d35a6676223538d54abcd7bc2c54281bf0f5277c81cf5b114d3a345
      ]
    , [ 0x17e6d213292c2aa12ef3cc75aca8cb9cbd47d05086227db2dbd1262d3e89dbf0
      , 0x291a53fea204b470bb901fb184155facd6e3b44fad848d536386b73d6c31fd52
      ]
    ]
  , [ [ 0x2844ed362ecf2c491a471a18c2875fd727126a62c8151c356f81e02cff52f045
      , 0x2a8245d55a3b3f9deae9cca372912a31b88dc77cee06dfa10a717acbf758cbd5
      ]
    , [ 0x222ff2e20c4578e886027953a035cbd8784a9764bbcd353051ba9f02c4dce8ad
      , 0x8532a0a75fb0acdf508c3bdd4c7700efb3a9ae403818daad5937d9ffffaca45
      ]
    , [ 0x2e7e3a4aaef17a53de3c528319b426e35f53455107f49d7fe52de95849e7dcf6
      , 0x2ba2bc83434031012424aad830a35c459c40a0b7ce87735010db68c10b61ddcb
      ]
    ]
  ]