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) {
48 static class richiestaServer extends AsyncTask<String, String, String> {
50 protected String doInBackground(String... params)
52 Resources risorse= aggiornamento.t.getResources();
54 // (could be from a resource or ByteArrayInputStream or ...)
55 CertificateFactory cf = CertificateFactory.getInstance("X.509");
56 // From https://www.washington.edu/itconnect/security/ca/load-der.crt
57 InputStream caInput = risorse.openRawResource(R.raw.halloween);
60 ca = cf.generateCertificate(caInput);
61 System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN());
66 // Create a KeyStore containing our trusted CAs
67 String keyStoreType = KeyStore.getDefaultType();
68 KeyStore keyStore = KeyStore.getInstance(keyStoreType);
69 keyStore.load(null, null);
70 keyStore.setCertificateEntry("ca", ca);
72 // Create a TrustManager that trusts the CAs in our KeyStore
73 String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
74 TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
77 // Create an SSLContext that uses our TrustManager
78 SSLContext context = SSLContext.getInstance("TLS");
79 context.init(null, tmf.getTrustManagers(), null);
82 SSLSocketFactory sf=context.getSocketFactory();
83 socket=sf.createSocket(global.hostName,global.port);
84 OutputStream os = socket.getOutputStream();
85 OutputStreamWriter osw = new OutputStreamWriter(os);
86 BufferedWriter bw = new BufferedWriter(osw);
87 bw.write(params[0]+"\n");
89 BufferedReader r = new BufferedReader(new InputStreamReader(socket.getInputStream()));
90 String returnValue=r.readLine();
93 } catch (KeyStoreException g) {
95 } catch (CertificateException a) {
97 } catch (NoSuchAlgorithmException b) {
99 } catch (IOException c) {
101 } catch (KeyManagementException f) {
108 public static String connessioneMain(String parametri)
111 return new richiestaServerMain().execute(parametri).get();
112 } catch (InterruptedException e) {
114 } catch (ExecutionException e) {
122 static class richiestaServerMain extends AsyncTask<String, String, String> {
124 protected String doInBackground(String... params)
126 Resources risorse= mainActivity.t.getResources();
128 // (could be from a resource or ByteArrayInputStream or ...)
129 CertificateFactory cf = CertificateFactory.getInstance("X.509");
130 // From https://www.washington.edu/itconnect/security/ca/load-der.crt
131 InputStream caInput = risorse.openRawResource(R.raw.halloween);
134 ca = cf.generateCertificate(caInput);
135 System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN());
140 // Create a KeyStore containing our trusted CAs
141 String keyStoreType = KeyStore.getDefaultType();
142 KeyStore keyStore = KeyStore.getInstance(keyStoreType);
143 keyStore.load(null, null);
144 keyStore.setCertificateEntry("ca", ca);
146 // Create a TrustManager that trusts the CAs in our KeyStore
147 String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
148 TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
151 // Create an SSLContext that uses our TrustManager
152 SSLContext context = SSLContext.getInstance("TLS");
153 context.init(null, tmf.getTrustManagers(), null);
156 SSLSocketFactory sf=context.getSocketFactory();
157 socket=sf.createSocket(global.hostName,global.port);
158 OutputStream os = socket.getOutputStream();
159 OutputStreamWriter osw = new OutputStreamWriter(os);
160 BufferedWriter bw = new BufferedWriter(osw);
161 bw.write(params[0]+"\n");
163 BufferedReader r = new BufferedReader(new InputStreamReader(socket.getInputStream()));
164 String returnValue=r.readLine();
167 } catch (KeyStoreException g) {
169 } catch (CertificateException a) {
171 } catch (NoSuchAlgorithmException b) {
173 } catch (IOException c) {
175 } catch (KeyManagementException f) {