diff options
author | pavook <pavook@yandex-team.com> | 2025-02-24 14:37:38 +0300 |
---|---|---|
committer | pavook <pavook@yandex-team.com> | 2025-02-24 15:38:19 +0300 |
commit | 5cacc5455bffe7f55e238eb87fee7eee00303c86 (patch) | |
tree | 1a7ea78ca74f7c10b37d834adc3b1b00415c7a9b | |
parent | 072c05250a4dabc1d62450f22f8d0b7b642575e8 (diff) | |
download | ydb-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.cpp | 3 | ||||
-rw-r--r-- | yt/yt/client/driver/distributed_table_commands.cpp | 2 | ||||
-rw-r--r-- | yt/yt/client/signature/generator.cpp | 4 | ||||
-rw-r--r-- | yt/yt/client/signature/generator.h | 2 | ||||
-rw-r--r-- | yt/yt/client/signature/signature.cpp | 12 | ||||
-rw-r--r-- | yt/yt/client/signature/signature.h | 4 | ||||
-rw-r--r-- | yt/yt/client/signature/unittests/dummy_ut.cpp | 4 | ||||
-rw-r--r-- | yt/yt/client/signature/unittests/signature_ut.cpp | 2 |
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()); } |