sonnenbatterie 0.7.dev1__tar.gz → 0.7.dev2__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.
- {sonnenbatterie-0.7.dev1/sonnenbatterie.egg-info → sonnenbatterie-0.7.dev2}/PKG-INFO +1 -1
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/setup.cfg +1 -1
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie/sonnenbatterie.py +35 -8
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2/sonnenbatterie.egg-info}/PKG-INFO +1 -1
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/LICENSE +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/README.md +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/pyproject.toml +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/setup.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie/__init__.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie/const.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie.egg-info/SOURCES.txt +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie.egg-info/dependency_links.txt +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie.egg-info/requires.txt +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie.egg-info/top_level.txt +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie2/__init__.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie2/const.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie2/sonnenbatterie2.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_api_v1.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_api_v2.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_battery_reserve.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_battery_reserve_async.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_operating_mode.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_operating_mode_api_v2.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_operating_mode_async.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_operating_mode_async_api_v2.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_retrieval_loop.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_set_flow.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_set_flow_async.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_set_flow_v2.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_set_flow_v2_async.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_timeofuse.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_timeofuse_async.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_timeofuse_lib.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_timeofuse_v2.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_timeofuse_v2_async.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/timeofuse/__init__.py +0 -0
- {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/timeofuse/timeofuse.py +0 -0
|
@@ -284,15 +284,42 @@ class AsyncSonnenBatterie:
|
|
|
284
284
|
timeout=self._timeout,
|
|
285
285
|
)
|
|
286
286
|
req_challenge.raise_for_status()
|
|
287
|
-
|
|
288
287
|
challenge = await req_challenge.json()
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
288
|
+
|
|
289
|
+
salt = await self._session.get(self.baseurl+'salt/'+self.username, timeout=self._timeout, allow_redirects=False)##returns a solt after battery got updated to a certatin version (>1.18??)
|
|
290
|
+
saltResponseCode = salt.status
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
if saltResponseCode!=200: #use old variant where no salt is availlable
|
|
296
|
+
#Old path (no salt): PBKDF2 over sha512(password) + challenge → hex
|
|
297
|
+
response=hashlib.pbkdf2_hmac('sha512',pw_sha512.encode('utf-8'),challenge.encode('utf-8'),7500,64).hex()
|
|
298
|
+
else:#New path (with salt): PBKDF2 over password + salt → HMAC-SHA256(challenge) → hex.
|
|
299
|
+
salt_payload=salt.json()
|
|
300
|
+
salt_str = salt_payload["salt"]
|
|
301
|
+
try:
|
|
302
|
+
if len(salt_str) % 2 == 0 and all(c in string.hexdigits for c in salt_str):
|
|
303
|
+
salt_bytes = bytes.fromhex(salt_str)
|
|
304
|
+
else:
|
|
305
|
+
raise ValueError
|
|
306
|
+
except Exception:
|
|
307
|
+
try:
|
|
308
|
+
salt_bytes = base64.b64decode(salt_str, validate=True)
|
|
309
|
+
except Exception:
|
|
310
|
+
salt_bytes = salt_str.encode("utf-8")
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
dk = hashlib.pbkdf2_hmac(
|
|
314
|
+
"sha512",
|
|
315
|
+
self.password.encode("utf-8"), # raw password (not pre-hashed)
|
|
316
|
+
salt_bytes,
|
|
317
|
+
7500,
|
|
318
|
+
dklen=64
|
|
319
|
+
)
|
|
320
|
+
response = hmac.new(dk, challenge.encode("utf-8"), hashlib.sha256).hexdigest()
|
|
321
|
+
|
|
322
|
+
|
|
296
323
|
|
|
297
324
|
session = await self._session.post(
|
|
298
325
|
url = self.baseurl+'session',
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie.egg-info/dependency_links.txt
RENAMED
|
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
|
{sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_operating_mode_async_api_v2.py
RENAMED
|
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
|