| # Copyright 2010 The Go Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style | |
| # license that can be found in the LICENSE file. | |
| # This code is used to parse the debug log from gnutls-cli and generate a | |
| # script of the handshake. This script is included in handshake_server_test.go. | |
| # See the comments there for details. | |
| import sys | |
| blocks = [] | |
| READ = 1 | |
| WRITE = 2 | |
| currentBlockType = 0 | |
| currentBlock = [] | |
| for line in sys.stdin.readlines(): | |
| line = line[:-1] | |
| if line.startswith("|<7>| WRITE: "): | |
| if currentBlockType != WRITE: | |
| if len(currentBlock) > 0: | |
| blocks.append(currentBlock) | |
| currentBlock = [] | |
| currentBlockType = WRITE | |
| elif line.startswith("|<7>| READ: "): | |
| if currentBlockType != READ: | |
| if len(currentBlock) > 0: | |
| blocks.append(currentBlock) | |
| currentBlock = [] | |
| currentBlockType = READ | |
| elif line.startswith("|<7>| 0"): | |
| line = line[13:] | |
| line = line.strip() | |
| bs = line.split() | |
| for b in bs: | |
| currentBlock.append(int(b, 16)) | |
| if len(currentBlock) > 0: | |
| blocks.append(currentBlock) | |
| for block in blocks: | |
| sys.stdout.write("\t{\n") | |
| i = 0 | |
| for b in block: | |
| if i % 8 == 0: | |
| sys.stdout.write("\t\t") | |
| sys.stdout.write("0x%02x," % b) | |
| if i % 8 == 7: | |
| sys.stdout.write("\n") | |
| else: | |
| sys.stdout.write(" ") | |
| i += 1 | |
| sys.stdout.write("\n\t},\n\n") |