| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- # SPDX-FileCopyrightText: 2018-2022 Espressif Systems (Shanghai) CO LTD
- # SPDX-License-Identifier: Apache-2.0
- #
- # APIs for interpreting and creating protobuf packets for
- # protocomm endpoint with security type protocomm_security0
- import proto
- from utils import str_to_bytes
- from .security import Security
- class Security0(Security):
- def __init__(self, verbose):
- # Initialize state of the security1 FSM
- self.session_state = 0
- self.verbose = verbose
- Security.__init__(self, self.security0_session)
- def security0_session(self, response_data):
- # protocomm security0 FSM which interprets/forms
- # protobuf packets according to present state of session
- if (self.session_state == 0):
- self.session_state = 1
- return self.setup0_request()
- if (self.session_state == 1):
- self.setup0_response(response_data)
- return None
- def setup0_request(self):
- # Form protocomm security0 request packet
- setup_req = proto.session_pb2.SessionData()
- setup_req.sec_ver = 0
- session_cmd = proto.sec0_pb2.S0SessionCmd()
- setup_req.sec0.sc.MergeFrom(session_cmd)
- return setup_req.SerializeToString().decode('latin-1')
- def setup0_response(self, response_data):
- # Interpret protocomm security0 response packet
- setup_resp = proto.session_pb2.SessionData()
- setup_resp.ParseFromString(str_to_bytes(response_data))
- # Check if security scheme matches
- if setup_resp.sec_ver != proto.session_pb2.SecScheme0:
- raise RuntimeError('Incorrect security scheme')
- def encrypt_data(self, data):
- # Passive. No encryption when security0 used
- return data
- def decrypt_data(self, data):
- # Passive. No encryption when security0 used
- return data
|