158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)/* Copyright 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) */ 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)/** 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * This file defines the API for platform verification. Currently, it only 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * supports Chrome OS. 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) */ 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)[generate_thunk] 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)label Chrome { 148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) M32 = 0.2 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)/** 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * The <code>PPB_PlatformVerification_Private</code> interface allows authorized 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * services to verify that the underlying platform is trusted. An example of a 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * trusted platform is a Chrome OS device in verified boot mode. 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) */ 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)interface PPB_PlatformVerification_Private { 2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) /** 2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Create() creates a <code>PPB_PlatformVerification_Private</code> object. 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @pram[in] instance A <code>PP_Instance</code> identifying one instance of 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * a module. 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @return A <code>PP_Resource</code> corresponding to a 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * <code>PPB_PlatformVerification_Private</code> if successful, 0 if creation 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * failed. 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) */ 3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) PP_Resource Create([in] PP_Instance instance); 3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) /** 3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * IsPlatformVerification() determines if the provided resource is a 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * <code>PPB_PlatformVerification_Private</code>. 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> corresponding to a 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * <code>PPB_PlatformVerification_Private</code>. 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @return <code>PP_TRUE</code> if the resource is a 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * <code>PPB_PlatformVerification_Private</code>, <code>PP_FALSE</code> if the 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * resource is invalid or some type other than 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * <code>PPB_PlatformVerification_Private</code>. 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) */ 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) PP_Bool IsPlatformVerification([in] PP_Resource resource); 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) /** 5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Requests a platform challenge for a given service id. 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] service_id A <code>PP_Var</code> of type 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * <code>PP_VARTYPE_STRING</code> containing the service_id for the challenge. 5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] challenge A <code>PP_Var</code> of type 5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * <code>PP_VARTYPE_ARRAY_BUFFER</code> that contains the challenge data. 5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[out] signed_data A <code>PP_Var</code> of type 6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * <code>PP_VARTYPE_ARRAY_BUFFER</code> that contains the data signed by the 6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * platform. 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[out] signed_data_signature A <code>PP_Var</code> of type 6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * <code>PP_VARTYPE_ARRAY_BUFFER</code> that contains the signature of the 6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * signed data block. 6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[out] platform_key_certificate A <code>PP_Var</code> of type 6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * <code>PP_VARTYPE_STRING</code> that contains the device specific 6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * certificate for the requested service_id. 7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 7158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to be called after 7258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * the platform challenge has been completed. This callback will only run if 7358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * the return code is <code>PP_OK_COMPLETIONPENDING</code>. 7458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 7558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @return An int32_t containing an error code from <code>pp_errors.h</code>. 7658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) */ 7758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) int32_t ChallengePlatform( 7858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) [in] PP_Resource instance, 7958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) [in] PP_Var service_id, 8058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) [in] PP_Var challenge, 8158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) [out] PP_Var signed_data, 8258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) [out] PP_Var signed_data_signature, 8358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) [out] PP_Var platform_key_certificate, 8458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) [in] PP_CompletionCallback callback); 8558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 86