From ad3a4d21a5fcf12b4bee407145f42a87c743b9aa Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Sat, 3 Aug 2024 16:09:42 +0200 Subject: [PATCH] it works --- src/crypto/aead.rs | 4 +++- src/crypto/keys.rs | 3 --- src/lib.rs | 13 +++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/crypto/aead.rs b/src/crypto/aead.rs index 47b4490..2974518 100644 --- a/src/crypto/aead.rs +++ b/src/crypto/aead.rs @@ -65,10 +65,12 @@ pub fn decrypt_ciphertext( additional_data[3..].copy_from_slice(&ciphertext_len.to_be_bytes()); // + let nonce = nonce.get_aead_nonce(&iv); + let result = decrypt( key, encrypted_record, - nonce.get_aead_nonce(&iv), + nonce, &additional_data, ); diff --git a/src/crypto/keys.rs b/src/crypto/keys.rs index a5d17d0..4050030 100644 --- a/src/crypto/keys.rs +++ b/src/crypto/keys.rs @@ -157,9 +157,6 @@ impl KeysAfterServerHello { let early_secret_derived = derive_secret(&early_secret, b"derived", &sha2::Sha256::new().finalize()); - println!("early_secret {:?}", early_secret); - - println!("early_secret_derived {:?}", early_secret_derived); let (handshake_secret, _) = Hkdf::::extract(Some(&early_secret_derived), shared_secret.as_bytes()); diff --git a/src/lib.rs b/src/lib.rs index f06a43d..76a2813 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -64,6 +64,11 @@ mod stream_state { Ok(self.write_seq_id.next()) } + pub fn key_change(&mut self) { + self.read_seq_id = SeqIdGen::new(); + self.write_seq_id = SeqIdGen::new(); + } + pub fn read_record(&mut self) -> Result<(TLSPlaintext, SeqId)> { let seq_id = self.read_seq_id.next(); let frame = proto::TLSPlaintext::read(&mut self.stream)?; @@ -312,11 +317,6 @@ impl ClientSetupConnection { .unwrap() .diffie_hellman(&server_key); - println!( - "we have established a shared secret. dont leak it!! anyways here is it: {:x?}", - dh_shared_secret.as_bytes() - ); - let keys = KeysAfterServerHello::compute( dh_shared_secret, *cipher_suite, @@ -328,6 +328,7 @@ impl ClientSetupConnection { } } ConnectState::WaitEncryptedExtensions { keys } => { + self.stream.key_change(); let (frame, seq_id) = self.stream.read_record()?; if frame.should_drop() { continue; @@ -340,7 +341,7 @@ impl ClientSetupConnection { return unexpected_message!("expected ApplicationData, got {frame:?}"); }; // Encrypted with server_handshake_traffic_secret - crypto::aead::decrypt_ciphertext( + let inner = crypto::aead::decrypt_ciphertext( &encrypted_record, &keys .borrow()