Exemplo n.º 1
0
def test_sign_2():
    keyset = {
        "keys": [{
            "alg":
            "RS512",
            "kty":
            "RSA",
            "d":
            "ckLyXxkbjC4szg8q8G0ERBZV"
            "-9CszeOxpRtx1KM9BLl0Do3li_Km2vvFvfXJ7MxQpiZ18pBoCcyYQEU262ym8wI22JWMPrZe24HCNxLxqzr_JEuBhpKFxQF6EFTSvJEJD1FkoTuCTvN0zD7YHGaJQG6JzVEuFUY3ewxjH0FYNa_ppTnPP3LC-T9u_GX9Yqyuw1KOYoHSzhWSWQOeAgs4dH9-iAxN1wdZ6eH1jFWAs43svk_rhwdgyJMlihFtV9MAInBlfi_Zu8wRVhVl5urkJrLf0tGFnMbnzb6dYSlUXxEYClpY12W7kXW9aePDqkCwI4oZyxmOmgq4hunKGR1dAQ",
            "e":
            "AQAB",
            "use":
            "sig",
            "kid":
            "af22448d-4c7b-464d-b63a-f5bd90f6d7d1",
            "n":
            "o9g8DpUwBW6B1qmcm-TfEh4rNX7n1t38jdo4Gkl_cI3q"
            "--7n0Blg0kN88LHZvyZjUB2NhBdFYNxMP8ucy0dOXvWGWzaPmGnq3DM__lN8P4WjD1cCTAVEYKawNBAmGKqrFj1SgpPNsSqiqK-ALM1w6mZ-QGimjOgwCyJy3l9lzZh5D8tKnS2t1pZgE0X5P7lZQWHYpHPqp4jKhETzrCpPGfv0Rl6nmmjp7NlRYBkWKf_HEKE333J6M039m2FbKgxrBg3zmYYpmHuMzVgxxb8LSiv5aqyeyJjxM-YDUAgNQBfKNhONqXyu9DqtSprNkw6sqmuxK0QUVrNYl3b03PgS5Q"
        }]
    }

    keys = KEYS()
    keys.load_dict(keyset)
    jws = JWS("payload", alg="RS512")
    jws.sign_compact(keys=keys)
Exemplo n.º 2
0
def test_sign_2():
    keyset = {"keys": [
        {"alg": "RS512",
         "kty": "RSA",
         "d": "ckLyXxkbjC4szg8q8G0ERBZV-9CszeOxpRtx1KM9BLl0Do3li_Km2vvFvfXJ7MxQpiZ18pBoCcyYQEU262ym8wI22JWMPrZe24HCNxLxqzr_JEuBhpKFxQF6EFTSvJEJD1FkoTuCTvN0zD7YHGaJQG6JzVEuFUY3ewxjH0FYNa_ppTnPP3LC-T9u_GX9Yqyuw1KOYoHSzhWSWQOeAgs4dH9-iAxN1wdZ6eH1jFWAs43svk_rhwdgyJMlihFtV9MAInBlfi_Zu8wRVhVl5urkJrLf0tGFnMbnzb6dYSlUXxEYClpY12W7kXW9aePDqkCwI4oZyxmOmgq4hunKGR1dAQ",
         "e": "AQAB",
         "use": "sig",
         "kid": "af22448d-4c7b-464d-b63a-f5bd90f6d7d1",
         "n": "o9g8DpUwBW6B1qmcm-TfEh4rNX7n1t38jdo4Gkl_cI3q--7n0Blg0kN88LHZvyZjUB2NhBdFYNxMP8ucy0dOXvWGWzaPmGnq3DM__lN8P4WjD1cCTAVEYKawNBAmGKqrFj1SgpPNsSqiqK-ALM1w6mZ-QGimjOgwCyJy3l9lzZh5D8tKnS2t1pZgE0X5P7lZQWHYpHPqp4jKhETzrCpPGfv0Rl6nmmjp7NlRYBkWKf_HEKE333J6M039m2FbKgxrBg3zmYYpmHuMzVgxxb8LSiv5aqyeyJjxM-YDUAgNQBfKNhONqXyu9DqtSprNkw6sqmuxK0QUVrNYl3b03PgS5Q"
        }]}

    keys = KEYS()
    keys.load_dict(keyset)
    jws = JWS("payload", alg="RS512")
    jws.sign_compact(keys=keys)
Exemplo n.º 3
0
    def sign(self, alg, **kwargs):
        http_json = {}
        hash_size = get_hash_size(alg)

        for arg, (key, func) in SIMPLE_OPER.items():
            try:
                if func is None:
                    http_json[key] = kwargs[arg]
                else:
                    http_json[key] = func(kwargs[arg])
            except KeyError:
                pass

        for arg, (key, format) in PARAM_ARGS.items():
            try:
                http_json[key] = _serialize_params(kwargs[arg], format,
                                                   hash_size)
            except KeyError:
                pass

        try:
            http_json['b'] = b64_hash(kwargs['body'], hash_size)
        except KeyError:
            pass

        if not http_json:
            raise ValueError("No data to sign")

        jws = JWS(json.dumps(http_json), alg=alg, typ="pop")
        return jws.sign_compact(keys=[self.key])
Exemplo n.º 4
0
    def sign(self, alg, **kwargs):
        http_json = {}
        hash_size = get_hash_size(alg)

        for arg, (key, func) in SIMPLE_OPER.items():
            try:
                if func is None:
                    http_json[key] = kwargs[arg]
                else:
                    http_json[key] = func(kwargs[arg])
            except KeyError:
                pass

        for arg, (key, format) in PARAM_ARGS.items():
            try:
                http_json[key] = _serialize_params(kwargs[arg], format,
                                                   hash_size)
            except KeyError:
                pass

        try:
            http_json["b"] = b64_hash(kwargs["body"], hash_size)
        except KeyError:
            pass

        if not http_json:
            raise ValueError("No data to sign")

        jws = JWS(json.dumps(http_json), alg=alg, typ="pop")
        _jwt = jws.sign_compact(keys=[self.key])
        return _jwt
Exemplo n.º 5
0
def sign_http_request(key,
                      alg,
                      method="",
                      host="",
                      path="",
                      query_params=None,
                      headers=None,
                      body=None,
                      time_stamp=0):
    """
    Sign an HTTP request as a JWT.
    :param key: signing key
    :param alg: signing algorithm
    :param method: HTTP method
    :param host: url host
    :param path: url path
    :param query_params: query parameters
    :param headers: HTTP headers
    :param body: request body
    :param time_stamp: timestamp
    :return: signature of the request as a JWS
    """
    http_json = {}
    hash_size = _get_hash_size(alg)

    if method:
        http_json["m"] = method.upper()

    if host:
        http_json["u"] = host

    if path:
        http_json["p"] = path

    if query_params:
        param_keys, param_buffer = _serialize_dict(query_params,
                                                   QUERY_PARAM_FORMAT)
        param_hash = urlsafe_b64encode(_hash_value(
            hash_size, param_buffer)).decode("utf-8")
        http_json["q"] = [param_keys, param_hash]

    if headers:
        header_keys, header_buffer = _serialize_dict(headers,
                                                     REQUEST_HEADER_FORMAT)
        header_hash = urlsafe_b64encode(_hash_value(
            hash_size, header_buffer)).decode("utf-8")
        http_json["h"] = [header_keys, header_hash]

    if body:
        body = urlsafe_b64encode(_hash_value(hash_size, body)).decode("utf-8")
        http_json["b"] = body

    if time_stamp:
        http_json["ts"] = int(time_stamp)

    if not http_json:
        raise EmptyHTTPRequestError("No data to sign")

    jws = JWS(json.dumps(http_json), alg=alg)
    return jws.sign_compact(keys=[key])
Exemplo n.º 6
0
def sign_http_request(key, alg, method="", host="", path="", query_params=None,
                      headers=None, body=None, time_stamp=0):
    """
    Sign an HTTP request as a JWT.
    :param key: signing key
    :param alg: signing algorithm
    :param method: HTTP method
    :param host: url host
    :param path: url path
    :param query_params: query parameters
    :param headers: HTTP headers
    :param body: request body
    :param time_stamp: timestamp
    :return: signature of the request as a JWS
    """
    http_json = {}
    hash_size = _get_hash_size(alg)

    if method:
        http_json["m"] = method.upper()

    if host:
        http_json["u"] = host

    if path:
        http_json["p"] = path

    if query_params:
        param_keys, param_buffer = _serialize_dict(query_params,
                                                   QUERY_PARAM_FORMAT)
        param_hash = urlsafe_b64encode(
            _hash_value(hash_size, param_buffer)).decode("utf-8")
        http_json["q"] = [param_keys, param_hash]

    if headers:
        header_keys, header_buffer = _serialize_dict(headers,
                                                     REQUEST_HEADER_FORMAT)
        header_hash = urlsafe_b64encode(
            _hash_value(hash_size, header_buffer)).decode("utf-8")
        http_json["h"] = [header_keys, header_hash]

    if body:
        body = urlsafe_b64encode(_hash_value(hash_size, body)).decode("utf-8")
        http_json["b"] = body

    if time_stamp:
        http_json["ts"] = int(time_stamp)

    if not http_json:
        raise EmptyHTTPRequestError("No data to sign")

    jws = JWS(json.dumps(http_json), alg=alg)
    return jws.sign_compact(keys=[key])