HTTPS.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package de.tudarmstadt.informatik.hostage.protocol;
  2. import java.io.FileInputStream;
  3. import java.security.KeyStore;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import javax.net.ssl.KeyManagerFactory;
  7. import javax.net.ssl.SSLContext;
  8. public class HTTPS implements Protocol<String> {
  9. private static enum STATE {
  10. NONE, OPEN, CLOSED
  11. };
  12. private STATE state = STATE.NONE;
  13. @Override
  14. public int getPort() {
  15. return 443;
  16. }
  17. @Override
  18. public TALK_FIRST whoTalksFirst() {
  19. return TALK_FIRST.CLIENT;
  20. }
  21. @Override
  22. public List<String> processMessage(String message) {
  23. List<String> response = new ArrayList<String>();
  24. response.add(header + html);
  25. state = STATE.CLOSED;
  26. return response;
  27. }
  28. @Override
  29. public boolean isClosed() {
  30. return state == STATE.CLOSED;
  31. }
  32. @Override
  33. public boolean isSecure() {
  34. return true;
  35. }
  36. @Override
  37. public Class<String> getType() {
  38. return String.class;
  39. }
  40. @Override
  41. public String toString() {
  42. return "HTTPS";
  43. }
  44. @Override
  45. public SSLContext getSSLContext() {
  46. String ksName = "/storage/sdcard0/server.bks";
  47. char ksPass[] = "password".toCharArray();
  48. KeyStore ks;
  49. KeyManagerFactory kmf = null;
  50. try {
  51. ks = KeyStore.getInstance(KeyStore.getDefaultType());
  52. ks.load(new FileInputStream(ksName), ksPass);
  53. kmf = KeyManagerFactory.getInstance(KeyManagerFactory
  54. .getDefaultAlgorithm());
  55. kmf.init(ks, ksPass);
  56. } catch (Exception e) {
  57. e.printStackTrace();
  58. }
  59. SSLContext sslcontext = null;
  60. try {
  61. sslcontext = SSLContext.getInstance("SSLv3");
  62. sslcontext.init(kmf.getKeyManagers(), null, null);
  63. } catch (Exception e) {
  64. e.printStackTrace();
  65. }
  66. return sslcontext;
  67. }
  68. private String header = "HTTP/1.1 200 OK\r\n"
  69. + "Date: Mon, 01 Jul 2013 18:27:55 GMT\r\n"
  70. + "Server: Apache/2.2.22 (Debian)\r\n"
  71. + "X-Powered-By: PHP/5.4.4.-14\r\n" + "Vary: Accept-Encoding\r\n"
  72. + "Content-Length: 173\r\n" + "Keep-Alive: timeout=5, max=100\r\n"
  73. + "Connection: Keep-Alive\r\n" + "Content-Type: text/html\r\n"
  74. + "\r\n";
  75. private String html = "<!doctype html>\n" + "<html lang=\"en\">\n"
  76. + "<head>\n" + "<meta charset=\"UTF-8\">\n"
  77. + "<title>Test successful</title>\n" + "</head>\n" + "<body>\n"
  78. + "<h1>Test successful</h1>\n" + "<p>Congratulations.</p>\n"
  79. + "</body>\n" + "</html>";
  80. }