aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpavook <pavook@yandex-team.com>2025-02-24 14:37:38 +0300
committerpavook <pavook@yandex-team.com>2025-02-24 15:38:19 +0300
commit5cacc5455bffe7f55e238eb87fee7eee00303c86 (patch)
tree1a7ea78ca74f7c10b37d834adc3b1b00415c7a9b
parent072c05250a4dabc1d62450f22f8d0b7b642575e8 (diff)
downloadydb-5cacc5455bffe7f55e238eb87fee7eee00303c86.tar.gz
TYsonString -> std::string in TSignature payload
This is needed to allow signing arbitrary blobs commit_hash:6f6a563495f43af4d248a7cac918e2c2fc730e60
-rw-r--r--yt/yt/client/api/distributed_table_session.cpp3
-rw-r--r--yt/yt/client/driver/distributed_table_commands.cpp2
-rw-r--r--yt/yt/client/signature/generator.cpp4
-rw-r--r--yt/yt/client/signature/generator.h2
-rw-r--r--yt/yt/client/signature/signature.cpp12
-rw-r--r--yt/yt/client/signature/signature.h4
-rw-r--r--yt/yt/client/signature/unittests/dummy_ut.cpp4
-rw-r--r--yt/yt/client/signature/unittests/signature_ut.cpp2
8 files changed, 17 insertions, 16 deletions
diff --git a/yt/yt/client/api/distributed_table_session.cpp b/yt/yt/client/api/distributed_table_session.cpp
index 555c5f6812..24e1a4a741 100644
--- a/yt/yt/client/api/distributed_table_session.cpp
+++ b/yt/yt/client/api/distributed_table_session.cpp
@@ -15,6 +15,7 @@ using namespace NTransactionClient;
using namespace NYTree;
using namespace NCypressClient;
using namespace NChunkClient;
+using namespace NYson;
////////////////////////////////////////////////////////////////////////////////
@@ -124,7 +125,7 @@ TFuture<void> PingDistributedWriteSession(
const TSignedDistributedWriteSessionPtr& session,
const IClientPtr& client)
{
- auto concreteSession = ConvertTo<TDistributedWriteSession>(session.Underlying()->Payload());
+ auto concreteSession = ConvertTo<TDistributedWriteSession>(TYsonStringBuf(session.Underlying()->Payload()));
// NB(arkady-e1ppa): AutoAbort = false by default.
auto mainTx = client->AttachTransaction(concreteSession.MainTransactionId);
diff --git a/yt/yt/client/driver/distributed_table_commands.cpp b/yt/yt/client/driver/distributed_table_commands.cpp
index 80812a03af..4942408318 100644
--- a/yt/yt/client/driver/distributed_table_commands.cpp
+++ b/yt/yt/client/driver/distributed_table_commands.cpp
@@ -117,7 +117,7 @@ NApi::ITableWriterPtr TWriteTableFragmentCommand::CreateTableWriter(
.ValueOrThrow();
if (!validationSuccessful) {
- auto concreteCookie = ConvertTo<TWriteFragmentCookie>(signedCookie.Underlying()->Payload());
+ auto concreteCookie = ConvertTo<TWriteFragmentCookie>(TYsonStringBuf(signedCookie.Underlying()->Payload()));
THROW_ERROR_EXCEPTION(
"Signature validation failed for write table fragment")
diff --git a/yt/yt/client/signature/generator.cpp b/yt/yt/client/signature/generator.cpp
index 5687cd2b05..71c12d6ae2 100644
--- a/yt/yt/client/signature/generator.cpp
+++ b/yt/yt/client/signature/generator.cpp
@@ -10,10 +10,10 @@ using namespace NYson;
////////////////////////////////////////////////////////////////////////////////
-TSignaturePtr ISignatureGenerator::Sign(TYsonString data)
+TSignaturePtr ISignatureGenerator::Sign(std::string payload)
{
auto signature = New<TSignature>();
- signature->Payload_ = std::move(data);
+ signature->Payload_ = std::move(payload);
Sign(signature);
return signature;
}
diff --git a/yt/yt/client/signature/generator.h b/yt/yt/client/signature/generator.h
index 6dc12eef9f..6574128736 100644
--- a/yt/yt/client/signature/generator.h
+++ b/yt/yt/client/signature/generator.h
@@ -15,7 +15,7 @@ struct ISignatureGenerator
//! based on its payload.
virtual void Sign(const TSignaturePtr& signature) = 0;
- [[nodiscard]] TSignaturePtr Sign(NYson::TYsonString data);
+ [[nodiscard]] TSignaturePtr Sign(std::string payload);
};
DEFINE_REFCOUNTED_TYPE(ISignatureGenerator)
diff --git a/yt/yt/client/signature/signature.cpp b/yt/yt/client/signature/signature.cpp
index 0a71e0a02c..b7b26d25ec 100644
--- a/yt/yt/client/signature/signature.cpp
+++ b/yt/yt/client/signature/signature.cpp
@@ -14,7 +14,7 @@ using namespace NYTree;
////////////////////////////////////////////////////////////////////////////////
-const TYsonString& TSignature::Payload() const
+const std::string& TSignature::Payload() const
{
return Payload_;
}
@@ -26,8 +26,8 @@ void Serialize(const TSignature& signature, IYsonConsumer* consumer)
consumer->OnBeginMap();
BuildYsonMapFragmentFluently(consumer)
.Item("header").Value(signature.Header_.ToString())
- .Item("payload").Value(signature.Payload_.ToString())
- .Item("signature").Value(TString(
+ .Item("payload").Value(signature.Payload_)
+ .Item("signature").Value(TStringBuf(
reinterpret_cast<const char*>(signature.Signature_.data()),
signature.Signature_.size()));
consumer->OnEndMap();
@@ -39,10 +39,10 @@ void Deserialize(TSignature& signature, INodePtr node)
{
auto mapNode = node->AsMap();
signature.Header_ = TYsonString(mapNode->GetChildValueOrThrow<TString>("header"));
- signature.Payload_ = TYsonString(mapNode->GetChildValueOrThrow<TString>("payload"));
+ signature.Payload_ = mapNode->GetChildValueOrThrow<std::string>("payload");
- auto signatureString = mapNode->GetChildValueOrThrow<TString>("signature");
- auto signatureBytes = std::as_bytes(std::span(TStringBuf(signatureString)));
+ auto signatureString = mapNode->GetChildValueOrThrow<std::string>("signature");
+ auto signatureBytes = std::as_bytes(std::span(signatureString));
signature.Signature_.resize(signatureBytes.size());
std::copy(signatureBytes.begin(), signatureBytes.end(), signature.Signature_.begin());
diff --git a/yt/yt/client/signature/signature.h b/yt/yt/client/signature/signature.h
index ea74bb8192..a9bbaf8660 100644
--- a/yt/yt/client/signature/signature.h
+++ b/yt/yt/client/signature/signature.h
@@ -20,11 +20,11 @@ public:
//! Constructs an empty TSignature.
TSignature() = default;
- [[nodiscard]] const NYson::TYsonString& Payload() const;
+ [[nodiscard]] const std::string& Payload() const;
private:
NYson::TYsonString Header_;
- NYson::TYsonString Payload_;
+ std::string Payload_;
std::vector<std::byte> Signature_;
friend struct ISignatureGenerator;
diff --git a/yt/yt/client/signature/unittests/dummy_ut.cpp b/yt/yt/client/signature/unittests/dummy_ut.cpp
index eba593ad3c..364717473e 100644
--- a/yt/yt/client/signature/unittests/dummy_ut.cpp
+++ b/yt/yt/client/signature/unittests/dummy_ut.cpp
@@ -24,7 +24,7 @@ const auto YsonSignature = TYsonString(
TEST(TDummySignatureGeneratorTest, Generate)
{
auto generator = CreateDummySignatureGenerator();
- auto signature = generator->Sign(TYsonString("payload"_sb));
+ auto signature = generator->Sign("payload");
EXPECT_EQ(ConvertToYsonString(signature, EYsonFormat::Text), YsonSignature);
generator->Sign(signature);
EXPECT_EQ(ConvertToYsonString(signature, EYsonFormat::Text), YsonSignature);
@@ -45,7 +45,7 @@ TEST(TDummySignatureValidatorTest, GenerateValidate)
{
auto generator = CreateDummySignatureGenerator();
auto validator = CreateDummySignatureValidator();
- auto signature = generator->Sign(TYsonString("payload"_sb));
+ auto signature = generator->Sign("payload");
EXPECT_TRUE(validator->Validate(signature).Get().Value());
}
diff --git a/yt/yt/client/signature/unittests/signature_ut.cpp b/yt/yt/client/signature/unittests/signature_ut.cpp
index 2639715746..a570042370 100644
--- a/yt/yt/client/signature/unittests/signature_ut.cpp
+++ b/yt/yt/client/signature/unittests/signature_ut.cpp
@@ -23,7 +23,7 @@ TEST(TSignatureTest, DeserializeSerialize)
TSignaturePtr signature;
EXPECT_NO_THROW(signature = ConvertTo<TSignaturePtr>(ysonOK));
- EXPECT_EQ(signature->Payload().ToString(), "payload");
+ EXPECT_EQ(signature->Payload(), "payload");
EXPECT_EQ(ConvertToYsonString(signature, EYsonFormat::Text).ToString(), ysonOK.ToString());
}