]> matita.cs.unibo.it Git - logicplayer.git/blobdiff - mainActivity/app/src/main/java/com/example/furt/myapplication/serverComunication.java
Ported to latest version of Android SDK
[logicplayer.git] / mainActivity / app / src / main / java / com / example / furt / myapplication / serverComunication.java
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 (file)
index 0000000..a82ea27
--- /dev/null
@@ -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<String, String, String> {
+        @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<String, String, String> {
+        @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";
+        }
+    }
+}