certificate (or CA who signed the server certificate) as applet
parameter "PVECert" (newline encoded as '|').
-Index: new/java/src/com/tigervnc/vncviewer/X509Tunnel.java
+Index: tigervnc/java/src/com/tigervnc/vncviewer/X509Tunnel.java
===================================================================
---- new.orig/java/src/com/tigervnc/vncviewer/X509Tunnel.java 2011-01-28 13:22:50.000000000 +0100
-+++ new/java/src/com/tigervnc/vncviewer/X509Tunnel.java 2011-01-28 13:26:51.000000000 +0100
+--- tigervnc.orig/java/src/com/tigervnc/vncviewer/X509Tunnel.java 2013-06-03 08:17:17.000000000 +0200
++++ tigervnc/java/src/com/tigervnc/vncviewer/X509Tunnel.java 2013-06-03 08:22:52.000000000 +0200
@@ -26,13 +26,23 @@
import javax.net.ssl.*;
import java.security.*;
}
protected void setParam (SSLSocket sock)
-@@ -52,9 +62,51 @@
+@@ -52,9 +62,48 @@
protected void initContext (SSLContext sc) throws java.security.
GeneralSecurityException
{
+ if (certs == null || certs.length < 1) {
+ throw new CertificateException("no certs");
+ }
-+ if (certs == null || certs.length > 1) {
-+ throw new CertificateException("cert path too long");
-+ }
+ PublicKey cakey = pvecert.getPublicKey();
+
+ boolean ca_match;
sc.init (null, myTM, null);
}
-@@ -100,4 +152,5 @@
+@@ -100,4 +149,5 @@
return tm.getAcceptedIssuers ();
}
}
+
}
-Index: new/java/src/com/tigervnc/vncviewer/RfbProto.java
+Index: tigervnc/java/src/com/tigervnc/vncviewer/RfbProto.java
===================================================================
---- new.orig/java/src/com/tigervnc/vncviewer/RfbProto.java 2011-01-28 13:22:50.000000000 +0100
-+++ new/java/src/com/tigervnc/vncviewer/RfbProto.java 2011-01-28 13:26:51.000000000 +0100
+--- tigervnc.orig/java/src/com/tigervnc/vncviewer/RfbProto.java 2013-06-03 08:17:17.000000000 +0200
++++ tigervnc/java/src/com/tigervnc/vncviewer/RfbProto.java 2013-06-03 08:19:05.000000000 +0200
@@ -411,7 +411,8 @@
}
tunnel.setup (this);
}
-Index: new/java/src/com/tigervnc/vncviewer/VncViewer.java
+Index: tigervnc/java/src/com/tigervnc/vncviewer/VncViewer.java
===================================================================
---- new.orig/java/src/com/tigervnc/vncviewer/VncViewer.java 2011-01-28 13:26:16.000000000 +0100
-+++ new/java/src/com/tigervnc/vncviewer/VncViewer.java 2011-01-28 13:26:51.000000000 +0100
-@@ -95,6 +95,8 @@
+--- tigervnc.orig/java/src/com/tigervnc/vncviewer/VncViewer.java 2013-06-03 08:19:03.000000000 +0200
++++ tigervnc/java/src/com/tigervnc/vncviewer/VncViewer.java 2013-06-03 08:19:05.000000000 +0200
+@@ -91,6 +91,8 @@
int debugStatsExcludeUpdates;
int debugStatsMeasureUpdates;
+ String PVECert;
+
- JSObject jswin;
- String myid;
+ // Reference to this applet for inter-applet communication.
+ public static java.applet.Applet refApplet;
-@@ -278,7 +280,7 @@
+@@ -263,7 +265,7 @@
fatalError(e.toString(), e);
}
}
}
//
-@@ -314,7 +316,7 @@
+@@ -299,7 +301,7 @@
// If the rfbThread is being stopped, ignore any exceptions,
// otherwise rethrow the exception so it can be handled.
//
void processNormalProtocol() throws Exception {
try {
vc.processNormalProtocol();
-@@ -857,6 +859,11 @@
+@@ -842,6 +844,11 @@
// SocketFactory.
socketFactory = readParameter("SocketFactory", false);
}
//
-@@ -1010,7 +1017,7 @@
+@@ -991,7 +998,7 @@
}
synchronized public void fatalError(String str, Exception e) {
if (rfb != null && rfb.closed()) {
// Not necessary to show error message if the error was caused
// by I/O problems after the rfb.close() method call.
-@@ -1108,11 +1115,11 @@
+@@ -1084,11 +1091,11 @@
public void enableInput(boolean enable) {
vc.enableInput(enable);
}
public void componentResized(ComponentEvent e) {
if (e.getComponent() == vncFrame) {
if (options.autoScale) {
-@@ -1124,11 +1131,11 @@
+@@ -1100,11 +1107,11 @@
}
}
}