diff options
Diffstat (limited to 'src/cookie.rs')
-rw-r--r-- | src/cookie.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/cookie.rs b/src/cookie.rs index cc28994..f6063ee 100644 --- a/src/cookie.rs +++ b/src/cookie.rs @@ -3,6 +3,7 @@ use blake2_rfc::blake2s::{blake2s, Blake2sResult}; use xchacha20poly1305; use consts::COOKIE_REFRESH_TIME; +use message::CookieReply; use failure::{Error, err_msg}; use rand::{self, Rng}; use subtle; @@ -97,14 +98,14 @@ impl Generator { } } - pub fn consume_reply(&mut self, reply: &[u8]) -> Result<(), Error> { + pub fn consume_reply(&mut self, reply: &CookieReply) -> Result<(), Error> { let last_mac1 = self.mac2.last_mac1.ok_or_else(|| err_msg("no last mac1"))?; xchacha20poly1305::decrypt(self.mac2.key.as_bytes(), - &reply[8..32], - &reply[32..48], + reply.nonce(), + reply.cookie(), last_mac1.as_bytes(), - &reply[48..], + reply.aead_tag(), &mut self.mac2.cookie)?; self.mac2.cookie_time = Some(Instant::now()); |