X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fping%2FSSLPinger.java;h=78adc12ac9e6a76bc4d08ec34675c77445ff25b9;hb=2824d1c165c501e2f3a8809044788b33b81f478a;hp=fd113ec2683afded4aa08b817c49434c937dc063;hpb=8ef6a07673d3f52d9cb72b20f2560f12a6727459;p=gigi.git diff --git a/src/org/cacert/gigi/ping/SSLPinger.java b/src/org/cacert/gigi/ping/SSLPinger.java index fd113ec2..78adc12a 100644 --- a/src/org/cacert/gigi/ping/SSLPinger.java +++ b/src/org/cacert/gigi/ping/SSLPinger.java @@ -27,22 +27,21 @@ public class SSLPinger extends DomainPinger { try { SocketChannel sch = SocketChannel.open(); String[] parts = configuration.split(":", 2); - sch.connect(new InetSocketAddress(domain, Integer - .parseInt(parts[0]))); + sch.connect(new InetSocketAddress(domain, Integer.parseInt(parts[0]))); if (parts.length == 2) { switch (parts[1]) { - case "xmpp" : - startXMPP(sch, false, domain); - break; - case "server-xmpp" : - startXMPP(sch, true, domain); - break; - case "smtp" : - startSMTP(sch); - break; - case "imap" : - startIMAP(sch); - break; + case "xmpp": + startXMPP(sch, false, domain); + break; + case "server-xmpp": + startXMPP(sch, true, domain); + break; + case "smtp": + startSMTP(sch); + break; + case "imap": + startIMAP(sch); + break; } } @@ -52,6 +51,7 @@ public class SSLPinger extends DomainPinger { } } + private void startIMAP(SocketChannel sch) throws IOException { Socket s = sch.socket(); InputStream is = s.getInputStream(); @@ -61,22 +61,21 @@ public class SSLPinger extends DomainPinger { os.flush(); scanFor(is, "\n"); } - private void startXMPP(SocketChannel sch, boolean server, String domain) - throws IOException { + + private void startXMPP(SocketChannel sch, boolean server, String domain) throws IOException { Socket s = sch.socket(); InputStream is = s.getInputStream(); OutputStream os = s.getOutputStream(); - os.write(("") - .getBytes()); + os.write(("") + .getBytes()); os.flush(); - os.write("" - .getBytes()); + os.write("".getBytes()); os.flush(); scanFor(is, ""); } + private void scanFor(InputStream is, String scanFor) throws IOException { int pos = 0; while (pos < scanFor.length()) { @@ -87,6 +86,7 @@ public class SSLPinger extends DomainPinger { } } } + private void startSMTP(SocketChannel sch) throws IOException { Socket s = sch.socket(); InputStream is = s.getInputStream(); @@ -101,6 +101,7 @@ public class SSLPinger extends DomainPinger { s.getOutputStream().flush(); readSMTP(is); } + private void readSMTP(InputStream is) throws IOException { int counter = 0; boolean finish = true; @@ -125,65 +126,60 @@ public class SSLPinger extends DomainPinger { } } } + private void test(SocketChannel sch, String domain) { try { SSLContext sc = SSLContext.getDefault(); SSLEngine se = sc.createSSLEngine(); - ByteBuffer enc_in = ByteBuffer.allocate(se.getSession() - .getPacketBufferSize()); - ByteBuffer enc_out = ByteBuffer.allocate(se.getSession() - .getPacketBufferSize()); - ByteBuffer dec_in = ByteBuffer.allocate(se.getSession() - .getApplicationBufferSize()); - ByteBuffer dec_out = ByteBuffer.allocate(se.getSession() - .getApplicationBufferSize()); + ByteBuffer enc_in = ByteBuffer.allocate(se.getSession().getPacketBufferSize()); + ByteBuffer enc_out = ByteBuffer.allocate(se.getSession().getPacketBufferSize()); + ByteBuffer dec_in = ByteBuffer.allocate(se.getSession().getApplicationBufferSize()); + ByteBuffer dec_out = ByteBuffer.allocate(se.getSession().getApplicationBufferSize()); se.setUseClientMode(true); SSLParameters sp = se.getSSLParameters(); - sp.setServerNames(Arrays. asList(new SNIHostName( - domain))); + sp.setServerNames(Arrays. asList(new SNIHostName(domain))); se.setSSLParameters(sp); se.beginHandshake(); enc_in.limit(0); while (se.getHandshakeStatus() != HandshakeStatus.FINISHED - && se.getHandshakeStatus() != HandshakeStatus.NOT_HANDSHAKING) { + && se.getHandshakeStatus() != HandshakeStatus.NOT_HANDSHAKING) { switch (se.getHandshakeStatus()) { - case NEED_WRAP : - dec_out.limit(0); - se.wrap(dec_out, enc_out); - enc_out.flip(); - while (enc_out.remaining() > 0) { - sch.write(enc_out); - } - enc_out.clear(); - break; - case NEED_UNWRAP : - if (enc_in.remaining() == 0) { - enc_in.clear(); - sch.read(enc_in); - enc_in.flip(); - } - while (se.unwrap(enc_in, dec_in).getStatus() == Status.BUFFER_UNDERFLOW) { - enc_in.position(enc_in.limit()); - enc_in.limit(enc_in.capacity()); - sch.read(enc_in); - enc_in.flip(); - } - enc_in.compact(); + case NEED_WRAP: + dec_out.limit(0); + se.wrap(dec_out, enc_out); + enc_out.flip(); + while (enc_out.remaining() > 0) { + sch.write(enc_out); + } + enc_out.clear(); + break; + case NEED_UNWRAP: + if (enc_in.remaining() == 0) { + enc_in.clear(); + sch.read(enc_in); + enc_in.flip(); + } + while (se.unwrap(enc_in, dec_in).getStatus() == Status.BUFFER_UNDERFLOW) { + enc_in.position(enc_in.limit()); + enc_in.limit(enc_in.capacity()); + sch.read(enc_in); enc_in.flip(); - break; - case NEED_TASK : - se.getDelegatedTask().run(); - break; - case NOT_HANDSHAKING : - case FINISHED : + } + enc_in.compact(); + enc_in.flip(); + break; + case NEED_TASK: + se.getDelegatedTask().run(); + break; + case NOT_HANDSHAKING: + case FINISHED: } } System.out.println("completed"); System.out.println(se.getSession().getCipherSuite()); - X509Certificate[] peerCertificateChain = se.getSession() - .getPeerCertificateChain(); + X509Certificate[] peerCertificateChain = se.getSession().getPeerCertificateChain(); for (X509Certificate x509Certificate : peerCertificateChain) { System.out.println(x509Certificate.getSubjectDN().getName()); }