From adcbe6e7b26bce6295835b796657655aa5385b12 Mon Sep 17 00:00:00 2001 From: Nicolas Pouillard Date: Mon, 5 Sep 2016 17:04:06 +0200 Subject: [PATCH] gpg/decode/parse_subpackets: parse subpacket length according to RFC --- trezor_agent/gpg/decode.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/trezor_agent/gpg/decode.py b/trezor_agent/gpg/decode.py index d69050c..ded5c98 100644 --- a/trezor_agent/gpg/decode.py +++ b/trezor_agent/gpg/decode.py @@ -25,10 +25,17 @@ def parse_subpackets(s): while True: try: - subpacket_len = s.readfmt('B') + first = s.readfmt('B') except EOFError: break + if first < 192: + subpacket_len = first + elif first < 255: + subpacket_len = ((first - 192) << 8) + s.readfmt('B') + 192 + else: # first == 255 + subpacket_len = s.readfmt('>L') + subpackets.append(s.read(subpacket_len)) return subpackets