| 857 | } |
| 858 | |
| 859 | u8 *sphinx_compressed_onion_serialize(const tal_t *ctx, const struct sphinx_compressed_onion *onion) |
| 860 | { |
| 861 | size_t routelen = tal_bytelen(onion->routinginfo); |
| 862 | size_t len = VERSION_SIZE + PUBKEY_SIZE + routelen + HMAC_SIZE; |
| 863 | u8 *dst = tal_arr(ctx, u8, len); |
| 864 | u8 der[PUBKEY_CMPR_LEN]; |
| 865 | int p = 0; |
| 866 | |
| 867 | pubkey_to_der(der, &onion->ephemeralkey); |
| 868 | |
| 869 | write_buffer(dst, &onion->version, VERSION_SIZE, &p); |
| 870 | write_buffer(dst, der, PUBKEY_SIZE, &p); |
| 871 | write_buffer(dst, onion->routinginfo, routelen, &p); |
| 872 | write_buffer(dst, onion->hmac.bytes, sizeof(onion->hmac.bytes), &p); |
| 873 | |
| 874 | assert(p == len); |
| 875 | return dst; |
| 876 | } |
| 877 | |
| 878 | struct sphinx_compressed_onion * |
| 879 | sphinx_compressed_onion_deserialize(const tal_t *ctx, const u8 *src) |
no test coverage detected