pepper_socket_utils.h revision 68043e1e95eeb07d5cae7aca370b26518b0867d6
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_SOCKET_UTILS_H_
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_SOCKET_UTILS_H_
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/common/socket_permission_request.h"
9424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "ppapi/c/pp_stdint.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct PP_NetAddress_Private;
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
13424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)namespace net {
14424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)class X509Certificate;
15424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}
16424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
17424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)namespace ppapi {
18424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)class PPB_X509Certificate_Fields;
19424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}
20424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace content {
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class RenderViewHost;
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace pepper_socket_utils {
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SocketPermissionRequest CreateSocketPermissionRequest(
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    SocketPermissionRequest::OperationType type,
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const PP_NetAddress_Private& net_addr);
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Returns true if the socket operation specified by |params| is allowed.
3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// If |params| is NULL, this method checks the basic "socket" permission, which
3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// is for those operations that don't require a specific socket permission rule.
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool CanUseSocketAPIs(bool external_plugin,
357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                      bool private_api,
3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                      const SocketPermissionRequest* params,
372385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch                      int render_process_id,
382385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch                      int render_view_id);
392385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch
402385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// TODO (ygorshenin@): remove this method.
412385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochbool CanUseSocketAPIs(bool external_plugin,
422385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch                      bool private_api,
4368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                      const SocketPermissionRequest* params,
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                      RenderViewHost* render_view_host);
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
46424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Extracts the certificate field data from a net::X509Certificate into
47424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// PPB_X509Certificate_Fields.
48424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)bool GetCertificateFields(const net::X509Certificate& cert,
49424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)                          ppapi::PPB_X509Certificate_Fields* fields);
50424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
51424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Extracts the certificate field data from the DER representation of a
52424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// certificate into PPB_X509Certificate_Fields.
53424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)bool GetCertificateFields(const char* der,
54424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)                          uint32_t length,
55424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)                          ppapi::PPB_X509Certificate_Fields* fields);
56424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace pepper_socket_utils
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace content
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_SOCKET_UTILS_H_
62