From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- media/gmp-clearkey/0.1/ClearKeySessionManager.h | 100 ++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 media/gmp-clearkey/0.1/ClearKeySessionManager.h (limited to 'media/gmp-clearkey/0.1/ClearKeySessionManager.h') diff --git a/media/gmp-clearkey/0.1/ClearKeySessionManager.h b/media/gmp-clearkey/0.1/ClearKeySessionManager.h new file mode 100644 index 000000000..041b3f036 --- /dev/null +++ b/media/gmp-clearkey/0.1/ClearKeySessionManager.h @@ -0,0 +1,100 @@ +/* + * Copyright 2015, Mozilla Foundation and contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __ClearKeyDecryptor_h__ +#define __ClearKeyDecryptor_h__ + +#include +#include +#include +#include + +#include "ClearKeyDecryptionManager.h" +#include "ClearKeySession.h" +#include "ClearKeyUtils.h" +#include "gmp-api/gmp-decryption.h" +#include "RefCounted.h" + +class ClearKeySessionManager final : public GMPDecryptor + , public RefCounted +{ +public: + ClearKeySessionManager(); + + virtual void Init(GMPDecryptorCallback* aCallback, + bool aDistinctiveIdentifierAllowed, + bool aPersistentStateAllowed) override; + + virtual void CreateSession(uint32_t aCreateSessionToken, + uint32_t aPromiseId, + const char* aInitDataType, + uint32_t aInitDataTypeSize, + const uint8_t* aInitData, + uint32_t aInitDataSize, + GMPSessionType aSessionType) override; + + virtual void LoadSession(uint32_t aPromiseId, + const char* aSessionId, + uint32_t aSessionIdLength) override; + + virtual void UpdateSession(uint32_t aPromiseId, + const char* aSessionId, + uint32_t aSessionIdLength, + const uint8_t* aResponse, + uint32_t aResponseSize) override; + + virtual void CloseSession(uint32_t aPromiseId, + const char* aSessionId, + uint32_t aSessionIdLength) override; + + virtual void RemoveSession(uint32_t aPromiseId, + const char* aSessionId, + uint32_t aSessionIdLength) override; + + virtual void SetServerCertificate(uint32_t aPromiseId, + const uint8_t* aServerCert, + uint32_t aServerCertSize) override; + + virtual void Decrypt(GMPBuffer* aBuffer, + GMPEncryptedBufferMetadata* aMetadata) override; + + virtual void DecryptingComplete() override; + + void PersistentSessionDataLoaded(GMPErr aStatus, + uint32_t aPromiseId, + const std::string& aSessionId, + const uint8_t* aKeyData, + uint32_t aKeyDataSize); + +private: + ~ClearKeySessionManager(); + + void DoDecrypt(GMPBuffer* aBuffer, GMPEncryptedBufferMetadata* aMetadata); + void Shutdown(); + + void ClearInMemorySessionData(ClearKeySession* aSession); + void Serialize(const ClearKeySession* aSession, std::vector& aOutKeyData); + + RefPtr mDecryptionManager; + + GMPDecryptorCallback* mCallback; + GMPThread* mThread; + + std::set mKeyIds; + std::map mSessions; +}; + +#endif // __ClearKeyDecryptor_h__ -- cgit v1.2.3