(&mut self, buf: &[u8])
| 103 | } |
| 104 | |
| 105 | pub fn write(&mut self, buf: &[u8]) -> Result<usize> { |
| 106 | if self.stream.is_none() { |
| 107 | return Err(Error::WriteToSocket(anyhow!( |
| 108 | "Stream for tpm socket was not initialized" |
| 109 | ))); |
| 110 | } |
| 111 | |
| 112 | if matches!(self.state, SocketDevState::Connected) { |
| 113 | let ret = self.send_full(buf)?; |
| 114 | // swtpm will receive data Fd after a successful send |
| 115 | // Reset cached write_msgfd after a successful send |
| 116 | // Ideally, write_msgfd is reset after first Ctrl Command |
| 117 | if ret > 0 && self.write_msgfd != 0 { |
| 118 | self.write_msgfd = 0; |
| 119 | } |
| 120 | Ok(ret) |
| 121 | } else { |
| 122 | Err(Error::WriteToSocket(anyhow!( |
| 123 | "TPM Socket was not in Connected State" |
| 124 | ))) |
| 125 | } |
| 126 | } |
| 127 | |
| 128 | pub fn read(&mut self, buf: &mut [u8]) -> Result<usize> { |
| 129 | if self.stream.is_none() { |
no test coverage detected