/* Is a < b? (If equal we don't care) */ static bool key_less(const struct pubkey *a, const struct pubkey *b) { /* Shorter one wins. */ if (pubkey_derlen(a) != pubkey_derlen(b)) return pubkey_derlen(a) < pubkey_derlen(b); return memcmp(a->der, b->der, pubkey_derlen(a)) < 0; }
BitcoinPubkey *pubkey_to_proto(const tal_t *ctx, const struct pubkey *key) { BitcoinPubkey *p = tal(ctx, BitcoinPubkey); struct pubkey check; bitcoin_pubkey__init(p); p->key.len = pubkey_derlen(key); p->key.data = tal_dup_arr(p, u8, key->der, p->key.len, 0); { secp256k1_context *secpctx = secp256k1_context_create(0); assert(pubkey_from_der(secpctx, p->key.data, p->key.len, &check)); assert(pubkey_eq(&check, key)); secp256k1_context_destroy(secpctx); } return p; }
static void add_push_key(u8 **scriptp, const struct pubkey *key) { add_push_bytes(scriptp, key->der, pubkey_derlen(key)); }