| Index: net/tools/quic/crypto_message_printer_bin.cc
|
| diff --git a/net/tools/quic/crypto_message_printer_bin.cc b/net/tools/quic/crypto_message_printer_bin.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c29b5281166f75c670107f778f97abe84bbc0e60
|
| --- /dev/null
|
| +++ b/net/tools/quic/crypto_message_printer_bin.cc
|
| @@ -0,0 +1,58 @@
|
| +// Copyright (c) 2012 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.
|
| +
|
| +// Dumps the contents of a QUIC crypto handshake message in a human readable
|
| +// format.
|
| +//
|
| +// Usage: crypto_message_printer_bin <hex of message>
|
| +
|
| +#include <iostream>
|
| +
|
| +#include "base/command_line.h"
|
| +#include "net/quic/crypto/crypto_framer.h"
|
| +#include "net/quic/quic_utils.h"
|
| +
|
| +using std::cerr;
|
| +using std::cout;
|
| +using std::endl;
|
| +
|
| +namespace net {
|
| +
|
| +class NET_EXPORT_PRIVATE CryptoMessagePrinter
|
| + : public net::CryptoFramerVisitorInterface {
|
| + public:
|
| + void OnHandshakeMessage(const CryptoHandshakeMessage& message) override {
|
| + cout << message.DebugString() << endl;
|
| + }
|
| +
|
| + void OnError(CryptoFramer* framer) override {
|
| + cerr << "Error code: " << framer->error() << endl;
|
| + cerr << "Error details: " << framer->error_detail() << endl;
|
| + }
|
| +};
|
| +
|
| +} // namespace net
|
| +
|
| +int main(int argc, char* argv[]) {
|
| + base::CommandLine::Init(argc, argv);
|
| +
|
| + if (argc != 2) {
|
| + cerr << "Usage: " << argv[0] << " <hex of message>\n";
|
| + return 1;
|
| + }
|
| +
|
| + net::CryptoMessagePrinter printer;
|
| + net::CryptoFramer framer;
|
| + framer.set_visitor(&printer);
|
| + std::string input = net::QuicUtils::HexDecode(argv[1]);
|
| + if (!framer.ProcessInput(input)) {
|
| + return 1;
|
| + }
|
| + if (framer.InputBytesRemaining() != 0) {
|
| + cerr << "Input partially consumed. " << framer.InputBytesRemaining()
|
| + << " bytes remaining." << endl;
|
| + return 2;
|
| + }
|
| + return 0;
|
| +}
|
|
|