jamlib 2.6.0b0.dev3__tar.gz → 2.6.0b0.dev5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/PKG-INFO +1 -1
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/pyproject.toml +1 -1
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/__init__.py +1 -1
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/paseto/v1.py +70 -28
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jamlib.egg-info/PKG-INFO +1 -1
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/LICENSE.md +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/README.md +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/setup.cfg +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/__abc_encoder__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/__abc_instances__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/__deprecated__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/__logger__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/instance.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/jwt/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/jwt/lists/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/jwt/lists/json.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/jwt/lists/redis.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/jwt/tools.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/modules.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/oauth2/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/oauth2/builtin/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/oauth2/builtin/github.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/oauth2/builtin/gitlab.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/oauth2/builtin/google.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/oauth2/builtin/yandex.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/oauth2/client.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/sessions/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/sessions/json.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/aio/sessions/redis.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/encoders.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/exceptions/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/exceptions/jwt.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/exceptions/oauth2.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/exceptions/sessions.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/ext/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/ext/fastapi/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/ext/flask/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/ext/flask/extensions.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/ext/litestar/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/ext/litestar/middlewares.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/ext/litestar/plugins.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/ext/litestar/value.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/ext/starlette/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/ext/starlette/auth_backends.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/ext/starlette/value.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/instance.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/jwt/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/jwt/__utils__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/jwt/lists/__abc_list_repo__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/jwt/lists/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/jwt/lists/json.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/jwt/lists/redis.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/jwt/tools.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/jwt/types.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/modules.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/oauth2/__abc_oauth2_repo__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/oauth2/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/oauth2/builtin/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/oauth2/builtin/github.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/oauth2/builtin/gitlab.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/oauth2/builtin/google.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/oauth2/builtin/yandex.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/oauth2/client.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/otp/__abc_module__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/otp/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/otp/hotp.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/otp/totp.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/paseto/__abc_paseto_repo__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/paseto/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/paseto/utils.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/paseto/v2.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/paseto/v3.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/paseto/v4.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/quick/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/quick/jwt.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/sessions/__abc_session_repo__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/sessions/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/sessions/json.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/sessions/redis.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/tests/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/tests/clients.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/tests/fakers.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/utils/__init__.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/utils/aes.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/utils/await_maybe.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/utils/config_maker.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/utils/ed.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/utils/otp_keys.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/utils/rsa.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/utils/salt_hash.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/utils/symmetric.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/utils/xchacha20poly1305.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jam/utils/xor.py +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jamlib.egg-info/SOURCES.txt +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jamlib.egg-info/dependency_links.txt +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jamlib.egg-info/requires.txt +0 -0
- {jamlib-2.6.0b0.dev3 → jamlib-2.6.0b0.dev5}/src/jamlib.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jamlib
|
|
3
|
-
Version: 2.6.0b0.
|
|
3
|
+
Version: 2.6.0b0.dev5
|
|
4
4
|
Summary: Simple and universal library for authorization.
|
|
5
5
|
Author-email: Makridenko Adrian <adrianmakridenko@duck.com>, Ksenia Travnikova <kseniatravnikova@duck.com>
|
|
6
6
|
License: MIT License
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
|
|
3
|
-
import base64
|
|
4
3
|
import hashlib
|
|
5
4
|
import hmac
|
|
6
5
|
import secrets
|
|
7
6
|
from typing import Any, Literal, Optional, Union
|
|
8
7
|
|
|
9
|
-
from cryptography.hazmat.primitives import hashes
|
|
8
|
+
from cryptography.hazmat.primitives import hashes, serialization
|
|
10
9
|
from cryptography.hazmat.primitives.asymmetric import padding
|
|
11
|
-
from cryptography.hazmat.primitives.asymmetric.rsa import
|
|
10
|
+
from cryptography.hazmat.primitives.asymmetric.rsa import (
|
|
11
|
+
RSAPrivateKey,
|
|
12
|
+
RSAPublicKey,
|
|
13
|
+
)
|
|
12
14
|
from cryptography.hazmat.primitives.kdf.hkdf import HKDF
|
|
13
15
|
|
|
14
16
|
from jam.__abc_encoder__ import BaseEncoder
|
|
15
17
|
from jam.encoders import JsonEncoder
|
|
16
|
-
from jam.paseto.__abc_paseto_repo__ import PASETO, BasePASETO
|
|
18
|
+
from jam.paseto.__abc_paseto_repo__ import PASETO, BasePASETO
|
|
17
19
|
from jam.paseto.utils import (
|
|
18
20
|
__gen_hash__,
|
|
19
21
|
__pae__,
|
|
@@ -31,41 +33,81 @@ class PASETOv1(BasePASETO):
|
|
|
31
33
|
def key(
|
|
32
34
|
cls: type[PASETO],
|
|
33
35
|
purpose: Literal["local", "public"],
|
|
34
|
-
key: Union[str, bytes, None, RSAPrivateKey],
|
|
35
|
-
public_key: Union[RSAKeyLike] = None,
|
|
36
|
+
key: Union[str, bytes, None, RSAPrivateKey, RSAPublicKey],
|
|
36
37
|
) -> PASETO:
|
|
37
38
|
"""Return PASETO instance.
|
|
38
39
|
|
|
39
40
|
Args:
|
|
40
41
|
purpose (Literal["local", "public"]): Paseto purpose
|
|
41
42
|
key (str | bytes): PEM or secret key
|
|
42
|
-
public_key (str | bytes | RSAPublicKey | None): Public key for RSA
|
|
43
43
|
|
|
44
44
|
Returns:
|
|
45
45
|
PASETO: Paseto instance
|
|
46
46
|
"""
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
raise ValueError("Invalid RSA private key")
|
|
54
|
-
ky._secret = key
|
|
55
|
-
ky._public_key = cls.load_rsa_key(public_key, private=False)
|
|
56
|
-
else:
|
|
57
|
-
if purpose == "local":
|
|
58
|
-
if isinstance(key, str):
|
|
59
|
-
key = base64.urlsafe_b64decode(key + "==")
|
|
60
|
-
if not isinstance(key, bytes) or len(key) != 32:
|
|
61
|
-
raise ValueError(
|
|
62
|
-
"PASETOv1.local requires a 32-byte secret key"
|
|
63
|
-
)
|
|
64
|
-
ky._secret = key
|
|
47
|
+
inst = cls()
|
|
48
|
+
inst._purpose = purpose
|
|
49
|
+
|
|
50
|
+
if purpose == "local":
|
|
51
|
+
if isinstance(key, str):
|
|
52
|
+
raw = base64url_decode(key.encode("utf-8"))
|
|
65
53
|
else:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
54
|
+
raw = key
|
|
55
|
+
if not isinstance(raw, (bytes, bytearray) or len(raw) != 32):
|
|
56
|
+
raise ValueError("v1.local requires a 32-byte secret key.")
|
|
57
|
+
inst._secret = bytes(raw)
|
|
58
|
+
return inst
|
|
59
|
+
|
|
60
|
+
elif purpose == "public":
|
|
61
|
+
if isinstance(key, RSAPrivateKey):
|
|
62
|
+
inst._secret = key
|
|
63
|
+
inst._public_key - key.public_key()
|
|
64
|
+
return inst
|
|
65
|
+
if isinstance(key, RSAPublicKey):
|
|
66
|
+
inst._secret = None
|
|
67
|
+
inst._public_key = key
|
|
68
|
+
return inst
|
|
69
|
+
|
|
70
|
+
key_bytes = key.encode("utf-8") if isinstance(key, str) else key
|
|
71
|
+
try:
|
|
72
|
+
priv = serialization.load_pem_private_key(
|
|
73
|
+
key_bytes, password=None
|
|
74
|
+
)
|
|
75
|
+
if isinstance(priv, RSAPrivateKey):
|
|
76
|
+
inst._secret = priv
|
|
77
|
+
inst._public_key = priv.public_key()
|
|
78
|
+
return inst
|
|
79
|
+
except Exception:
|
|
80
|
+
pass
|
|
81
|
+
try:
|
|
82
|
+
priv = serialization.load_der_private_key(
|
|
83
|
+
key_bytes, password=None
|
|
84
|
+
)
|
|
85
|
+
if isinstance(priv, RSAPrivateKey):
|
|
86
|
+
inst._secret = priv
|
|
87
|
+
inst._public_key = priv.public_key()
|
|
88
|
+
return inst
|
|
89
|
+
except Exception:
|
|
90
|
+
pass
|
|
91
|
+
try:
|
|
92
|
+
pub = serialization.load_pem_public_key(key_bytes)
|
|
93
|
+
if isinstance(pub, RSAPublicKey):
|
|
94
|
+
inst._secret = None
|
|
95
|
+
inst._public_key = pub
|
|
96
|
+
return inst
|
|
97
|
+
except Exception:
|
|
98
|
+
pass
|
|
99
|
+
try:
|
|
100
|
+
pub = serialization.load_der_public_key(key_bytes)
|
|
101
|
+
if isinstance(pub, RSAPublicKey):
|
|
102
|
+
inst._secret = None
|
|
103
|
+
inst._public_key = pub
|
|
104
|
+
return inst
|
|
105
|
+
except Exception:
|
|
106
|
+
pass
|
|
107
|
+
|
|
108
|
+
raise ValueError("Invalid RSA key for v1.public")
|
|
109
|
+
else:
|
|
110
|
+
raise ValueError("Purpose must be 'local' or 'public'")
|
|
69
111
|
|
|
70
112
|
def _encode_local(
|
|
71
113
|
self,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jamlib
|
|
3
|
-
Version: 2.6.0b0.
|
|
3
|
+
Version: 2.6.0b0.dev5
|
|
4
4
|
Summary: Simple and universal library for authorization.
|
|
5
5
|
Author-email: Makridenko Adrian <adrianmakridenko@duck.com>, Ksenia Travnikova <kseniatravnikova@duck.com>
|
|
6
6
|
License: MIT License
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|