| 149 | } |
| 150 | |
| 151 | u8 *serialize_onionpacket( |
| 152 | const tal_t *ctx, |
| 153 | const struct onionpacket *m) |
| 154 | { |
| 155 | u8 *dst = tal_arr(ctx, u8, TOTAL_PACKET_SIZE(tal_bytelen(m->routinginfo))); |
| 156 | |
| 157 | u8 der[PUBKEY_CMPR_LEN]; |
| 158 | int p = 0; |
| 159 | |
| 160 | pubkey_to_der(der, &m->ephemeralkey); |
| 161 | write_buffer(dst, &m->version, 1, &p); |
| 162 | write_buffer(dst, der, sizeof(der), &p); |
| 163 | write_buffer(dst, m->routinginfo, tal_bytelen(m->routinginfo), &p); |
| 164 | write_buffer(dst, m->hmac.bytes, sizeof(m->hmac.bytes), &p); |
| 165 | return dst; |
| 166 | } |
| 167 | |
| 168 | struct onionpacket *parse_onionpacket(const tal_t *ctx, |
| 169 | const u8 *src, |