return spec.default
return None
- def _encoded_values(self):
- raws = []
+ def _values_for_encoding(self):
for name, spec in iteritems(self.specs):
value = self._value.get(name)
if value is None:
if spec.optional:
continue
raise ObjNotReady(name)
- raws.append(value.encode())
- return raws
+ yield value
def _encode(self):
- v = b"".join(self._encoded_values())
+ v = b"".join(v.encode() for v in self._values_for_encoding())
return b"".join((self.tag, len_encode(len(v)), v))
def _decode(self, tlv, offset, decode_path, ctx, tag_only):
asn1_type_name = "SET"
def _encode(self):
- raws = self._encoded_values()
+ raws = [v.encode() for v in self._values_for_encoding()]
raws.sort()
v = b"".join(raws)
return b"".join((self.tag, len_encode(len(v)), v))
def __getitem__(self, key):
return self._value[key]
- def _encoded_values(self):
- return [v.encode() for v in self._value]
+ def _values_for_encoding(self):
+ return iter(self._value)
def _encode(self):
- v = b"".join(self._encoded_values())
+ v = b"".join(v.encode() for v in self._values_for_encoding())
return b"".join((self.tag, len_encode(len(v)), v))
def _decode(self, tlv, offset, decode_path, ctx, tag_only, ordering_check=False):
asn1_type_name = "SET OF"
def _encode(self):
- raws = self._encoded_values()
+ raws = [v.encode() for v in self._values_for_encoding()]
raws.sort()
v = b"".join(raws)
return b"".join((self.tag, len_encode(len(v)), v))