logoalt Hacker News

leohtoday at 2:36 AM1 replyview on HN

Okay, fair point, sort of. Rust does not have a built-in feature to zero data. Rust does automatically drop references to data on the heap. Zeroing data is fairly trivial, whereas in go, the issue is non-trivial (afaiu).

  use std::ptr;
  
  struct SecretData {
      data: Vec<u8>,
  }
  
  impl Drop for SecretData {
      fn drop(&mut self) {
          // Zero out the data
          unsafe {
              ptr::write_bytes(self.data.as_mut_ptr(), 0, self.data.len());
          }
      }
  }

Replies

steveklabniktoday at 2:57 AM

Zeroing memory is trickier than that, if you want to do it in Rust you should use https://crates.io/crates/zeroize

show 1 reply