Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1006)

Side by Side Diff: net/quic/crypto/strike_register_client.h

Issue 388333005: Reject reasons from strike register when nonce validation fails. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef NET_QUIC_CRYPTO_STRIKE_REGISTER_CLIENT_H_ 5 #ifndef NET_QUIC_CRYPTO_STRIKE_REGISTER_CLIENT_H_
6 #define NET_QUIC_CRYPTO_STRIKE_REGISTER_CLIENT_H_ 6 #define NET_QUIC_CRYPTO_STRIKE_REGISTER_CLIENT_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/strings/string_piece.h" 11 #include "base/strings/string_piece.h"
12 #include "net/base/net_export.h" 12 #include "net/base/net_export.h"
13 #include "net/quic/crypto/strike_register.h"
13 #include "net/quic/quic_time.h" 14 #include "net/quic/quic_time.h"
14 15
15 namespace net { 16 namespace net {
16 17
17 // Interface implemented by clients that talk to strike registers 18 // Interface implemented by clients that talk to strike registers
18 // implemented as local or remote services. 19 // implemented as local or remote services.
19 class NET_EXPORT_PRIVATE StrikeRegisterClient { 20 class NET_EXPORT_PRIVATE StrikeRegisterClient {
20 public: 21 public:
21 // Single use callback that will be invoked once the validation 22 // Single use callback that will be invoked once the validation
22 // operation is complete. 23 // operation is complete.
23 class NET_EXPORT_PRIVATE ResultCallback { 24 class NET_EXPORT_PRIVATE ResultCallback {
24 public: 25 public:
25 ResultCallback() {} 26 ResultCallback() {}
26 virtual ~ResultCallback() {} 27 virtual ~ResultCallback() {}
27 void Run(bool nonce_is_valid_and_unique) { 28 void Run(bool nonce_is_valid_and_unique, InsertStatus nonce_error) {
28 RunImpl(nonce_is_valid_and_unique); 29 RunImpl(nonce_is_valid_and_unique, nonce_error);
29 delete this; 30 delete this;
30 } 31 }
31 32
32 protected: 33 protected:
33 virtual void RunImpl(bool nonce_is_valid_and_unique) = 0; 34 virtual void RunImpl(bool nonce_is_valid_and_unique,
35 InsertStatus nonce_error) = 0;
34 36
35 private: 37 private:
36 DISALLOW_COPY_AND_ASSIGN(ResultCallback); 38 DISALLOW_COPY_AND_ASSIGN(ResultCallback);
37 }; 39 };
38 40
39 StrikeRegisterClient() {} 41 StrikeRegisterClient() {}
40 virtual ~StrikeRegisterClient() {} 42 virtual ~StrikeRegisterClient() {}
41 43
42 // Returns true iff the strike register knows about the given orbit. 44 // Returns true iff the strike register knows about the given orbit.
43 virtual bool IsKnownOrbit(base::StringPiece orbit) const = 0; 45 virtual bool IsKnownOrbit(base::StringPiece orbit) const = 0;
44 // Validate a nonce for freshness and uniqueness. 46 // Validate a nonce for freshness and uniqueness.
45 // Will invoke cb->Run(ValidateResponse::nonce_is_valid_and_unique()) 47 // Will invoke cb->Run(ValidateResponse::nonce_is_valid_and_unique(),
48 // ValidateResponse::nonce_error())
46 // once the asynchronous operation is complete. 49 // once the asynchronous operation is complete.
47 virtual void VerifyNonceIsValidAndUnique( 50 virtual void VerifyNonceIsValidAndUnique(
48 base::StringPiece nonce, 51 base::StringPiece nonce,
49 QuicWallTime now, 52 QuicWallTime now,
50 ResultCallback* cb) = 0; 53 ResultCallback* cb) = 0;
51 54
52 private: 55 private:
53 DISALLOW_COPY_AND_ASSIGN(StrikeRegisterClient); 56 DISALLOW_COPY_AND_ASSIGN(StrikeRegisterClient);
54 }; 57 };
55 58
56 } // namespace net 59 } // namespace net
57 60
58 #endif // NET_QUIC_CRYPTO_STRIKE_REGISTER_CLIENT_H_ 61 #endif // NET_QUIC_CRYPTO_STRIKE_REGISTER_CLIENT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698