Add tests for matching Sapling address and VK
This commit is contained in:
parent
0acff0d965
commit
0dd9680158
3 changed files with 29 additions and 10 deletions
|
@ -23,7 +23,7 @@ import Foreign.Rust.Serialisation.Raw
|
||||||
import Foreign.Rust.Serialisation.Raw.Base16
|
import Foreign.Rust.Serialisation.Raw.Base16
|
||||||
import qualified Generics.SOP as SOP
|
import qualified Generics.SOP as SOP
|
||||||
import qualified GHC.Generics as GHC
|
import qualified GHC.Generics as GHC
|
||||||
import HaskellZcash.Types
|
import ZcashHaskell.Types
|
||||||
|
|
||||||
|
|
||||||
{# fun unsafe rust_wrapper_f4jumble as rustWrapperF4Jumble
|
{# fun unsafe rust_wrapper_f4jumble as rustWrapperF4Jumble
|
||||||
|
@ -65,6 +65,13 @@ import HaskellZcash.Types
|
||||||
-> `Bool'
|
-> `Bool'
|
||||||
#}
|
#}
|
||||||
|
|
||||||
|
{# fun pure unsafe rust_wrapper_svk_check_address as rustWrapperSaplingCheck
|
||||||
|
{ toBorshVar* `BS.ByteString'&
|
||||||
|
, toBorshVar* `BS.ByteString'&
|
||||||
|
}
|
||||||
|
-> `Bool'
|
||||||
|
#}
|
||||||
|
|
||||||
{# fun unsafe rust_wrapper_ufvk_decode as rustWrapperUfvkDecode
|
{# fun unsafe rust_wrapper_ufvk_decode as rustWrapperUfvkDecode
|
||||||
{ toBorshVar* `BS.ByteString'&
|
{ toBorshVar* `BS.ByteString'&
|
||||||
, getVarBuffer `Buffer UnifiedFullViewingKey'&
|
, getVarBuffer `Buffer UnifiedFullViewingKey'&
|
||||||
|
|
22
test/Spec.hs
22
test/Spec.hs
|
@ -4,16 +4,20 @@ import C.Zcash (rustWrapperIsUA)
|
||||||
import qualified Data.ByteString as BS
|
import qualified Data.ByteString as BS
|
||||||
import qualified Data.Text.Encoding as E
|
import qualified Data.Text.Encoding as E
|
||||||
import Data.Word
|
import Data.Word
|
||||||
import HaskellZcash.Orchard
|
import Test.Hspec
|
||||||
import HaskellZcash.Sapling (isValidSaplingViewingKey, isValidShieldedAddress)
|
import ZcashHaskell.Orchard
|
||||||
import HaskellZcash.Types
|
import ZcashHaskell.Sapling
|
||||||
|
( isValidSaplingViewingKey
|
||||||
|
, isValidShieldedAddress
|
||||||
|
, matchSaplingAddress
|
||||||
|
)
|
||||||
|
import ZcashHaskell.Types
|
||||||
( OrchardAction(..)
|
( OrchardAction(..)
|
||||||
, OrchardDecodedAction(..)
|
, OrchardDecodedAction(..)
|
||||||
, RawData(..)
|
, RawData(..)
|
||||||
, UnifiedFullViewingKey(..)
|
, UnifiedFullViewingKey(..)
|
||||||
)
|
)
|
||||||
import HaskellZcash.Utils
|
import ZcashHaskell.Utils
|
||||||
import Test.Hspec
|
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
|
@ -243,10 +247,18 @@ main = do
|
||||||
"zxviews1qdjagrrpqqqqpq8es75mlu6rref0qyrstchf8dxzeygtsejwfqu8ckhwl2qj5m8am7lmupxk3vkvdjm8pawjpmesjfapvsqw96pa46c2z0kk7letrxf7mkltwz54fwpxc7kc79mm5kce3rwn5ssl009zwsra2spppwgrx25s9k5hq65f69l4jz2tjmqgy0pl49qmtaj3nudk6wglwe2hpa327hydlchtyq9av6wjd6hu68e04ahwk9a9n2kt0kj3nj99nue65awtu5cwwcpjs"
|
"zxviews1qdjagrrpqqqqpq8es75mlu6rref0qyrstchf8dxzeygtsejwfqu8ckhwl2qj5m8am7lmupxk3vkvdjm8pawjpmesjfapvsqw96pa46c2z0kk7letrxf7mkltwz54fwpxc7kc79mm5kce3rwn5ssl009zwsra2spppwgrx25s9k5hq65f69l4jz2tjmqgy0pl49qmtaj3nudk6wglwe2hpa327hydlchtyq9av6wjd6hu68e04ahwk9a9n2kt0kj3nj99nue65awtu5cwwcpjs"
|
||||||
let sa =
|
let sa =
|
||||||
"zs1g2ne5w2r8kvalwzngsk3kfzppx3qcx5560pnfmw9rj5xfd3zfg9dkm7hyxnfyhc423fev5wuue4"
|
"zs1g2ne5w2r8kvalwzngsk3kfzppx3qcx5560pnfmw9rj5xfd3zfg9dkm7hyxnfyhc423fev5wuue4"
|
||||||
|
let sa' =
|
||||||
|
"zs17faa6l5ma55s55exq9rnr32tu0wl8nmqg7xp3e6tz0m5ajn2a6yxlc09t03mqdmvyphavvf3sl8"
|
||||||
let rawKey = decodeBech32 vk
|
let rawKey = decodeBech32 vk
|
||||||
|
let rawSa = decodeBech32 sa
|
||||||
|
let rawSa' = decodeBech32 sa'
|
||||||
it "is mainnet" $ do hrp rawKey `shouldBe` "zxviews"
|
it "is mainnet" $ do hrp rawKey `shouldBe` "zxviews"
|
||||||
it "is valid Sapling raw key" $ do
|
it "is valid Sapling raw key" $ do
|
||||||
isValidSaplingViewingKey (bytes rawKey) `shouldBe` True
|
isValidSaplingViewingKey (bytes rawKey) `shouldBe` True
|
||||||
|
it "matches the right Sapling address" $ do
|
||||||
|
matchSaplingAddress (bytes rawKey) (bytes rawSa) `shouldBe` True
|
||||||
|
it "doesn't match the wrong Sapling address" $ do
|
||||||
|
matchSaplingAddress (bytes rawKey) (bytes rawSa') `shouldBe` False
|
||||||
describe "Decode invalid Sapling VK" $ do
|
describe "Decode invalid Sapling VK" $ do
|
||||||
let vk =
|
let vk =
|
||||||
"zxviews1qdjagrrpqqqqpq8es75mlu6rref0qyrstchf8dxzeygtsejwfqu8ckhwl2qj5m8am7lmupxk3vkvdjm8pawjpmesjfapvsqw96pa46c2z0kk7letrxf7mkltwz54fwpxc7kc79mm5kce3rwn5ssl009zwsra2spppwgrx25s9k5hq65f69l4jz2tjmqgy0pl49qmtaj3nudk6wglwe2hpa327hydlchtyq9av6wjd6hu68e04ahwk9a9n2kt0kj3nj99nue65awtu5cwwfake"
|
"zxviews1qdjagrrpqqqqpq8es75mlu6rref0qyrstchf8dxzeygtsejwfqu8ckhwl2qj5m8am7lmupxk3vkvdjm8pawjpmesjfapvsqw96pa46c2z0kk7letrxf7mkltwz54fwpxc7kc79mm5kce3rwn5ssl009zwsra2spppwgrx25s9k5hq65f69l4jz2tjmqgy0pl49qmtaj3nudk6wglwe2hpa327hydlchtyq9av6wjd6hu68e04ahwk9a9n2kt0kj3nj99nue65awtu5cwwfake"
|
||||||
|
|
|
@ -27,10 +27,10 @@ source-repository head
|
||||||
library
|
library
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
C.Zcash
|
C.Zcash
|
||||||
HaskellZcash.Orchard
|
ZcashHaskell.Orchard
|
||||||
HaskellZcash.Sapling
|
ZcashHaskell.Sapling
|
||||||
HaskellZcash.Types
|
ZcashHaskell.Types
|
||||||
HaskellZcash.Utils
|
ZcashHaskell.Utils
|
||||||
other-modules:
|
other-modules:
|
||||||
Paths_zcash_haskell
|
Paths_zcash_haskell
|
||||||
hs-source-dirs:
|
hs-source-dirs:
|
||||||
|
|
Loading…
Reference in a new issue