packages feed

pairing-1.0.0: test/Test/BN254B.hs

module Test.BN254B where

import Protolude

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

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

testBN254B :: TestTree
testBN254B = testGroup "BN254B"
  [ 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 :: BN254B)
  , testCase "Test vector" $ pairing g1 g2 @?= gt
  , testHashBN (witness :: BN254B)
  ]

g1 :: G1 BN254B
g1 = A
  0x2074a81d4402a0b63b947335c14b2fc3c28fea2973860f686114bec4670e4eb7
  0x6a41108087b20038771fc89fb94a82b2006034a6e8d871b3bc284846631cbeb

g2 :: G2 BN254B
g2 = A
  ( [ 0x49eedb108b71a87bfcfc9b65eb5cf1c2f89554e02df4f8354e4a00f52183c77
    , 0x1fb93ab676140e87d97226185ba05bf5ec088a9cc76d966697cfb8fa9aa8845d
    ]
  )
  ( [ 0xcd04a1ed14ad3cdf6a1fe4453da2bb9e686a637fb3ff8e2573644cc1edf208a
    , 0x11ff7795cf59d1a1a7d6ee3c3c2dfc765def1caa9f14ea264e71bd7630a43c14
    ]
  )

gt :: GT BN254B
gt = toU'
  [ [ [ 0x3e1f2693ac6d549898c78897eb158490a4832e296f888d30140500db7bd3d12
      , 0x1ebc54a76e844eb5d352945226fb103de9ec1a4fc689b87faa66ef8aba79d3ed
      ]
    , [ 0xa5a5405542f67384d683a48c281f3676b67554ed5da1700784169a0b47a57e4
      , 0x48b66dafcaee86db4d46ab71a9fe848443ef81f488d8366a727b39698cf7201
      ]
    , [ 0x142715d6482bc6fa77377c9cbc2a51c047c16de88483d5a889c7ef4df5f03bdb
      , 0x11ee0c12164133041c3dcf312ce111c845b60092818f7b72805d4aff61427934
      ]
    ]
  , [ [ 0x22371af975dae562f686988cdbbd02702c959bbf843a1fb3c7532d07be3d7a3a
      , 0x4052ca960900684a1b26c434b2776aa70736841474c16208ccd1a7c27927e19
      ]
    , [ 0x5d259da3f3aaaa54a6ae5fe8272a5b79d7f4e5bdf3b5e3c815ad781113f7548
      , 0x843c37bc5bdbf253e3bce568f5905a63867d8836855b74cba0c800d5dc41b71
      ]
    , [ 0x13ca93e1377ef0f6dd38fc2f96dbd3e8b0922f60d1f274eac63dc1af2ee9754c
      , 0xd467f3da4fb329a5cb406d0a7b743a3a2ffcd09bf95ee8a856b94af191d96af
      ]
    ]
  ]