diff --git a/examples/simple-server-pkcs8.rs b/examples/simple-server-pkcs8.rs index 8e1b1b8..df9c95d 100644 --- a/examples/simple-server-pkcs8.rs +++ b/examples/simple-server-pkcs8.rs @@ -25,7 +25,9 @@ fn main() { let mut buf = [0; 1024]; let read = stream.read(&mut buf).unwrap(); let received = std::str::from_utf8(&buf[0..read]).unwrap(); - stream.write_all(format!("received '{}'", received).as_bytes()).unwrap(); + stream + .write_all(format!("received '{}'", received).as_bytes()) + .unwrap(); } for stream in listener.incoming() { diff --git a/src/imp/schannel.rs b/src/imp/schannel.rs index 1b28156..d3f214c 100644 --- a/src/imp/schannel.rs +++ b/src/imp/schannel.rs @@ -2,8 +2,8 @@ extern crate schannel; use self::schannel::cert_context::{CertContext, HashAlgorithm, KeySpec}; use self::schannel::cert_store::{CertAdd, CertStore, Memory, PfxImportOptions}; -use self::schannel::schannel_cred::{Direction, Protocol, SchannelCred}; use self::schannel::crypt_prov::{AcquireOptions, ProviderType}; +use self::schannel::schannel_cred::{Direction, Protocol, SchannelCred}; use self::schannel::tls_stream; use std::error; use std::fmt; @@ -119,8 +119,7 @@ impl Identity { Ok(container) => container, Err(_) => options.new_keyset(true).acquire(type_)?, }; - container.import() - .import_pkcs8_pem(&key)?; + container.import().import_pkcs8_pem(&key)?; cert.set_key_prov_info() .container("schannel") @@ -134,7 +133,7 @@ impl Identity { let certificate = Certificate::from_pem(int_cert)?; context = store.add_cert(&certificate.0, CertAdd::Always)?; } - Ok(Identity{cert: context}) + Ok(Identity { cert: context }) } } @@ -428,7 +427,6 @@ impl io::Write for TlsStream { } } - mod pem { /// Split data by PEM guard lines pub struct PemBlock<'a> { @@ -466,45 +464,87 @@ mod pem { #[test] fn test_split() { // Split three certs, CRLF line terminators. - assert_eq!(PemBlock::new(b"-----BEGIN FIRST-----\r\n-----END FIRST-----\r\n\ + assert_eq!( + PemBlock::new( + b"-----BEGIN FIRST-----\r\n-----END FIRST-----\r\n\ -----BEGIN SECOND-----\r\n-----END SECOND\r\n\ - -----BEGIN THIRD-----\r\n-----END THIRD\r\n").collect::>(), - vec![b"-----BEGIN FIRST-----\r\n-----END FIRST-----\r\n" as &[u8], - b"-----BEGIN SECOND-----\r\n-----END SECOND\r\n", - b"-----BEGIN THIRD-----\r\n-----END THIRD\r\n"]); + -----BEGIN THIRD-----\r\n-----END THIRD\r\n" + ) + .collect::>(), + vec![ + b"-----BEGIN FIRST-----\r\n-----END FIRST-----\r\n" as &[u8], + b"-----BEGIN SECOND-----\r\n-----END SECOND\r\n", + b"-----BEGIN THIRD-----\r\n-----END THIRD\r\n" + ] + ); // Split three certs, CRLF line terminators except at EOF. - assert_eq!(PemBlock::new(b"-----BEGIN FIRST-----\r\n-----END FIRST-----\r\n\ + assert_eq!( + PemBlock::new( + b"-----BEGIN FIRST-----\r\n-----END FIRST-----\r\n\ -----BEGIN SECOND-----\r\n-----END SECOND-----\r\n\ - -----BEGIN THIRD-----\r\n-----END THIRD-----").collect::>(), - vec![b"-----BEGIN FIRST-----\r\n-----END FIRST-----\r\n" as &[u8], - b"-----BEGIN SECOND-----\r\n-----END SECOND-----\r\n", - b"-----BEGIN THIRD-----\r\n-----END THIRD-----"]); + -----BEGIN THIRD-----\r\n-----END THIRD-----" + ) + .collect::>(), + vec![ + b"-----BEGIN FIRST-----\r\n-----END FIRST-----\r\n" as &[u8], + b"-----BEGIN SECOND-----\r\n-----END SECOND-----\r\n", + b"-----BEGIN THIRD-----\r\n-----END THIRD-----" + ] + ); // Split two certs, LF line terminators. - assert_eq!(PemBlock::new(b"-----BEGIN FIRST-----\n-----END FIRST-----\n\ - -----BEGIN SECOND-----\n-----END SECOND\n").collect::>(), - vec![b"-----BEGIN FIRST-----\n-----END FIRST-----\n" as &[u8], - b"-----BEGIN SECOND-----\n-----END SECOND\n"]); + assert_eq!( + PemBlock::new( + b"-----BEGIN FIRST-----\n-----END FIRST-----\n\ + -----BEGIN SECOND-----\n-----END SECOND\n" + ) + .collect::>(), + vec![ + b"-----BEGIN FIRST-----\n-----END FIRST-----\n" as &[u8], + b"-----BEGIN SECOND-----\n-----END SECOND\n" + ] + ); // Split two certs, CR line terminators. - assert_eq!(PemBlock::new(b"-----BEGIN FIRST-----\r-----END FIRST-----\r\ - -----BEGIN SECOND-----\r-----END SECOND\r").collect::>(), - vec![b"-----BEGIN FIRST-----\r-----END FIRST-----\r" as &[u8], - b"-----BEGIN SECOND-----\r-----END SECOND\r"]); + assert_eq!( + PemBlock::new( + b"-----BEGIN FIRST-----\r-----END FIRST-----\r\ + -----BEGIN SECOND-----\r-----END SECOND\r" + ) + .collect::>(), + vec![ + b"-----BEGIN FIRST-----\r-----END FIRST-----\r" as &[u8], + b"-----BEGIN SECOND-----\r-----END SECOND\r" + ] + ); // Split two certs, LF line terminators except at EOF. - assert_eq!(PemBlock::new(b"-----BEGIN FIRST-----\n-----END FIRST-----\n\ - -----BEGIN SECOND-----\n-----END SECOND").collect::>(), - vec![b"-----BEGIN FIRST-----\n-----END FIRST-----\n" as &[u8], - b"-----BEGIN SECOND-----\n-----END SECOND"]); + assert_eq!( + PemBlock::new( + b"-----BEGIN FIRST-----\n-----END FIRST-----\n\ + -----BEGIN SECOND-----\n-----END SECOND" + ) + .collect::>(), + vec![ + b"-----BEGIN FIRST-----\n-----END FIRST-----\n" as &[u8], + b"-----BEGIN SECOND-----\n-----END SECOND" + ] + ); // Split a single cert, LF line terminators. - assert_eq!(PemBlock::new(b"-----BEGIN FIRST-----\n-----END FIRST-----\n").collect::>(), - vec![b"-----BEGIN FIRST-----\n-----END FIRST-----\n" as &[u8]]); + assert_eq!( + PemBlock::new(b"-----BEGIN FIRST-----\n-----END FIRST-----\n").collect::>(), + vec![b"-----BEGIN FIRST-----\n-----END FIRST-----\n" as &[u8]] + ); // Split a single cert, LF line terminators except at EOF. - assert_eq!(PemBlock::new(b"-----BEGIN FIRST-----\n-----END FIRST-----").collect::>(), - vec![b"-----BEGIN FIRST-----\n-----END FIRST-----" as &[u8]]); + assert_eq!( + PemBlock::new(b"-----BEGIN FIRST-----\n-----END FIRST-----").collect::>(), + vec![b"-----BEGIN FIRST-----\n-----END FIRST-----" as &[u8]] + ); // (Don't) split garbage. - assert_eq!(PemBlock::new(b"junk").collect::>(), - Vec::<&[u8]>::new()); - assert_eq!(PemBlock::new(b"junk-----BEGIN garbage").collect::>(), - vec![b"-----BEGIN garbage" as &[u8]]); + assert_eq!( + PemBlock::new(b"junk").collect::>(), + Vec::<&[u8]>::new() + ); + assert_eq!( + PemBlock::new(b"junk-----BEGIN garbage").collect::>(), + vec![b"-----BEGIN garbage" as &[u8]] + ); } } - diff --git a/src/imp/security_framework.rs b/src/imp/security_framework.rs index 04fe7a7..f133903 100644 --- a/src/imp/security_framework.rs +++ b/src/imp/security_framework.rs @@ -87,8 +87,8 @@ impl Identity { pub fn from_pkcs8(pem: &[u8], key: &[u8]) -> Result { let dir = TempDir::new().map_err(|_| Error(base::Error::from(errSecIO)))?; let keychain = keychain::CreateOptions::new() - .password("password") - .create(dir.path().join("identity.keychain"))?; + .password("password") + .create(dir.path().join("identity.keychain"))?; let mut items = SecItems::default();