GNServer 0.0.0.0.50__py3-none-any.whl → 0.0.0.0.52__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/_app.py +11 -3
- GNServer/_client.py +3 -2
- GNServer/models.py +8 -7
- {gnserver-0.0.0.0.50.dist-info → gnserver-0.0.0.0.52.dist-info}/METADATA +1 -1
- {gnserver-0.0.0.0.50.dist-info → gnserver-0.0.0.0.52.dist-info}/RECORD +8 -8
- {gnserver-0.0.0.0.50.dist-info → gnserver-0.0.0.0.52.dist-info}/WHEEL +0 -0
- {gnserver-0.0.0.0.50.dist-info → gnserver-0.0.0.0.52.dist-info}/licenses/LICENSE +0 -0
- {gnserver-0.0.0.0.50.dist-info → gnserver-0.0.0.0.52.dist-info}/top_level.txt +0 -0
GNServer/_app.py
CHANGED
@@ -339,10 +339,14 @@ class App:
|
|
339
339
|
if event.end_stream:
|
340
340
|
|
341
341
|
if self._api._kdc is not None:
|
342
|
-
buf = self._api._kdc.decode(buf)
|
342
|
+
buf, domain = self._api._kdc.decode(buf)
|
343
|
+
else:
|
344
|
+
domain = None
|
343
345
|
|
344
346
|
if buf is not None:
|
345
347
|
request = GNRequest.deserialize(buf, mode)
|
348
|
+
if domain is not None:
|
349
|
+
request.client._data['domain'] = domain
|
346
350
|
else:
|
347
351
|
raise Exception('Не удалось расшифровать от KDC')
|
348
352
|
|
@@ -368,8 +372,12 @@ class App:
|
|
368
372
|
# формируем запрос
|
369
373
|
|
370
374
|
if self._api._kdc is not None:
|
371
|
-
data = self._api._kdc.decode(data)
|
375
|
+
data, domain = self._api._kdc.decode(data)
|
376
|
+
else:
|
377
|
+
domain = None
|
372
378
|
request = GNRequest.deserialize(data, mode)
|
379
|
+
if domain is not None:
|
380
|
+
request.client._data['domain'] = domain
|
373
381
|
|
374
382
|
logger.debug(request, f'event.stream_id -> {event.stream_id}')
|
375
383
|
|
@@ -446,7 +454,7 @@ class App:
|
|
446
454
|
|
447
455
|
|
448
456
|
if self._api._kdc is not None:
|
449
|
-
blob = self._api._kdc.encode(blob)
|
457
|
+
blob = self._api._kdc.encode(request.url.hostname, blob)
|
450
458
|
|
451
459
|
self._quic.send_stream_data(request.stream_id, blob, end_stream=end_stream) # type: ignore
|
452
460
|
self.transmit()
|
GNServer/_client.py
CHANGED
@@ -620,10 +620,11 @@ class RawQuicClient(QuicConnectionProtocol):
|
|
620
620
|
data = await fut
|
621
621
|
|
622
622
|
if self.quicClient._client._kdc is not None:
|
623
|
-
data = self.quicClient._client._kdc.decode(request.url.hostname, data)
|
623
|
+
data, domain = self.quicClient._client._kdc.decode(request.url.hostname, data)
|
624
624
|
|
625
625
|
if data is not None:
|
626
|
-
|
626
|
+
r = GNResponse.deserialize(data, 2)
|
627
|
+
return r
|
627
628
|
else:
|
628
629
|
return GNResponse('gn:client:0')
|
629
630
|
|
GNServer/models.py
CHANGED
@@ -3,7 +3,6 @@ from typing import List, Optional, Dict
|
|
3
3
|
from KeyisBTools.cryptography.sign import s2
|
4
4
|
from KeyisBTools.cryptography import m1
|
5
5
|
|
6
|
-
from ._client import AsyncClient
|
7
6
|
from ._app import GNRequest, GNResponse
|
8
7
|
from gnobjects.net.objects import Url
|
9
8
|
|
@@ -16,6 +15,7 @@ class KDCObject:
|
|
16
15
|
self._kdc_key = kdc_key
|
17
16
|
self._requested_domains = requested_domains
|
18
17
|
|
18
|
+
from ._client import AsyncClient
|
19
19
|
self._client = AsyncClient(domain)
|
20
20
|
|
21
21
|
self._servers_keys: Optional[Dict[str, bytes]] = None
|
@@ -60,14 +60,15 @@ class KDCObject:
|
|
60
60
|
|
61
61
|
def decode(self, response: bytes):
|
62
62
|
if len(response) < 164+64:
|
63
|
-
return response
|
63
|
+
return response, None
|
64
64
|
|
65
65
|
sig, domain_h, data = response[:164], response[164:164+64], response[164+64:]
|
66
66
|
|
67
67
|
if domain_h not in self._servers_keys_hash_domain:
|
68
|
-
return response
|
69
|
-
|
70
|
-
key = self._servers_keys[
|
68
|
+
return response, None
|
69
|
+
d = self._servers_keys_hash_domain[domain_h]
|
70
|
+
key = self._servers_keys[d]
|
71
|
+
|
71
72
|
if not s2.verify(key, sig):
|
72
|
-
return None
|
73
|
-
return m1.decrypt(self._domain.encode(), sig, data, key)
|
73
|
+
return None, None
|
74
|
+
return m1.decrypt(self._domain.encode(), sig, data, key), d
|
@@ -1,14 +1,14 @@
|
|
1
1
|
GNServer/__init__.py,sha256=6CMCZlkBO74PW8i8DAri5xz2fYM9EyPH8vdsLYBMmOo,1560
|
2
|
-
GNServer/_app.py,sha256=
|
3
|
-
GNServer/_client.py,sha256=
|
2
|
+
GNServer/_app.py,sha256=Tmdfzx-H0UqoIdX1RiWC1BV-NSu2dk-cve4eu2i6rE8,18757
|
3
|
+
GNServer/_client.py,sha256=JzWFdiZn5sdI-fzn3ljh_1V-B9p_a7hYJ5Xx5gnrvRg,32598
|
4
4
|
GNServer/_cors_resolver.py,sha256=aDxk4ItaEK-6vlDbkno8FJZEjczGEe8vkOui6_kz5-Y,5950
|
5
5
|
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=F50tgBbjDvarS1DEOIxHrpWK3o3BsKABHgF569eig84,2644
|
10
|
+
gnserver-0.0.0.0.52.dist-info/licenses/LICENSE,sha256=_rN-sb3LemR3cKsEqjJRdXkdt7mME1mkW1BwWEn-zAw,1309
|
11
|
+
gnserver-0.0.0.0.52.dist-info/METADATA,sha256=MqrmkZw13bbRmV6UAULXD0u4NM2vs3VExHKqSr6zheA,830
|
12
|
+
gnserver-0.0.0.0.52.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
13
|
+
gnserver-0.0.0.0.52.dist-info/top_level.txt,sha256=-UOUBuD4u7Qkb1o5PdcwyA3kx8xCH2lwy0tJHi26Wb4,9
|
14
|
+
gnserver-0.0.0.0.52.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|