1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef PPAPI_PROXY_PLATFORM_VERIFICATION_PRIVATE_RESOURCE_H_
6#define PPAPI_PROXY_PLATFORM_VERIFICATION_PRIVATE_RESOURCE_H_
7
8#include "ppapi/proxy/plugin_resource.h"
9#include "ppapi/proxy/ppapi_proxy_export.h"
10#include "ppapi/thunk/ppb_platform_verification_api.h"
11
12namespace ppapi {
13namespace proxy {
14
15class PPAPI_PROXY_EXPORT PlatformVerificationPrivateResource
16    : public PluginResource,
17      public thunk::PPB_PlatformVerification_API {
18 public:
19  PlatformVerificationPrivateResource(Connection connection,
20                                      PP_Instance instance);
21
22 private:
23  struct ChallengePlatformParams {
24    PP_Var* signed_data;
25    PP_Var* signed_data_signature;
26    PP_Var* platform_key_certificate;
27    scoped_refptr<TrackedCallback> callback;
28  };
29
30  virtual ~PlatformVerificationPrivateResource();
31
32  // PluginResource overrides.
33  virtual thunk::PPB_PlatformVerification_API*
34      AsPPB_PlatformVerification_API() OVERRIDE;
35
36  // PPB_PlatformVerification_API implementation.
37  virtual int32_t ChallengePlatform(
38      const PP_Var& service_id,
39      const PP_Var& challenge,
40      PP_Var* signed_data,
41      PP_Var* signed_data_signature,
42      PP_Var* platform_key_certificate,
43      const scoped_refptr<TrackedCallback>& callback) OVERRIDE;
44  void OnChallengePlatformReply(
45      ChallengePlatformParams output_params,
46      const ResourceMessageReplyParams& params,
47      const std::vector<uint8_t>& raw_signed_data,
48      const std::vector<uint8_t>& raw_signed_data_signature,
49      const std::string& raw_platform_key_certificate);
50
51  DISALLOW_COPY_AND_ASSIGN(PlatformVerificationPrivateResource);
52};
53
54}  // namespace proxy
55}  // namespace ppapi
56
57#endif  // PPAPI_PROXY_PLATFORM_VERIFICATION_PRIVATE_RESOURCE_H_
58