Add missing zeroize() call for secp256k1::SecretKey::from_bytes. (#1040)

* Add missing zeroize() call for secp256k1.

* Add a test.
This commit is contained in:
Roman Borschel 2019-04-03 10:31:09 +02:00 committed by GitHub
parent dfc425ea54
commit 8f77e9c45e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -96,6 +96,7 @@ impl SecretKey {
let sk_bytes = sk.as_mut();
let secret = secp::key::SecretKey::from_slice(&*sk_bytes)
.map_err(|e| DecodingError::new("Secp256k1 secret key", e))?;
sk_bytes.zeroize();
Ok(SecretKey(secret))
}
@ -156,3 +157,18 @@ impl PublicKey {
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn secp256k1_secret_from_bytes() {
let sk1 = SecretKey::generate();
let mut sk_bytes = [0; 32];
sk_bytes.copy_from_slice(sk1.as_ref());
let sk2 = SecretKey::from_bytes(&mut sk_bytes).unwrap();
assert_eq!(sk1.as_ref(), sk2.as_ref());
assert_eq!(sk_bytes, [0; 32]);
}
}