[prev in list] [next in list] [prev in thread] [next in thread]
List: tigervnc-devel
Subject: [Tigervnc-devel] [PATCH 02/10] Implement VeNCrypt chooser
From: Martin Koegler <mkoegler () auto ! tuwien ! ac ! at>
Date: 2010-11-07 16:50:53
Message-ID: 1289148661-24512-3-git-send-email-mkoegler () auto ! tuwien ! ac ! at
[Download RAW message or body]
Signed-off-by: Martin Koegler <mkoegler@auto.tuwien.ac.at>
---
java/src/com/tigervnc/vncviewer/RfbProto.java | 33 +++++++++++++++++-
java/src/com/tigervnc/vncviewer/VncViewer.java | 43 ++++++++++++++---------
2 files changed, 58 insertions(+), 18 deletions(-)
diff --git a/java/src/com/tigervnc/vncviewer/RfbProto.java \
b/java/src/com/tigervnc/vncviewer/RfbProto.java index dc7aa2e..ab3c152 100644
--- a/java/src/com/tigervnc/vncviewer/RfbProto.java
+++ b/java/src/com/tigervnc/vncviewer/RfbProto.java
@@ -391,7 +391,8 @@ class RfbProto {
// Find first supported security type.
for (int i = 0; i < nSecTypes; i++) {
- if (secTypes[i] == SecTypeNone || secTypes[i] == SecTypeVncAuth) {
+ if (secTypes[i] == SecTypeNone || secTypes[i] == SecTypeVncAuth
+ || secTypes[i] == SecTypeVeNCrypt) {
secType = secTypes[i];
break;
}
@@ -406,6 +407,36 @@ class RfbProto {
return secType;
}
+ int authenticateVeNCrypt() throws Exception {
+ int majorVersion = readU8();
+ int minorVersion = readU8();
+ int Version = (majorVersion << 8) | minorVersion;
+ if (Version < 0x0002) {
+ os.write(0);
+ os.write(0);
+ throw new Exception("Server reported an unsupported VeNCrypt version");
+ }
+ os.write(0);
+ os.write(2);
+ if (readU8() != 0)
+ throw new Exception("Server reported it could not support the VeNCrypt \
version"); + int nSecTypes = readU8();
+ int[] secTypes = new int[nSecTypes];
+ for(int i = 0; i < nSecTypes; i++)
+ secTypes[i] = readU32();
+
+ for(int i = 0; i < nSecTypes; i++)
+ switch(secTypes[i])
+ {
+ case SecTypeNone:
+ case SecTypeVncAuth:
+ writeInt(secTypes[i]);
+ return secTypes[i];
+ }
+
+ throw new Exception("No valid VeNCrypt sub-type");
+ }
+
//
// Perform "no authentication".
//
diff --git a/java/src/com/tigervnc/vncviewer/VncViewer.java \
b/java/src/com/tigervnc/vncviewer/VncViewer.java index 3c527ba..711b1c9 100644
--- a/java/src/com/tigervnc/vncviewer/VncViewer.java
+++ b/java/src/com/tigervnc/vncviewer/VncViewer.java
@@ -361,25 +361,34 @@ public class VncViewer extends java.applet.Applet
authType = secType;
}
- switch (authType) {
- case RfbProto.AuthNone:
- showConnectionStatus("No authentication needed");
- rfb.authenticateNone();
- break;
- case RfbProto.AuthVNC:
- showConnectionStatus("Performing standard VNC authentication");
- if (passwordParam != null) {
- rfb.authenticateVNC(passwordParam);
- } else {
- String pw = askPassword();
- rfb.authenticateVNC(pw);
- }
- break;
- default:
- throw new Exception("Unknown authentication scheme " + authType);
- }
+ doAuthentification(authType);
}
+ void doAuthentification(int secType) throws Exception {
+ switch (secType) {
+ case RfbProto.SecTypeNone:
+ showConnectionStatus("No authentication needed");
+ rfb.authenticateNone();
+ break;
+ case RfbProto.SecTypeVncAuth:
+ showConnectionStatus("Performing standard VNC authentication");
+ if (passwordParam != null) {
+ rfb.authenticateVNC(passwordParam);
+ } else {
+ String pw = askPassword();
+ rfb.authenticateVNC(pw);
+ }
+ break;
+ case RfbProto.SecTypeVeNCrypt:
+ showConnectionStatus("VeNCrypt chooser");
+ secType = rfb.authenticateVeNCrypt();
+ doAuthentification(secType);
+ break;
+ default:
+ throw new Exception("Unknown authentication scheme " + secType);
+ }
+ }
+
//
// Show a message describing the connection status.
--
1.5.6.5
------------------------------------------------------------------------------
The Next 800 Companies to Lead America's Growth: New Video Whitepaper
David G. Thomson, author of the best-selling book "Blueprint to a
Billion" shares his insights and actions to help propel your
business during the next growth cycle. Listen Now!
http://p.sf.net/sfu/SAP-dev2dev
_______________________________________________
Tigervnc-devel mailing list
Tigervnc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic