diff options
Diffstat (limited to 'tracing')
-rw-r--r-- | tracing/README.rst | 8 | ||||
-rwxr-xr-x | tracing/graph.py | 100 | ||||
-rw-r--r-- | tracing/trace.gdb | 133 |
3 files changed, 0 insertions, 241 deletions
diff --git a/tracing/README.rst b/tracing/README.rst deleted file mode 100644 index d2846ef..0000000 --- a/tracing/README.rst +++ /dev/null @@ -1,8 +0,0 @@ -Tracing -======= - -To see what crypto functions are being called with what input run - -.. code:: bash - - gdb --batch -x tracing/trace.gdb ./build/test_ratchet | grep "^[- ]" | tr "{}" "[]" | tracing/graph.py diff --git a/tracing/graph.py b/tracing/graph.py deleted file mode 100755 index aa51b6a..0000000 --- a/tracing/graph.py +++ /dev/null @@ -1,100 +0,0 @@ -#! /usr/bin/env python - -import sys -import yaml -import array - -class Call(object): - def __init__(self, call): - self.func, = call - args = dict(call[self.func]) - self.output = array.array("B", args.pop("output")).tostring() - self.inputs = { - name: array.array("B", args[name]).tostring() - for name in args - if not name.endswith("_length") - } - self.bind = {} - - def expr(self, stream, indent=" ", level=""): - stream.write(self.func + "(\n") - for name, value in self.inputs.items(): - stream.write(level + indent + name + "=") - self.bind.get(name, Literal(value)).expr( - stream, indent, level + indent - ) - stream.write(",\n") - stream.write(level + ")") - - -class Literal(str): - def expr(self, stream, indent, level): - stream.write("\"" + self.encode("hex") + "\"") - - -class Slice(object): - def __init__(self, thing, start, end): - self.thing = thing - self.start = start - self.end = end - - def expr(self, stream, indent=" ", level=""): - self.thing.expr(stream, indent, level) - stream.write("[%d:%d]" % (self.start, self.end)) - - -class Concat(list): - def expr(self, stream, indent=" ", level=""): - stream.write("concat(\n") - for thing in self: - stream.write(level + indent) - thing.expr(stream, indent, level + indent) - stream.write(",\n") - stream.write(level + ")") - - -calls = [Call(c) for c in yaml.load(sys.stdin)] - -outputs = {} - -for call in calls: - for i in range(8, len(call.output)): - outputs.setdefault(call.output[i - 8: i], []).append(call) - -for call in calls: - for name, value in call.inputs.items(): - for bind in outputs.get(value[:8], ()): - if value == bind.output: - call.bind[name] = bind - else: - for end in range(len(value), len(bind.output) + 1): - start = end - len(value) - if value == bind.output[start:end]: - call.bind[name] = Slice(bind, start, end) - if not name in call.bind: - i = 0 - j = 1 - k = 0 - concat = Concat() - while i < len(value): - for bind in outputs.get(value[i:i+8], ()): - if value[i:].startswith(bind.output): - if k != i: - concat.append(Literal(value[k:i])) - concat.append(bind) - j = len(bind.output) - k = i + j - break - i += j - j = 1 - if concat: - if k != i: - concat.append(Literal(value[k:i])) - call.bind[name] = concat - -for call in calls: - if call.func.startswith("h"): - sys.stdout.write("\"" + call.output.encode("hex") + "\" = ") - call.expr(sys.stdout) - sys.stdout.write("\n") - diff --git a/tracing/trace.gdb b/tracing/trace.gdb deleted file mode 100644 index bdece2e..0000000 --- a/tracing/trace.gdb +++ /dev/null @@ -1,133 +0,0 @@ -set print pretty off -set print repeats unlimited -set print elements unlimited -set breakpoint pending on - - -break crypto.cpp:273 -commands -silent -printf "- hmac_sha256:\n" -printf " key_length: %d\n", key_length -printf " input_length: %d\n", input_length -if key_length > 0 - printf " key: " - output/x *key@key_length - printf "\n" -else - printf " key: {}\n" -end -if input_length > 0 - printf " input: " - output/x *input@input_length - printf "\n" -else - printf " input: {}\n" -end -cont -end - - -break crypto.cpp:280 -commands -silent -printf " output: " -output/x *output@32 -printf "\n" -cont -end - - -break crypto.cpp:307 -commands -silent -set $hkdf_output = output -cont -end - - -break crypto.cpp:323 -commands -silent -printf "- hkdf_sha256:\n" -printf " input_length: %d\n", input_length -printf " salt_length: %d\n", salt_length -printf " info_length: %d\n", info_length -printf " output_length: %d\n", output_length -if input_length > 0 - printf " input: " - output/x *input@input_length - printf "\n" -else - printf " input: {}\n" -end -if salt_length > 0 - printf " salt: " - output/x *salt@salt_length - printf "\n" -else - printf " salt: {}\n" -end -if info_length > 0 - printf " info: " - output/x *info@info_length - printf "\n" -else - printf " info: {}\n" -end -printf " output: " -output/x *$hkdf_output@output_length -printf "\n" -cont -end - - -break crypto.cpp:156 -commands -silent -printf "- curve25519:\n" -printf " public: " -output/x *their_key.public_key@32 -printf "\n" -printf " private: " -output/x *our_key.private_key@32 -printf "\n" -printf " output: " -output/x *output@32 -printf "\n" -cont -end - -break crypto.cpp:156 -commands -silent -printf "- curve25519:\n" -printf " public: " -output/x *their_key.public_key@32 -printf "\n" -printf " private: " -output/x *our_key.private_key@32 -printf "\n" -printf " output: " -output/x *output@32 -printf "\n" -cont -end - -break crypto.cpp:147 -commands -silent -printf "- curve25519:\n" -printf " public: " -output/x *CURVE25519_BASEPOINT@32 -printf "\n" -printf " private: " -output/x *key_pair.private_key@32 -printf "\n" -printf " output: " -output/x *key_pair.public_key@32 -printf "\n" -cont -end - -run |