diff options
author | dalecurtis@google.com <dalecurtis@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-09 22:35:47 +0000 |
---|---|---|
committer | dalecurtis@google.com <dalecurtis@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-09 22:35:47 +0000 |
commit | 56de9038d4ccffd29e75e67ed11eda3ff3cc11bf (patch) | |
tree | 0927e9ec0a34f4069e2981c7f15d325da5248f4b /ppapi/c | |
parent | c1ee74a49064d150157fd5791c4ddae2d2f40260 (diff) | |
download | chromium_src-56de9038d4ccffd29e75e67ed11eda3ff3cc11bf.zip chromium_src-56de9038d4ccffd29e75e67ed11eda3ff3cc11bf.tar.gz chromium_src-56de9038d4ccffd29e75e67ed11eda3ff3cc11bf.tar.bz2 |
Add PPAPI interfaces for platform verification.
Interfaces only at this point. Implementation to follow. API mirrors
that which is provided to the CDMs in http://crrev.com/221019
CanChallengePlatform() can be synchronous since it will just check a
command line flag passed to the process.
BUG=270294
TEST=none
R=ddorwin@chromium.org, dmichael@chromium.org
Review URL: https://codereview.chromium.org/23569005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@222113 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/c')
-rw-r--r-- | ppapi/c/ppb_file_system.h | 6 | ||||
-rw-r--r-- | ppapi/c/private/ppb_platform_verification_private.h | 119 |
2 files changed, 121 insertions, 4 deletions
diff --git a/ppapi/c/ppb_file_system.h b/ppapi/c/ppb_file_system.h index 28b8cca..9560832 100644 --- a/ppapi/c/ppb_file_system.h +++ b/ppapi/c/ppb_file_system.h @@ -3,7 +3,7 @@ * found in the LICENSE file. */ -/* From ppb_file_system.idl modified Thu May 2 16:44:38 2013. */ +/* From ppb_file_system.idl modified Thu Jun 13 14:30:40 2013. */ #ifndef PPAPI_C_PPB_FILE_SYSTEM_H_ #define PPAPI_C_PPB_FILE_SYSTEM_H_ @@ -66,9 +66,7 @@ struct PPB_FileSystem_1_0 { * @param[in] expected_size The expected size of the file system. Note that * this does not request quota; to do that, you must either invoke * requestQuota from JavaScript: - - - * http://www.html5rocks.com/en/tutorials/file/filesystem/#toc-requesting-quota + * http://www.html5rocks.com/en/tutorials/file/filesystem/#toc-requesting-quota * or set the unlimitedStorage permission for Chrome Web Store apps: * http://code.google.com/chrome/extensions/manifest.html#permissions * diff --git a/ppapi/c/private/ppb_platform_verification_private.h b/ppapi/c/private/ppb_platform_verification_private.h new file mode 100644 index 0000000..ed76738 --- /dev/null +++ b/ppapi/c/private/ppb_platform_verification_private.h @@ -0,0 +1,119 @@ +/* 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. + */ + +/* From private/ppb_platform_verification_private.idl, + * modified Mon Sep 9 12:54:47 2013. + */ + +#ifndef PPAPI_C_PRIVATE_PPB_PLATFORM_VERIFICATION_PRIVATE_H_ +#define PPAPI_C_PRIVATE_PPB_PLATFORM_VERIFICATION_PRIVATE_H_ + +#include "ppapi/c/pp_bool.h" +#include "ppapi/c/pp_completion_callback.h" +#include "ppapi/c/pp_instance.h" +#include "ppapi/c/pp_macros.h" +#include "ppapi/c/pp_resource.h" +#include "ppapi/c/pp_stdint.h" +#include "ppapi/c/pp_var.h" + +#define PPB_PLATFORMVERIFICATION_PRIVATE_INTERFACE_0_1 \ + "PPB_PlatformVerification_Private;0.1" +#define PPB_PLATFORMVERIFICATION_PRIVATE_INTERFACE \ + PPB_PLATFORMVERIFICATION_PRIVATE_INTERFACE_0_1 + +/** + * @file + * This file defines the API for platform verification. Currently, it only + * supports Chrome OS. + */ + + +/** + * @addtogroup Interfaces + * @{ + */ +/** + * The <code>PPB_PlatformVerification_Private</code> interface allows authorized + * services to verify that the underlying platform is trusted. An example of a + * trusted platform is a Chrome OS device in verified boot mode. + */ +struct PPB_PlatformVerification_Private_0_1 { + /** + * Create() creates a <code>PPB_PlatformVerification_Private</code> object. + * + * @pram[in] instance A <code>PP_Instance</code> identifying one instance of + * a module. + * + * @return A <code>PP_Resource</code> corresponding to a + * <code>PPB_PlatformVerification_Private</code> if successful, 0 if creation + * failed. + */ + PP_Resource (*Create)(PP_Instance instance); + /** + * IsPlatformVerification() determines if the provided resource is a + * <code>PPB_PlatformVerification_Private</code>. + * + * @param[in] resource A <code>PP_Resource</code> corresponding to a + * <code>PPB_PlatformVerification_Private</code>. + * + * @return <code>PP_TRUE</code> if the resource is a + * <code>PPB_PlatformVerification_Private</code>, <code>PP_FALSE</code> if the + * resource is invalid or some type other than + * <code>PPB_PlatformVerification_Private</code>. + */ + PP_Bool (*IsPlatformVerification)(PP_Resource resource); + /** + * Check if the underlying host platform can be challenged; i.e., verified as + * a trusted platform. Useful for avoiding unnecessary work on platforms + * which will always fail; i.e. dev mode Chrome OS. + * + * @return <code>PP_TRUE</code> if a platform challenge might pass and + * <code>PP_FALSE</code> if it definitely won't. + */ + PP_Bool (*CanChallengePlatform)(PP_Resource instance); + /** + * Requests a platform challenge for a given service id. + * + * @param[in] service_id A <code>PP_Var</code> of type + * <code>PP_VARTYPE_STRING</code> containing the service_id for the challenge. + * + * @param[in] challenge A <code>PP_Var</code> of type + * <code>PP_VARTYPE_ARRAY_BUFFER</code> that contains the challenge data. + * + * @param[out] signed_data A <code>PP_Var</code> of type + * <code>PP_VARTYPE_ARRAY_BUFFER</code> that contains the data signed by the + * platform. + * + * @param[out] signed_data_signature A <code>PP_Var</code> of type + * <code>PP_VARTYPE_ARRAY_BUFFER</code> that contains the signature of the + * signed data block. + * + * @param[out] platform_key_certificate A <code>PP_Var</code> of type + * <code>PP_VARTYPE_STRING</code> that contains the device specific + * certificate for the requested service_id. + * + * @param[in] callback A <code>PP_CompletionCallback</code> to be called after + * the platform challenge has been completed. This callback will only run if + * the return code is <code>PP_OK_COMPLETIONPENDING</code>. + * + * @return An int32_t containing an error code from <code>pp_errors.h</code>. + */ + int32_t (*ChallengePlatform)(PP_Resource instance, + struct PP_Var service_id, + struct PP_Var challenge, + struct PP_Var* signed_data, + struct PP_Var* signed_data_signature, + struct PP_Var* platform_key_certificate, + struct PP_CompletionCallback callback); +}; + +typedef struct PPB_PlatformVerification_Private_0_1 + PPB_PlatformVerification_Private; +/** + * @} + */ + +#endif /* PPAPI_C_PRIVATE_PPB_PLATFORM_VERIFICATION_PRIVATE_H_ */ + |