-- SPDX-FileCopyrightText: 2022 Serokell -- SPDX-License-Identifier: MPL-2.0 {-# OPTIONS_GHC -Wwarn #-} module Test.BLST.Fixtures ( seed , msg , expectedKey , expectedPk1 , expectedPk2 , expectedHash1 , expectedHash2 , expectedSignHash1 , expectedSignHash2 , expectedEnc1 , expectedEnc2 , expectedSignEnc1 , expectedSignEnc2 , expectedAffPk1 , expectedAffPk2 , expectedSer1 , expectedSer2 , expectedComp1 , expectedComp2 , expectedSerKey , expectedAffSignHash1 , expectedAffSignHash2 , expectedAffSignEnc1 , expectedAffSignEnc2 ) where import Data.ByteArray (Bytes) import Data.ByteArray.Sized (SizedByteArray) import Data.ByteArray.Sized qualified as AS import Data.ByteString (ByteString) import Data.Text (Text) import System.IO.Unsafe (unsafePerformIO) import Crypto.BLST.Internal.Bindings qualified as B import Test.BLST.Util {-# ANN module ("HLint: ignore Missing NOINLINE pragma" :: Text) #-} seed :: ByteString seed = "asdfasdfasdfasdfasdfasdfasdfasdf" msg :: ByteString msg = "hello, world!" expectedKey :: B.Scalar expectedKey = unsafePerformIO $ B.scalarFromLendian $ fromHex expectedSerKey {-# NOINLINE expectedKey #-} expectedSerKey :: Text expectedSerKey = "5ddb064f9378a723a172f364eaf8c069\ \ef2ca9870c0928228c94c7a3adbdc20b" expectedPk1 :: B.Point 'B.P1 expectedPk1 = deserializePoint "09afdbc09a9349f49da53fcf7ffc\ \554394937510e14cbd6d330a02e8\ \8d53b796c150abce2b953c3a7738\ \86dae77dd867111a79f98c5102f2\ \7993cc74875541c65bd9a220bc92\ \b58bafb531e01deca18fcb5c8246\ \1d8be54b6219d13e0aa96936" expectedPk2 :: B.Point 'B.P2 expectedPk2 = deserializePoint' expectedSer2 -- NB: can't use serialized hash/enc because those roundtrip through affine -- points loses information here. expectedHash1 :: B.Point 'B.P1 expectedHash1 = B.Point $ AS.unsafeSizedByteArray $ fromHex' "3a69a985bb3c2c88c7c92141aaaba405\ \ed352c7284c0108405b7977275595aba\ \0d75772f5f4569a3a7aee43c1860770b\ \8c2db24da8fe135325c0a3b77aec6e33\ \dff54757f350c04af9057e4cb19424bf\ \c1e6294cfa943925f6fe9607406ba705\ \c5cdd8b0c4c9014695f13b4e2c6cc4ca\ \e77b0f070a11a10840e373e97b17c79e\ \68e0a9696907b5da815e6fc636065506" expectedHash2 :: B.Point 'B.P2 expectedHash2 = B.Point $ AS.unsafeSizedByteArray $ fromHex' "818099f86b3d73fd53cd0768f379bb65\ \0a4b4f2cee4dee97edd6b36834912877\ \5bb1860418e0e8b10a82cb057142510f\ \4240932247234c8e8c528ff1d2288471\ \662f3b064b3cdb5b726bdc5c2fe3c10e\ \b8d003ea272d2716c0f199b13fc4bb09\ \29e7bbe9eec2ea0a7a3a678397c8e9af\ \e9062296796065a9b673923e2a6b68fa\ \97f1b29eaf17f3eb5728bb5fd24b6710\ \66d10e7ff58b9355261d3bdf9c96ff63\ \bc3c3d39b598e18ffe8d56cdf29cb61b\ \f17f727f83f99a334f92bd2f03327114\ \ef05a9368db5636a893a5878bfc30b08\ \458b38c2cb6f2cda48c3ccb604c9740a\ \4f9c644b437258bff2a45b323f4ba60d\ \31e43c915daf976c5b24704b3f8d6dfc\ \e336511e9a97ae32350ae5b9a32b2d1d\ \8a594b22b1a31fd7795e510ef3fac908" expectedEnc1 :: B.Point 'B.P1 expectedEnc1 = B.Point $ AS.unsafeSizedByteArray $ fromHex' "43bf72ddc6fb0b7b5cbafce921b11397\ \3f3200ca0f81da5f8e2a7a3c8ac5b6d4\ \f3b1a3ec20783c983b661b477e971512\ \ed68359bef5ecc65a04c40ddb79da238\ \d46753b3ceadab35f94c8cf38fe25f80\ \e47fccbbe98ca3ccb6602df94c59d215\ \c8b945158e6d7794fb628e7d8e307392\ \bcc9f4f389c6011fb45b5ae4db11d4d5\ \1b433e459a221ca6c4ff9a656a264a0b" expectedEnc2 :: B.Point 'B.P2 expectedEnc2 = B.Point $ AS.unsafeSizedByteArray $ fromHex' "910646bb133d99d045bf023093b8b252\ \1c5fa92d370cdeb4cbd7b5c0be024ae6\ \263281bf060785e31ea85f6b86171818\ \5728cd66f20930208d31008fbb45cbfb\ \a74868b1703049031d8dcd474bc3a5de\ \cf5825476d0fdd6c07b6ab530ce42903\ \c147192266424eb261e78a4c16a15cfa\ \0b17e0f13bf64b1a85fe804029a00ec2\ \bbd34b335de66c5baa5cb077100fff04\ \35ddc76afbae5cdc69421e5f98f1a6d8\ \aa3a0e06ae3a8ae16dd3bee861605405\ \244ac9c7da268c8d63cb1c0228390f15\ \2f48f1cd1094323a44b6a246d30800a7\ \cc5f480804b0e1ebf5169c6128e5d8b5\ \4f429f7c4a354183cece49445564fc15\ \b5c80f0a30fe9f5e8dacc392cca605c8\ \63eaa48f433a68395e65e90c1da88d7f\ \8f41f3c5e72795b65447f9735f6f0113" expectedSignHash1 :: B.Point 'B.P2 expectedSignHash1 = deserializePoint "14369210233222d76103a4aa744a300f\ \87dea5f5b8f1538415d85f477e4b004c\ \c82569e620af5ce7d1532e465b9b1396\ \06601565e7564a7c7013b71ce2cbdabc\ \ea9db6c3244c6b33e6256f6c46f7257d\ \561c88325a3c9cf725131f30d1c31b22\ \124575a776f9704c20f2f35d695e51ec\ \62afac092148a62bb5e0f058c0420b26\ \1287c7edf2d3de8c492ce74c2e31bad7\ \059dd86ac9796a69ddd1c9617cf61ba3\ \b30e8bac3471bf3ae83b8085081f0ad5\ \11157a6e89dcb890de3ce8a8c1348e09" expectedAffSignHash1 :: B.Affine 'B.P2 expectedAffSignHash1 = unsafePerformIO $ B.p2ToAffine expectedSignHash1 {-# NOINLINE expectedAffSignHash1 #-} expectedSignHash2 :: B.Point 'B.P1 expectedSignHash2 = deserializePoint "12c440df3381393ae09dd06a45c1b721\ \816109f066b9669607b3f1c4febfd477\ \01ea040e19e97ca9a70361ce25be3347\ \126e269e38e6b485082c909b84ff191e\ \861a2061441534429789e04b58303407\ \5c68bc178f8ea96b2556ca1fb9611f93" expectedAffSignHash2 :: B.Affine 'B.P1 expectedAffSignHash2 = unsafePerformIO $ B.p1ToAffine expectedSignHash2 {-# NOINLINE expectedAffSignHash2 #-} expectedSignEnc1 :: B.Point 'B.P2 expectedSignEnc1 = deserializePoint "14093f93072f22ddf7957964786bf6ef\ \0f27c8b0733f374f8ca29f7ca08eeb9e\ \1aa893264553d970a7487688aad4aa67\ \0d5e0d87267a63c9ce44340f625df5d6\ \54d9a10eba66fd8e5d925fcc4bd37d81\ \63b9e55142932bab720d23af46270c5f\ \05880b4da102e19f7a4f8daf2e28d158\ \ce36fb065bcf8bf5d76aef43a0a2163a\ \e737192dbdced1e9afdadc5c933be231\ \0507cf96ae04aa838384d612a9edbeb9\ \ea336b737f20efdf4c7754ab9482064d\ \b49d3e01d4953948cb4d8978defd0bcf" expectedAffSignEnc1 :: B.Affine 'B.P2 expectedAffSignEnc1 = unsafePerformIO $ B.p2ToAffine expectedSignEnc1 {-# NOINLINE expectedAffSignEnc1 #-} expectedSignEnc2 :: B.Point 'B.P1 expectedSignEnc2 = deserializePoint "0ac71a17ad14546bbaa8f6689e5f4960\ \7c377fa978cf92a37699dbdd680dcf77\ \f85d8ba7f65639f74e1b2bba6d4af073\ \115327fd424560691b171978fd436c55\ \9597cced904e5b65e5e1a5e4b5497b90\ \08dacc92a1e6d22ade43fdbddd487519" expectedAffSignEnc2 :: B.Affine 'B.P1 expectedAffSignEnc2 = unsafePerformIO $ B.p1ToAffine expectedSignEnc2 {-# NOINLINE expectedAffSignEnc2 #-} expectedAffPk1 :: B.Affine 'B.P1 expectedAffPk1 = deserializeAffine' expectedSer1 expectedAffPk2 :: B.Affine 'B.P2 expectedAffPk2 = deserializeAffine' expectedSer2 expectedSer1 :: SizedByteArray B.P1SerializeSize Bytes expectedSer1 = fromHex "09afdbc09a9349f49da53fcf7ffc5543\ \94937510e14cbd6d330a02e88d53b796\ \c150abce2b953c3a773886dae77dd867\ \111a79f98c5102f27993cc74875541c6\ \5bd9a220bc92b58bafb531e01deca18f\ \cb5c82461d8be54b6219d13e0aa96936" expectedSer2 :: SizedByteArray B.P2SerializeSize Bytes expectedSer2 = fromHex "0fe7542b55fdf24f0a4fe2027f8f9c60\ \74264eae84f83db8971d7ef8eb896406\ \250e38be84b4443ab96a47c799261077\ \080a849ce688e74b5c4cbd50b4f1cd66\ \f4e41026813c7744f0e44a31876c2eca\ \ef4550c78f829ededb3b14d870ac12e5\ \0e8ab71a728201234283b5f1a01ebdfd\ \54e2ceb7f3663a11c45f56badf624ad5\ \01692a2bae776563eaa090aa45e00dfc\ \0514c252a98b86e2f5054d597be4ef8c\ \3697342dc336a5ffaba36da3e141972f\ \8463cc9126d55bb7f18048569c9e6366" expectedComp1 :: Text expectedComp1 = "a9afdbc09a9349f49da53fcf7ffc5543\ \94937510e14cbd6d330a02e88d53b796\ \c150abce2b953c3a773886dae77dd867" expectedComp2 :: Text expectedComp2 = "afe7542b55fdf24f0a4fe2027f8f9c60\ \74264eae84f83db8971d7ef8eb896406\ \250e38be84b4443ab96a47c799261077\ \080a849ce688e74b5c4cbd50b4f1cd66\ \f4e41026813c7744f0e44a31876c2eca\ \ef4550c78f829ededb3b14d870ac12e5"