From 2608b241c8ef906d46e82eaf965aa211b8605a2c Mon Sep 17 00:00:00 2001 From: Lee Clagett Date: Sat, 10 Jun 2023 11:55:48 -0400 Subject: [PATCH] Add CLSAG serialization to ZMQ code --- src/serialization/json_object.cpp | 26 ++++++++++++++++++++++++++ src/serialization/json_object.h | 3 +++ 2 files changed, 29 insertions(+) diff --git a/src/serialization/json_object.cpp b/src/serialization/json_object.cpp index 4e436c254..fb0967a89 100644 --- a/src/serialization/json_object.cpp +++ b/src/serialization/json_object.cpp @@ -1140,6 +1140,7 @@ void toJsonValue(rapidjson::Writer& dest, const rct::rctSig& INSERT_INTO_JSON_OBJECT(dest, bulletproofs, sig.p.bulletproofs); INSERT_INTO_JSON_OBJECT(dest, bulletproofs_plus, sig.p.bulletproofs_plus); INSERT_INTO_JSON_OBJECT(dest, mlsags, sig.p.MGs); + INSERT_INTO_JSON_OBJECT(dest, clsags, sig.p.CLSAGs); INSERT_INTO_JSON_OBJECT(dest, pseudo_outs, sig.get_pseudo_outs()); dest.EndObject(); @@ -1175,6 +1176,7 @@ void fromJsonValue(const rapidjson::Value& val, rct::rctSig& sig) GET_FROM_JSON_OBJECT(prunable->value, sig.p.bulletproofs, bulletproofs); GET_FROM_JSON_OBJECT(prunable->value, sig.p.bulletproofs_plus, bulletproofs_plus); GET_FROM_JSON_OBJECT(prunable->value, sig.p.MGs, mlsags); + GET_FROM_JSON_OBJECT(prunable->value, sig.p.CLSAGs, clsags); GET_FROM_JSON_OBJECT(prunable->value, pseudo_outs, pseudo_outs); sig.get_pseudo_outs() = std::move(pseudo_outs); @@ -1185,6 +1187,7 @@ void fromJsonValue(const rapidjson::Value& val, rct::rctSig& sig) sig.p.bulletproofs.clear(); sig.p.bulletproofs_plus.clear(); sig.p.MGs.clear(); + sig.p.CLSAGs.clear(); sig.get_pseudo_outs().clear(); } } @@ -1393,6 +1396,29 @@ void fromJsonValue(const rapidjson::Value& val, rct::mgSig& sig) GET_FROM_JSON_OBJECT(val, sig.cc, cc); } +void toJsonValue(rapidjson::Writer& dest, const rct::clsag& sig) +{ + dest.StartObject(); + + INSERT_INTO_JSON_OBJECT(dest, s, sig.s); + INSERT_INTO_JSON_OBJECT(dest, c1, sig.c1); + INSERT_INTO_JSON_OBJECT(dest, D, sig.D); + + dest.EndObject(); +} + +void fromJsonValue(const rapidjson::Value& val, rct::clsag& sig) +{ + if (!val.IsObject()) + { + throw WRONG_TYPE("key64 (rct::key[64])"); + } + + GET_FROM_JSON_OBJECT(val, sig.s, s); + GET_FROM_JSON_OBJECT(val, sig.c1, c1); + GET_FROM_JSON_OBJECT(val, sig.D, D); +} + void toJsonValue(rapidjson::Writer& dest, const cryptonote::rpc::DaemonInfo& info) { dest.StartObject(); diff --git a/src/serialization/json_object.h b/src/serialization/json_object.h index 513ecfd34..cb45b264d 100644 --- a/src/serialization/json_object.h +++ b/src/serialization/json_object.h @@ -304,6 +304,9 @@ void fromJsonValue(const rapidjson::Value& val, rct::boroSig& sig); void toJsonValue(rapidjson::Writer& dest, const rct::mgSig& sig); void fromJsonValue(const rapidjson::Value& val, rct::mgSig& sig); +void toJsonValue(rapidjson::Writer& dest, const rct::clsag& sig); +void fromJsonValue(const rapidjson::Value& val, rct::clsag& sig); + void toJsonValue(rapidjson::Writer& dest, const cryptonote::rpc::DaemonInfo& info); void fromJsonValue(const rapidjson::Value& val, cryptonote::rpc::DaemonInfo& info);