Пример #1
0
def decompress_message(message, payload):
    """ Function for decompressing the message """
    decompressed_content = None
    if payload.get_content_type() == 'application/pkcs7-mime' \
            and payload.get_param('smime-type') == 'compressed-data':
        models.Log.objects.create(message=message, status='S',
                                  text=_(u'Decompressing the payload'))
        message.compressed = True

        # Decode the data to binary if its base64 encoded
        compressed_content = payload.get_payload()
        try:
            compressed_content.encode('ascii')
            compressed_content = base64.b64decode(payload.get_payload())
        except UnicodeDecodeError:
            pass

        pyas2init.logger.debug(
            'Decompressing the payload:\n%s' % compressed_content)
        try:
            decompressed_content = as2utils.decompress_payload(
                compressed_content)

        except Exception, e:
            raise as2utils.As2DecompressionFailed(
                'Failed to decompress message,exception message is %s' % e)
Пример #2
0
            # Decode the data to binary if its base64 encoded
            compressed_content = payload.get_payload()
            try:
                compressed_content.encode('ascii')
                compressed_content = base64.b64decode(payload.get_payload())
            except UnicodeDecodeError:
                pass

            pyas2init.logger.debug('Decompressing the payload:\n%s' %
                                   compressed_content)
            try:
                decompressed_content = as2utils.decompress_payload(
                    compressed_content)
                payload = email.message_from_string(decompressed_content)
            except Exception, e:
                raise as2utils.As2DecompressionFailed(
                    'Failed to decompress message,exception message is %s' % e)

        # Saving the message mic for sending it in the MDN
        if mic_content:
            pyas2init.logger.debug(
                "Calculating MIC with alg {0:s} for content:\n{1:s}".format(
                    mic_alg, mic_content))
            calculate_mic = getattr(hashlib, mic_alg.replace('-', ''),
                                    hashlib.sha1)
            message.mic = '%s, %s' % (calculate_mic(
                mic_content).digest().encode('base64').strip(), mic_alg)

        return payload
    finally:
        message.save()