channel_id_chromium.h revision 116680a4aac90f2aa7413d9095a592090648e557
1// Copyright 2014 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 NET_QUIC_CRYPTO_CHANNEL_ID_CHROMIUM_H_ 6#define NET_QUIC_CRYPTO_CHANNEL_ID_CHROMIUM_H_ 7 8#include <set> 9 10#include "net/quic/crypto/channel_id.h" 11 12namespace crypto { 13class ECPrivateKey; 14} // namespace crypto 15 16namespace net { 17 18class ServerBoundCertService; 19 20class NET_EXPORT_PRIVATE ChannelIDKeyChromium: public ChannelIDKey { 21 public: 22 explicit ChannelIDKeyChromium(crypto::ECPrivateKey* ec_private_key); 23 virtual ~ChannelIDKeyChromium(); 24 25 // ChannelIDKey interface 26 virtual bool Sign(base::StringPiece signed_data, 27 std::string* out_signature) const OVERRIDE; 28 virtual std::string SerializeKey() const OVERRIDE; 29 30 private: 31 scoped_ptr<crypto::ECPrivateKey> ec_private_key_; 32}; 33 34// ChannelIDSourceChromium implements the QUIC ChannelIDSource interface. 35class ChannelIDSourceChromium : public ChannelIDSource { 36 public: 37 explicit ChannelIDSourceChromium( 38 ServerBoundCertService* server_bound_cert_service); 39 virtual ~ChannelIDSourceChromium(); 40 41 // ChannelIDSource interface 42 virtual QuicAsyncStatus GetChannelIDKey( 43 const std::string& hostname, 44 scoped_ptr<ChannelIDKey>* channel_id_key, 45 ChannelIDSourceCallback* callback) OVERRIDE; 46 47 private: 48 class Job; 49 typedef std::set<Job*> JobSet; 50 51 void OnJobComplete(Job* job); 52 53 // Set owning pointers to active jobs. 54 JobSet active_jobs_; 55 56 // The service for retrieving Channel ID keys. 57 ServerBoundCertService* const server_bound_cert_service_; 58 59 DISALLOW_COPY_AND_ASSIGN(ChannelIDSourceChromium); 60}; 61 62} // namespace net 63 64#endif // NET_QUIC_CRYPTO_CHANNEL_ID_CHROMIUM_H_ 65