static void json_rhash(struct command *cmd, const char *buffer, const jsmntok_t *params) { struct json_result *response = new_json_result(cmd); jsmntok_t *secrettok; struct sha256 secret; if (!json_get_params(buffer, params, "secret", &secrettok, NULL)) { command_fail(cmd, "Need secret"); return; } if (!hex_decode(buffer + secrettok->start, secrettok->end - secrettok->start, &secret, sizeof(secret))) { command_fail(cmd, "'%.*s' is not a valid 32-byte hex value", (int)(secrettok->end - secrettok->start), buffer + secrettok->start); return; } /* Hash in place. */ sha256(&secret, &secret, sizeof(secret)); json_object_start(response, NULL); json_add_hex(response, "rhash", &secret, sizeof(secret)); json_object_end(response); command_success(cmd, response); }
static void log_to_json(unsigned int skipped, struct timerel diff, enum log_level level, const char *prefix, const char *log, struct log_info *info) { info->num_skipped += skipped; if (level < info->level) { info->num_skipped++; return; } add_skipped(info); json_array_start(info->response, NULL); json_add_string(info->response, "type", level == LOG_BROKEN ? "BROKEN" : level == LOG_UNUSUAL ? "UNUSUAL" : level == LOG_INFORM ? "INFO" : level == LOG_DBG ? "DEBUG" : level == LOG_IO ? "IO" : "UNKNOWN"); json_add_time(info->response, "time", diff.ts); json_add_string(info->response, "source", prefix); if (level == LOG_IO) { if (log[0]) json_add_string(info->response, "direction", "IN"); else json_add_string(info->response, "direction", "OUT"); json_add_hex(info->response, "data", log+1, tal_count(log)-1); } else json_add_string(info->response, "log", log); json_array_end(info->response); }
void json_add_double_sha(char **result, const char *fieldname, const struct protocol_double_sha *sha) { json_add_hex(result, fieldname, sha->sha, sizeof(sha->sha)); }
void json_add_signature(char **result, const char *fieldname, const struct protocol_signature *sig) { json_add_hex(result, fieldname, sig, sizeof(sig)); }
void json_add_pubkey(char **result, const char *fieldname, const struct protocol_pubkey *pubkey) { json_add_hex(result, fieldname, pubkey->key, sizeof(pubkey->key)); }