tesla-fleet-api 0.8.2__py3-none-any.whl → 0.8.3__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- 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
|