1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
6 int bus_message_read_secret(sd_bus_message
*m
, UserRecord
**ret
, sd_bus_error
*error
) {
7 _cleanup_(json_variant_unrefp
) JsonVariant
*v
= NULL
, *full
= NULL
;
8 _cleanup_(user_record_unrefp
) UserRecord
*hr
= NULL
;
9 unsigned line
= 0, column
= 0;
15 r
= sd_bus_message_read(m
, "s", &json
);
19 r
= json_parse(json
, JSON_PARSE_SENSITIVE
, &v
, &line
, &column
);
21 return sd_bus_error_setf(error
, SD_BUS_ERROR_INVALID_ARGS
, "Failed to parse JSON secret record at %u:%u: %m", line
, column
);
23 r
= json_build(&full
, JSON_BUILD_OBJECT(JSON_BUILD_PAIR("secret", JSON_BUILD_VARIANT(v
))));
27 hr
= user_record_new();
31 r
= user_record_load(hr
, full
, USER_RECORD_REQUIRE_SECRET
);
39 int bus_message_read_home_record(sd_bus_message
*m
, UserRecordLoadFlags flags
, UserRecord
**ret
, sd_bus_error
*error
) {
40 _cleanup_(json_variant_unrefp
) JsonVariant
*v
= NULL
;
41 _cleanup_(user_record_unrefp
) UserRecord
*hr
= NULL
;
42 unsigned line
= 0, column
= 0;
48 r
= sd_bus_message_read(m
, "s", &json
);
52 r
= json_parse(json
, JSON_PARSE_SENSITIVE
, &v
, &line
, &column
);
54 return sd_bus_error_setf(error
, SD_BUS_ERROR_INVALID_ARGS
, "Failed to parse JSON identity record at %u:%u: %m", line
, column
);
56 hr
= user_record_new();
60 r
= user_record_load(hr
, v
, flags
);
62 return sd_bus_error_setf(error
, SD_BUS_ERROR_INVALID_ARGS
, "JSON data is not a valid identity record");