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