Mercurial > 510Connectbot
comparison src/net/sourceforge/jsocks/UserPasswordAuthentication.java @ 349:205ee2873330
update jsocks to 2011-03-19
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Fri, 01 Aug 2014 11:23:10 -0700 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
348:29076621bab0 | 349:205ee2873330 |
---|---|
1 package net.sourceforge.jsocks; | |
2 | |
3 /** | |
4 SOCKS5 User Password authentication scheme. | |
5 */ | |
6 public class UserPasswordAuthentication implements Authentication{ | |
7 | |
8 /**SOCKS ID for User/Password authentication method*/ | |
9 public final static int METHOD_ID = 2; | |
10 | |
11 String userName, password; | |
12 byte[] request; | |
13 | |
14 /** | |
15 Create an instance of UserPasswordAuthentication. | |
16 @param userName User Name to send to SOCKS server. | |
17 @param password Password to send to SOCKS server. | |
18 */ | |
19 public UserPasswordAuthentication(String userName,String password){ | |
20 this.userName = userName; | |
21 this.password = password; | |
22 formRequest(); | |
23 } | |
24 /** Get the user name. | |
25 @return User name. | |
26 */ | |
27 public String getUser(){ | |
28 return userName; | |
29 } | |
30 /** Get password | |
31 @return Password | |
32 */ | |
33 public String getPassword(){ | |
34 return password; | |
35 } | |
36 /** | |
37 Does User/Password authentication as defined in rfc1929. | |
38 @return An array containnig in, out streams, or null if authentication | |
39 fails. | |
40 */ | |
41 public Object[] doSocksAuthentication(int methodId, | |
42 java.net.Socket proxySocket) | |
43 throws java.io.IOException{ | |
44 | |
45 if(methodId != METHOD_ID) return null; | |
46 | |
47 java.io.InputStream in = proxySocket.getInputStream(); | |
48 java.io.OutputStream out = proxySocket.getOutputStream(); | |
49 | |
50 out.write(request); | |
51 int version = in.read(); | |
52 if(version < 0) return null; //Server closed connection | |
53 int status = in.read(); | |
54 if(status != 0) return null; //Server closed connection, or auth failed. | |
55 | |
56 return new Object[] {in,out}; | |
57 } | |
58 | |
59 //Private methods | |
60 ////////////////// | |
61 | |
62 /** Convert UserName password in to binary form, ready to be send to server*/ | |
63 private void formRequest(){ | |
64 byte[] user_bytes = userName.getBytes(); | |
65 byte[] password_bytes = password.getBytes(); | |
66 | |
67 request = new byte[3+user_bytes.length+password_bytes.length]; | |
68 request[0] = (byte) 1; | |
69 request[1] = (byte) user_bytes.length; | |
70 System.arraycopy(user_bytes,0,request,2,user_bytes.length); | |
71 request[2+user_bytes.length] = (byte) password_bytes.length; | |
72 System.arraycopy(password_bytes,0, | |
73 request,3+user_bytes.length,password_bytes.length); | |
74 } | |
75 } |