def _get_bytes_to_sign(self):
        """
        Creates the message used for signing SNS notifications.
        This is used to verify the bounce message when it is received.
        """

        # Depending on the message type the fields to add to the message
        # differ so we handle that here.
        msg_type = self._data.get('Type')
        if msg_type == 'Notification':
            fields_to_sign = [
                'Message',
                'MessageId',
                'Subject',
                'Timestamp',
                'TopicArn',
                'Type',
            ]
        elif (msg_type == 'SubscriptionConfirmation' or
              msg_type == 'UnsubscribeConfirmation'):
            fields_to_sign = [
                'Message',
                'MessageId',
                'SubscribeURL',
                'Timestamp',
                'Token',
                'TopicArn',
                'Type',
            ]
        else:
            # Unrecognized type
            logger.warning(u'Unrecognized SNS message Type: "%s"', msg_type)
            return None

        outbytes = StringIO()
        for field_name in fields_to_sign:
            field_value = smart_str(self._data.get(field_name, ''),
                                    errors="replace")
            if field_value:
                outbytes.write(text(field_name))
                outbytes.write(text("\n"))
                outbytes.write(text(field_value))
                outbytes.write(text("\n"))

        response = outbytes.getvalue()
        return bytes(response, 'utf-8')
def _get_bytes_to_sign ( self ) : msg_type = self . _data . get ( 'Type' ) if msg_type == 'Notification' : fields_to_sign = [ 'Message' , 'MessageId' , 'Subject' , 'Timestamp' , 'TopicArn' , 'Type' , ] elif ( msg_type == 'SubscriptionConfirmation' or msg_type == 'UnsubscribeConfirmation' ) : fields_to_sign = [ 'Message' , 'MessageId' , 'SubscribeURL' , 'Timestamp' , 'Token' , 'TopicArn' , 'Type' , ] else : logger . warning ( u'Unrecognized SNS message Type: "%s"' , msg_type ) return None outbytes = StringIO ( ) for field_name in fields_to_sign : field_value = smart_str ( self . _data . get ( field_name , '' ) , errors = "replace" ) if field_value : outbytes . write ( text ( field_name ) ) outbytes . write ( text ( "\n" ) ) outbytes . write ( text ( field_value ) ) outbytes . write ( text ( "\n" ) ) response = outbytes . getvalue ( ) return bytes ( response , 'utf-8' )
Creates the message used for signing SNS notifications.
        This is used to verify the bounce message when it is received.