code: def parse(contents, strict=False):
      
  
      if not isinstance(contents, byte_cls):
          raise TypeError('contents must be a byte string, not %s' % type_name(contents))
  
      contents_len = len(contents)
      info, consumed = _parse(contents, contents_len)
      if strict and consumed != contents_len:
          raise ValueError('Extra data - %d bytes of trailing data were provided' % (contents_len - consumed))
      return info
docs: Parses a byte string of ASN.1 BER/DER-encoded data.
  
      This is typically not useful. Instead, use one of the standard classes from
      asn1crypto.core, or construct a new class with specific fields, and call the
      .load() class method.
  
      :param contents:
          A byte string of BER/DER-encoded data
  
      :param strict:
          A boolean indicating if trailing data should be forbidden - if so, a
          ValueError will be raised when trailing data exists
  
      :raises:
          ValueError - when the contents do not contain an ASN.1 header or are truncated in some way
          TypeError - when contents is not a byte string
  
      :return:
          A 6-element tuple:
           - 0: integer class (0 to 3)
           - 1: integer method
           - 2: integer tag
           - 3: byte string header
           - 4: byte string content
           - 5: byte string trailer