ZaStoGram_desktop/Telegram/SourceFiles/e2e_cloud/mls/observed_key_package.h
2026-08-02 03:12:00 +03:00

50 lines
1.3 KiB
C++

/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#pragma once
#include "e2e_cloud/core/interfaces.h"
#include "e2e_cloud/mls/client_key_package.h"
#include <cstdint>
#include <optional>
namespace E2ECloud {
enum class ObservedClientKeyPackageStatus {
Verified,
InvalidTransportMetadata,
InvalidEnvelope,
InvalidPublication,
InvalidTelegramAuthorBinding,
NotCurrentlyUsable,
};
struct ObservedClientKeyPackage {
TransportEnvelope envelope;
ClientKeyPackagePublication publication;
std::uint64_t telegramUserIdBinding = 0;
std::int64_t telegramMessageId = 0;
};
struct VerifyObservedClientKeyPackageOutcome {
ObservedClientKeyPackageStatus status
= ObservedClientKeyPackageStatus::InvalidEnvelope;
std::optional<ObservedClientKeyPackage> verified;
};
[[nodiscard]] VerifyObservedClientKeyPackageOutcome
VerifyObservedClientKeyPackage(
const TelegramTransport::UntrustedObject &object,
ConversationId expectedConversationId,
std::uint64_t expectedTelegramPeerIdBinding,
std::uint64_t expectedGroupGeneration,
std::uint64_t currentTime,
const EnvelopeCodec &envelopeCodec,
const Sha256Provider &sha256);
} // namespace E2ECloud