+ class SeqOf(SequenceOf):
+ schema = Boolean(expl=expl)
+
+ class Seq(Sequence):
+ schema = (
+ ("type", ObjectIdentifier(defines=((("value",), {
+ ObjectIdentifier("1.2.3"): SeqOf(impl=OctetString.tag_default),
+ }),))),
+ ("value", Any()),
+ )
+ seq = Seq((
+ ("type", ObjectIdentifier("1.2.3")),
+ ("value", Any(encoded)),
+ ))
+ seq_encoded = seq.encode()
+ seq_decoded, _ = Seq().decode(seq_encoded, ctx={"bered": True})
+ self.assertIsNotNone(seq_decoded["value"].defined)
+ repr(seq_decoded)
+ list(seq_decoded.pps())
+ pprint(seq_decoded, big_blobs=True, with_decode_path=True)
+ self.assertTrue(seq_decoded.bered)
+ self.assertFalse(seq_decoded["type"].bered)
+ self.assertTrue(seq_decoded["value"].bered)
+
+ chunk = chunk[:-1] + b"\x01"
+ chunks = b"".join([chunk] * (chunks + 1))
+ encoded = OctetString.tag_default + len_encode(len(chunks)) + chunks
+ seq = Seq((
+ ("type", ObjectIdentifier("1.2.3")),
+ ("value", Any(encoded)),
+ ))
+ seq_encoded = seq.encode()
+ seq_decoded, _ = Seq().decode(seq_encoded, ctx={"bered": True})
+ self.assertIsNotNone(seq_decoded["value"].defined)
+ repr(seq_decoded)
+ list(seq_decoded.pps())
+ pprint(seq_decoded, big_blobs=True, with_decode_path=True)
+ self.assertTrue(seq_decoded.bered)
+ self.assertFalse(seq_decoded["type"].bered)
+ self.assertTrue(seq_decoded["value"].bered)
+