package de.tudarmstadt.informatik.hostage.protocol; import java.io.FileInputStream; import java.security.KeyStore; import java.util.ArrayList; import java.util.List; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; public class HTTPS implements Protocol { private static enum STATE { NONE, OPEN, CLOSED }; private STATE state = STATE.NONE; @Override public int getPort() { return 443; } @Override public TALK_FIRST whoTalksFirst() { return TALK_FIRST.CLIENT; } @Override public List processMessage(String message) { List response = new ArrayList(); response.add(header + html); state = STATE.CLOSED; return response; } @Override public boolean isClosed() { return state == STATE.CLOSED; } @Override public boolean isSecure() { return true; } @Override public Class getType() { return String.class; } @Override public String toString() { return "HTTPS"; } @Override public SSLContext getSSLContext() { String ksName = "/storage/sdcard0/server.bks"; char ksPass[] = "password".toCharArray(); KeyStore ks; KeyManagerFactory kmf = null; try { ks = KeyStore.getInstance(KeyStore.getDefaultType()); ks.load(new FileInputStream(ksName), ksPass); kmf = KeyManagerFactory.getInstance(KeyManagerFactory .getDefaultAlgorithm()); kmf.init(ks, ksPass); } catch (Exception e) { e.printStackTrace(); } SSLContext sslcontext = null; try { sslcontext = SSLContext.getInstance("SSLv3"); sslcontext.init(kmf.getKeyManagers(), null, null); } catch (Exception e) { e.printStackTrace(); } return sslcontext; } private String header = "HTTP/1.1 200 OK\r\n" + "Date: Mon, 01 Jul 2013 18:27:55 GMT\r\n" + "Server: Apache/2.2.22 (Debian)\r\n" + "X-Powered-By: PHP/5.4.4.-14\r\n" + "Vary: Accept-Encoding\r\n" + "Content-Length: 173\r\n" + "Keep-Alive: timeout=5, max=100\r\n" + "Connection: Keep-Alive\r\n" + "Content-Type: text/html\r\n" + "\r\n"; private String html = "\n" + "\n" + "\n" + "\n" + "Test successful\n" + "\n" + "\n" + "

Test successful

\n" + "

Congratulations.

\n" + "\n" + ""; }