// Copyright 2020 Google LLC. All Rights Reserved. This file and proprietary // source code may only be used and distributed under the Widevine Master // License Agreement. #ifndef EMM_PARSER_H #define EMM_PARSER_H #include #include #include "cas_types.h" #include "media_cas.pb.h" namespace wvcas { using video_widevine::EmmPayload; class EmmParser { public: EmmParser(const EmmParser&) = delete; EmmParser& operator=(const EmmParser&) = delete; virtual ~EmmParser() = default; // The EmmParser factory method. // The methods validates the passed in |emm|. If validation is successful, it // constructs and returns an EmmParser. Otherwise, nullptr is returned. static std::unique_ptr Create(const CasEmm& emm); // Accessor methods. virtual uint64_t timestamp() const { return timestamp_; } virtual std::string signature() const { return signature_; } virtual EmmPayload emm_payload() const { return emm_payload_; }; protected: // Called by the factory create and unit test. EmmParser() = default; private: bool Parse(int start_index, const CasEmm& emm); uint8_t version_; uint64_t timestamp_; EmmPayload emm_payload_; std::string signature_; }; } // namespace wvcas #endif // EMM_PARSER_H