Add transparent key derivation
This commit is contained in:
parent
4a48769eeb
commit
bc074d0386
2 changed files with 17 additions and 1 deletions
|
@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
- Type for transaction creation errors
|
- Type for transaction creation errors
|
||||||
- Types for Sapling circuit parameters
|
- Types for Sapling circuit parameters
|
||||||
- Function to create transaction
|
- Function to create transaction
|
||||||
|
- Function to derive distinct transparent spending keys
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,22 @@ genTransparentReceiver i scope xprvk = do
|
||||||
ScriptAddress j -> return $ TransparentReceiver P2SH $ fromBinary j
|
ScriptAddress j -> return $ TransparentReceiver P2SH $ fromBinary j
|
||||||
_anyOtherKind -> throwIO $ userError "Unsupported transparent address type"
|
_anyOtherKind -> throwIO $ userError "Unsupported transparent address type"
|
||||||
|
|
||||||
-- } decode a Transparent Address in HRF and return a TransparentAddress object
|
-- | Generate a transparent receiver
|
||||||
|
genTransparentSecretKey ::
|
||||||
|
Int -- ^ The index of the address to be created
|
||||||
|
-> Scope -- ^ `External` for wallet addresses or `Internal` for change addresses
|
||||||
|
-> XPrvKey -- ^ The transparent private key
|
||||||
|
-> IO TransparentSpendingKey
|
||||||
|
genTransparentSecretKey i scope xprvk = do
|
||||||
|
ioCtx <- createContext
|
||||||
|
let s =
|
||||||
|
case scope of
|
||||||
|
External -> 0
|
||||||
|
Internal -> 1
|
||||||
|
let path = Deriv :/ s :/ fromIntegral i :: DerivPath
|
||||||
|
return $ derivePath ioCtx path xprvk
|
||||||
|
|
||||||
|
-- | decode a Transparent Address in HRF and return a TransparentAddress object
|
||||||
decodeTransparentAddress :: BS.ByteString -> Maybe TransparentAddress
|
decodeTransparentAddress :: BS.ByteString -> Maybe TransparentAddress
|
||||||
decodeTransparentAddress taddress = do
|
decodeTransparentAddress taddress = do
|
||||||
if BS.length taddress < 34
|
if BS.length taddress < 34
|
||||||
|
|
Loading…
Reference in a new issue