Skip to content

Commit

Permalink
[parser] IM4P: Better way of parsing prod/dev keybags
Browse files Browse the repository at this point in the history
  • Loading branch information
m1stadev committed Aug 22, 2023
1 parent 60a885c commit fef8199
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 7 deletions.
11 changes: 6 additions & 5 deletions pyimg4/_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -846,11 +846,11 @@ def _parse(self) -> None:

kbag_decoder.enter()

for kt in KeybagType:
while not kbag_decoder.eof():
if kbag_decoder.peek().nr != asn1.Numbers.Sequence:
raise UnexpectedTagError(kbag_decoder.peek(), asn1.Numbers.Sequence)

self.payload.add_keybag(Keybag(kbag_decoder.read()[1], kt))
self.payload.add_keybag(Keybag(kbag_decoder.read()[1]))

if not self._decoder.eof() and self._decoder.peek().nr == asn1.Numbers.Sequence:
self._decoder.enter()
Expand Down Expand Up @@ -1048,18 +1048,17 @@ class Keybag(_PyIMG4):
def __init__(
self,
data: Optional[bytes] = None,
type_: KeybagType = KeybagType.PRODUCTION, # Assume PRODUCTION if not provided
*,
iv: bytes = None,
key: bytes = None,
type_: KeybagType = KeybagType.PRODUCTION # Assume PRODUCTION if not provided
) -> None:
super().__init__(data)

self.type = type_

if iv and key:
self.iv = iv
self.key = key
self.type = type_

elif data:
self._parse()
Expand All @@ -1078,6 +1077,8 @@ def _parse(self) -> None:
if self._decoder.read()[0].nr != asn1.Numbers.Integer:
raise UnexpectedTagError(self._decoder.peek(), asn1.Numbers.Integer)

self.type = KeybagType(self._decoder.read()[1])

if self._decoder.peek().nr != asn1.Numbers.OctetString:
raise UnexpectedTagError(self._decoder.peek(), asn1.Numbers.OctetString)

Expand Down
4 changes: 2 additions & 2 deletions pyimg4/_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,5 @@ class Payload(NamedTuple):


class KeybagType(IntEnum):
PRODUCTION = 0x0
DEVELOPMENT = 0x1
PRODUCTION = 0x1
DEVELOPMENT = 0x2

0 comments on commit fef8199

Please sign in to comment.