attestation_ca_client.h revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
1// Copyright (c) 2013 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 CHROME_BROWSER_CHROMEOS_ATTESTATION_ATTESTATION_CA_CLIENT_H_
6#define CHROME_BROWSER_CHROMEOS_ATTESTATION_ATTESTATION_CA_CLIENT_H_
7
8#include <map>
9#include <string>
10
11#include "base/basictypes.h"
12
13#include "chromeos/attestation/attestation_flow.h"
14#include "net/url_request/url_fetcher_delegate.h"
15
16namespace chromeos {
17namespace attestation {
18
19// This class is a ServerProxy implementation for the Chrome OS attestation
20// flow.  It sends all requests to an Attestation CA via HTTPS.
21class AttestationCAClient : public ServerProxy,
22                            public net::URLFetcherDelegate {
23 public:
24  AttestationCAClient();
25  virtual ~AttestationCAClient();
26
27  // chromeos::attestation::ServerProxy:
28  virtual void SendEnrollRequest(const std::string& request,
29                                 const DataCallback& on_response) OVERRIDE;
30  virtual void SendCertificateRequest(const std::string& request,
31                                      const DataCallback& on_response) OVERRIDE;
32
33  // net::URLFetcherDelegate:
34  virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE;
35
36 private:
37  typedef std::map<const net::URLFetcher*, DataCallback> FetcherCallbackMap;
38
39  // POSTs |request| data to |url| and calls |on_response| with the response
40  // data when the fetch is complete.
41  void FetchURL(const std::string& url,
42                const std::string& request,
43                const DataCallback& on_response);
44
45  // Tracks all URL requests we have started.
46  FetcherCallbackMap pending_requests_;
47
48  DISALLOW_COPY_AND_ASSIGN(AttestationCAClient);
49};
50
51}  // namespace attestation
52}  // namespace chromeos
53
54#endif  // CHROME_BROWSER_CHROMEOS_ATTESTATION_ATTESTATION_CA_CLIENT_H_
55