Skip to content

Commit 1f608e4

Browse files
author
Konstantinos Chalkias
authored
Merge pull request #129 from novifinancial/kostas-hasher-reuse
Reuse hashers by `hasher.finalize_reset()`
2 parents 099f887 + e32b240 commit 1f608e4

File tree

2 files changed

+12
-15
lines changed

2 files changed

+12
-15
lines changed

src/key_exchange/tripledh.rs

+10-12
Original file line numberDiff line numberDiff line change
@@ -129,19 +129,18 @@ impl<D: Hash, G: Group> KeyExchange<D, G> for TripleDH {
129129
]
130130
.concat();
131131

132-
let mut hasher2 = D::new();
133-
hasher2.update(&transcript2);
134-
let hashed_transcript_without_mac = hasher2.finalize();
132+
let mut hasher = D::new();
133+
hasher.update(&transcript2);
134+
let hashed_transcript_without_mac = hasher.finalize_reset();
135135

136136
let mut mac_hasher =
137137
Hmac::<D>::new_varkey(&km2).map_err(|_| InternalPakeError::HmacError)?;
138138
mac_hasher.update(&hashed_transcript_without_mac);
139139
let mac = mac_hasher.finalize().into_bytes();
140140

141-
let mut hasher3 = D::new();
142-
hasher3.update(&transcript2);
143-
hasher3.update(&mac);
144-
let hashed_transcript = hasher3.finalize();
141+
hasher.update(&transcript2);
142+
hasher.update(&mac);
143+
let hashed_transcript = hasher.finalize();
145144

146145
Ok((
147146
ke1_message.info,
@@ -194,7 +193,7 @@ impl<D: Hash, G: Group> KeyExchange<D, G> for TripleDH {
194193

195194
let mut hasher = D::new();
196195
hasher.update(&transcript);
197-
let hashed_transcript_without_mac = hasher.finalize();
196+
let hashed_transcript_without_mac = hasher.finalize_reset();
198197

199198
let mut server_mac =
200199
Hmac::<D>::new_varkey(&km2).map_err(|_| InternalPakeError::HmacError)?;
@@ -206,10 +205,9 @@ impl<D: Hash, G: Group> KeyExchange<D, G> for TripleDH {
206205
));
207206
}
208207

209-
let mut hasher2 = D::new();
210-
hasher2.update(transcript);
211-
hasher2.update(ke2_message.mac.to_vec());
212-
let hashed_transcript = hasher2.finalize();
208+
hasher.update(transcript);
209+
hasher.update(ke2_message.mac.to_vec());
210+
let hashed_transcript = hasher.finalize();
213211

214212
let mut client_mac =
215213
Hmac::<D>::new_varkey(&km3).map_err(|_| InternalPakeError::HmacError)?;

src/map_to_curve.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -84,17 +84,16 @@ pub(crate) fn expand_message_xmd<H: Hash>(
8484
h.update(&b[0]);
8585
h.update(&i2osp(1, 1));
8686
h.update(&dst_prime);
87-
b.push(h.finalize().to_vec()); // b[1]
87+
b.push(h.finalize_reset().to_vec()); // b[1]
8888

8989
let mut uniform_bytes: Vec<u8> = Vec::new();
9090
uniform_bytes.extend_from_slice(&b[1]);
9191

9292
for i in 2..(ell + 1) {
93-
let mut h = H::new();
9493
h.update(xor(&b[0], &b[i - 1])?);
9594
h.update(&i2osp(i, 1));
9695
h.update(&dst_prime);
97-
b.push(h.finalize().to_vec()); // b[i]
96+
b.push(h.finalize_reset().to_vec()); // b[i]
9897
uniform_bytes.extend_from_slice(&b[i]);
9998
}
10099

0 commit comments

Comments
 (0)