| // 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 |