From b6c592fac335b00b99456a14453036d3148290d4 Mon Sep 17 00:00:00 2001 From: Ladislav Andel Date: Sat, 1 Feb 2020 08:23:16 +0100 Subject: [PATCH] Returning offset for multiple object ASN.1 stream with separated records --- asn1crypto/core.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/asn1crypto/core.py b/asn1crypto/core.py index 933f8caa..382f18e7 100644 --- a/asn1crypto/core.py +++ b/asn1crypto/core.py @@ -205,7 +205,7 @@ class Asn1Value(object): _native = None @classmethod - def load(cls, encoded_data, strict=False, **kwargs): + def load(cls, encoded_data, strict=False, return_offset=False, **kwargs): """ Loads a BER/DER-encoded byte string using the current class as the spec @@ -227,8 +227,12 @@ def load(cls, encoded_data, strict=False, **kwargs): if cls.tag is not None: spec = cls - value, _ = _parse_build(encoded_data, spec=spec, spec_params=kwargs, strict=strict) - return value + if return_offset: + value, new_pointer = _parse_build(encoded_data, spec=spec, spec_params=kwargs, strict=strict) + return value, new_pointer + else: + value, _ = _parse_build(encoded_data, spec=spec, spec_params=kwargs, strict=strict) + return value def __init__(self, explicit=None, implicit=None, no_explicit=False, tag_type=None, class_=None, tag=None, optional=None, default=None, contents=None, method=None):