blob: 02ade3969f541e3bc90ce7b4e23e21c2ffc0ac97 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMECAST_PUBLIC_MEDIA_DECRYPT_CONTEXT_H_
#define CHROMECAST_PUBLIC_MEDIA_DECRYPT_CONTEXT_H_
#include <stdint.h>
#include <vector>
#include "cast_key_system.h"
namespace chromecast {
namespace media {
class CastDecoderBuffer;
// Provides the information needed to decrypt frames.
class DecryptContext {
public:
virtual ~DecryptContext() {}
// Get the key system to use for decryption.
virtual CastKeySystem GetKeySystem() = 0;
// Decrypts the given buffer. Returns true/false for success/failure.
//
// |opaque_handle| is a handle to the secure memory, which is only accessible
// by TEE.
//
// The decrypted data will be of size |buffer.data_size()| and there must be
// enough space in |opaque_handle| to store that data.
//
// If non-zero, |data_offset| specifies an offset to be applied to
// |opaque_handle| before the decrypted data is written.
virtual bool Decrypt(CastDecoderBuffer* buffer,
uint8_t* opaque_handle,
size_t data_offset) = 0;
};
} // namespace media
} // namespace chromecast
#endif // CHROMECAST_PUBLIC_MEDIA_DECRYPT_CONTEXT_H_