• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef PPAPI_SHARED_IMPL_PRIVATE_PPB_X509_CERTIFICATE_PRIVATE_IMPL_H_
6 #define PPAPI_SHARED_IMPL_PRIVATE_PPB_X509_CERTIFICATE_PRIVATE_IMPL_H_
7 
8 #include <vector>
9 
10 #include "base/memory/scoped_ptr.h"
11 #include "base/values.h"
12 #include "ppapi/c/private/ppb_x509_certificate_private.h"
13 #include "ppapi/shared_impl/resource.h"
14 #include "ppapi/thunk/ppb_x509_certificate_private_api.h"
15 
16 namespace IPC {
17 template <class T>
18 struct ParamTraits;
19 }
20 
21 namespace ppapi {
22 
23 class PPAPI_SHARED_EXPORT PPB_X509Certificate_Fields {
24  public:
25   PPB_X509Certificate_Fields();
26   PPB_X509Certificate_Fields(const PPB_X509Certificate_Fields& fields);
27 
28   // Takes ownership of |value|.
29   void SetField(PP_X509Certificate_Private_Field field, base::Value* value);
30   PP_Var GetFieldAsPPVar(PP_X509Certificate_Private_Field field) const;
31 
32  private:
33   // Friend so ParamTraits can serialize us.
34   friend struct IPC::ParamTraits<ppapi::PPB_X509Certificate_Fields>;
35 
36   base::ListValue values_;
37 };
38 
39 //------------------------------------------------------------------------------
40 
41 class PPAPI_SHARED_EXPORT PPB_X509Certificate_Private_Shared
42     : public thunk::PPB_X509Certificate_Private_API,
43       public Resource {
44  public:
45   PPB_X509Certificate_Private_Shared(ResourceObjectType type,
46                                      PP_Instance instance);
47   // Used by tcp_socket_shared_impl to construct a certificate resource from a
48   // server certificate.
49   PPB_X509Certificate_Private_Shared(ResourceObjectType type,
50                                      PP_Instance instance,
51                                      const PPB_X509Certificate_Fields& fields);
52   virtual ~PPB_X509Certificate_Private_Shared();
53 
54   // Resource overrides.
55   virtual PPB_X509Certificate_Private_API*
56       AsPPB_X509Certificate_Private_API() OVERRIDE;
57 
58   // PPB_X509Certificate_Private_API implementation.
59   virtual PP_Bool Initialize(const char* bytes, uint32_t length) OVERRIDE;
60   virtual PP_Var GetField(PP_X509Certificate_Private_Field field) OVERRIDE;
61 
62  protected:
63   virtual bool ParseDER(const std::vector<char>& der,
64                         PPB_X509Certificate_Fields* result);
65 
66  private:
67   scoped_ptr<PPB_X509Certificate_Fields> fields_;
68 
69   DISALLOW_COPY_AND_ASSIGN(PPB_X509Certificate_Private_Shared);
70 };
71 
72 }  // namespace ppapi
73 
74 #endif  // PPAPI_SHARED_IMPL_PRIVATE_X509_CERTIFICATE_PRIVATE_IMPL_H_
75