musig2-0.1.0: test/SortPubkeys.hs
{-# LANGUAGE OverloadedStrings #-}
module SortPubkeys (testSortPubkeys) where
import Crypto.Curve.Secp256k1 (Pub)
import Crypto.Curve.Secp256k1.MuSig2 (sortPublicKeys)
import Data.Sequence (Seq)
import qualified Data.Sequence as Seq
import Test.Tasty
import Test.Tasty.HUnit
import Util (parsePoint)
parsePoints :: [Pub]
parsePoints =
map
parsePoint
[ "02DD308AFEC5777E13121FA72B9CC1B7CC0139715309B086C960E18FD969774EB8"
, "02F9308A019258C31049344F85F89D5229B531C845836F99B08601F113BCE036F9"
, "03DFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA659"
, "023590A94E768F8E1815C2F24B4D80A8E3149316C3518CE7B7AD338368D038CA66"
, "02DD308AFEC5777E13121FA72B9CC1B7CC0139715309B086C960E18FD969774EFF"
, "02DD308AFEC5777E13121FA72B9CC1B7CC0139715309B086C960E18FD969774EB8"
]
parsePointsSorted :: Seq Pub
parsePointsSorted =
Seq.fromList $
map
parsePoint
[ "023590A94E768F8E1815C2F24B4D80A8E3149316C3518CE7B7AD338368D038CA66"
, "02DD308AFEC5777E13121FA72B9CC1B7CC0139715309B086C960E18FD969774EB8"
, "02DD308AFEC5777E13121FA72B9CC1B7CC0139715309B086C960E18FD969774EB8"
, "02DD308AFEC5777E13121FA72B9CC1B7CC0139715309B086C960E18FD969774EFF"
, "02F9308A019258C31049344F85F89D5229B531C845836F99B08601F113BCE036F9"
, "03DFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA659"
]
-- | Test vectors from [BIP327 `key_sort_vectors.json`](https://github.com/bitcoin/bips/blob/master/bip-0327/vectors/key_sort_vectors.json)
testSortPubkeys :: TestTree
testSortPubkeys =
testGroup
"sorting pubkeys"
[testCase "BIP327 test vector" $ sortPublicKeys parsePoints @=? parsePointsSorted]