GNServer 0.0.0.0.48__py3-none-any.whl → 0.0.0.0.50__py3-none-any.whl
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.
- GNServer/models.py +21 -8
- {gnserver-0.0.0.0.48.dist-info → gnserver-0.0.0.0.50.dist-info}/METADATA +1 -1
- {gnserver-0.0.0.0.48.dist-info → gnserver-0.0.0.0.50.dist-info}/RECORD +6 -6
- {gnserver-0.0.0.0.48.dist-info → gnserver-0.0.0.0.50.dist-info}/WHEEL +0 -0
- {gnserver-0.0.0.0.48.dist-info → gnserver-0.0.0.0.50.dist-info}/licenses/LICENSE +0 -0
- {gnserver-0.0.0.0.48.dist-info → gnserver-0.0.0.0.50.dist-info}/top_level.txt +0 -0
GNServer/models.py
CHANGED
@@ -25,14 +25,18 @@ class KDCObject:
|
|
25
25
|
|
26
26
|
|
27
27
|
|
28
|
-
async def init(self):
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
28
|
+
async def init(self, servers_keys: Optional[Dict[str, bytes]] = None): # type: ignore
|
29
|
+
if servers_keys is None:
|
30
|
+
|
31
|
+
payload = self._requested_domains
|
32
|
+
r = await self._client.request(GNRequest('GET', Url(f'gn://{self._kdc_domain}/api/sys/server/keys'), payload=payload))
|
33
|
+
|
34
|
+
if not r.command.ok:
|
35
|
+
raise r
|
36
|
+
|
37
|
+
servers_keys: Dict[str, bytes] = r.payload
|
38
|
+
|
39
|
+
self._servers_keys = servers_keys
|
36
40
|
|
37
41
|
for domain in self._servers_keys.keys():
|
38
42
|
h = hash3(domain.encode())
|
@@ -47,13 +51,22 @@ class KDCObject:
|
|
47
51
|
|
48
52
|
|
49
53
|
def encode(self, domain: str, request: bytes):
|
54
|
+
if domain not in self._servers_keys:
|
55
|
+
return request
|
56
|
+
|
50
57
|
sig = s2.sign(self._kdc_key)
|
51
58
|
data = m1.encrypt(self._domain.encode(), sig, request, self._kdc_key)
|
52
59
|
return sig + self._servers_keys_domain_hash[domain] + data
|
53
60
|
|
54
61
|
def decode(self, response: bytes):
|
62
|
+
if len(response) < 164+64:
|
63
|
+
return response
|
64
|
+
|
55
65
|
sig, domain_h, data = response[:164], response[164:164+64], response[164+64:]
|
56
66
|
|
67
|
+
if domain_h not in self._servers_keys_hash_domain:
|
68
|
+
return response
|
69
|
+
|
57
70
|
key = self._servers_keys[self._servers_keys_hash_domain[domain_h]]
|
58
71
|
if not s2.verify(key, sig):
|
59
72
|
return None
|
@@ -6,9 +6,9 @@ GNServer/_crt.py,sha256=SOmyX7zBiCY9EhVSekksQtBHgTIZVvdqNZ8Ni-E5Zow,1390
|
|
6
6
|
GNServer/_func_params_validation.py,sha256=pDXRzPVTdPnDHFMMmKd014SConBjFOuaLeJTY0vldlM,11412
|
7
7
|
GNServer/_routes.py,sha256=bJnmQ8uEhPVQgy2tTqE5TEIM8aFXV-lVI7c2nG0rQwk,3384
|
8
8
|
GNServer/_template_resolver.py,sha256=vdJYb_7PjIeTWq-Clr7jyj7QIvPBxplU7EqeOuMJ64c,1409
|
9
|
-
GNServer/models.py,sha256=
|
10
|
-
gnserver-0.0.0.0.
|
11
|
-
gnserver-0.0.0.0.
|
12
|
-
gnserver-0.0.0.0.
|
13
|
-
gnserver-0.0.0.0.
|
14
|
-
gnserver-0.0.0.0.
|
9
|
+
GNServer/models.py,sha256=kVDInFDTHUiQIaYPSWFqRp2o0G6S7AC6Jb5eWhSZ6Fc,2592
|
10
|
+
gnserver-0.0.0.0.50.dist-info/licenses/LICENSE,sha256=_rN-sb3LemR3cKsEqjJRdXkdt7mME1mkW1BwWEn-zAw,1309
|
11
|
+
gnserver-0.0.0.0.50.dist-info/METADATA,sha256=E0dXGPd2uj9FmCLddp0bELPLIuFK3by44dHA_PSAUAI,830
|
12
|
+
gnserver-0.0.0.0.50.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
13
|
+
gnserver-0.0.0.0.50.dist-info/top_level.txt,sha256=-UOUBuD4u7Qkb1o5PdcwyA3kx8xCH2lwy0tJHi26Wb4,9
|
14
|
+
gnserver-0.0.0.0.50.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|