Current section
Files
Jump to
Current section
Files
lib/signing/psbt/generic_properties/redeem_script.ex
defmodule BitcoinLib.Signing.Psbt.GenericProperties.RedeemScript do
defstruct [:script]
alias BitcoinLib.Signing.Psbt.GenericProperties.RedeemScript
alias BitcoinLib.Signing.Psbt.Keypair.{Key}
alias BitcoinLib.Script
def parse(keypair) do
%{keypair: keypair, redeem_script: %RedeemScript{}}
|> validate_keypair()
|> extract_redeem_script()
end
defp validate_keypair(%{keypair: keypair, redeem_script: redeem_script} = map) do
case keypair.key do
%Key{data: <<>>} ->
map
_ ->
%{map | redeem_script: Map.put(redeem_script, :error, "invalid redeemscript typed key")}
end
end
defp extract_redeem_script(%{redeem_script: %{error: _message} = redeem_script}),
do: redeem_script
defp extract_redeem_script(%{keypair: keypair}) do
script =
keypair.value.data
|> Script.parse()
%RedeemScript{script: script}
end
end