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)namespace pepper_socket_utils {
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)SocketPermissionRequest CreateSocketPermissionRequest(
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    SocketPermissionRequest::OperationType type,
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const PP_NetAddress_Private& net_addr);
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Returns true if the socket operation specified by |params| is allowed.
3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// If |params| is NULL, this method checks the basic "socket" permission, which
3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// is for those operations that don't require a specific socket permission rule.
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool CanUseSocketAPIs(bool external_plugin,
337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                      bool private_api,
3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                      const SocketPermissionRequest* params,
352385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch                      int render_process_id,
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                      int render_frame_id);
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
38424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Extracts the certificate field data from a net::X509Certificate into
39424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// PPB_X509Certificate_Fields.
40424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)bool GetCertificateFields(const net::X509Certificate& cert,
41424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)                          ppapi::PPB_X509Certificate_Fields* fields);
42424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
43424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// Extracts the certificate field data from the DER representation of a
44424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)// certificate into PPB_X509Certificate_Fields.
45424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)bool GetCertificateFields(const char* der,
46424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)                          uint32_t length,
47424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)                          ppapi::PPB_X509Certificate_Fields* fields);
48424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace pepper_socket_utils
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace content
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_SOCKET_UTILS_H_
54