diff --git a/pyimg4/_parser.py b/pyimg4/_parser.py index eb2f7b3..c6c73c9 100644 --- a/pyimg4/_parser.py +++ b/pyimg4/_parser.py @@ -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() @@ -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() @@ -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) diff --git a/pyimg4/_types.py b/pyimg4/_types.py index 117ac12..16d0e3e 100644 --- a/pyimg4/_types.py +++ b/pyimg4/_types.py @@ -15,5 +15,5 @@ class Payload(NamedTuple): class KeybagType(IntEnum): - PRODUCTION = 0x0 - DEVELOPMENT = 0x1 + PRODUCTION = 0x1 + DEVELOPMENT = 0x2