tesla-fleet-api 0.7.7__py3-none-any.whl → 0.8.0__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.
@@ -0,0 +1,80 @@
1
+ """Generated protocol buffer code."""
2
+ from google.protobuf.internal import enum_type_wrapper
3
+ from google.protobuf import descriptor as _descriptor
4
+ from google.protobuf import descriptor_pool as _descriptor_pool
5
+ from google.protobuf import message as _message
6
+ from google.protobuf import reflection as _reflection
7
+ from google.protobuf import symbol_database as _symbol_database
8
+ _sym_db = _symbol_database.Default()
9
+ from . import signatures_pb2 as signatures__pb2
10
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17universal_message.proto\x12\x10UniversalMessage\x1a\x10signatures.proto"g\n\x0bDestination\x12*\n\x06domain\x18\x01 \x01(\x0e2\x18.UniversalMessage.DomainH\x00\x12\x19\n\x0frouting_address\x18\x02 \x01(\x0cH\x00B\x11\n\x0fsub_destination"\x8e\x01\n\rMessageStatus\x12=\n\x10operation_status\x18\x01 \x01(\x0e2#.UniversalMessage.OperationStatus_E\x12>\n\x14signed_message_fault\x18\x02 \x01(\x0e2 .UniversalMessage.MessageFault_E";\n\x12SessionInfoRequest\x12\x12\n\npublic_key\x18\x01 \x01(\x0c\x12\x11\n\tchallenge\x18\x02 \x01(\x0c"\xd6\x03\n\x0fRoutableMessage\x125\n\x0eto_destination\x18\x06 \x01(\x0b2\x1d.UniversalMessage.Destination\x127\n\x10from_destination\x18\x07 \x01(\x0b2\x1d.UniversalMessage.Destination\x12#\n\x19protobuf_message_as_bytes\x18\n \x01(\x0cH\x00\x12D\n\x14session_info_request\x18\x0e \x01(\x0b2$.UniversalMessage.SessionInfoRequestH\x00\x12\x16\n\x0csession_info\x18\x0f \x01(\x0cH\x00\x123\n\x0esignature_data\x18\r \x01(\x0b2\x19.Signatures.SignatureDataH\x01\x12<\n\x13signedMessageStatus\x18\x0c \x01(\x0b2\x1f.UniversalMessage.MessageStatus\x12\x14\n\x0crequest_uuid\x182 \x01(\x0c\x12\x0c\n\x04uuid\x183 \x01(\x0c\x12\r\n\x05flags\x184 \x01(\rB\t\n\x07payloadB\r\n\x0bsub_sigDataJ\x04\x08\x01\x10\x06J\x04\x08\x10\x10)J\x04\x08\x0b\x10\x0c*T\n\x06Domain\x12\x14\n\x10DOMAIN_BROADCAST\x10\x00\x12\x1b\n\x17DOMAIN_VEHICLE_SECURITY\x10\x02\x12\x17\n\x13DOMAIN_INFOTAINMENT\x10\x03*`\n\x11OperationStatus_E\x12\x16\n\x12OPERATIONSTATUS_OK\x10\x00\x12\x18\n\x14OPERATIONSTATUS_WAIT\x10\x01\x12\x19\n\x15OPERATIONSTATUS_ERROR\x10\x02*\x80\x08\n\x0eMessageFault_E\x12\x1b\n\x17MESSAGEFAULT_ERROR_NONE\x10\x00\x12\x1b\n\x17MESSAGEFAULT_ERROR_BUSY\x10\x01\x12\x1e\n\x1aMESSAGEFAULT_ERROR_TIMEOUT\x10\x02\x12%\n!MESSAGEFAULT_ERROR_UNKNOWN_KEY_ID\x10\x03\x12#\n\x1fMESSAGEFAULT_ERROR_INACTIVE_KEY\x10\x04\x12(\n$MESSAGEFAULT_ERROR_INVALID_SIGNATURE\x10\x05\x12/\n+MESSAGEFAULT_ERROR_INVALID_TOKEN_OR_COUNTER\x10\x06\x12.\n*MESSAGEFAULT_ERROR_INSUFFICIENT_PRIVILEGES\x10\x07\x12&\n"MESSAGEFAULT_ERROR_INVALID_DOMAINS\x10\x08\x12&\n"MESSAGEFAULT_ERROR_INVALID_COMMAND\x10\t\x12\x1f\n\x1bMESSAGEFAULT_ERROR_DECODING\x10\n\x12\x1f\n\x1bMESSAGEFAULT_ERROR_INTERNAL\x10\x0b\x12,\n(MESSAGEFAULT_ERROR_WRONG_PERSONALIZATION\x10\x0c\x12$\n MESSAGEFAULT_ERROR_BAD_PARAMETER\x10\r\x12\'\n#MESSAGEFAULT_ERROR_KEYCHAIN_IS_FULL\x10\x0e\x12&\n"MESSAGEFAULT_ERROR_INCORRECT_EPOCH\x10\x0f\x12*\n&MESSAGEFAULT_ERROR_IV_INCORRECT_LENGTH\x10\x10\x12#\n\x1fMESSAGEFAULT_ERROR_TIME_EXPIRED\x10\x11\x124\n0MESSAGEFAULT_ERROR_NOT_PROVISIONED_WITH_IDENTITY\x10\x12\x12.\n*MESSAGEFAULT_ERROR_COULD_NOT_HASH_METADATA\x10\x13\x12,\n(MESSAGEFAULT_ERROR_TIME_TO_LIVE_TOO_LONG\x10\x14\x12-\n)MESSAGEFAULT_ERROR_REMOTE_ACCESS_DISABLED\x10\x15\x125\n1MESSAGEFAULT_ERROR_REMOTE_SERVICE_ACCESS_DISABLED\x10\x16\x12;\n7MESSAGEFAULT_ERROR_COMMAND_REQUIRES_ACCOUNT_CREDENTIALS\x10\x17*\x1e\n\x05Flags\x12\x15\n\x11FLAG_USER_COMMAND\x10\x00Bu\n$com.tesla.generated.universalmessageZMgithub.com/teslamotors/vehicle-command/pkg/protocol/protobuf/universalmessageb\x06proto3')
11
+ _DOMAIN = DESCRIPTOR.enum_types_by_name['Domain']
12
+ Domain = enum_type_wrapper.EnumTypeWrapper(_DOMAIN)
13
+ _OPERATIONSTATUS_E = DESCRIPTOR.enum_types_by_name['OperationStatus_E']
14
+ OperationStatus_E = enum_type_wrapper.EnumTypeWrapper(_OPERATIONSTATUS_E)
15
+ _MESSAGEFAULT_E = DESCRIPTOR.enum_types_by_name['MessageFault_E']
16
+ MessageFault_E = enum_type_wrapper.EnumTypeWrapper(_MESSAGEFAULT_E)
17
+ _FLAGS = DESCRIPTOR.enum_types_by_name['Flags']
18
+ Flags = enum_type_wrapper.EnumTypeWrapper(_FLAGS)
19
+ DOMAIN_BROADCAST = 0
20
+ DOMAIN_VEHICLE_SECURITY = 2
21
+ DOMAIN_INFOTAINMENT = 3
22
+ OPERATIONSTATUS_OK = 0
23
+ OPERATIONSTATUS_WAIT = 1
24
+ OPERATIONSTATUS_ERROR = 2
25
+ MESSAGEFAULT_ERROR_NONE = 0
26
+ MESSAGEFAULT_ERROR_BUSY = 1
27
+ MESSAGEFAULT_ERROR_TIMEOUT = 2
28
+ MESSAGEFAULT_ERROR_UNKNOWN_KEY_ID = 3
29
+ MESSAGEFAULT_ERROR_INACTIVE_KEY = 4
30
+ MESSAGEFAULT_ERROR_INVALID_SIGNATURE = 5
31
+ MESSAGEFAULT_ERROR_INVALID_TOKEN_OR_COUNTER = 6
32
+ MESSAGEFAULT_ERROR_INSUFFICIENT_PRIVILEGES = 7
33
+ MESSAGEFAULT_ERROR_INVALID_DOMAINS = 8
34
+ MESSAGEFAULT_ERROR_INVALID_COMMAND = 9
35
+ MESSAGEFAULT_ERROR_DECODING = 10
36
+ MESSAGEFAULT_ERROR_INTERNAL = 11
37
+ MESSAGEFAULT_ERROR_WRONG_PERSONALIZATION = 12
38
+ MESSAGEFAULT_ERROR_BAD_PARAMETER = 13
39
+ MESSAGEFAULT_ERROR_KEYCHAIN_IS_FULL = 14
40
+ MESSAGEFAULT_ERROR_INCORRECT_EPOCH = 15
41
+ MESSAGEFAULT_ERROR_IV_INCORRECT_LENGTH = 16
42
+ MESSAGEFAULT_ERROR_TIME_EXPIRED = 17
43
+ MESSAGEFAULT_ERROR_NOT_PROVISIONED_WITH_IDENTITY = 18
44
+ MESSAGEFAULT_ERROR_COULD_NOT_HASH_METADATA = 19
45
+ MESSAGEFAULT_ERROR_TIME_TO_LIVE_TOO_LONG = 20
46
+ MESSAGEFAULT_ERROR_REMOTE_ACCESS_DISABLED = 21
47
+ MESSAGEFAULT_ERROR_REMOTE_SERVICE_ACCESS_DISABLED = 22
48
+ MESSAGEFAULT_ERROR_COMMAND_REQUIRES_ACCOUNT_CREDENTIALS = 23
49
+ FLAG_USER_COMMAND = 0
50
+ _DESTINATION = DESCRIPTOR.message_types_by_name['Destination']
51
+ _MESSAGESTATUS = DESCRIPTOR.message_types_by_name['MessageStatus']
52
+ _SESSIONINFOREQUEST = DESCRIPTOR.message_types_by_name['SessionInfoRequest']
53
+ _ROUTABLEMESSAGE = DESCRIPTOR.message_types_by_name['RoutableMessage']
54
+ Destination = _reflection.GeneratedProtocolMessageType('Destination', (_message.Message,), {'DESCRIPTOR': _DESTINATION, '__module__': 'universal_message_pb2'})
55
+ _sym_db.RegisterMessage(Destination)
56
+ MessageStatus = _reflection.GeneratedProtocolMessageType('MessageStatus', (_message.Message,), {'DESCRIPTOR': _MESSAGESTATUS, '__module__': 'universal_message_pb2'})
57
+ _sym_db.RegisterMessage(MessageStatus)
58
+ SessionInfoRequest = _reflection.GeneratedProtocolMessageType('SessionInfoRequest', (_message.Message,), {'DESCRIPTOR': _SESSIONINFOREQUEST, '__module__': 'universal_message_pb2'})
59
+ _sym_db.RegisterMessage(SessionInfoRequest)
60
+ RoutableMessage = _reflection.GeneratedProtocolMessageType('RoutableMessage', (_message.Message,), {'DESCRIPTOR': _ROUTABLEMESSAGE, '__module__': 'universal_message_pb2'})
61
+ _sym_db.RegisterMessage(RoutableMessage)
62
+ if _descriptor._USE_C_DESCRIPTORS == False:
63
+ DESCRIPTOR._options = None
64
+ DESCRIPTOR._serialized_options = b'\n$com.tesla.generated.universalmessageZMgithub.com/teslamotors/vehicle-command/pkg/protocol/protobuf/universalmessage'
65
+ _DOMAIN._serialized_start = 847
66
+ _DOMAIN._serialized_end = 931
67
+ _OPERATIONSTATUS_E._serialized_start = 933
68
+ _OPERATIONSTATUS_E._serialized_end = 1029
69
+ _MESSAGEFAULT_E._serialized_start = 1032
70
+ _MESSAGEFAULT_E._serialized_end = 2056
71
+ _FLAGS._serialized_start = 2058
72
+ _FLAGS._serialized_end = 2088
73
+ _DESTINATION._serialized_start = 63
74
+ _DESTINATION._serialized_end = 166
75
+ _MESSAGESTATUS._serialized_start = 169
76
+ _MESSAGESTATUS._serialized_end = 311
77
+ _SESSIONINFOREQUEST._serialized_start = 313
78
+ _SESSIONINFOREQUEST._serialized_end = 372
79
+ _ROUTABLEMESSAGE._serialized_start = 375
80
+ _ROUTABLEMESSAGE._serialized_end = 845
@@ -0,0 +1,245 @@
1
+ """Generated protocol buffer code."""
2
+ from google.protobuf.internal import enum_type_wrapper
3
+ from google.protobuf import descriptor as _descriptor
4
+ from google.protobuf import descriptor_pool as _descriptor_pool
5
+ from google.protobuf import message as _message
6
+ from google.protobuf import reflection as _reflection
7
+ from google.protobuf import symbol_database as _symbol_database
8
+ _sym_db = _symbol_database.Default()
9
+ from . import keys_pb2 as keys__pb2
10
+ from . import errors_pb2 as errors__pb2
11
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0bvcsec.proto\x12\x05VCSEC\x1a\nkeys.proto\x1a\x0cerrors.proto"\\\n\rSignedMessage\x12\x1e\n\x16protobufMessageAsBytes\x18\x02 \x01(\x0c\x12+\n\rsignatureType\x18\x03 \x01(\x0e2\x14.VCSEC.SignatureType"=\n\x0eToVCSECMessage\x12+\n\rsignedMessage\x18\x01 \x01(\x0b2\x14.VCSEC.SignedMessage"&\n\rKeyIdentifier\x12\x15\n\rpublicKeySHA1\x18\x01 \x01(\x0c":\n\x0bKeyMetadata\x12+\n\rkeyFormFactor\x18\x01 \x01(\x0e2\x14.VCSEC.KeyFormFactor"!\n\tPublicKey\x12\x14\n\x0cPublicKeyRaw\x18\x01 \x01(\x0c"j\n\rWhitelistInfo\x12\x17\n\x0fnumberOfEntries\x18\x01 \x01(\r\x12.\n\x10whitelistEntries\x18\x02 \x03(\x0b2\x14.VCSEC.KeyIdentifier\x12\x10\n\x08slotMask\x18\x03 \x01(\r"\xb5\x01\n\x12WhitelistEntryInfo\x12#\n\x05keyId\x18\x01 \x01(\x0b2\x14.VCSEC.KeyIdentifier\x12#\n\tpublicKey\x18\x02 \x01(\x0b2\x10.VCSEC.PublicKey\x12*\n\x0emetadataForKey\x18\x04 \x01(\x0b2\x12.VCSEC.KeyMetadata\x12\x0c\n\x04slot\x18\x06 \x01(\r\x12\x1b\n\x07keyRole\x18\x07 \x01(\x0e2\n.Keys.Role"\xa6\x01\n\x12InformationRequest\x12=\n\x16informationRequestType\x18\x01 \x01(\x0e2\x1d.VCSEC.InformationRequestType\x12%\n\x05keyId\x18\x02 \x01(\x0b2\x14.VCSEC.KeyIdentifierH\x00\x12\x13\n\tpublicKey\x18\x03 \x01(\x0cH\x00\x12\x0e\n\x04slot\x18\x04 \x01(\rH\x00B\x05\n\x03key"\x98\x03\n\x12ClosureMoveRequest\x121\n\x0ffrontDriverDoor\x18\x01 \x01(\x0e2\x18.VCSEC.ClosureMoveType_E\x124\n\x12frontPassengerDoor\x18\x02 \x01(\x0e2\x18.VCSEC.ClosureMoveType_E\x120\n\x0erearDriverDoor\x18\x03 \x01(\x0e2\x18.VCSEC.ClosureMoveType_E\x123\n\x11rearPassengerDoor\x18\x04 \x01(\x0e2\x18.VCSEC.ClosureMoveType_E\x12+\n\trearTrunk\x18\x05 \x01(\x0e2\x18.VCSEC.ClosureMoveType_E\x12,\n\nfrontTrunk\x18\x06 \x01(\x0e2\x18.VCSEC.ClosureMoveType_E\x12,\n\nchargePort\x18\x07 \x01(\x0e2\x18.VCSEC.ClosureMoveType_E\x12)\n\x07tonneau\x18\x08 \x01(\x0e2\x18.VCSEC.ClosureMoveType_E"i\n\x10PermissionChange\x12\x1d\n\x03key\x18\x01 \x01(\x0b2\x10.VCSEC.PublicKey\x12\x19\n\x11secondsToBeActive\x18\x03 \x01(\r\x12\x1b\n\x07keyRole\x18\x04 \x01(\x0e2\n.Keys.Role"\xbb\x01\n\nReplaceKey\x12.\n\x12publicKeyToReplace\x18\x01 \x01(\x0b2\x10.VCSEC.PublicKeyH\x00\x12\x17\n\rslotToReplace\x18\x02 \x01(\rH\x00\x12"\n\x08keyToAdd\x18\x03 \x01(\x0b2\x10.VCSEC.PublicKey\x12\x1b\n\x07keyRole\x18\x04 \x01(\x0e2\n.Keys.Role\x12\x13\n\x0bimpermanent\x18\x05 \x01(\x08B\x0e\n\x0ckeyToReplace"\x8c\x05\n\x12WhitelistOperation\x123\n\x17addPublicKeyToWhitelist\x18\x01 \x01(\x0b2\x10.VCSEC.PublicKeyH\x00\x128\n\x1cremovePublicKeyFromWhitelist\x18\x02 \x01(\x0b2\x10.VCSEC.PublicKeyH\x00\x12<\n\x19addPermissionsToPublicKey\x18\x03 \x01(\x0b2\x17.VCSEC.PermissionChangeH\x00\x12A\n\x1eremovePermissionsFromPublicKey\x18\x04 \x01(\x0b2\x17.VCSEC.PermissionChangeH\x00\x12E\n"addKeyToWhitelistAndAddPermissions\x18\x05 \x01(\x0b2\x17.VCSEC.PermissionChangeH\x00\x12:\n\x17updateKeyAndPermissions\x18\x07 \x01(\x0b2\x17.VCSEC.PermissionChangeH\x00\x124\n\x11addImpermanentKey\x18\x08 \x01(\x0b2\x17.VCSEC.PermissionChangeH\x00\x12E\n"addImpermanentKeyAndRemoveExisting\x18\t \x01(\x0b2\x17.VCSEC.PermissionChangeH\x00\x12"\n\x18removeAllImpermanentKeys\x18\x10 \x01(\x08H\x00\x12\'\n\nreplaceKey\x18\x11 \x01(\x0b2\x11.VCSEC.ReplaceKeyH\x00\x12*\n\x0emetadataForKey\x18\x06 \x01(\x0b2\x12.VCSEC.KeyMetadataB\r\n\x0bsub_message"\xcf\x01\n\x19WhitelistOperation_status\x12N\n\x1dwhitelistOperationInformation\x18\x01 \x01(\x0e2\'.VCSEC.WhitelistOperation_information_E\x12/\n\x11signerOfOperation\x18\x02 \x01(\x0b2\x14.VCSEC.KeyIdentifier\x121\n\x0foperationStatus\x18\x03 \x01(\x0e2\x18.VCSEC.OperationStatus_E"m\n\x14SignedMessage_status\x12\x0f\n\x07counter\x18\x01 \x01(\r\x12D\n\x18signedMessageInformation\x18\x02 \x01(\x0e2".VCSEC.SignedMessage_information_E"\xd3\x01\n\rCommandStatus\x121\n\x0foperationStatus\x18\x01 \x01(\x0e2\x18.VCSEC.OperationStatus_E\x12:\n\x13signedMessageStatus\x18\x02 \x01(\x0b2\x1b.VCSEC.SignedMessage_statusH\x00\x12D\n\x18whitelistOperationStatus\x18\x03 \x01(\x0b2 .VCSEC.WhitelistOperation_statusH\x00B\r\n\x0bsub_message"\x92\x02\n\x0fUnsignedMessage\x127\n\x12InformationRequest\x18\x01 \x01(\x0b2\x19.VCSEC.InformationRequestH\x00\x12\'\n\tRKEAction\x18\x02 \x01(\x0e2\x12.VCSEC.RKEAction_EH\x00\x127\n\x12closureMoveRequest\x18\x04 \x01(\x0b2\x19.VCSEC.ClosureMoveRequestH\x00\x127\n\x12WhitelistOperation\x18\x10 \x01(\x0b2\x19.VCSEC.WhitelistOperationH\x00B\r\n\x0bsub_messageJ\x04\x08\x06\x10\x07J\x04\x08\x07\x10\x08J\x04\x08\n\x10\x0bJ\x04\x08\x0c\x10\rJ\x04\x08\r\x10\x0e"\xfd\x02\n\x0fClosureStatuses\x12.\n\x0ffrontDriverDoor\x18\x01 \x01(\x0e2\x15.VCSEC.ClosureState_E\x121\n\x12frontPassengerDoor\x18\x02 \x01(\x0e2\x15.VCSEC.ClosureState_E\x12-\n\x0erearDriverDoor\x18\x03 \x01(\x0e2\x15.VCSEC.ClosureState_E\x120\n\x11rearPassengerDoor\x18\x04 \x01(\x0e2\x15.VCSEC.ClosureState_E\x12(\n\trearTrunk\x18\x05 \x01(\x0e2\x15.VCSEC.ClosureState_E\x12)\n\nfrontTrunk\x18\x06 \x01(\x0e2\x15.VCSEC.ClosureState_E\x12)\n\nchargePort\x18\x07 \x01(\x0e2\x15.VCSEC.ClosureState_E\x12&\n\x07tonneau\x18\x08 \x01(\x0e2\x15.VCSEC.ClosureState_E"3\n\x15DetailedClosureStatus\x12\x1a\n\x12tonneauPercentOpen\x18\x01 \x01(\r"\x98\x02\n\rVehicleStatus\x12/\n\x0fclosureStatuses\x18\x01 \x01(\x0b2\x16.VCSEC.ClosureStatuses\x123\n\x10vehicleLockState\x18\x02 \x01(\x0e2\x19.VCSEC.VehicleLockState_E\x127\n\x12vehicleSleepStatus\x18\x03 \x01(\x0e2\x1b.VCSEC.VehicleSleepStatus_E\x12+\n\x0cuserPresence\x18\x04 \x01(\x0e2\x15.VCSEC.UserPresence_E\x12;\n\x15detailedClosureStatus\x18\x05 \x01(\x0b2\x1c.VCSEC.DetailedClosureStatus"\x9b\x02\n\x10FromVCSECMessage\x12-\n\rvehicleStatus\x18\x01 \x01(\x0b2\x14.VCSEC.VehicleStatusH\x00\x12-\n\rcommandStatus\x18\x04 \x01(\x0b2\x14.VCSEC.CommandStatusH\x00\x12-\n\rwhitelistInfo\x18\x10 \x01(\x0b2\x14.VCSEC.WhitelistInfoH\x00\x127\n\x12whitelistEntryInfo\x18\x11 \x01(\x0b2\x19.VCSEC.WhitelistEntryInfoH\x00\x12,\n\x0cnominalError\x18. \x01(\x0b2\x14.Errors.NominalErrorH\x00B\r\n\x0bsub_messageJ\x04\x08\x06\x10\x0b*H\n\rSignatureType\x12\x17\n\x13SIGNATURE_TYPE_NONE\x10\x00\x12\x1e\n\x1aSIGNATURE_TYPE_PRESENT_KEY\x10\x02*\xad\x01\n\rKeyFormFactor\x12\x1b\n\x17KEY_FORM_FACTOR_UNKNOWN\x10\x00\x12\x1c\n\x18KEY_FORM_FACTOR_NFC_CARD\x10\x01\x12\x1e\n\x1aKEY_FORM_FACTOR_IOS_DEVICE\x10\x06\x12"\n\x1eKEY_FORM_FACTOR_ANDROID_DEVICE\x10\x07\x12\x1d\n\x19KEY_FORM_FACTOR_CLOUD_KEY\x10\t*\xa9\x01\n\x16InformationRequestType\x12\'\n#INFORMATION_REQUEST_TYPE_GET_STATUS\x10\x00\x12/\n+INFORMATION_REQUEST_TYPE_GET_WHITELIST_INFO\x10\x05\x125\n1INFORMATION_REQUEST_TYPE_GET_WHITELIST_ENTRY_INFO\x10\x06*\x97\x01\n\x0bRKEAction_E\x12\x15\n\x11RKE_ACTION_UNLOCK\x10\x00\x12\x13\n\x0fRKE_ACTION_LOCK\x10\x01\x12\x1b\n\x17RKE_ACTION_REMOTE_DRIVE\x10\x14\x12"\n\x1eRKE_ACTION_AUTO_SECURE_VEHICLE\x10\x1d\x12\x1b\n\x17RKE_ACTION_WAKE_VEHICLE\x10\x1e*\xa0\x01\n\x11ClosureMoveType_E\x12\x1a\n\x16CLOSURE_MOVE_TYPE_NONE\x10\x00\x12\x1a\n\x16CLOSURE_MOVE_TYPE_MOVE\x10\x01\x12\x1a\n\x16CLOSURE_MOVE_TYPE_STOP\x10\x02\x12\x1a\n\x16CLOSURE_MOVE_TYPE_OPEN\x10\x03\x12\x1b\n\x17CLOSURE_MOVE_TYPE_CLOSE\x10\x04*`\n\x11OperationStatus_E\x12\x16\n\x12OPERATIONSTATUS_OK\x10\x00\x12\x18\n\x14OPERATIONSTATUS_WAIT\x10\x01\x12\x19\n\x15OPERATIONSTATUS_ERROR\x10\x02*\xf3\x08\n\x1bSignedMessage_information_E\x12"\n\x1eSIGNEDMESSAGE_INFORMATION_NONE\x10\x00\x12+\n\'SIGNEDMESSAGE_INFORMATION_FAULT_UNKNOWN\x10\x01\x124\n0SIGNEDMESSAGE_INFORMATION_FAULT_NOT_ON_WHITELIST\x10\x02\x12<\n8SIGNEDMESSAGE_INFORMATION_FAULT_IV_SMALLER_THAN_EXPECTED\x10\x03\x121\n-SIGNEDMESSAGE_INFORMATION_FAULT_INVALID_TOKEN\x10\x04\x12=\n9SIGNEDMESSAGE_INFORMATION_FAULT_TOKEN_AND_COUNTER_INVALID\x10\x05\x124\n0SIGNEDMESSAGE_INFORMATION_FAULT_AES_DECRYPT_AUTH\x10\x06\x12/\n+SIGNEDMESSAGE_INFORMATION_FAULT_ECDSA_INPUT\x10\x07\x123\n/SIGNEDMESSAGE_INFORMATION_FAULT_ECDSA_SIGNATURE\x10\x08\x126\n2SIGNEDMESSAGE_INFORMATION_FAULT_LOCAL_ENTITY_START\x10\t\x127\n3SIGNEDMESSAGE_INFORMATION_FAULT_LOCAL_ENTITY_RESULT\x10\n\x12:\n6SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_RETRIEVE_KEY\x10\x0b\x12<\n8SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_RETRIEVE_TOKEN\x10\x0c\x127\n3SIGNEDMESSAGE_INFORMATION_FAULT_SIGNATURE_TOO_SHORT\x10\r\x12=\n9SIGNEDMESSAGE_INFORMATION_FAULT_TOKEN_IS_INCORRECT_LENGTH\x10\x0e\x123\n/SIGNEDMESSAGE_INFORMATION_FAULT_INCORRECT_EPOCH\x10\x0f\x127\n3SIGNEDMESSAGE_INFORMATION_FAULT_IV_INCORRECT_LENGTH\x10\x10\x120\n,SIGNEDMESSAGE_INFORMATION_FAULT_TIME_EXPIRED\x10\x11\x12A\n=SIGNEDMESSAGE_INFORMATION_FAULT_NOT_PROVISIONED_WITH_IDENTITY\x10\x12\x12;\n7SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_HASH_METADATA\x10\x13*\xc3\x0c\n WhitelistOperation_information_E\x12\'\n#WHITELISTOPERATION_INFORMATION_NONE\x10\x00\x125\n1WHITELISTOPERATION_INFORMATION_UNDOCUMENTED_ERROR\x10\x01\x12B\n>WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_REMOVE_ONESELF\x10\x02\x124\n0WHITELISTOPERATION_INFORMATION_KEYFOB_SLOTS_FULL\x10\x03\x121\n-WHITELISTOPERATION_INFORMATION_WHITELIST_FULL\x10\x04\x127\n3WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_ADD\x10\x05\x125\n1WHITELISTOPERATION_INFORMATION_INVALID_PUBLIC_KEY\x10\x06\x12:\n6WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_REMOVE\x10\x07\x12F\nBWHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_CHANGE_PERMISSIONS\x10\x08\x12L\nHWHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ELEVATE_OTHER_ABOVE_ONESELF\x10\t\x12K\nGWHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_DEMOTE_SUPERIOR_TO_ONESELF\x10\n\x12G\nCWHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_REMOVE_OWN_PERMISSIONS\x10\x0b\x12>\n:WHITELISTOPERATION_INFORMATION_PUBLIC_KEY_NOT_ON_WHITELIST\x10\x0c\x12Y\nUWHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_THAT_IS_ALREADY_ON_THE_WHITELIST\x10\r\x12F\nBWHITELISTOPERATION_INFORMATION_NOT_ALLOWED_TO_ADD_UNLESS_ON_READER\x10\x0e\x12A\n=WHITELISTOPERATION_INFORMATION_FM_MODIFYING_OUTSIDE_OF_F_MODE\x10\x0f\x12E\nAWHITELISTOPERATION_INFORMATION_FM_ATTEMPTING_TO_ADD_PERMANENT_KEY\x10\x10\x12H\nDWHITELISTOPERATION_INFORMATION_FM_ATTEMPTING_TO_REMOVE_PERMANENT_KEY\x10\x11\x129\n5WHITELISTOPERATION_INFORMATION_KEYCHAIN_WHILE_FS_FULL\x10\x12\x12E\nAWHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_WITHOUT_ROLE\x10\x13\x12J\nFWHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_WITH_SERVICE_ROLE\x10\x14\x12Q\nMWHITELISTOPERATION_INFORMATION_NON_SERVICE_KEY_ATTEMPTING_TO_ADD_SERVICE_TECH\x10\x15\x12b\n^WHITELISTOPERATION_INFORMATION_SERVICE_KEY_ATTEMPTING_TO_ADD_SERVICE_TECH_OUTSIDE_SERVICE_MODE\x10\x16*\xc6\x01\n\x0eClosureState_E\x12\x17\n\x13CLOSURESTATE_CLOSED\x10\x00\x12\x15\n\x11CLOSURESTATE_OPEN\x10\x01\x12\x15\n\x11CLOSURESTATE_AJAR\x10\x02\x12\x18\n\x14CLOSURESTATE_UNKNOWN\x10\x03\x12\x1f\n\x1bCLOSURESTATE_FAILED_UNLATCH\x10\x04\x12\x18\n\x14CLOSURESTATE_OPENING\x10\x05\x12\x18\n\x14CLOSURESTATE_CLOSING\x10\x06*\x9f\x01\n\x12VehicleLockState_E\x12\x1d\n\x19VEHICLELOCKSTATE_UNLOCKED\x10\x00\x12\x1b\n\x17VEHICLELOCKSTATE_LOCKED\x10\x01\x12$\n VEHICLELOCKSTATE_INTERNAL_LOCKED\x10\x02\x12\'\n#VEHICLELOCKSTATE_SELECTIVE_UNLOCKED\x10\x03*y\n\x14VehicleSleepStatus_E\x12 \n\x1cVEHICLE_SLEEP_STATUS_UNKNOWN\x10\x00\x12\x1e\n\x1aVEHICLE_SLEEP_STATUS_AWAKE\x10\x01\x12\x1f\n\x1bVEHICLE_SLEEP_STATUS_ASLEEP\x10\x02*}\n\x0eUserPresence_E\x12!\n\x1dVEHICLE_USER_PRESENCE_UNKNOWN\x10\x00\x12%\n!VEHICLE_USER_PRESENCE_NOT_PRESENT\x10\x01\x12!\n\x1dVEHICLE_USER_PRESENCE_PRESENT\x10\x02B_\n\x19com.tesla.generated.vcsecZBgithub.com/teslamotors/vehicle-command/pkg/protocol/protobuf/vcsecb\x06proto3')
12
+ _SIGNATURETYPE = DESCRIPTOR.enum_types_by_name['SignatureType']
13
+ SignatureType = enum_type_wrapper.EnumTypeWrapper(_SIGNATURETYPE)
14
+ _KEYFORMFACTOR = DESCRIPTOR.enum_types_by_name['KeyFormFactor']
15
+ KeyFormFactor = enum_type_wrapper.EnumTypeWrapper(_KEYFORMFACTOR)
16
+ _INFORMATIONREQUESTTYPE = DESCRIPTOR.enum_types_by_name['InformationRequestType']
17
+ InformationRequestType = enum_type_wrapper.EnumTypeWrapper(_INFORMATIONREQUESTTYPE)
18
+ _RKEACTION_E = DESCRIPTOR.enum_types_by_name['RKEAction_E']
19
+ RKEAction_E = enum_type_wrapper.EnumTypeWrapper(_RKEACTION_E)
20
+ _CLOSUREMOVETYPE_E = DESCRIPTOR.enum_types_by_name['ClosureMoveType_E']
21
+ ClosureMoveType_E = enum_type_wrapper.EnumTypeWrapper(_CLOSUREMOVETYPE_E)
22
+ _OPERATIONSTATUS_E = DESCRIPTOR.enum_types_by_name['OperationStatus_E']
23
+ OperationStatus_E = enum_type_wrapper.EnumTypeWrapper(_OPERATIONSTATUS_E)
24
+ _SIGNEDMESSAGE_INFORMATION_E = DESCRIPTOR.enum_types_by_name['SignedMessage_information_E']
25
+ SignedMessage_information_E = enum_type_wrapper.EnumTypeWrapper(_SIGNEDMESSAGE_INFORMATION_E)
26
+ _WHITELISTOPERATION_INFORMATION_E = DESCRIPTOR.enum_types_by_name['WhitelistOperation_information_E']
27
+ WhitelistOperation_information_E = enum_type_wrapper.EnumTypeWrapper(_WHITELISTOPERATION_INFORMATION_E)
28
+ _CLOSURESTATE_E = DESCRIPTOR.enum_types_by_name['ClosureState_E']
29
+ ClosureState_E = enum_type_wrapper.EnumTypeWrapper(_CLOSURESTATE_E)
30
+ _VEHICLELOCKSTATE_E = DESCRIPTOR.enum_types_by_name['VehicleLockState_E']
31
+ VehicleLockState_E = enum_type_wrapper.EnumTypeWrapper(_VEHICLELOCKSTATE_E)
32
+ _VEHICLESLEEPSTATUS_E = DESCRIPTOR.enum_types_by_name['VehicleSleepStatus_E']
33
+ VehicleSleepStatus_E = enum_type_wrapper.EnumTypeWrapper(_VEHICLESLEEPSTATUS_E)
34
+ _USERPRESENCE_E = DESCRIPTOR.enum_types_by_name['UserPresence_E']
35
+ UserPresence_E = enum_type_wrapper.EnumTypeWrapper(_USERPRESENCE_E)
36
+ SIGNATURE_TYPE_NONE = 0
37
+ SIGNATURE_TYPE_PRESENT_KEY = 2
38
+ KEY_FORM_FACTOR_UNKNOWN = 0
39
+ KEY_FORM_FACTOR_NFC_CARD = 1
40
+ KEY_FORM_FACTOR_IOS_DEVICE = 6
41
+ KEY_FORM_FACTOR_ANDROID_DEVICE = 7
42
+ KEY_FORM_FACTOR_CLOUD_KEY = 9
43
+ INFORMATION_REQUEST_TYPE_GET_STATUS = 0
44
+ INFORMATION_REQUEST_TYPE_GET_WHITELIST_INFO = 5
45
+ INFORMATION_REQUEST_TYPE_GET_WHITELIST_ENTRY_INFO = 6
46
+ RKE_ACTION_UNLOCK = 0
47
+ RKE_ACTION_LOCK = 1
48
+ RKE_ACTION_REMOTE_DRIVE = 20
49
+ RKE_ACTION_AUTO_SECURE_VEHICLE = 29
50
+ RKE_ACTION_WAKE_VEHICLE = 30
51
+ CLOSURE_MOVE_TYPE_NONE = 0
52
+ CLOSURE_MOVE_TYPE_MOVE = 1
53
+ CLOSURE_MOVE_TYPE_STOP = 2
54
+ CLOSURE_MOVE_TYPE_OPEN = 3
55
+ CLOSURE_MOVE_TYPE_CLOSE = 4
56
+ OPERATIONSTATUS_OK = 0
57
+ OPERATIONSTATUS_WAIT = 1
58
+ OPERATIONSTATUS_ERROR = 2
59
+ SIGNEDMESSAGE_INFORMATION_NONE = 0
60
+ SIGNEDMESSAGE_INFORMATION_FAULT_UNKNOWN = 1
61
+ SIGNEDMESSAGE_INFORMATION_FAULT_NOT_ON_WHITELIST = 2
62
+ SIGNEDMESSAGE_INFORMATION_FAULT_IV_SMALLER_THAN_EXPECTED = 3
63
+ SIGNEDMESSAGE_INFORMATION_FAULT_INVALID_TOKEN = 4
64
+ SIGNEDMESSAGE_INFORMATION_FAULT_TOKEN_AND_COUNTER_INVALID = 5
65
+ SIGNEDMESSAGE_INFORMATION_FAULT_AES_DECRYPT_AUTH = 6
66
+ SIGNEDMESSAGE_INFORMATION_FAULT_ECDSA_INPUT = 7
67
+ SIGNEDMESSAGE_INFORMATION_FAULT_ECDSA_SIGNATURE = 8
68
+ SIGNEDMESSAGE_INFORMATION_FAULT_LOCAL_ENTITY_START = 9
69
+ SIGNEDMESSAGE_INFORMATION_FAULT_LOCAL_ENTITY_RESULT = 10
70
+ SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_RETRIEVE_KEY = 11
71
+ SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_RETRIEVE_TOKEN = 12
72
+ SIGNEDMESSAGE_INFORMATION_FAULT_SIGNATURE_TOO_SHORT = 13
73
+ SIGNEDMESSAGE_INFORMATION_FAULT_TOKEN_IS_INCORRECT_LENGTH = 14
74
+ SIGNEDMESSAGE_INFORMATION_FAULT_INCORRECT_EPOCH = 15
75
+ SIGNEDMESSAGE_INFORMATION_FAULT_IV_INCORRECT_LENGTH = 16
76
+ SIGNEDMESSAGE_INFORMATION_FAULT_TIME_EXPIRED = 17
77
+ SIGNEDMESSAGE_INFORMATION_FAULT_NOT_PROVISIONED_WITH_IDENTITY = 18
78
+ SIGNEDMESSAGE_INFORMATION_FAULT_COULD_NOT_HASH_METADATA = 19
79
+ WHITELISTOPERATION_INFORMATION_NONE = 0
80
+ WHITELISTOPERATION_INFORMATION_UNDOCUMENTED_ERROR = 1
81
+ WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_REMOVE_ONESELF = 2
82
+ WHITELISTOPERATION_INFORMATION_KEYFOB_SLOTS_FULL = 3
83
+ WHITELISTOPERATION_INFORMATION_WHITELIST_FULL = 4
84
+ WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_ADD = 5
85
+ WHITELISTOPERATION_INFORMATION_INVALID_PUBLIC_KEY = 6
86
+ WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_REMOVE = 7
87
+ WHITELISTOPERATION_INFORMATION_NO_PERMISSION_TO_CHANGE_PERMISSIONS = 8
88
+ WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ELEVATE_OTHER_ABOVE_ONESELF = 9
89
+ WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_DEMOTE_SUPERIOR_TO_ONESELF = 10
90
+ WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_REMOVE_OWN_PERMISSIONS = 11
91
+ WHITELISTOPERATION_INFORMATION_PUBLIC_KEY_NOT_ON_WHITELIST = 12
92
+ WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_THAT_IS_ALREADY_ON_THE_WHITELIST = 13
93
+ WHITELISTOPERATION_INFORMATION_NOT_ALLOWED_TO_ADD_UNLESS_ON_READER = 14
94
+ WHITELISTOPERATION_INFORMATION_FM_MODIFYING_OUTSIDE_OF_F_MODE = 15
95
+ WHITELISTOPERATION_INFORMATION_FM_ATTEMPTING_TO_ADD_PERMANENT_KEY = 16
96
+ WHITELISTOPERATION_INFORMATION_FM_ATTEMPTING_TO_REMOVE_PERMANENT_KEY = 17
97
+ WHITELISTOPERATION_INFORMATION_KEYCHAIN_WHILE_FS_FULL = 18
98
+ WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_WITHOUT_ROLE = 19
99
+ WHITELISTOPERATION_INFORMATION_ATTEMPTING_TO_ADD_KEY_WITH_SERVICE_ROLE = 20
100
+ WHITELISTOPERATION_INFORMATION_NON_SERVICE_KEY_ATTEMPTING_TO_ADD_SERVICE_TECH = 21
101
+ WHITELISTOPERATION_INFORMATION_SERVICE_KEY_ATTEMPTING_TO_ADD_SERVICE_TECH_OUTSIDE_SERVICE_MODE = 22
102
+ CLOSURESTATE_CLOSED = 0
103
+ CLOSURESTATE_OPEN = 1
104
+ CLOSURESTATE_AJAR = 2
105
+ CLOSURESTATE_UNKNOWN = 3
106
+ CLOSURESTATE_FAILED_UNLATCH = 4
107
+ CLOSURESTATE_OPENING = 5
108
+ CLOSURESTATE_CLOSING = 6
109
+ VEHICLELOCKSTATE_UNLOCKED = 0
110
+ VEHICLELOCKSTATE_LOCKED = 1
111
+ VEHICLELOCKSTATE_INTERNAL_LOCKED = 2
112
+ VEHICLELOCKSTATE_SELECTIVE_UNLOCKED = 3
113
+ VEHICLE_SLEEP_STATUS_UNKNOWN = 0
114
+ VEHICLE_SLEEP_STATUS_AWAKE = 1
115
+ VEHICLE_SLEEP_STATUS_ASLEEP = 2
116
+ VEHICLE_USER_PRESENCE_UNKNOWN = 0
117
+ VEHICLE_USER_PRESENCE_NOT_PRESENT = 1
118
+ VEHICLE_USER_PRESENCE_PRESENT = 2
119
+ _SIGNEDMESSAGE = DESCRIPTOR.message_types_by_name['SignedMessage']
120
+ _TOVCSECMESSAGE = DESCRIPTOR.message_types_by_name['ToVCSECMessage']
121
+ _KEYIDENTIFIER = DESCRIPTOR.message_types_by_name['KeyIdentifier']
122
+ _KEYMETADATA = DESCRIPTOR.message_types_by_name['KeyMetadata']
123
+ _PUBLICKEY = DESCRIPTOR.message_types_by_name['PublicKey']
124
+ _WHITELISTINFO = DESCRIPTOR.message_types_by_name['WhitelistInfo']
125
+ _WHITELISTENTRYINFO = DESCRIPTOR.message_types_by_name['WhitelistEntryInfo']
126
+ _INFORMATIONREQUEST = DESCRIPTOR.message_types_by_name['InformationRequest']
127
+ _CLOSUREMOVEREQUEST = DESCRIPTOR.message_types_by_name['ClosureMoveRequest']
128
+ _PERMISSIONCHANGE = DESCRIPTOR.message_types_by_name['PermissionChange']
129
+ _REPLACEKEY = DESCRIPTOR.message_types_by_name['ReplaceKey']
130
+ _WHITELISTOPERATION = DESCRIPTOR.message_types_by_name['WhitelistOperation']
131
+ _WHITELISTOPERATION_STATUS = DESCRIPTOR.message_types_by_name['WhitelistOperation_status']
132
+ _SIGNEDMESSAGE_STATUS = DESCRIPTOR.message_types_by_name['SignedMessage_status']
133
+ _COMMANDSTATUS = DESCRIPTOR.message_types_by_name['CommandStatus']
134
+ _UNSIGNEDMESSAGE = DESCRIPTOR.message_types_by_name['UnsignedMessage']
135
+ _CLOSURESTATUSES = DESCRIPTOR.message_types_by_name['ClosureStatuses']
136
+ _DETAILEDCLOSURESTATUS = DESCRIPTOR.message_types_by_name['DetailedClosureStatus']
137
+ _VEHICLESTATUS = DESCRIPTOR.message_types_by_name['VehicleStatus']
138
+ _FROMVCSECMESSAGE = DESCRIPTOR.message_types_by_name['FromVCSECMessage']
139
+ SignedMessage = _reflection.GeneratedProtocolMessageType('SignedMessage', (_message.Message,), {'DESCRIPTOR': _SIGNEDMESSAGE, '__module__': 'vcsec_pb2'})
140
+ _sym_db.RegisterMessage(SignedMessage)
141
+ ToVCSECMessage = _reflection.GeneratedProtocolMessageType('ToVCSECMessage', (_message.Message,), {'DESCRIPTOR': _TOVCSECMESSAGE, '__module__': 'vcsec_pb2'})
142
+ _sym_db.RegisterMessage(ToVCSECMessage)
143
+ KeyIdentifier = _reflection.GeneratedProtocolMessageType('KeyIdentifier', (_message.Message,), {'DESCRIPTOR': _KEYIDENTIFIER, '__module__': 'vcsec_pb2'})
144
+ _sym_db.RegisterMessage(KeyIdentifier)
145
+ KeyMetadata = _reflection.GeneratedProtocolMessageType('KeyMetadata', (_message.Message,), {'DESCRIPTOR': _KEYMETADATA, '__module__': 'vcsec_pb2'})
146
+ _sym_db.RegisterMessage(KeyMetadata)
147
+ PublicKey = _reflection.GeneratedProtocolMessageType('PublicKey', (_message.Message,), {'DESCRIPTOR': _PUBLICKEY, '__module__': 'vcsec_pb2'})
148
+ _sym_db.RegisterMessage(PublicKey)
149
+ WhitelistInfo = _reflection.GeneratedProtocolMessageType('WhitelistInfo', (_message.Message,), {'DESCRIPTOR': _WHITELISTINFO, '__module__': 'vcsec_pb2'})
150
+ _sym_db.RegisterMessage(WhitelistInfo)
151
+ WhitelistEntryInfo = _reflection.GeneratedProtocolMessageType('WhitelistEntryInfo', (_message.Message,), {'DESCRIPTOR': _WHITELISTENTRYINFO, '__module__': 'vcsec_pb2'})
152
+ _sym_db.RegisterMessage(WhitelistEntryInfo)
153
+ InformationRequest = _reflection.GeneratedProtocolMessageType('InformationRequest', (_message.Message,), {'DESCRIPTOR': _INFORMATIONREQUEST, '__module__': 'vcsec_pb2'})
154
+ _sym_db.RegisterMessage(InformationRequest)
155
+ ClosureMoveRequest = _reflection.GeneratedProtocolMessageType('ClosureMoveRequest', (_message.Message,), {'DESCRIPTOR': _CLOSUREMOVEREQUEST, '__module__': 'vcsec_pb2'})
156
+ _sym_db.RegisterMessage(ClosureMoveRequest)
157
+ PermissionChange = _reflection.GeneratedProtocolMessageType('PermissionChange', (_message.Message,), {'DESCRIPTOR': _PERMISSIONCHANGE, '__module__': 'vcsec_pb2'})
158
+ _sym_db.RegisterMessage(PermissionChange)
159
+ ReplaceKey = _reflection.GeneratedProtocolMessageType('ReplaceKey', (_message.Message,), {'DESCRIPTOR': _REPLACEKEY, '__module__': 'vcsec_pb2'})
160
+ _sym_db.RegisterMessage(ReplaceKey)
161
+ WhitelistOperation = _reflection.GeneratedProtocolMessageType('WhitelistOperation', (_message.Message,), {'DESCRIPTOR': _WHITELISTOPERATION, '__module__': 'vcsec_pb2'})
162
+ _sym_db.RegisterMessage(WhitelistOperation)
163
+ WhitelistOperation_status = _reflection.GeneratedProtocolMessageType('WhitelistOperation_status', (_message.Message,), {'DESCRIPTOR': _WHITELISTOPERATION_STATUS, '__module__': 'vcsec_pb2'})
164
+ _sym_db.RegisterMessage(WhitelistOperation_status)
165
+ SignedMessage_status = _reflection.GeneratedProtocolMessageType('SignedMessage_status', (_message.Message,), {'DESCRIPTOR': _SIGNEDMESSAGE_STATUS, '__module__': 'vcsec_pb2'})
166
+ _sym_db.RegisterMessage(SignedMessage_status)
167
+ CommandStatus = _reflection.GeneratedProtocolMessageType('CommandStatus', (_message.Message,), {'DESCRIPTOR': _COMMANDSTATUS, '__module__': 'vcsec_pb2'})
168
+ _sym_db.RegisterMessage(CommandStatus)
169
+ UnsignedMessage = _reflection.GeneratedProtocolMessageType('UnsignedMessage', (_message.Message,), {'DESCRIPTOR': _UNSIGNEDMESSAGE, '__module__': 'vcsec_pb2'})
170
+ _sym_db.RegisterMessage(UnsignedMessage)
171
+ ClosureStatuses = _reflection.GeneratedProtocolMessageType('ClosureStatuses', (_message.Message,), {'DESCRIPTOR': _CLOSURESTATUSES, '__module__': 'vcsec_pb2'})
172
+ _sym_db.RegisterMessage(ClosureStatuses)
173
+ DetailedClosureStatus = _reflection.GeneratedProtocolMessageType('DetailedClosureStatus', (_message.Message,), {'DESCRIPTOR': _DETAILEDCLOSURESTATUS, '__module__': 'vcsec_pb2'})
174
+ _sym_db.RegisterMessage(DetailedClosureStatus)
175
+ VehicleStatus = _reflection.GeneratedProtocolMessageType('VehicleStatus', (_message.Message,), {'DESCRIPTOR': _VEHICLESTATUS, '__module__': 'vcsec_pb2'})
176
+ _sym_db.RegisterMessage(VehicleStatus)
177
+ FromVCSECMessage = _reflection.GeneratedProtocolMessageType('FromVCSECMessage', (_message.Message,), {'DESCRIPTOR': _FROMVCSECMESSAGE, '__module__': 'vcsec_pb2'})
178
+ _sym_db.RegisterMessage(FromVCSECMessage)
179
+ if _descriptor._USE_C_DESCRIPTORS == False:
180
+ DESCRIPTOR._options = None
181
+ DESCRIPTOR._serialized_options = b'\n\x19com.tesla.generated.vcsecZBgithub.com/teslamotors/vehicle-command/pkg/protocol/protobuf/vcsec'
182
+ _SIGNATURETYPE._serialized_start = 3982
183
+ _SIGNATURETYPE._serialized_end = 4054
184
+ _KEYFORMFACTOR._serialized_start = 4057
185
+ _KEYFORMFACTOR._serialized_end = 4230
186
+ _INFORMATIONREQUESTTYPE._serialized_start = 4233
187
+ _INFORMATIONREQUESTTYPE._serialized_end = 4402
188
+ _RKEACTION_E._serialized_start = 4405
189
+ _RKEACTION_E._serialized_end = 4556
190
+ _CLOSUREMOVETYPE_E._serialized_start = 4559
191
+ _CLOSUREMOVETYPE_E._serialized_end = 4719
192
+ _OPERATIONSTATUS_E._serialized_start = 4721
193
+ _OPERATIONSTATUS_E._serialized_end = 4817
194
+ _SIGNEDMESSAGE_INFORMATION_E._serialized_start = 4820
195
+ _SIGNEDMESSAGE_INFORMATION_E._serialized_end = 5959
196
+ _WHITELISTOPERATION_INFORMATION_E._serialized_start = 5962
197
+ _WHITELISTOPERATION_INFORMATION_E._serialized_end = 7565
198
+ _CLOSURESTATE_E._serialized_start = 7568
199
+ _CLOSURESTATE_E._serialized_end = 7766
200
+ _VEHICLELOCKSTATE_E._serialized_start = 7769
201
+ _VEHICLELOCKSTATE_E._serialized_end = 7928
202
+ _VEHICLESLEEPSTATUS_E._serialized_start = 7930
203
+ _VEHICLESLEEPSTATUS_E._serialized_end = 8051
204
+ _USERPRESENCE_E._serialized_start = 8053
205
+ _USERPRESENCE_E._serialized_end = 8178
206
+ _SIGNEDMESSAGE._serialized_start = 48
207
+ _SIGNEDMESSAGE._serialized_end = 140
208
+ _TOVCSECMESSAGE._serialized_start = 142
209
+ _TOVCSECMESSAGE._serialized_end = 203
210
+ _KEYIDENTIFIER._serialized_start = 205
211
+ _KEYIDENTIFIER._serialized_end = 243
212
+ _KEYMETADATA._serialized_start = 245
213
+ _KEYMETADATA._serialized_end = 303
214
+ _PUBLICKEY._serialized_start = 305
215
+ _PUBLICKEY._serialized_end = 338
216
+ _WHITELISTINFO._serialized_start = 340
217
+ _WHITELISTINFO._serialized_end = 446
218
+ _WHITELISTENTRYINFO._serialized_start = 449
219
+ _WHITELISTENTRYINFO._serialized_end = 630
220
+ _INFORMATIONREQUEST._serialized_start = 633
221
+ _INFORMATIONREQUEST._serialized_end = 799
222
+ _CLOSUREMOVEREQUEST._serialized_start = 802
223
+ _CLOSUREMOVEREQUEST._serialized_end = 1210
224
+ _PERMISSIONCHANGE._serialized_start = 1212
225
+ _PERMISSIONCHANGE._serialized_end = 1317
226
+ _REPLACEKEY._serialized_start = 1320
227
+ _REPLACEKEY._serialized_end = 1507
228
+ _WHITELISTOPERATION._serialized_start = 1510
229
+ _WHITELISTOPERATION._serialized_end = 2162
230
+ _WHITELISTOPERATION_STATUS._serialized_start = 2165
231
+ _WHITELISTOPERATION_STATUS._serialized_end = 2372
232
+ _SIGNEDMESSAGE_STATUS._serialized_start = 2374
233
+ _SIGNEDMESSAGE_STATUS._serialized_end = 2483
234
+ _COMMANDSTATUS._serialized_start = 2486
235
+ _COMMANDSTATUS._serialized_end = 2697
236
+ _UNSIGNEDMESSAGE._serialized_start = 2700
237
+ _UNSIGNEDMESSAGE._serialized_end = 2974
238
+ _CLOSURESTATUSES._serialized_start = 2977
239
+ _CLOSURESTATUSES._serialized_end = 3358
240
+ _DETAILEDCLOSURESTATUS._serialized_start = 3360
241
+ _DETAILEDCLOSURESTATUS._serialized_end = 3411
242
+ _VEHICLESTATUS._serialized_start = 3414
243
+ _VEHICLESTATUS._serialized_end = 3694
244
+ _FROMVCSECMESSAGE._serialized_start = 3697
245
+ _FROMVCSECMESSAGE._serialized_end = 3980
@@ -0,0 +1,28 @@
1
+ """Generated protocol buffer code."""
2
+ from google.protobuf import descriptor as _descriptor
3
+ from google.protobuf import descriptor_pool as _descriptor_pool
4
+ from google.protobuf import message as _message
5
+ from google.protobuf import reflection as _reflection
6
+ from google.protobuf import symbol_database as _symbol_database
7
+ _sym_db = _symbol_database.Default()
8
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rvehicle.proto\x12\tCarServer"j\n\x0cVehicleState\x124\n\tguestMode\x18J \x01(\x0b2!.CarServer.VehicleState.GuestMode\x1a$\n\tGuestMode\x12\x17\n\x0fGuestModeActive\x18\x01 \x01(\x08"\x98\x01\n\x0cClimateState"\x87\x01\n\x11CopActivationTemp\x12 \n\x1cCopActivationTempUnspecified\x10\x00\x12\x18\n\x14CopActivationTempLow\x10\x01\x12\x1b\n\x17CopActivationTempMedium\x10\x02\x12\x19\n\x15CopActivationTempHigh\x10\x03Bx\n%com.tesla.generated.carserver.vehicleB\x07VehicleZFgithub.com/teslamotors/vehicle-command/pkg/protocol/protobuf/carserverb\x06proto3')
9
+ _VEHICLESTATE = DESCRIPTOR.message_types_by_name['VehicleState']
10
+ _VEHICLESTATE_GUESTMODE = _VEHICLESTATE.nested_types_by_name['GuestMode']
11
+ _CLIMATESTATE = DESCRIPTOR.message_types_by_name['ClimateState']
12
+ _CLIMATESTATE_COPACTIVATIONTEMP = _CLIMATESTATE.enum_types_by_name['CopActivationTemp']
13
+ VehicleState = _reflection.GeneratedProtocolMessageType('VehicleState', (_message.Message,), {'GuestMode': _reflection.GeneratedProtocolMessageType('GuestMode', (_message.Message,), {'DESCRIPTOR': _VEHICLESTATE_GUESTMODE, '__module__': 'vehicle_pb2'}), 'DESCRIPTOR': _VEHICLESTATE, '__module__': 'vehicle_pb2'})
14
+ _sym_db.RegisterMessage(VehicleState)
15
+ _sym_db.RegisterMessage(VehicleState.GuestMode)
16
+ ClimateState = _reflection.GeneratedProtocolMessageType('ClimateState', (_message.Message,), {'DESCRIPTOR': _CLIMATESTATE, '__module__': 'vehicle_pb2'})
17
+ _sym_db.RegisterMessage(ClimateState)
18
+ if _descriptor._USE_C_DESCRIPTORS == False:
19
+ DESCRIPTOR._options = None
20
+ DESCRIPTOR._serialized_options = b'\n%com.tesla.generated.carserver.vehicleB\x07VehicleZFgithub.com/teslamotors/vehicle-command/pkg/protocol/protobuf/carserver'
21
+ _VEHICLESTATE._serialized_start = 28
22
+ _VEHICLESTATE._serialized_end = 134
23
+ _VEHICLESTATE_GUESTMODE._serialized_start = 98
24
+ _VEHICLESTATE_GUESTMODE._serialized_end = 134
25
+ _CLIMATESTATE._serialized_start = 137
26
+ _CLIMATESTATE._serialized_end = 289
27
+ _CLIMATESTATE_COPACTIVATIONTEMP._serialized_start = 154
28
+ _CLIMATESTATE_COPACTIVATIONTEMP._serialized_end = 289
@@ -2,8 +2,15 @@
2
2
 
3
3
  from json import dumps
4
4
  from typing import Any, Awaitable
5
+ from os.path import exists
5
6
  import aiohttp
6
7
 
8
+ # cryptography
9
+ from cryptography.hazmat.primitives.ciphers.aead import AESGCM
10
+ from cryptography.hazmat.primitives.asymmetric import ec
11
+ from cryptography.hazmat.primitives import hashes, serialization
12
+ from cryptography.hazmat.backends import default_backend
13
+
7
14
  from .exceptions import raise_for_status, InvalidRegion, LibraryError, ResponseError
8
15
  from .const import SERVERS, Method, LOGGER, VERSION
9
16
  from .charging import Charging
@@ -23,6 +30,7 @@ class TeslaFleetApi:
23
30
  session: aiohttp.ClientSession
24
31
  headers: dict[str, str]
25
32
  refresh_hook: Awaitable | None = None
33
+ _private_key: ec.EllipticCurvePrivateKey
26
34
 
27
35
  def __init__(
28
36
  self,
@@ -98,7 +106,6 @@ class TeslaFleetApi:
98
106
  if access_token := await self.refresh_hook():
99
107
  self.access_token = access_token
100
108
 
101
-
102
109
  # Remove None values from params and json
103
110
  if params:
104
111
  params = {k: v for k, v in params.items() if v is not None}
@@ -153,3 +160,35 @@ class TeslaFleetApi:
153
160
  Method.GET,
154
161
  "api/1/products",
155
162
  )
163
+
164
+ def private_key(self, path: str = "private_key.pem") -> ec.EllipticCurvePrivateKey:
165
+ """Create or load the private key."""
166
+ if not exists(path):
167
+ self._private_key = ec.generate_private_key(
168
+ ec.SECP256R1(), default_backend()
169
+ )
170
+ # save the key
171
+ pem = self._private_key.private_bytes(
172
+ encoding=serialization.Encoding.PEM,
173
+ format=serialization.PrivateFormat.TraditionalOpenSSL,
174
+ encryption_algorithm=serialization.NoEncryption(),
175
+ )
176
+ with open(path, "wb") as key_file:
177
+ key_file.write(pem)
178
+ return self._private_key
179
+ else:
180
+ try:
181
+ with open(path, "rb") as key_file:
182
+ key_data = key_file.read()
183
+ value = serialization.load_pem_private_key(
184
+ key_data, password=None, backend=default_backend()
185
+ )
186
+ except FileNotFoundError:
187
+ raise FileNotFoundError(f"Private key file not found at {path}")
188
+ except PermissionError:
189
+ raise PermissionError(f"Permission denied when trying to read {path}")
190
+
191
+ if not isinstance(value, ec.EllipticCurvePrivateKey):
192
+ raise AssertionError("Loaded key is not an EllipticCurvePrivateKey")
193
+ self._private_key = value
194
+ return self._private_key
@@ -14,6 +14,7 @@ from .const import Method, LOGGER, Scope
14
14
  # Rate limit should be global, even if multiple instances are created
15
15
  rate_limit = AsyncLimiter(5, 10)
16
16
 
17
+
17
18
  class Teslemetry(TeslaFleetApi):
18
19
  def __init__(
19
20
  self,
@@ -26,7 +27,7 @@ class Teslemetry(TeslaFleetApi):
26
27
  access_token=access_token,
27
28
  server="https://api.teslemetry.com",
28
29
  user_scope=False,
29
- partner_scope=False
30
+ partner_scope=False,
30
31
  )
31
32
  self.rate_limit = rate_limit
32
33
 
@@ -75,22 +76,30 @@ class Teslemetry(TeslaFleetApi):
75
76
  assert self.region
76
77
  return self.region
77
78
 
78
- async def server_side_polling(self, vin: str, value: bool | None = None) -> bool | None:
79
+ async def server_side_polling(
80
+ self, vin: str, value: bool | None = None
81
+ ) -> bool | None:
79
82
  """Get or set Auto mode."""
80
83
  if value is True:
81
- return (await self._request(
82
- Method.POST,
83
- f"api/auto/{vin}",
84
- )).get("response")
84
+ return (
85
+ await self._request(
86
+ Method.POST,
87
+ f"api/auto/{vin}",
88
+ )
89
+ ).get("response")
85
90
  if value is False:
86
- return (await self._request(
87
- Method.DELETE,
91
+ return (
92
+ await self._request(
93
+ Method.DELETE,
94
+ f"api/auto/{vin}",
95
+ )
96
+ ).get("response")
97
+ return (
98
+ await self._request(
99
+ Method.GET,
88
100
  f"api/auto/{vin}",
89
- )).get("response")
90
- return (await self._request(
91
- Method.GET,
92
- f"api/auto/{vin}",
93
- )).get("response")
101
+ )
102
+ ).get("response")
94
103
 
95
104
  async def _request(
96
105
  self,
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
  from typing import Any, List, TYPE_CHECKING
3
+ from cryptography.hazmat.primitives.asymmetric import ec
3
4
  from .const import (
4
5
  Method,
5
6
  Trunk,
@@ -13,6 +14,7 @@ from .const import (
13
14
  Level,
14
15
  )
15
16
  from .vehiclespecific import VehicleSpecific
17
+ from .vehiclesigned import VehicleSigned
16
18
 
17
19
  if TYPE_CHECKING:
18
20
  from .teslafleetapi import TeslaFleetApi
@@ -31,6 +33,12 @@ class Vehicle:
31
33
  """Creates a class for each vehicle."""
32
34
  return VehicleSpecific(self, vin)
33
35
 
36
+ def specific_signed(
37
+ self, vin: str, private_key: ec.EllipticCurvePrivateKey | None = None
38
+ ) -> VehicleSigned:
39
+ """Creates a class for each vehicle with command signing."""
40
+ return VehicleSigned(self, vin, private_key)
41
+
34
42
  def pre2021(self, vin: str) -> bool:
35
43
  """Checks if a vehicle is a pre-2021 model S or X."""
36
44
  return vin[9] <= "L" and vin[3] in ["S", "X"]
@@ -719,7 +727,7 @@ class Vehicle:
719
727
  return await self._request(
720
728
  Method.POST,
721
729
  f"api/1/vehicles/{vehicle_tag}/signed_command",
722
- {"routable_message": routable_message},
730
+ json={"routable_message": routable_message},
723
731
  )
724
732
 
725
733
  async def vehicle(self, vehicle_tag: str | int) -> dict[str, Any]: