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.
Files changed (37) hide show
  1. {sonnenbatterie-0.7.dev1/sonnenbatterie.egg-info → sonnenbatterie-0.7.dev2}/PKG-INFO +1 -1
  2. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/setup.cfg +1 -1
  3. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie/sonnenbatterie.py +35 -8
  4. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2/sonnenbatterie.egg-info}/PKG-INFO +1 -1
  5. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/LICENSE +0 -0
  6. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/README.md +0 -0
  7. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/pyproject.toml +0 -0
  8. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/setup.py +0 -0
  9. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie/__init__.py +0 -0
  10. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie/const.py +0 -0
  11. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie.egg-info/SOURCES.txt +0 -0
  12. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie.egg-info/dependency_links.txt +0 -0
  13. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie.egg-info/requires.txt +0 -0
  14. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie.egg-info/top_level.txt +0 -0
  15. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie2/__init__.py +0 -0
  16. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie2/const.py +0 -0
  17. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/sonnenbatterie2/sonnenbatterie2.py +0 -0
  18. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_api_v1.py +0 -0
  19. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_api_v2.py +0 -0
  20. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_battery_reserve.py +0 -0
  21. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_battery_reserve_async.py +0 -0
  22. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_operating_mode.py +0 -0
  23. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_operating_mode_api_v2.py +0 -0
  24. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_operating_mode_async.py +0 -0
  25. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_operating_mode_async_api_v2.py +0 -0
  26. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_retrieval_loop.py +0 -0
  27. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_set_flow.py +0 -0
  28. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_set_flow_async.py +0 -0
  29. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_set_flow_v2.py +0 -0
  30. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_set_flow_v2_async.py +0 -0
  31. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_timeofuse.py +0 -0
  32. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_timeofuse_async.py +0 -0
  33. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_timeofuse_lib.py +0 -0
  34. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_timeofuse_v2.py +0 -0
  35. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/test/test_timeofuse_v2_async.py +0 -0
  36. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/timeofuse/__init__.py +0 -0
  37. {sonnenbatterie-0.7.dev1 → sonnenbatterie-0.7.dev2}/timeofuse/timeofuse.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sonnenbatterie
3
- Version: 0.7.dev1
3
+ Version: 0.7.dev2
4
4
  Summary: "Access Sonnenbatterie REST API"
5
5
  Home-page: https://github.com/weltmeyer/python_sonnenbatterie
6
6
  Author: Jan Weltmeyer
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = sonnenbatterie
3
- version = 0.7.dev1
3
+ version = 0.7.dev2
4
4
  author = Jan Weltmeyer
5
5
  description = "Access Sonnenbatterie REST API"
6
6
  long_description = file: README.md
@@ -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
- response = hashlib.pbkdf2_hmac(
290
- 'sha512',
291
- pw_sha512.encode('utf-8'),
292
- challenge.encode('utf-8'),
293
- 7500,
294
- 64
295
- ).hex()
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',
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sonnenbatterie
3
- Version: 0.7.dev1
3
+ Version: 0.7.dev2
4
4
  Summary: "Access Sonnenbatterie REST API"
5
5
  Home-page: https://github.com/weltmeyer/python_sonnenbatterie
6
6
  Author: Jan Weltmeyer