HTTPS.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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 SSLProtocol<String> {
  9. private static enum STATE {
  10. NONE, OPEN, CLOSED
  11. };
  12. private STATE state = STATE.NONE;
  13. @Override
  14. public int getPort() {
  15. //TODO
  16. return 50505;
  17. }
  18. @Override
  19. public TALK_FIRST whoTalksFirst() {
  20. return TALK_FIRST.CLIENT;
  21. }
  22. @Override
  23. public List<String> processMessage(String message) {
  24. List<String> response = new ArrayList<String>();
  25. response.add(header+html);
  26. state = STATE.CLOSED;
  27. return response;
  28. }
  29. @Override
  30. public boolean isClosed() {
  31. return state == STATE.CLOSED;
  32. }
  33. @Override
  34. public boolean isSecure() {
  35. return true;
  36. }
  37. @Override
  38. public Class<String> getType() {
  39. return String.class;
  40. }
  41. @Override
  42. public String toString() {
  43. return "HTTPS";
  44. }
  45. @Override
  46. public SSLContext getSSLContext() {
  47. String ksName = "/storage/sdcard0/server.bks";
  48. char ksPass[] = "password".toCharArray();
  49. KeyStore ks;
  50. KeyManagerFactory kmf = null;
  51. try {
  52. ks = KeyStore.getInstance(KeyStore.getDefaultType());
  53. ks.load(new FileInputStream(ksName), ksPass);
  54. kmf = KeyManagerFactory.getInstance(KeyManagerFactory.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 =
  69. "HTTP/1.1 200 OK\r\n" +
  70. "Date: Mon, 01 Jul 2013 18:27:55 GMT\r\n" +
  71. "Server: Apache/2.2.22 (Debian)\r\n" +
  72. "X-Powered-By: PHP/5.4.4.-14\r\n" +
  73. "Vary: Accept-Encoding\r\n" +
  74. "Content-Length: 173\r\n" +
  75. "Keep-Alive: timeout=5, max=100\r\n" +
  76. "Connection: Keep-Alive\r\n" +
  77. "Content-Type: text/html\r\n" +
  78. "\r\n";
  79. private String html =
  80. "<!doctype html>\n" +
  81. "<html lang=\"en\">\n" +
  82. "<head>\n" +
  83. "<meta charset=\"UTF-8\">\n" +
  84. "<title>Test successful</title>\n" +
  85. "</head>\n" +
  86. "<body>\n" +
  87. "<h1>Test successful</h1>\n" +
  88. "<p>Congratulations.</p>\n" +
  89. "</body>\n" +
  90. "</html>";
  91. }