def test_get_decrypt_keys():
    kj = KeyJar()
    kj['Alice'] = [KeyBundle(JWK0['keys'])]
    kj[''] = [KeyBundle(JWK1['keys'])]
    kj['C'] = [KeyBundle(JWK2['keys'])]

    kb = rsa_init({
        'use': ['enc', 'sig'],
        'size': 1024,
        'name': 'rsa',
        'path': 'keys'
    })
    kj.add_kb('', kb)

    jwt = JWEnc()
    jwt.headers = {'alg': 'RS256'}
    jwt.part = [{
        'alg': 'RS256'
    }, '{"aud": "Bob", "iss": "Alice"}', 'aksjdhaksjbd']

    keys = kj.get_jwt_decrypt_keys(jwt)
    assert keys

    jwt.part = [{'alg': 'RS256'}, '{"iss": "Alice"}', 'aksjdhaksjbd']

    keys = kj.get_jwt_decrypt_keys(jwt)
    assert keys

    keys = kj.get_jwt_decrypt_keys(jwt, aud='Bob')
    assert keys
示例#2
0
def test_dump_jwks():
    a = {"kty": "oct", "key": "highestsupersecret", "use": "sig"}
    b = {"kty": "oct", "key": "highestsupersecret", "use": "enc"}
    kb2 = KeyBundle([a, b])

    kb1 = rsa_init({
        "use": ["enc", "sig"],
        "size": 1024,
        "name": "rsa",
        "path": "keys"
    })

    # Will not dump symmetric keys
    dump_jwks([kb1, kb2], "jwks_combo")

    # Now read it

    nkb = KeyBundle(source="file://jwks_combo", fileformat="jwks")

    assert len(nkb) == 2
    # both RSA keys
    assert len(nkb.get("rsa")) == 2

    # Will dump symmetric keys
    dump_jwks([kb1, kb2], "jwks_combo", symmetric_too=True)

    # Now read it
    nkb = KeyBundle(source="file://jwks_combo", fileformat="jwks")

    assert len(nkb) == 4
    # two RSA keys
    assert len(nkb.get("rsa")) == 2
    # two symmetric keys
    assert len(nkb.get("oct")) == 2
示例#3
0
def test_get_decrypt_keys():
    kj = KeyJar()
    kj.add_kb("Alice", KeyBundle(JWK0["keys"]))
    kj.add_kb("", KeyBundle(JWK1["keys"]))
    kj.add_kb("C", KeyBundle(JWK2["keys"]))

    kb = rsa_init({
        "use": ["enc", "sig"],
        "size": 1024,
        "name": "rsa",
        "path": "keys"
    })
    kj.add_kb("", kb)

    jwt = JWEnc()
    jwt.headers = {"alg": "RS256"}
    jwt.part = [{
        "alg": "RS256"
    }, '{"aud": "Bob", "iss": "Alice"}', "aksjdhaksjbd"]

    keys = kj.get_jwt_decrypt_keys(jwt)
    assert keys

    jwt.part = [{"alg": "RS256"}, '{"iss": "Alice"}', "aksjdhaksjbd"]

    keys = kj.get_jwt_decrypt_keys(jwt)
    assert keys

    with pytest.raises(IssuerNotFound):
        keys = kj.get_jwt_decrypt_keys(jwt, aud="Bob")
示例#4
0
def test_remove_rsa():
    kb = rsa_init({"use": ["enc", "sig"], "size": 1024, "name": "rsa", "path": "keys"})
    assert len(kb) == 2
    keys = kb.get("rsa")
    assert len(keys) == 2
    kb.remove(keys[0])
    assert len(kb) == 1
示例#5
0
def test_get_all():
    kb = rsa_init({"use": ["enc", "sig"], "size": 1024, "name": "rsa", "path": "keys"})
    _sym = SYMKey(**{"kty": "oct", "key": "highestsupersecret", "use": "enc"})
    kb.append(_sym)
    assert len(kb.get()) == 3

    _k = kb.keys()
    assert len(_k) == 3
示例#6
0
def test_remove_rsa():
    kb = rsa_init(
        {'use': ['enc', 'sig'], 'size': 1024, 'name': 'rsa', 'path': 'keys'})
    assert len(kb) == 2
    keys = kb.get('rsa')
    assert len(keys) == 2
    kb.remove(keys[0])
    assert len(kb) == 1
示例#7
0
def test_get_all():
    kb = rsa_init(
        {'use': ['enc', 'sig'], 'size': 1024, 'name': 'rsa', 'path': 'keys'})
    _sym = SYMKey(**{"kty": "oct", "key": "highestsupersecret", "use": "enc"})
    kb.append(_sym)
    assert len(kb.get()) == 3

    _k = kb.keys()
    assert len(_k) == 3
示例#8
0
def test_rsa_init():
    kb = rsa_init({
        "use": ["enc", "sig"],
        "size": 1024,
        "name": "rsa",
        "path": "keys"
    })
    assert kb
    assert len(kb) == 2
    assert len(kb.get("rsa")) == 2
def test_rsa_init():
    kb = rsa_init({
        'use': ['enc', 'sig'],
        'size': 1024,
        'name': 'rsa',
        'path': 'keys'
    })
    assert kb
    assert len(kb) == 2
    assert len(kb.get('rsa')) == 2
示例#10
0
def test_key_mix():
    kb = rsa_init({"use": ["enc", "sig"], "size": 1024, "name": "rsa", "path": "keys"})
    _sym = SYMKey(**{"kty": "oct", "key": "highestsupersecret", "use": "enc"})
    kb.append(_sym)
    assert len(kb) == 3
    assert len(kb.get("rsa")) == 2
    assert len(kb.get("oct")) == 1

    kb.remove(_sym)

    assert len(kb) == 2
    assert len(kb.get("rsa")) == 2
    assert len(kb.get("oct")) == 0
示例#11
0
def test_key_mix():
    kb = rsa_init(
        {'use': ['enc', 'sig'], 'size': 1024, 'name': 'rsa', 'path': 'keys'})
    _sym = SYMKey(**{"kty": "oct", "key": "highestsupersecret", "use": "enc"})
    kb.append(_sym)
    assert len(kb) == 3
    assert len(kb.get('rsa')) == 2
    assert len(kb.get('oct')) == 1

    kb.remove(_sym)

    assert len(kb) == 2
    assert len(kb.get('rsa')) == 2
    assert len(kb.get('oct')) == 0
示例#12
0
def test_dump_jwks():
    kb1 = rsa_init(
        {'use': ['enc', 'sig'], 'size': 1024, 'name': 'rsa', 'path': 'keys'})
    a = {"kty": "oct", "key": "highestsupersecret", "use": "sig"}
    b = {"kty": "oct", "key": "highestsupersecret", "use": "enc"}
    kb2 = KeyBundle([a, b])
    dump_jwks([kb1, kb2], 'jwks_combo')

    # Now read it

    nkb = KeyBundle(source='file://jwks_combo', fileformat='jwks')

    assert len(nkb) == 2
    # both RSA keys
    assert len(nkb.get('rsa')) == 2
示例#13
0
def test_rsa_init_under_spec():
    kb = rsa_init({"use": ["enc", "sig"], "size": 1024})
    assert kb
    assert len(kb) == 2
    assert len(kb.get("rsa")) == 2
def test_rsa_init_under_spec():
    kb = rsa_init({'use': ['enc', 'sig'], 'size': 1024})
    assert kb
    assert len(kb) == 2
    assert len(kb.get('rsa')) == 2