14811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim/* 24811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * Copyright 2016, The Android Open Source Project 34811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * 44811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * Licensed under the Apache License, Version 2.0 (the "License"); 54811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * you may not use this file except in compliance with the License. 64811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * You may obtain a copy of the License at 74811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * 84811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * http://www.apache.org/licenses/LICENSE-2.0 94811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * 104811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * Unless required by applicable law or agreed to in writing, software 114811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * distributed under the License is distributed on an "AS IS" BASIS, 124811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * See the License for the specific language governing permissions and 144811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * limitations under the License. 154811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim */ 164811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim 174811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim#ifndef SECURE_BUFFER_H_ 184811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim 194811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim#define SECURE_BUFFER_H_ 204811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim 214811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim#include <media/ICrypto.h> 224811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim#include <media/MediaCodecBuffer.h> 234811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim 244811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kimnamespace android { 254811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim 264811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kimclass NativeHandle; 274811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim 284811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim/** 294811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * Secure MediaCodecBuffer implementation. 304811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * 314811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * For classes outside of MediaCodec, this buffer is an opaque buffer only with 324811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * the size information. For decryption, it exposes underlying handle/pointer 334811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim * and its type, which can be fed to ICrypto::decrypt(). 344811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim */ 354811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kimclass SecureBuffer : public MediaCodecBuffer { 364811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kimpublic: 37fd44d8e2f2d37184f7add67125657f3fbfb5a085Wonsik Kim SecureBuffer(const sp<AMessage> &format, const void *ptr, size_t size); 384811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim SecureBuffer(const sp<AMessage> &format, const sp<NativeHandle> &handle, size_t size); 394811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim 404811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim virtual ~SecureBuffer() = default; 414811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim 424811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim void *getDestinationPointer(); 434811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim ICrypto::DestinationType getDestinationType(); 444811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim 454811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kimprivate: 464811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim SecureBuffer() = delete; 474811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim 484811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim const void *mPointer; 494811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim const sp<NativeHandle> mHandle; 504811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim}; 514811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim 524811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim} // namespace android 534811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim 544811923e80a8abefa278307ebf8cc9b0294ba67fWonsik Kim#endif // SECURE_BUFFER_H_ 55