zcash-haskell/src/ZcashHaskell/Utils.hs

34 lines
1.1 KiB
Haskell
Raw Normal View History

2023-08-17 15:02:32 +00:00
-- |
-- Module : ZcashHaskell.Utils
-- Copyright : Vergara Technologies (c)2023
-- License : BOSL
--
-- Maintainer : rene@vergara.network
-- Stability : experimental
-- Portability : unknown
--
-- A set of functions to assist in the handling of elements of the Zcash protocol, allowing for decoding of memos, addresses and viewing keys.
--
2023-06-14 15:53:29 +00:00
module ZcashHaskell.Utils where
import C.Zcash
( rustWrapperBech32Decode
, rustWrapperF4Jumble
, rustWrapperF4UnJumble
)
import qualified Data.ByteString as BS
import Foreign.Rust.Marshall.Variable
2023-06-14 15:53:29 +00:00
import ZcashHaskell.Types
-- | Decode the given bytestring using Bech32
decodeBech32 :: BS.ByteString -> RawData
decodeBech32 = withPureBorshVarBuffer . rustWrapperBech32Decode
-- | Apply the F4Jumble transformation to the given bytestring
f4Jumble :: BS.ByteString -> BS.ByteString
f4Jumble = withPureBorshVarBuffer . rustWrapperF4Jumble
-- | Apply the inverse F4Jumble transformation to the given bytestring
f4UnJumble :: BS.ByteString -> BS.ByteString
f4UnJumble = withPureBorshVarBuffer . rustWrapperF4UnJumble