예제 #1
0
파일: api.py 프로젝트: evrenesat/ganihomes
    def parse_signed_data(cls, signed_request, secret=facebook_settings.FACEBOOK_APP_SECRET):
        '''
        Thanks to
        http://stackoverflow.com/questions/3302946/how-to-base64-url-decode-in-python
        and
        http://sunilarora.org/parsing-signedrequest-parameter-in-python-bas
        '''
        from open_facebook.utils import base64_url_decode_php_style
        l = signed_request.split('.', 2)
        encoded_sig = l[0]
        payload = l[1]
        from open_facebook.utils import json
        sig = base64_url_decode_php_style(encoded_sig)
        import hmac
        import hashlib
        data = json.loads(base64_url_decode_php_style(payload))

        algo = data.get('algorithm').upper()
        if  algo != 'HMAC-SHA256':
            send_warning('Unknown algorithm we only support HMAC-SHA256 user asked for %s', algo)
            logger.error('Unknown algorithm')
            return None
        else:
            expected_sig = hmac.new(secret, msg=payload, digestmod=hashlib.sha256).digest()

        if sig != expected_sig:
            send_warning('Signature %s didnt match the expected signature %s', sig, expected_sig)
            return None
        else:
            logger.debug('valid signed request received..')
            return data
예제 #2
0
    def parse_signed_data(cls, signed_request, secret=facebook_settings.FACEBOOK_APP_SECRET):
        """
        Thanks to 
        http://stackoverflow.com/questions/3302946/how-to-base64-url-decode-in-python
        and
        http://sunilarora.org/parsing-signedrequest-parameter-in-python-bas
        """
        from open_facebook.utils import base64_url_decode_php_style

        l = signed_request.split(".", 2)
        encoded_sig = l[0]
        payload = l[1]
        from open_facebook.utils import json

        sig = base64_url_decode_php_style(encoded_sig)
        import hmac
        import hashlib

        data = json.loads(base64_url_decode_php_style(payload))

        if data.get("algorithm").upper() != "HMAC-SHA256":
            logger.error("Unknown algorithm")
            return None
        else:
            expected_sig = hmac.new(secret, msg=payload, digestmod=hashlib.sha256).digest()

        if sig != expected_sig:
            return None
        else:
            logger.debug("valid signed request received..")
            return data
예제 #3
0
    def parse_signed_data(cls, signed_request,
                          secret=facebook_settings.FACEBOOK_APP_SECRET):
        '''
        Thanks to
        http://stackoverflow.com/questions/3302946/how-to-base64-url-decode-in-python
        and
        http://sunilarora.org/parsing-signedrequest-parameter-in-python-bas
        '''
        from open_facebook.utils import base64_url_decode_php_style
        l = signed_request.split('.', 2)
        encoded_sig = l[0]
        payload = l[1]
        from open_facebook.utils import json
        sig = base64_url_decode_php_style(encoded_sig)
        import hmac
        import hashlib
        data = json.loads(base64_url_decode_php_style(payload))

        algo = data.get('algorithm').upper()
        if  algo != 'HMAC-SHA256':
            send_warning('Unknown algorithm we only support HMAC-SHA256 ' \
                         'user asked for %s', algo)
            logger.error('Unknown algorithm')
            return None
        else:
            expected_sig = hmac.new(secret, msg=payload,
                                    digestmod=hashlib.sha256).digest()

        if sig != expected_sig:
            send_warning('Signature %s didnt match the expected ' \
                         'signature %s', sig, expected_sig)
            return None
        else:
            logger.debug('valid signed request received..')
            return data