1*48a04a3fSKonrad Sztyber /* SPDX-License-Identifier: BSD-3-Clause
2*48a04a3fSKonrad Sztyber * Copyright (c) 2024 Intel Corporation. All rights reserved.
3*48a04a3fSKonrad Sztyber */
4*48a04a3fSKonrad Sztyber
5*48a04a3fSKonrad Sztyber #include "keyring_internal.h"
6*48a04a3fSKonrad Sztyber #include "spdk/keyring.h"
7*48a04a3fSKonrad Sztyber #include "spdk/rpc.h"
8*48a04a3fSKonrad Sztyber #include "spdk/string.h"
9*48a04a3fSKonrad Sztyber #include "spdk/util.h"
10*48a04a3fSKonrad Sztyber
11*48a04a3fSKonrad Sztyber static void
rpc_keyring_for_each_key_cb(void * ctx,struct spdk_key * key)12*48a04a3fSKonrad Sztyber rpc_keyring_for_each_key_cb(void *ctx, struct spdk_key *key)
13*48a04a3fSKonrad Sztyber {
14*48a04a3fSKonrad Sztyber struct spdk_json_write_ctx *w = ctx;
15*48a04a3fSKonrad Sztyber
16*48a04a3fSKonrad Sztyber spdk_json_write_object_begin(w);
17*48a04a3fSKonrad Sztyber keyring_dump_key_info(key, w);
18*48a04a3fSKonrad Sztyber spdk_json_write_object_end(w);
19*48a04a3fSKonrad Sztyber }
20*48a04a3fSKonrad Sztyber
21*48a04a3fSKonrad Sztyber static void
rpc_keyring_get_keys(struct spdk_jsonrpc_request * request,const struct spdk_json_val * params)22*48a04a3fSKonrad Sztyber rpc_keyring_get_keys(struct spdk_jsonrpc_request *request,
23*48a04a3fSKonrad Sztyber const struct spdk_json_val *params)
24*48a04a3fSKonrad Sztyber {
25*48a04a3fSKonrad Sztyber struct spdk_json_write_ctx *w;
26*48a04a3fSKonrad Sztyber
27*48a04a3fSKonrad Sztyber w = spdk_jsonrpc_begin_result(request);
28*48a04a3fSKonrad Sztyber spdk_json_write_array_begin(w);
29*48a04a3fSKonrad Sztyber spdk_keyring_for_each_key(NULL, w, rpc_keyring_for_each_key_cb, SPDK_KEYRING_FOR_EACH_ALL);
30*48a04a3fSKonrad Sztyber spdk_json_write_array_end(w);
31*48a04a3fSKonrad Sztyber
32*48a04a3fSKonrad Sztyber spdk_jsonrpc_end_result(request, w);
33*48a04a3fSKonrad Sztyber
34*48a04a3fSKonrad Sztyber }
35*48a04a3fSKonrad Sztyber SPDK_RPC_REGISTER("keyring_get_keys", rpc_keyring_get_keys, SPDK_RPC_RUNTIME)
36