// Copyright 2013 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. #include "ppapi/cpp/private/platform_verification.h" #include "ppapi/c/pp_bool.h" #include "ppapi/c/pp_errors.h" #include "ppapi/c/private/ppb_platform_verification_private.h" #include "ppapi/cpp/instance_handle.h" #include "ppapi/cpp/module_impl.h" #include "ppapi/cpp/var.h" namespace pp { namespace { template <> const char* interface_name<PPB_PlatformVerification_Private_0_2>() { return PPB_PLATFORMVERIFICATION_PRIVATE_INTERFACE_0_2; } inline bool HasInterface() { return has_interface<PPB_PlatformVerification_Private_0_2>(); } inline const PPB_PlatformVerification_Private_0_2* GetInterface() { return get_interface<PPB_PlatformVerification_Private_0_2>(); } } // namespace PlatformVerification::PlatformVerification(const InstanceHandle& instance) { if (HasInterface()) PassRefFromConstructor(GetInterface()->Create(instance.pp_instance())); } PlatformVerification::~PlatformVerification() {} int32_t PlatformVerification::ChallengePlatform( const Var& service_id, const Var& challenge, Var* signed_data, Var* signed_data_signature, Var* platform_key_certificate, const CompletionCallback& callback) { if (!HasInterface()) return callback.MayForce(PP_ERROR_NOINTERFACE); return GetInterface()->ChallengePlatform( pp_resource(), service_id.pp_var(), challenge.pp_var(), const_cast<PP_Var*>(&signed_data->pp_var()), const_cast<PP_Var*>(&signed_data_signature->pp_var()), const_cast<PP_Var*>(&platform_key_certificate->pp_var()), callback.pp_completion_callback()); } } // namespace pp