tesla-fleet-api 0.8.2__py3-none-any.whl → 0.8.3__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.
- tesla_fleet_api/const.py +1 -1
- tesla_fleet_api/teslafleetapi.py +10 -5
- tesla_fleet_api/vehiclesigned.py +6 -6
- {tesla_fleet_api-0.8.2.dist-info → tesla_fleet_api-0.8.3.dist-info}/METADATA +1 -1
- {tesla_fleet_api-0.8.2.dist-info → tesla_fleet_api-0.8.3.dist-info}/RECORD +8 -8
- {tesla_fleet_api-0.8.2.dist-info → tesla_fleet_api-0.8.3.dist-info}/LICENSE +0 -0
- {tesla_fleet_api-0.8.2.dist-info → tesla_fleet_api-0.8.3.dist-info}/WHEEL +0 -0
- {tesla_fleet_api-0.8.2.dist-info → tesla_fleet_api-0.8.3.dist-info}/top_level.txt +0 -0
tesla_fleet_api/const.py
CHANGED
tesla_fleet_api/teslafleetapi.py
CHANGED
@@ -30,7 +30,7 @@ class TeslaFleetApi:
|
|
30
30
|
session: aiohttp.ClientSession
|
31
31
|
headers: dict[str, str]
|
32
32
|
refresh_hook: Awaitable | None = None
|
33
|
-
|
33
|
+
private_key: ec.EllipticCurvePrivateKey | None = None
|
34
34
|
|
35
35
|
def __init__(
|
36
36
|
self,
|
@@ -164,11 +164,11 @@ class TeslaFleetApi:
|
|
164
164
|
async def get_private_key(self, path: str = "private_key.pem") -> ec.EllipticCurvePrivateKey:
|
165
165
|
"""Get or create the private key."""
|
166
166
|
if not exists(path):
|
167
|
-
self.
|
167
|
+
self.private_key = ec.generate_private_key(
|
168
168
|
ec.SECP256R1(), default_backend()
|
169
169
|
)
|
170
170
|
# save the key
|
171
|
-
pem = self.
|
171
|
+
pem = self.private_key.private_bytes(
|
172
172
|
encoding=serialization.Encoding.PEM,
|
173
173
|
format=serialization.PrivateFormat.TraditionalOpenSSL,
|
174
174
|
encryption_algorithm=serialization.NoEncryption(),
|
@@ -189,5 +189,10 @@ class TeslaFleetApi:
|
|
189
189
|
|
190
190
|
if not isinstance(value, ec.EllipticCurvePrivateKey):
|
191
191
|
raise AssertionError("Loaded key is not an EllipticCurvePrivateKey")
|
192
|
-
self.
|
193
|
-
return self.
|
192
|
+
self.private_key = value
|
193
|
+
return self.private_key
|
194
|
+
|
195
|
+
@property
|
196
|
+
def has_private_key(self) -> bool:
|
197
|
+
"""Check if the private key has been set."""
|
198
|
+
return self.private_key is not None
|
tesla_fleet_api/vehiclesigned.py
CHANGED
@@ -154,7 +154,7 @@ class Session:
|
|
154
154
|
class VehicleSigned(VehicleSpecific):
|
155
155
|
"""Class describing the Tesla Fleet API vehicle endpoints and commands for a specific vehicle with command signing."""
|
156
156
|
|
157
|
-
|
157
|
+
private_key: ec.EllipticCurvePrivateKey
|
158
158
|
_public_key: bytes
|
159
159
|
_from_destination: bytes
|
160
160
|
_sessions: dict[int, Session]
|
@@ -164,13 +164,13 @@ class VehicleSigned(VehicleSpecific):
|
|
164
164
|
):
|
165
165
|
super().__init__(parent, vin)
|
166
166
|
if key:
|
167
|
-
self.
|
168
|
-
elif parent._parent.
|
169
|
-
self.
|
167
|
+
self.private_key = key
|
168
|
+
elif parent._parent.private_key:
|
169
|
+
self.private_key = parent._parent.private_key
|
170
170
|
else:
|
171
171
|
raise ValueError("No private key.")
|
172
172
|
|
173
|
-
self._public_key = self.
|
173
|
+
self._public_key = self.private_key.public_key().public_bytes(
|
174
174
|
encoding=Encoding.X962, format=PublicFormat.UncompressedPoint
|
175
175
|
)
|
176
176
|
self._from_destination = randbytes(16)
|
@@ -200,7 +200,7 @@ class VehicleSigned(VehicleSpecific):
|
|
200
200
|
vehicle_public_key = info.publicKey
|
201
201
|
|
202
202
|
# Derive shared key from private key _key and vehicle public key
|
203
|
-
shared = self.
|
203
|
+
shared = self.private_key.exchange(
|
204
204
|
ec.ECDH(),
|
205
205
|
ec.EllipticCurvePublicKey.from_encoded_point(
|
206
206
|
ec.SECP256R1(), vehicle_public_key
|
@@ -1,19 +1,19 @@
|
|
1
1
|
tesla_fleet_api/__init__.py,sha256=BVZUDsfaxT05tAfcMHHWiyFyXwmDOx_wP_IHZBscgho,729
|
2
2
|
tesla_fleet_api/charging.py,sha256=N_mc8axrXj3iduqLj_jCt4Vx86tHqe3xqQT4R1R7HvU,1689
|
3
|
-
tesla_fleet_api/const.py,sha256=
|
3
|
+
tesla_fleet_api/const.py,sha256=jPBw9t-WqBbyAuzvEL9mG6Z0dSmftr9nTDJXj7Y_PiU,9577
|
4
4
|
tesla_fleet_api/energy.py,sha256=S7D75MPuMVsHgkyUcFfMqjGCLZBM5YVFlWLEHbaX-zw,5957
|
5
5
|
tesla_fleet_api/energyspecific.py,sha256=UfeaGE59aoAa8UhpQCXUi0sOrNCA40xZlqwF73BXTVY,4254
|
6
6
|
tesla_fleet_api/exceptions.py,sha256=zl8m4Z51ihVD5cKYSZ8e6heerArF0j5isQmX-gSdkwM,15456
|
7
7
|
tesla_fleet_api/partner.py,sha256=1vIBUaxKLIfqcC0X6VXZN0dMAzj_CLNPUMjA6QVqZ1k,1223
|
8
8
|
tesla_fleet_api/ratecalculator.py,sha256=4lz8yruUeouHXh_3ezsXX-CTpIegp1T1J4VuRV_qdHA,1791
|
9
|
-
tesla_fleet_api/teslafleetapi.py,sha256=
|
9
|
+
tesla_fleet_api/teslafleetapi.py,sha256=vr6qRb1oa7Y4NtstGJoxRh7DbeZS1nw7AAaVgMINMXA,7375
|
10
10
|
tesla_fleet_api/teslafleetoauth.py,sha256=OY9yRQuokYo3ts0C8Qb6Z-o9NNAGHbX9F5mHfAh50fo,4121
|
11
11
|
tesla_fleet_api/teslafleetopensource.py,sha256=TJfVPcqJlA1b3kMoGuLr-g5Gn8UDyYsTZhjvGY1MtIk,2007
|
12
12
|
tesla_fleet_api/teslemetry.py,sha256=Rl73BWYYJk1UWIhCPwywcXGRlkATYZrPz3LP-Covppw,3272
|
13
13
|
tesla_fleet_api/tessie.py,sha256=4dBYxe1G2v9JvJGRbb01wXrAmvWT4jOfV4f_VQE_vkE,2302
|
14
14
|
tesla_fleet_api/user.py,sha256=TZE2oh-n5zrhKXmGRuiNL9voKVODD7rBhGE_IObYVGA,1179
|
15
15
|
tesla_fleet_api/vehicle.py,sha256=W5Y_ok5PK7jtXsenWpMWJTS4RpLhRW-1AlTPv1a6R6A,31765
|
16
|
-
tesla_fleet_api/vehiclesigned.py,sha256=
|
16
|
+
tesla_fleet_api/vehiclesigned.py,sha256=10O2IcQD336utDzUChFrtwNFxo2Q2ID41dn9k-Y6A-Q,39160
|
17
17
|
tesla_fleet_api/vehiclespecific.py,sha256=Nr4zZzfmIuw3RFYjQEX6c_xtYZgztMsN5ohVn-YEH0I,20600
|
18
18
|
tesla_fleet_api/pb2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
19
|
tesla_fleet_api/pb2/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -25,8 +25,8 @@ tesla_fleet_api/pb2/signatures_pb2.py,sha256=5mdJUC8EC8kx1UxYrHK5XI3_7M6v7w2POH1
|
|
25
25
|
tesla_fleet_api/pb2/universal_message_pb2.py,sha256=F6-SkYXSuzWDsBvnGMg9k2pAIZv13v609qCPx7NSrdw,7254
|
26
26
|
tesla_fleet_api/pb2/vcsec_pb2.py,sha256=CMJ97e4Mm4p7NFcgybbCC2KJRcvtrcqmBy_pGycYhMo,26238
|
27
27
|
tesla_fleet_api/pb2/vehicle_pb2.py,sha256=P1V7Dqg3BBGZwODxTpZqtxLP6fGS_FNBqJcz_Fp0crs,2482
|
28
|
-
tesla_fleet_api-0.8.
|
29
|
-
tesla_fleet_api-0.8.
|
30
|
-
tesla_fleet_api-0.8.
|
31
|
-
tesla_fleet_api-0.8.
|
32
|
-
tesla_fleet_api-0.8.
|
28
|
+
tesla_fleet_api-0.8.3.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
29
|
+
tesla_fleet_api-0.8.3.dist-info/METADATA,sha256=n13nIO19R4285XWPBnX-cN6GWu4xbKNami9ccsjNOpo,3821
|
30
|
+
tesla_fleet_api-0.8.3.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
31
|
+
tesla_fleet_api-0.8.3.dist-info/top_level.txt,sha256=jeNbog_1saXBFrGpom9WyPWmilxsyP3szL_G7JLWQfM,16
|
32
|
+
tesla_fleet_api-0.8.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|