| // Copyright 2013 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef QUICHE_QUIC_CORE_CRYPTO_CHANNEL_ID_H_ | 
 | #define QUICHE_QUIC_CORE_CRYPTO_CHANNEL_ID_H_ | 
 |  | 
 | #include <memory> | 
 | #include <string> | 
 |  | 
 | #include "absl/strings/string_view.h" | 
 | #include "quic/core/quic_types.h" | 
 | #include "quic/platform/api/quic_export.h" | 
 |  | 
 | namespace quic { | 
 |  | 
 | // ChannelIDVerifier verifies ChannelID signatures. | 
 | class QUIC_EXPORT_PRIVATE ChannelIDVerifier { | 
 |  public: | 
 |   ChannelIDVerifier() = delete; | 
 |  | 
 |   // kContextStr is prepended to the data to be signed in order to ensure that | 
 |   // a ChannelID signature cannot be used in a different context. (The | 
 |   // terminating NUL byte is inclued.) | 
 |   static const char kContextStr[]; | 
 |   // kClientToServerStr follows kContextStr to specify that the ChannelID is | 
 |   // being used in the client to server direction. (The terminating NUL byte is | 
 |   // included.) | 
 |   static const char kClientToServerStr[]; | 
 |  | 
 |   // Verify returns true iff |signature| is a valid signature of |signed_data| | 
 |   // by |key|. | 
 |   static bool Verify(absl::string_view key, | 
 |                      absl::string_view signed_data, | 
 |                      absl::string_view signature); | 
 |  | 
 |   // FOR TESTING ONLY: VerifyRaw returns true iff |signature| is a valid | 
 |   // signature of |signed_data| by |key|. |is_channel_id_signature| indicates | 
 |   // whether |signature| is a ChannelID signature (with kContextStr prepended | 
 |   // to the data to be signed). | 
 |   static bool VerifyRaw(absl::string_view key, | 
 |                         absl::string_view signed_data, | 
 |                         absl::string_view signature, | 
 |                         bool is_channel_id_signature); | 
 | }; | 
 |  | 
 | }  // namespace quic | 
 |  | 
 | #endif  // QUICHE_QUIC_CORE_CRYPTO_CHANNEL_ID_H_ |