Skip to content

Commit 658800e

Browse files
committed
Use random password
1 parent 2a720f6 commit 658800e

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

src/imp/security_framework.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use self::security_framework::base;
77
use self::security_framework::certificate::SecCertificate;
88
use self::security_framework::identity::SecIdentity;
99
use self::security_framework::import_export::{ImportedIdentity, Pkcs12ImportOptions};
10+
use self::security_framework::random::SecRandom;
1011
use self::security_framework::secure_transport::{
1112
self, ClientBuilder, SslConnectionType, SslContext, SslProtocol, SslProtocolSide,
1213
};
@@ -91,7 +92,7 @@ impl Identity {
9192

9293
let dir = TempDir::new().map_err(|_| Error(base::Error::from(errSecIO)))?;
9394
let keychain = keychain::CreateOptions::new()
94-
.password("password")
95+
.password(&random_password()?)
9596
.create(dir.path().join("identity.keychain"))?;
9697

9798
let mut items = SecItems::default();
@@ -180,6 +181,19 @@ impl Identity {
180181
}
181182
}
182183

184+
fn random_password() -> Result<String, Error> {
185+
use std::fmt::Write;
186+
let mut bytes = [0_u8; 10];
187+
SecRandom::default()
188+
.copy_bytes(&mut bytes)
189+
.map_err(|_| Error(base::Error::from(errSecIO)))?;
190+
let mut s = String::with_capacity(2 * bytes.len());
191+
for byte in bytes {
192+
write!(s, "{:02X}", byte).map_err(|_| Error(base::Error::from(errSecIO)))?;
193+
}
194+
Ok(s)
195+
}
196+
183197
#[derive(Clone)]
184198
pub struct Certificate(SecCertificate);
185199

0 commit comments

Comments
 (0)