Browse Source

scripteq: simple helper for comparing scripts.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
ppa-0.6.1
Rusty Russell 9 years ago
parent
commit
7efc0efab1
  1. 10
      bitcoin/script.c
  2. 3
      bitcoin/script.h
  3. 7
      find_p2sh_out.c

10
bitcoin/script.c

@ -476,3 +476,13 @@ u8 **bitcoin_witness_secret(const tal_t *ctx,
return witness; return witness;
} }
bool scripteq(const u8 *s1, size_t s1len, const u8 *s2, size_t s2len)
{
memcheck(s1, s1len);
memcheck(s2, s2len);
if (s1len != s2len)
return false;
return memcmp(s1, s2, s1len) == 0;
}

3
bitcoin/script.h

@ -89,4 +89,7 @@ u8 **bitcoin_witness_secret(const tal_t *ctx,
/* Is this a pay to script hash? */ /* Is this a pay to script hash? */
bool is_p2sh(const u8 *script, size_t script_len); bool is_p2sh(const u8 *script, size_t script_len);
/* Are these two scripts equal? */
bool scripteq(const u8 *s1, size_t s1len, const u8 *s2, size_t s2len);
#endif /* LIGHTNING_BITCOIN_SCRIPT_H */ #endif /* LIGHTNING_BITCOIN_SCRIPT_H */

7
find_p2sh_out.c

@ -10,9 +10,10 @@ static u32 find_output(const struct bitcoin_tx *tx, const u8 *scriptpubkey)
u32 i; u32 i;
for (i = 0; i < tx->output_count; i++) { for (i = 0; i < tx->output_count; i++) {
if (tx->output[i].script_length != tal_count(scriptpubkey)) if (scripteq(tx->output[i].script,
continue; tx->output[i].script_length,
if (memcmp(tx->output[i].script, scriptpubkey, tal_count(scriptpubkey)) == 0) scriptpubkey,
tal_count(scriptpubkey)))
break; break;
} }
/* FIXME: Return failure! */ /* FIXME: Return failure! */

Loading…
Cancel
Save