diff options
| author | Arne Schwabe <arne@rfc2549.org> | 2012-12-23 01:07:51 +0100 | 
|---|---|---|
| committer | Arne Schwabe <arne@rfc2549.org> | 2012-12-23 01:07:51 +0100 | 
| commit | 174a0c8a3807df22ebd5731e139c0f0bb511f85b (patch) | |
| tree | 58b0e110fa5b5e0cf7c25e84e64fd8f860e2e5e9 | |
| parent | fac7abcf6717bf1c188b04b9f42af3924cef8f33 (diff) | |
Fix importing of embedded PKCS12 files
| -rw-r--r-- | src/de/blinkt/openvpn/ConfigConverter.java | 50 | ||||
| -rw-r--r-- | src/de/blinkt/openvpn/ConfigParser.java | 7 | 
2 files changed, 39 insertions, 18 deletions
| diff --git a/src/de/blinkt/openvpn/ConfigConverter.java b/src/de/blinkt/openvpn/ConfigConverter.java index 393384b8..c08b176d 100644 --- a/src/de/blinkt/openvpn/ConfigConverter.java +++ b/src/de/blinkt/openvpn/ConfigConverter.java @@ -143,23 +143,22 @@ public class ConfigConverter extends ListActivity {  	private Intent installPKCS12() {  		if(!((CheckBox)findViewById(R.id.importpkcs12)).isChecked()) { -			embedPKCS12File(); +			setAuthTypeToEmbeddedPKCS12();  			return null; +			  		} -		 -		File possiblepkcs12 = findFile(mResult.mPKCS12Filename); -		if(possiblepkcs12!=null) { +		String pkcs12datastr = mResult.mPKCS12Filename; +		if(pkcs12datastr!=null && pkcs12datastr.startsWith(VpnProfile.INLINE_TAG)) {  			Intent inkeyintent = KeyChain.createInstallIntent(); -			byte[] pkcs12data; -			try { -				pkcs12data = readBytesFromFile(possiblepkcs12); -			} catch (IOException e) { -				return null; -			} +			 +			pkcs12datastr= pkcs12datastr.substring(VpnProfile.INLINE_TAG.length()); +			 +			 +			byte[] pkcs12data = Base64.decode(pkcs12datastr, Base64.DEFAULT); +  			inkeyintent.putExtra(KeyChain.EXTRA_PKCS12,pkcs12data ); -			mAliasName = possiblepkcs12.getName().replace(".p12", "");  			if(mAliasName.equals(""))  				mAliasName=null; @@ -174,8 +173,7 @@ public class ConfigConverter extends ListActivity { -	private void embedPKCS12File() { -		mResult.mPKCS12Filename = embedFile(mResult.mPKCS12Filename,true); +	private void setAuthTypeToEmbeddedPKCS12() {  		if(mResult.mPKCS12Filename!=null && mResult.mPKCS12Filename.startsWith(VpnProfile.INLINE_TAG)) {  			if(mResult.mAuthenticationType==VpnProfile.TYPE_USERPASS_KEYSTORE)  				mResult.mAuthenticationType=VpnProfile.TYPE_USERPASS_PKCS12; @@ -234,7 +232,18 @@ public class ConfigConverter extends ListActivity {  	} -	private File findFile(String filename) +	private File findFile(String filename) { +		File foundfile =findFileRaw(filename); +		 +		if (foundfile==null && filename!=null && !filename.equals("")) +			log(R.string.import_could_not_open,filename); + +		return foundfile; +	} + + + +	private File findFileRaw(String filename)  	{  		if(filename == null || filename.equals(""))  			return null; @@ -274,7 +283,6 @@ public class ConfigConverter extends ListActivity {  			}  		} -		log(R.string.import_could_not_open,filename);  		return null;  	} @@ -324,10 +332,22 @@ public class ConfigConverter extends ListActivity {  		// This where I would like to have a c++ style  		// void embedFile(std::string & option) +		if (mResult.mPKCS12Filename!=null) { +			File pkcs12file = findFileRaw(mResult.mPKCS12Filename); +			if(pkcs12file!=null) { +				mAliasName = pkcs12file.getName().replace(".p12", ""); +			} else { +				mAliasName = "Imported PKCS12"; +			} +		} +			 +		  		mResult.mCaFilename = embedFile(mResult.mCaFilename);  		mResult.mClientCertFilename = embedFile(mResult.mClientCertFilename);  		mResult.mClientKeyFilename = embedFile(mResult.mClientKeyFilename);  		mResult.mTLSAuthFilename = embedFile(mResult.mTLSAuthFilename); +		mResult.mPKCS12Filename = embedFile(mResult.mPKCS12Filename,true); +		  		if(mResult.mUsername != null && !mResult.mUsername.equals("")){  			String data =embedFile(mResult.mUsername); diff --git a/src/de/blinkt/openvpn/ConfigParser.java b/src/de/blinkt/openvpn/ConfigParser.java index 7d93a94e..f2814f7e 100644 --- a/src/de/blinkt/openvpn/ConfigParser.java +++ b/src/de/blinkt/openvpn/ConfigParser.java @@ -235,8 +235,9 @@ public class ConfigParser {  			"status",  			"suppress-timestamps",  			"tmp-dir", +			"tun-ipv6",  			"topology", -			"win-sys" +			"win-sys",  	}; @@ -451,9 +452,9 @@ public class ConfigParser {  		if(connectretrymax!=null)  			np.mConnectRetryMax =connectretrymax.get(1); -		Vector<Vector<String>> remotetls = getAllOption("remote-tls", 1, 1); +		Vector<Vector<String>> remotetls = getAllOption("remote-cert-tls", 1, 1);  		if(remotetls!=null) -			if(remotetls.get(1).equals("server")) +			if(remotetls.get(0).get(1).equals("server"))  				np.mExpectTLSCert=true;  			else  				options.put("remotetls",remotetls); | 
