1 package com.example.furt.myapplication;
4 import android.content.res.Resources;
5 import android.os.AsyncTask;
7 import java.io.BufferedReader;
8 import java.io.BufferedWriter;
9 import java.io.IOException;
10 import java.io.InputStream;
11 import java.io.InputStreamReader;
12 import java.io.OutputStream;
13 import java.io.OutputStreamWriter;
14 import java.net.Socket;
15 import java.security.KeyManagementException;
16 import java.security.KeyStore;
17 import java.security.KeyStoreException;
18 import java.security.NoSuchAlgorithmException;
19 import java.security.cert.Certificate;
20 import java.security.cert.CertificateException;
21 import java.security.cert.CertificateFactory;
22 import java.security.cert.X509Certificate;
23 import java.util.concurrent.ExecutionException;
25 import javax.net.ssl.SSLContext;
26 import javax.net.ssl.SSLSocketFactory;
27 import javax.net.ssl.TrustManagerFactory;
29 public class serverComunication
32 serverComunication(){}
34 public static String connessione(String parametri)
37 return new richiestaServer().execute(parametri).get();
38 } catch (InterruptedException e) {
40 } catch (ExecutionException e) {
46 static String connessioneMain(String parametri)
49 return new richiestaServerMain().execute(parametri).get();
50 } catch (InterruptedException e) {
52 } catch (ExecutionException e) {
58 static class richiestaServer extends AsyncTask<String, String, String> {
60 protected String doInBackground(String... params)
62 Resources risorse= aggiornamento.t.getResources();
64 // (could be from a resource or ByteArrayInputStream or ...)
65 CertificateFactory cf = CertificateFactory.getInstance("X.509");
66 // From https://www.washington.edu/itconnect/security/ca/load-der.crt
67 InputStream caInput = risorse.openRawResource(R.raw.halloween);
70 ca = cf.generateCertificate(caInput);
71 System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN());
76 // Create a KeyStore containing our trusted CAs
77 String keyStoreType = KeyStore.getDefaultType();
78 KeyStore keyStore = KeyStore.getInstance(keyStoreType);
79 keyStore.load(null, null);
80 keyStore.setCertificateEntry("ca", ca);
82 // Create a TrustManager that trusts the CAs in our KeyStore
83 String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
84 TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
87 // Create an SSLContext that uses our TrustManager
88 SSLContext context = SSLContext.getInstance("TLS");
89 context.init(null, tmf.getTrustManagers(), null);
92 SSLSocketFactory sf=context.getSocketFactory();
93 socket=sf.createSocket(global.hostName,global.port);
94 OutputStream os = socket.getOutputStream();
95 OutputStreamWriter osw = new OutputStreamWriter(os);
96 BufferedWriter bw = new BufferedWriter(osw);
97 bw.write(params[0]+"\n");
99 BufferedReader r = new BufferedReader(new InputStreamReader(socket.getInputStream()));
100 String returnValue=r.readLine();
103 } catch (KeyStoreException g) {
105 } catch (CertificateException a) {
107 } catch (NoSuchAlgorithmException b) {
109 } catch (IOException c) {
111 } catch (KeyManagementException f) {
118 public static class richiestaServerMain extends AsyncTask<String, String, String> {
120 protected String doInBackground(String... params)
122 Resources risorse= mainActivity.t.getResources();
124 // (could be from a resource or ByteArrayInputStream or ...)
125 CertificateFactory cf = CertificateFactory.getInstance("X.509");
126 // From https://www.washington.edu/itconnect/security/ca/load-der.crt
127 InputStream caInput = risorse.openRawResource(R.raw.halloween);
130 ca = cf.generateCertificate(caInput);
131 System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN());
136 // Create a KeyStore containing our trusted CAs
137 String keyStoreType = KeyStore.getDefaultType();
138 KeyStore keyStore = KeyStore.getInstance(keyStoreType);
139 keyStore.load(null, null);
140 keyStore.setCertificateEntry("ca", ca);
142 // Create a TrustManager that trusts the CAs in our KeyStore
143 String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
144 TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
147 // Create an SSLContext that uses our TrustManager
148 SSLContext context = SSLContext.getInstance("TLS");
149 context.init(null, tmf.getTrustManagers(), null);
152 SSLSocketFactory sf=context.getSocketFactory();
153 socket=sf.createSocket(global.hostName,global.port);
154 OutputStream os = socket.getOutputStream();
155 OutputStreamWriter osw = new OutputStreamWriter(os);
156 BufferedWriter bw = new BufferedWriter(osw);
157 bw.write(params[0]+"\n");
159 BufferedReader r = new BufferedReader(new InputStreamReader(socket.getInputStream()));
160 String returnValue=r.readLine();
163 } catch (KeyStoreException g) {
165 } catch (CertificateException a) {
167 } catch (NoSuchAlgorithmException b) {
169 } catch (IOException c) {
171 } catch (KeyManagementException f) {