Add full validation of Sapling address to parser
This commit is contained in:
parent
528fdebe61
commit
fb436f1499
1 changed files with 4 additions and 3 deletions
|
@ -17,6 +17,7 @@ import GHC.Generics
|
||||||
import Text.Megaparsec hiding (State)
|
import Text.Megaparsec hiding (State)
|
||||||
import Text.Megaparsec.Char
|
import Text.Megaparsec.Char
|
||||||
import ZcashHaskell.Orchard
|
import ZcashHaskell.Orchard
|
||||||
|
import ZcashHaskell.Sapling (isValidShieldedAddress)
|
||||||
|
|
||||||
-- | Type to model a ZGo transaction
|
-- | Type to model a ZGo transaction
|
||||||
data ZGoTx = ZGoTx
|
data ZGoTx = ZGoTx
|
||||||
|
@ -133,9 +134,9 @@ pSaplingAddress :: Parser MemoToken
|
||||||
pSaplingAddress = do
|
pSaplingAddress = do
|
||||||
string "zs"
|
string "zs"
|
||||||
a <- some alphaNumChar
|
a <- some alphaNumChar
|
||||||
if length a /= 76
|
if isValidShieldedAddress (E.encodeUtf8 $ "zs" <> T.pack a)
|
||||||
then fail "Failed to parse Sapling address"
|
then pure $ Address $ T.pack ("zs" <> a)
|
||||||
else pure $ Address $ T.pack ("zs" <> a)
|
else fail "Failed to parse Sapling address"
|
||||||
|
|
||||||
pUnifiedAddress :: Parser MemoToken
|
pUnifiedAddress :: Parser MemoToken
|
||||||
pUnifiedAddress = do
|
pUnifiedAddress = do
|
||||||
|
|
Loading…
Reference in a new issue