diff options
| author | ppodolsky <[email protected]> | 2022-02-10 16:48:03 +0300 |
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:48:03 +0300 |
| commit | ff24d93e6130e0944ce0c9e2d2f54e1e88fc08dd (patch) | |
| tree | 5f33d1a762f7b540dff1883c83c71b391876a558 /library/cpp/tvmauth/src/service_impl.cpp | |
| parent | 02eacb2e0795d01f1d266d68904068b3789750f5 (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 1 of 2.
Diffstat (limited to 'library/cpp/tvmauth/src/service_impl.cpp')
| -rw-r--r-- | library/cpp/tvmauth/src/service_impl.cpp | 180 |
1 files changed, 90 insertions, 90 deletions
diff --git a/library/cpp/tvmauth/src/service_impl.cpp b/library/cpp/tvmauth/src/service_impl.cpp index 528a244647d..570dda9cacd 100644 --- a/library/cpp/tvmauth/src/service_impl.cpp +++ b/library/cpp/tvmauth/src/service_impl.cpp @@ -1,51 +1,51 @@ -#include "service_impl.h" - -#include "parser.h" -#include "utils.h" - +#include "service_impl.h" + +#include "parser.h" +#include "utils.h" + #include <library/cpp/tvmauth/exception.h> #include <library/cpp/tvmauth/ticket_status.h> - -#include <util/generic/strbuf.h> -#include <util/string/cast.h> -#include <util/string/split.h> - + +#include <util/generic/strbuf.h> +#include <util/string/cast.h> +#include <util/string/split.h> + namespace NTvmAuth { static const char* EX_MSG = "Method cannot be used in non-valid ticket"; TCheckedServiceTicket::TImpl::operator bool() const { return (Status_ == ETicketStatus::Ok); - } - + } + TTvmId TCheckedServiceTicket::TImpl::GetSrc() const { Y_ENSURE_EX(bool(*this), TNotAllowedException() << EX_MSG); return ProtobufTicket_.service().srcclientid(); - } - + } + const TScopes& TCheckedServiceTicket::TImpl::GetScopes() const { Y_ENSURE_EX(bool(*this), TNotAllowedException() << EX_MSG); if (CachedScopes_.empty()) { for (const auto& el : ProtobufTicket_.service().scopes()) { CachedScopes_.push_back(el); - } - } + } + } return CachedScopes_; - } - + } + bool TCheckedServiceTicket::TImpl::HasScope(TStringBuf scopeName) const { Y_ENSURE_EX(bool(*this), TNotAllowedException() << EX_MSG); return std::binary_search(ProtobufTicket_.service().scopes().begin(), ProtobufTicket_.service().scopes().end(), scopeName); - } - + } + ETicketStatus TCheckedServiceTicket::TImpl::GetStatus() const { return Status_; - } - + } + time_t TCheckedServiceTicket::TImpl::GetExpirationTime() const { Y_ENSURE_EX(bool(*this), TNotAllowedException() << EX_MSG); return ProtobufTicket_.expirationtime(); - } - + } + TString TCheckedServiceTicket::TImpl::DebugInfo() const { if (CachedDebugInfo_) { return CachedDebugInfo_; @@ -54,17 +54,17 @@ namespace NTvmAuth { if (Status_ == ETicketStatus::Malformed) { CachedDebugInfo_ = "status=malformed;"; return CachedDebugInfo_; - } + } - TString targetString = "ticket_type="; + TString targetString = "ticket_type="; targetString.reserve(256); if (Status_ == ETicketStatus::InvalidTicketType) { - targetString.append("not-serv;"); + targetString.append("not-serv;"); CachedDebugInfo_ = targetString; - return targetString; - } + return targetString; + } - targetString.append("serv"); + targetString.append("serv"); if (ProtobufTicket_.has_expirationtime()) targetString.append(";expiration_time=").append(IntToString<10>(ProtobufTicket_.expirationtime())); if (ProtobufTicket_.service().has_srcclientid()) { @@ -74,17 +74,17 @@ namespace NTvmAuth { targetString.append(";dst=").append(IntToString<10>(ProtobufTicket_.service().dstclientid())); } for (const auto& scope : ProtobufTicket_.service().scopes()) { - targetString.append(";scope=").append(scope); - } + targetString.append(";scope=").append(scope); + } if (ProtobufTicket_.service().has_issueruid()) { targetString.append(";issuer_uid=").append(IntToString<10>(ProtobufTicket_.service().GetissuerUid())); } - targetString.append(";"); + targetString.append(";"); CachedDebugInfo_ = targetString; - return targetString; - } - + return targetString; + } + TMaybe<TUid> TCheckedServiceTicket::TImpl::GetIssuerUid() const { Y_ENSURE_EX(bool(*this), TNotAllowedException() << EX_MSG); return ProtobufTicket_.service().has_issueruid() @@ -99,9 +99,9 @@ namespace NTvmAuth { TCheckedServiceTicket::TImpl::TImpl(ETicketStatus status, ticket2::Ticket&& protobufTicket) : Status_(status) , ProtobufTicket_(std::move(protobufTicket)) - { - } - + { + } + TServiceTicketImplPtr TCheckedServiceTicket::TImpl::CreateTicketForTests(ETicketStatus status, TTvmId src, TMaybe<TUid> issuerUid) { @@ -117,42 +117,42 @@ namespace NTvmAuth { TServiceContext::TImpl::TImpl(TStringBuf secretBase64, TTvmId selfTvmId, TStringBuf tvmKeysResponse) : Secret_(ParseSecret(secretBase64)) , SelfTvmId_(selfTvmId) - { - ResetKeys(tvmKeysResponse); - } - + { + ResetKeys(tvmKeysResponse); + } + TServiceContext::TImpl::TImpl(TTvmId selfTvmId, TStringBuf tvmKeysResponse) : SelfTvmId_(selfTvmId) - { - ResetKeys(tvmKeysResponse); - } - + { + ResetKeys(tvmKeysResponse); + } + TServiceContext::TImpl::TImpl(TStringBuf secretBase64) : Secret_(ParseSecret(secretBase64)) { } - void TServiceContext::TImpl::ResetKeys(TStringBuf tvmKeysResponse) { - tvm_keys::Keys protoKeys; - if (!protoKeys.ParseFromString(TParserTvmKeys::ParseStrV1(tvmKeysResponse))) { + void TServiceContext::TImpl::ResetKeys(TStringBuf tvmKeysResponse) { + tvm_keys::Keys protoKeys; + if (!protoKeys.ParseFromString(TParserTvmKeys::ParseStrV1(tvmKeysResponse))) { ythrow TMalformedTvmKeysException() << "Malformed TVM keys"; - } - - NRw::TPublicKeys keys; - for (int idx = 0; idx < protoKeys.tvm_size(); ++idx) { - const tvm_keys::TvmKey& k = protoKeys.tvm(idx); - keys.emplace(k.gen().id(), - k.gen().body()); - } - - if (keys.empty()) { + } + + NRw::TPublicKeys keys; + for (int idx = 0; idx < protoKeys.tvm_size(); ++idx) { + const tvm_keys::TvmKey& k = protoKeys.tvm(idx); + keys.emplace(k.gen().id(), + k.gen().body()); + } + + if (keys.empty()) { ythrow TEmptyTvmKeysException() << "Empty TVM keys"; - } - + } + Keys_ = std::move(keys); - } - - TServiceTicketImplPtr TServiceContext::TImpl::Check(TStringBuf ticketBody) const { + } + + TServiceTicketImplPtr TServiceContext::TImpl::Check(TStringBuf ticketBody) const { if (Keys_.empty()) { ythrow TEmptyTvmKeysException() << "Empty TVM keys"; } @@ -160,44 +160,44 @@ namespace NTvmAuth { TParserTickets::TRes res = TParserTickets::ParseV3(ticketBody, Keys_, TParserTickets::ServiceFlag()); if (res.Status != ETicketStatus::Ok) { return MakeHolder<TCheckedServiceTicket::TImpl>(res.Status, std::move(res.Ticket)); - } - + } + const ETicketStatus status = CheckProtobufServiceTicket(res.Ticket); return MakeHolder<TCheckedServiceTicket::TImpl>(status, std::move(res.Ticket)); - } - - TString TServiceContext::TImpl::SignCgiParamsForTvm(TStringBuf ts, TStringBuf dst, TStringBuf scopes) const { + } + + TString TServiceContext::TImpl::SignCgiParamsForTvm(TStringBuf ts, TStringBuf dst, TStringBuf scopes) const { if (Secret_.Value().empty()) { ythrow TMalformedTvmSecretException() << "Malformed TVM secret: it is empty"; - } + } return NUtils::SignCgiParamsForTvm(Secret_, ts, dst, scopes); - } - + } + ETicketStatus TServiceContext::TImpl::CheckProtobufServiceTicket(const ticket2::Ticket& ticket) const { - if (!ticket.has_service()) { + if (!ticket.has_service()) { return ETicketStatus::Malformed; - } + } if (ticket.service().dstclientid() != SelfTvmId_) { return ETicketStatus::InvalidDst; - } + } return ETicketStatus::Ok; - } - - TString TServiceContext::TImpl::ParseSecret(TStringBuf secretBase64) { - while (secretBase64 && secretBase64.back() == '\n') { - secretBase64.Chop(1); - } - + } + + TString TServiceContext::TImpl::ParseSecret(TStringBuf secretBase64) { + while (secretBase64 && secretBase64.back() == '\n') { + secretBase64.Chop(1); + } + if (secretBase64.empty()) { ythrow TMalformedTvmSecretException() << "Malformed TVM secret: it is empty"; } - const TString secret = NUtils::Base64url2bin(secretBase64); - if (secret.empty()) { + const TString secret = NUtils::Base64url2bin(secretBase64); + if (secret.empty()) { ythrow TMalformedTvmSecretException() << "Malformed TVM secret: invalid base64url"; - } - - return secret; - } - + } + + return secret; + } + } |
