X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=mainActivity%2Fapp%2Fsrc%2Fmain%2Fjava%2Fcom%2Fexample%2Ffurt%2Fmyapplication%2FserverComunication.java;fp=mainActivity%2Fapp%2Fsrc%2Fmain%2Fjava%2Fcom%2Fexample%2Ffurt%2Fmyapplication%2FserverComunication.java;h=a82ea2770905df78f87cf7c00b72f6f56ad9fe4c;hb=23a3fa7a8181ef21d272a90dd1ff2ba353268813;hp=0000000000000000000000000000000000000000;hpb=e477ff2be762ba333c5c77c14bfdea574c700259;p=logicplayer.git diff --git a/mainActivity/app/src/main/java/com/example/furt/myapplication/serverComunication.java b/mainActivity/app/src/main/java/com/example/furt/myapplication/serverComunication.java new file mode 100644 index 0000000..a82ea27 --- /dev/null +++ b/mainActivity/app/src/main/java/com/example/furt/myapplication/serverComunication.java @@ -0,0 +1,177 @@ +package com.example.furt.myapplication; + + +import android.content.res.Resources; +import android.os.AsyncTask; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.net.Socket; +import java.security.KeyManagementException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.util.concurrent.ExecutionException; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManagerFactory; + +public class serverComunication +{ + + serverComunication(){} + + public static String connessione(String parametri) + { + try { + return new richiestaServer().execute(parametri).get(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + return null; + } + + static String connessioneMain(String parametri) + { + try { + return new richiestaServerMain().execute(parametri).get(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (ExecutionException e) { + e.printStackTrace(); + } + return null; + } + + static class richiestaServer extends AsyncTask { + @Override + protected String doInBackground(String... params) + { + Resources risorse= aggiornamento.t.getResources(); + try { +// (could be from a resource or ByteArrayInputStream or ...) + CertificateFactory cf = CertificateFactory.getInstance("X.509"); +// From https://www.washington.edu/itconnect/security/ca/load-der.crt + InputStream caInput = risorse.openRawResource(R.raw.halloween); + Certificate ca; + try { + ca = cf.generateCertificate(caInput); + System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN()); + } finally { + caInput.close(); + } + +// Create a KeyStore containing our trusted CAs + String keyStoreType = KeyStore.getDefaultType(); + KeyStore keyStore = KeyStore.getInstance(keyStoreType); + keyStore.load(null, null); + keyStore.setCertificateEntry("ca", ca); + +// Create a TrustManager that trusts the CAs in our KeyStore + String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm(); + TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm); + tmf.init(keyStore); + +// Create an SSLContext that uses our TrustManager + SSLContext context = SSLContext.getInstance("TLS"); + context.init(null, tmf.getTrustManagers(), null); + + Socket socket; + SSLSocketFactory sf=context.getSocketFactory(); + socket=sf.createSocket(global.hostName,global.port); + OutputStream os = socket.getOutputStream(); + OutputStreamWriter osw = new OutputStreamWriter(os); + BufferedWriter bw = new BufferedWriter(osw); + bw.write(params[0]+"\n"); + bw.flush(); + BufferedReader r = new BufferedReader(new InputStreamReader(socket.getInputStream())); + String returnValue=r.readLine(); + socket.close(); + return returnValue; + } catch (KeyStoreException g) { + g.printStackTrace(); + } catch (CertificateException a) { + a.printStackTrace(); + } catch (NoSuchAlgorithmException b) { + b.printStackTrace(); + } catch (IOException c) { + c.printStackTrace(); + } catch (KeyManagementException f) { + f.printStackTrace(); + } + return "error"; + } + } + + public static class richiestaServerMain extends AsyncTask { + @Override + protected String doInBackground(String... params) + { + Resources risorse= mainActivity.t.getResources(); + try { +// (could be from a resource or ByteArrayInputStream or ...) + CertificateFactory cf = CertificateFactory.getInstance("X.509"); +// From https://www.washington.edu/itconnect/security/ca/load-der.crt + InputStream caInput = risorse.openRawResource(R.raw.halloween); + Certificate ca; + try { + ca = cf.generateCertificate(caInput); + System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN()); + } finally { + caInput.close(); + } + +// Create a KeyStore containing our trusted CAs + String keyStoreType = KeyStore.getDefaultType(); + KeyStore keyStore = KeyStore.getInstance(keyStoreType); + keyStore.load(null, null); + keyStore.setCertificateEntry("ca", ca); + +// Create a TrustManager that trusts the CAs in our KeyStore + String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm(); + TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm); + tmf.init(keyStore); + +// Create an SSLContext that uses our TrustManager + SSLContext context = SSLContext.getInstance("TLS"); + context.init(null, tmf.getTrustManagers(), null); + + Socket socket; + SSLSocketFactory sf=context.getSocketFactory(); + socket=sf.createSocket(global.hostName,global.port); + OutputStream os = socket.getOutputStream(); + OutputStreamWriter osw = new OutputStreamWriter(os); + BufferedWriter bw = new BufferedWriter(osw); + bw.write(params[0]+"\n"); + bw.flush(); + BufferedReader r = new BufferedReader(new InputStreamReader(socket.getInputStream())); + String returnValue=r.readLine(); + socket.close(); + return returnValue; + } catch (KeyStoreException g) { + g.printStackTrace(); + } catch (CertificateException a) { + a.printStackTrace(); + } catch (NoSuchAlgorithmException b) { + b.printStackTrace(); + } catch (IOException c) { + c.printStackTrace(); + } catch (KeyManagementException f) { + f.printStackTrace(); + } + return "error"; + } + } +}