def getPlaintextLen(self, ciphertext):
        """Given a ``ciphertext`` with a valid header, returns the length of the plaintext payload.
        """

        completeCiphertextHeader = (len(ciphertext) >= 16)
        if completeCiphertextHeader is False:
            raise RecoverableDecryptionError('Incomplete ciphertext header.')

        ciphertext_header = ciphertext[:16]
        L = self._ecb_enc_K1.decrypt(ciphertext_header)

        padding_expected = '\x00\x00\x00\x00'
        padding_actual = L[-8:-4]
        validPadding = (padding_actual == padding_expected)
        if validPadding is False:
            raise UnrecoverableDecryptionError(
                'Invalid padding: ' + padding_actual)

        message_length = fte.bit_ops.bytes_to_long(L[-8:])

        msgLenNonNegative = (message_length >= 0)
        if msgLenNonNegative is False:
            raise UnrecoverableDecryptionError('Negative message length.')

        return message_length
Given a ``ciphertext`` with a valid header, returns the length of the plaintext payload.