| # 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)) |
| elif line.startswith("|<7>| RB-PEEK: Read 1 bytes"): |
| currentBlock = currentBlock[:-1] |
| |
| 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") |