'Decode a complete SEQUENCE DER element, and re-initializes this
object with it.
@param derEle       A complete SEQUENCE DER element. It must start with a DER
SEQUENCE tag.
@param noLeftOvers  Indicate whether it is acceptable to complete the
parsing of the DER element and find that not all
bytes in derEle have been used.
@return             Index of the first unused byte in the given DER element.
DER INTEGERs are decoded into Python integers. Any other DER
element is not decoded. Its validity is not checked.
Raises a ValueError exception if the DER element is not a
valid DER SEQUENCE.
Raises an IndexError exception if the DER element is too short.'

def decode(self, derEle, noLeftOvers=0):

    self._seq = []
    try:
        tlvLength = DerObject.decode(self, derEle, noLeftOvers)
        if (self.typeTag != self.typeTags['SEQUENCE']):
            raise ValueError('Not    a    DER    SEQUENCE.')
        idx = 0
        while (idx < len(self.payload)):
            typeTag = bord(self.payload[idx])
            if (typeTag == self.typeTags['INTEGER']):
                newInteger = DerInteger()
                idx += newInteger.decode(self.payload[idx:])
                self._seq.append(newInteger.value)
            else:
                (itemLen, itemIdx) = self._decodeLen((idx + 1), self.payload)
                self._seq.append(self.payload[idx:(itemIdx + itemLen)])
                idx = (itemIdx + itemLen)
    except IndexError:
        raise ValueError('Not    a    valid    DER    SEQUENCE.')
    return tlvLength
