File: certificate_handler_v2.cc

package info (click to toggle)
golang-github-google-certificate-transparency 0.0~git20160709.0.0f6e3d1~ds1-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster
  • size: 5,676 kB
  • sloc: cpp: 35,278; python: 11,838; java: 1,911; sh: 1,885; makefile: 950; xml: 520; ansic: 225
file content (92 lines) | stat: -rw-r--r-- 3,016 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <functional>

#include "log/frontend.h"
#include "server/certificate_handler_v2.h"
#include "server/json_output.h"
#include "util/json_wrapper.h"
#include "util/status.h"
#include "util/thread_pool.h"

namespace cert_trans {

using ct::LogEntry;
using ct::SignedCertificateTimestamp;
using std::bind;
using std::make_shared;
using std::multimap;
using std::placeholders::_1;
using std::shared_ptr;
using std::string;
using std::unique_ptr;
using util::Status;


CertificateHttpHandlerV2::CertificateHttpHandlerV2(
    LogLookup* log_lookup, const ReadOnlyDatabase* db,
    const ClusterStateController* controller, const CertChecker* cert_checker,
    Frontend* frontend, ThreadPool* pool, libevent::Base* event_base,
    StalenessTracker* staleness_tracker)
    : HttpHandlerV2(log_lookup, db, controller, pool, event_base,
                    staleness_tracker),
      cert_checker_(CHECK_NOTNULL(cert_checker)),
      submission_handler_(cert_checker_),
      frontend_(frontend) {
}


void CertificateHttpHandlerV2::AddHandlers(libevent::HttpServer* server) {
  // TODO(alcutter): Support this for mirrors too
  if (cert_checker_) {
    // Don't really need to proxy this one, but may as well just to keep
    // everything tidy:
    AddProxyWrappedHandler(server, "/ct/v2/get-roots",
                           bind(&CertificateHttpHandlerV2::GetRoots, this,
                                _1));
  }
  if (frontend_) {
    // Proxy the add-* calls too, technically we could serve them, but a
    // more up-to-date node will have a better chance of handling dupes
    // correctly, rather than bloating the tree.
    AddProxyWrappedHandler(server, "/ct/v2/add-chain",
                           bind(&CertificateHttpHandlerV2::AddChain, this,
                                _1));
    AddProxyWrappedHandler(server, "/ct/v2/add-pre-chain",
                           bind(&CertificateHttpHandlerV2::AddPreChain, this,
                                _1));
  }
}


void CertificateHttpHandlerV2::GetRoots(evhttp_request* req) const {
  return SendJsonError(event_base_, req, HTTP_NOTIMPLEMENTED,
                       "Not yet implemented.");
}


void CertificateHttpHandlerV2::AddChain(evhttp_request* req) {
  return SendJsonError(event_base_, req, HTTP_NOTIMPLEMENTED,
                       "Not yet implemented.");
}


void CertificateHttpHandlerV2::AddPreChain(evhttp_request* req) {
  return SendJsonError(event_base_, req, HTTP_NOTIMPLEMENTED,
                       "Not yet implemented.");
}


void CertificateHttpHandlerV2::BlockingAddChain(
    evhttp_request* req, const shared_ptr<CertChain>& chain) const {
  return SendJsonError(event_base_, req, HTTP_NOTIMPLEMENTED,
                       "Not yet implemented.");
}


void CertificateHttpHandlerV2::BlockingAddPreChain(
    evhttp_request* req, const shared_ptr<PreCertChain>& chain) const {
  return SendJsonError(event_base_, req, HTTP_NOTIMPLEMENTED,
                       "Not yet implemented.");
}


}  // namespace cert_trans