Index: new/java/com/tigervnc/rfb/CSecurityTLS.java =================================================================== --- new.orig/java/com/tigervnc/rfb/CSecurityTLS.java 2013-04-18 11:56:22.000000000 +0200 +++ new/java/com/tigervnc/rfb/CSecurityTLS.java 2013-04-18 13:59:03.000000000 +0200 @@ -25,6 +25,7 @@ import java.io.File; import java.io.InputStream; import java.io.FileInputStream; +import java.io.ByteArrayInputStream; import java.util.ArrayList; import java.util.Collection; import javax.swing.JOptionPane; @@ -34,6 +35,9 @@ public class CSecurityTLS extends CSecurity { + public static StringParameter PVECert + = new StringParameter("PVECert", + "Proxmox VE CA certificate", ""); public static StringParameter x509ca = new StringParameter("x509ca", "X509 CA certificate", ""); @@ -92,6 +96,8 @@ { anon = _anon; setDefaults(); + + pvecert = PVECert.getData(); cafile = x509ca.getData(); crlfile = x509crl.getData(); } @@ -170,10 +176,15 @@ CertificateFactory cf = CertificateFactory.getInstance("X.509"); try { ks.load(null, null); - File cacert = new File(cafile); - if (!cacert.exists() || !cacert.canRead()) - return; - InputStream caStream = new FileInputStream(cafile); + InputStream caStream; + if (pvecert != null) { + caStream = new ByteArrayInputStream(pvecert.getBytes("ISO-8859-1")); + } else { + File cacert = new File(cafile); + if (!cacert.exists() || !cacert.canRead()) + return; + caStream = new FileInputStream(cafile); + } X509Certificate ca = (X509Certificate)cf.generateCertificate(caStream); ks.setCertificateEntry("CA", ca); PKIXBuilderParameters params = new PKIXBuilderParameters(ks, new X509CertSelector()); @@ -241,6 +252,7 @@ private boolean anon; private SSLSession session; private String cafile, crlfile; + private String pvecert; private InStream is; private SSLSocket ssl; Index: new/java/com/tigervnc/vncviewer/VncViewer.java =================================================================== --- new.orig/java/com/tigervnc/vncviewer/VncViewer.java 2013-04-18 11:56:21.000000000 +0200 +++ new/java/com/tigervnc/vncviewer/VncViewer.java 2013-04-18 13:56:33.000000000 +0200 @@ -168,6 +168,11 @@ if (firstApplet) { alwaysShowServerDialog.setParam(true); Configuration.readAppletParams(this); + String tmpcert = this.getParameter("PVECert"); + if (tmpcert != null) { + CSecurityTLS.PVECert.setParam(tmpcert.replace('|', '\n')); + } + String host = getCodeBase().getHost(); if (vncServerName.getValue() == null && vncServerPort.getValue() != 0) { int port = vncServerPort.getValue();