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 CHROME_BROWSER_RENDERER_HOST_PEPPER_PEPPER_PLATFORM_VERIFICATION_MESSAGE_FILTER_H_ 6#define CHROME_BROWSER_RENDERER_HOST_PEPPER_PEPPER_PLATFORM_VERIFICATION_MESSAGE_FILTER_H_ 7 8#include "chrome/browser/chromeos/attestation/platform_verification_flow.h" 9#include "ppapi/c/pp_instance.h" 10#include "ppapi/host/resource_message_filter.h" 11 12namespace content { 13class BrowserPpapiHost; 14} // namespace content 15 16namespace ppapi { 17namespace host { 18struct HostMessageContext; 19} // namespace host 20} // namespace ppapi 21 22namespace chrome { 23 24// This filter handles messages for platform verification on the UI thread. 25class PepperPlatformVerificationMessageFilter 26 : public ppapi::host::ResourceMessageFilter { 27 public: 28 PepperPlatformVerificationMessageFilter(content::BrowserPpapiHost* host, 29 PP_Instance instance); 30 31 private: 32 virtual ~PepperPlatformVerificationMessageFilter(); 33 34 // ppapi::host::ResourceMessageFilter overrides. 35 virtual scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage( 36 const IPC::Message& message) OVERRIDE; 37 virtual int32_t OnResourceMessageReceived( 38 const IPC::Message& msg, 39 ppapi::host::HostMessageContext* context) OVERRIDE; 40 41 int32_t OnChallengePlatform(ppapi::host::HostMessageContext* context, 42 const std::string& service_id, 43 const std::vector<uint8_t>& challenge); 44 45 // PlatformVerificationFlow callbacks. 46 void ChallengePlatformCallback( 47 ppapi::host::ReplyMessageContext reply_context, 48 chromeos::attestation::PlatformVerificationFlow::Result challenge_result, 49 const std::string& signed_data, 50 const std::string& signature, 51 const std::string& platform_key_certificate); 52 53 // Used to lookup the WebContents associated with this PP_Instance. 54 int render_process_id_; 55 int render_frame_id_; 56 57 // Must only be accessed on the UI thread. 58 scoped_refptr<chromeos::attestation::PlatformVerificationFlow> pv_; 59 60 DISALLOW_COPY_AND_ASSIGN(PepperPlatformVerificationMessageFilter); 61}; 62 63} // namespace chrome 64 65#endif // CHROME_BROWSER_RENDERER_HOST_PEPPER_PEPPER_PLATFORM_VERIFICATION_MESSAGE_FILTER_H_ 66