'Compute the signature for a given request
:param uri: full URI that Twilio requested on your server
:param params: post vars that Twilio sent with the request
:param utf: whether return should be bytestring or unicode (python3)
:returns: The computed signature'

def compute_signature(self, uri, params, utf=PY3):

    s = uri
    if (len(params) > 0):
        for (k, v) in sorted(params.items()):
            s += (k + v)
    mac = hmac.new(self.token, s.encode('utf-8'), sha1)
    computed = base64.b64encode(mac.digest())
    if utf:
        computed = computed.decode('utf-8')
    return computed.strip()
