diff --git a/midea.py b/midea.py index 541eb38..1d64193 100644 --- a/midea.py +++ b/midea.py @@ -4,9 +4,13 @@ # devices = midea_core,discover() -import discover - -devices = discover.discover() +import security; + +secure = security.LocalSecurity() + +result = secure.encode_8370(None, security.MSGTYPE_HANDSHAKE_REQUEST) + +print(result) print(devices) \ No newline at end of file diff --git a/src/security.rs b/src/security.rs index 67eed27..c63cc91 100644 --- a/src/security.rs +++ b/src/security.rs @@ -17,14 +17,18 @@ pub enum MsgType { ENCRYPTED_REQUEST = 0x6, } -pub struct Security; +#[derive(Debug, Default)] +pub struct Security { + request_count: u32, + response_count: u32, +} impl Security { - pub fn decrypt(data: &mut [u8]) -> &[u8] { - const N: u128 = 141661095494369103254425781617665632877; - const KEY: [u8; 16] = N.to_be_bytes(); + const N: u128 = 141661095494369103254425781617665632877; + const KEY: [u8; 16] = Self::N.to_be_bytes(); - let array = GenericArray::from(KEY); + pub fn decrypt(&self, data: &mut [u8]) -> &[u8] { + let array = GenericArray::from(Self::KEY); let cipher = Aes128::new(&array); for chunk in data.chunks_mut(16) { @@ -35,7 +39,7 @@ impl Security { data } - pub fn encode_8370(msg_type: MsgType) -> Result { + pub fn encode_8370(&mut self, msg_type: MsgType) -> Result { let mut header = hex("83,70")?; let mut data: Vec = Vec::new();