コード例 #1
0
def test_verify_not_strict(key, value, monkeypatch):
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, **TEST_DATA)
    monkeypatch.setitem(TEST_DATA, key, value)
    shr.verify(signature=result,
               strict_query_params_verification=False,
               strict_headers_verification=False, **TEST_DATA)
コード例 #2
0
def test_verify():
    timestamp = 12347456
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, time_stamp=12347456, **DEFAULT_DATA)
    signature = shr.verify(signature=result, **DEFAULT_DATA)

    assert signature["ts"] == timestamp
コード例 #3
0
def test_verify():
    timestamp = 12347456
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, time_stamp=12347456, **DEFAULT_DATA)
    signature = shr.verify(signature=result, **DEFAULT_DATA)

    assert signature["ts"] == timestamp
コード例 #4
0
def test_verify_fail(param, value):
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, **DEFAULT_DATA)

    wrong_data = DEFAULT_DATA.copy()
    wrong_data[param] = value
    with pytest.raises(ValidationError):
        shr.verify(signature=result, **wrong_data)
コード例 #5
0
def test_verify_fail(param, value):
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, **DEFAULT_DATA)

    wrong_data = DEFAULT_DATA.copy()
    wrong_data[param] = value
    with pytest.raises(ValidationError):
        shr.verify(signature=result, **wrong_data)
コード例 #6
0
def test_verify_with_too_few(param):
    test_data = copy.deepcopy(DEFAULT_DATA)
    test_data[param]["foo"] = "bar"  # insert extra param
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, **test_data)

    with pytest.raises(ValidationError):
        shr.verify(signature=result, **DEFAULT_DATA)
コード例 #7
0
def test_verify_with_too_few(param):
    test_data = copy.deepcopy(DEFAULT_DATA)
    test_data[param]["foo"] = "bar"  # insert extra param
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, **test_data)

    with pytest.raises(ValidationError):
        shr.verify(signature=result, **DEFAULT_DATA)
コード例 #8
0
def test_verify_strict(key, value, monkeypatch):
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, **TEST_DATA)
    monkeypatch.setitem(TEST_DATA, key, value)
    with pytest.raises(ValidationError):
        shr.verify(signature=result,
                   strict_query_params_verification=True,
                   strict_headers_verification=True, **TEST_DATA)
コード例 #9
0
def test_verify_not_strict(param):
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, **DEFAULT_DATA)

    request_with_extra_params = copy.deepcopy(DEFAULT_DATA)
    request_with_extra_params[param]["foo"] = "bar"  # insert extra param
    shr.verify(
        signature=result, strict_query_params_verification=False, strict_headers_verification=False, **DEFAULT_DATA
    )
コード例 #10
0
def test_verify_not_strict(param):
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, **DEFAULT_DATA)

    request_with_extra_params = copy.deepcopy(DEFAULT_DATA)
    request_with_extra_params[param]["foo"] = "bar"  # insert extra param
    shr.verify(signature=result,
               strict_query_params_verification=False,
               strict_headers_verification=False,
               **DEFAULT_DATA)
コード例 #11
0
ファイル: relying_party.py プロジェクト: its-dirg/oidc-fed
    def _sign_registration_request(self, registration_request):
        # type (FederationRegistrationRequest) -> str
        """
        Sign registration request.

        :param registration_request: registration request
        :return: signed registration request
        """
        signer = SignedHttpRequest(self.intermediate_key)
        return signer.sign(self.intermediate_key.alg, body=registration_request.to_json())
コード例 #12
0
def test_verify_strict_with_too_many(param):
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, **DEFAULT_DATA)

    request_with_extra_params = copy.deepcopy(DEFAULT_DATA)
    request_with_extra_params[param]["foo"] = "bar"  # insert extra param
    with pytest.raises(ValidationError):
        shr.verify(signature=result,
                   strict_query_params_verification=True,
                   strict_headers_verification=True,
                   **request_with_extra_params)
コード例 #13
0
def test_verify_strict_with_too_many(param):
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, **DEFAULT_DATA)

    request_with_extra_params = copy.deepcopy(DEFAULT_DATA)
    request_with_extra_params[param]["foo"] = "bar"  # insert extra param
    with pytest.raises(ValidationError):
        shr.verify(
            signature=result,
            strict_query_params_verification=True,
            strict_headers_verification=True,
            **request_with_extra_params
        )
コード例 #14
0
    def __call__(self, method, url, **kwargs):
        try:
            body = kwargs["body"]
        except KeyError:
            body = None
        try:
            headers = kwargs["headers"]
        except KeyError:
            headers = {}

        _kwargs = sign_http_args(method, url, headers, body)
        shr = SignedHttpRequest(self.key)
        kwargs["Authorization"] = "pop {}".format(shr.sign(alg=self.alg, **_kwargs))
        return kwargs
コード例 #15
0
ファイル: pop.py プロジェクト: Omosofe/pyoidc
    def __call__(self, method, url, **kwargs):
        try:
            body = kwargs['body']
        except KeyError:
            body = None
        try:
            headers = kwargs['headers']
        except KeyError:
            headers = {}

        _kwargs = sign_http_args(method, url, headers, body)
        shr = SignedHttpRequest(self.key)
        kwargs['Authorization'] = 'pop {}'.format(shr.sign(alg=self.alg,
                                                           **_kwargs))
        return kwargs
コード例 #16
0
def test_verify_fail_wrong_key():
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, **DEFAULT_DATA)
    with pytest.raises(ValidationError):
        rshr = SignedHttpRequest(SYMKey(key="wrong_key", alg="HS256"))
        rshr.verify(signature=result, **DEFAULT_DATA)
コード例 #17
0
def test_verify_fail_wrong_key():
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, **DEFAULT_DATA)
    with pytest.raises(ValidationError):
        rshr = SignedHttpRequest(SYMKey(key="wrong_key", alg="HS256"))
        rshr.verify(signature=result, **DEFAULT_DATA)
コード例 #18
0
def test_verify_fail(key, value, monkeypatch):
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, **TEST_DATA)
    monkeypatch.setitem(TEST_DATA, key, value)
    with pytest.raises(ValidationError):
        shr.verify(signature=result, **TEST_DATA)
コード例 #19
0
def test_sign_specifies_jws_typ_pop():
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, body="abcdef")
    assert JWT().unpack(result).headers["typ"] == "pop"
コード例 #20
0
def test_verify_fail_on_missing_body():
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, body="abcdef")
    with pytest.raises(ValidationError):
        shr.verify(signature=result)
コード例 #21
0
def test_verify_fail_on_missing_body():
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, body="abcdef")
    with pytest.raises(ValidationError):
        shr.verify(signature=result)
コード例 #22
0
def test_sign_specifies_jws_typ_pop():
    shr = SignedHttpRequest(SIGN_KEY)
    result = shr.sign(alg=ALG, body="abcdef")
    assert JWT().unpack(result).headers["typ"] == "pop"