Crypto.h revision ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6
1ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber/*
2ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber * Copyright (C) 2012 The Android Open Source Project
3ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber *
4ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber * you may not use this file except in compliance with the License.
6ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber * You may obtain a copy of the License at
7ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber *
8ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber *
10ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber * Unless required by applicable law or agreed to in writing, software
11ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber * See the License for the specific language governing permissions and
14ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber * limitations under the License.
15ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber */
16ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber
17ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber#ifndef CRYPTO_H_
18ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber
19ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber#define CRYPTO_H_
20ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber
21ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber#include <media/ICrypto.h>
22ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber#include <utils/threads.h>
23ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber
24ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Hubernamespace android {
25ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber
26ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huberstruct Crypto : public BnCrypto {
27ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber    Crypto();
28ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber
29ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber    virtual status_t initialize();
30ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber    virtual status_t terminate();
31ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber
32ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber    virtual status_t setEntitlementKey(
33ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber            const void *key, size_t keyLength);
34ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber
35ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber    virtual status_t setEntitlementControlMessage(
36ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber            const void *msg, size_t msgLength);
37ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber
38ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber    virtual ssize_t decryptVideo(
39ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber            const void *iv, size_t ivLength,
40ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber            const void *srcData, size_t srcDataSize,
41ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber            void *dstData, size_t dstDataOffset);
42ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber
43ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber    virtual ssize_t decryptAudio(
44ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber            const void *iv, size_t ivLength,
45ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber            const void *srcData, size_t srcDataSize,
46ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber            void *dstData, size_t dstDataSize);
47ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber
48ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huberprotected:
49ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber    virtual ~Crypto();
50ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber
51ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huberprivate:
52ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber    DISALLOW_EVIL_CONSTRUCTORS(Crypto);
53ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber};
54ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber
55ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber}  // namespace android
56ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber
57ed3e3e046840d5bf1ca84a8c0cc097425e89d6d6Andreas Huber#endif  // CRYPTO_H_
58