keycloak-federation
クラス | 公開メンバ関数 | 公開変数類 | 静的公開変数類 | 静的関数 | 非公開メンバ関数 | 静的非公開変数類 | 全メンバ一覧
org.freedesktop.dbus.Transport.SASL クラス
org.freedesktop.dbus.Transport.SASL 連携図
Collaboration graph

クラス

class  Command
 

公開メンバ関数

Command receive (InputStream s) throws IOException
 
void send (OutputStream out, int command, String... data) throws IOException
 
int do_challenge (int auth, Command c) throws IOException
 
int do_response (int auth, String Uid, String kernelUid, Command c)
 
String [] getTypes (int types)
 
boolean auth (int mode, int types, String guid, OutputStream out, InputStream in, UnixSocket us) throws IOException
 

公開変数類

String challenge = ""
 
String cookie = ""
 

静的公開変数類

static final int LOCK_TIMEOUT = 1000
 
static final int NEW_KEY_TIMEOUT_SECONDS = 60 * 5
 
static final int EXPIRE_KEYS_TIMEOUT_SECONDS = NEW_KEY_TIMEOUT_SECONDS + (60 * 2)
 
static final int MAX_TIME_TRAVEL_SECONDS = 60 * 5
 
static final int COOKIE_TIMEOUT = 240
 
static final String COOKIE_CONTEXT = "org_freedesktop_java"
 
static final int MODE_SERVER = 1
 
static final int MODE_CLIENT = 2
 
static final int AUTH_NONE = 0
 
static final int AUTH_EXTERNAL = 1
 
static final int AUTH_SHA = 2
 
static final int AUTH_ANON = 4
 
static final int COMMAND_AUTH = 1
 
static final int COMMAND_DATA = 2
 
static final int COMMAND_REJECTED = 3
 
static final int COMMAND_OK = 4
 
static final int COMMAND_BEGIN = 5
 
static final int COMMAND_CANCEL = 6
 
static final int COMMAND_ERROR = 7
 
static final int INITIAL_STATE = 0
 
static final int WAIT_DATA = 1
 
static final int WAIT_OK = 2
 
static final int WAIT_REJECT = 3
 
static final int WAIT_AUTH = 4
 
static final int WAIT_BEGIN = 5
 
static final int AUTHENTICATED = 6
 
static final int FAILED = 7
 
static final int OK = 1
 
static final int CONTINUE = 2
 
static final int ERROR = 3
 
static final int REJECT = 4
 

静的関数

 [static initializer]
 

非公開メンバ関数

String findCookie (String context, String ID) throws IOException
 
void addCookie (String context, String ID, long timestamp, String cookie) throws IOException
 
String stupidlyEncode (String data)
 
String stupidlyEncode (byte[] data)
 
byte getNibble (char c)
 
String stupidlyDecode (String data)
 

静的非公開変数類

static Collator col = Collator.getInstance()
 

詳解

関数詳解

◆ [static initializer]()

org.freedesktop.dbus.Transport.SASL.[static initializer] ( )
inlinestaticpackage

◆ addCookie()

void org.freedesktop.dbus.Transport.SASL.addCookie ( String  context,
String  ID,
long  timestamp,
String  cookie 
) throws IOException
inlineprivate
155  {
156  String homedir = System.getProperty("user.home");
157  File keydir = new File(homedir + "/.dbus-keyrings/");
158  File cookiefile = new File(homedir + "/.dbus-keyrings/" + context);
159  File lock = new File(homedir + "/.dbus-keyrings/" + context + ".lock");
160  File temp = new File(homedir + "/.dbus-keyrings/" + context + ".temp");
161 
162  // ensure directory exists
163  if (!keydir.exists()) keydir.mkdirs();
164 
165  // acquire lock
166  long start = System.currentTimeMillis();
167  while (!lock.createNewFile() && LOCK_TIMEOUT > (System.currentTimeMillis() - start)) ;
168 
169  // read old file
170  Vector<String> lines = new Vector<String>();
171  if (cookiefile.exists()) {
172  BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(cookiefile)));
173  String s = null;
174  while (null != (s = r.readLine())) {
175  String[] line = s.split(" ");
176  long time = Long.parseLong(line[1]);
177  // expire stale cookies
178  if ((timestamp - time) < COOKIE_TIMEOUT)
179  lines.add(s);
180  }
181  r.close();
182  }
183 
184  // add cookie
185  lines.add(ID + " " + timestamp + " " + cookie);
186 
187  // write temp file
188  PrintWriter w = new PrintWriter(new FileOutputStream(temp));
189  for (String l : lines)
190  w.println(l);
191  w.close();
192 
193  // atomically move to old file
194  if (!temp.renameTo(cookiefile)) {
195  cookiefile.delete();
196  temp.renameTo(cookiefile);
197  }
198 
199  // remove lock
200  lock.delete();
201  }
static final int COOKIE_TIMEOUT
Definition: Transport.java:131
String cookie
Definition: Transport.java:399
static final int LOCK_TIMEOUT
Definition: Transport.java:127

◆ auth()

boolean org.freedesktop.dbus.Transport.SASL.auth ( int  mode,
int  types,
String  guid,
OutputStream  out,
InputStream  in,
UnixSocket  us 
) throws IOException
inline

performs SASL auth on the given streams. Mode selects whether to run as a SASL server or client. Types is a bitmask of the available auth types. Returns true if the auth was successful and false if it failed.

488  {
489  String username = System.getProperty("user.name");
490  String Uid = null;
491  String kernelUid = null;
492  try {
493  Class c = Class.forName("com.sun.security.auth.module.UnixSystem");
494  Method m = c.getMethod("getUid");
495  Object o = c.newInstance();
496  long uid = (Long) m.invoke(o);
497  Uid = stupidlyEncode("" + uid);
498  } catch (Exception e) {
499  Uid = stupidlyEncode(username);
500  }
501  Command c;
502  int failed = 0;
503  int current = 0;
504  int state = INITIAL_STATE;
505 
506  while (state != AUTHENTICATED && state != FAILED) {
507  if (Debug.debug) Debug.print(Debug.VERBOSE, "AUTH state: " + state);
508  switch (mode) {
509  case MODE_CLIENT:
510  switch (state) {
511  case INITIAL_STATE:
512  if (null == us)
513  out.write(new byte[]{0});
514  else
515  us.sendCredentialByte((byte) 0);
516  send(out, COMMAND_AUTH);
517  state = WAIT_DATA;
518  break;
519  case WAIT_DATA:
520  c = receive(in);
521  switch (c.getCommand()) {
522  case COMMAND_DATA:
523  switch (do_challenge(current, c)) {
524  case CONTINUE:
525  send(out, COMMAND_DATA, c.getResponse());
526  break;
527  case OK:
528  send(out, COMMAND_DATA, c.getResponse());
529  state = WAIT_OK;
530  break;
531  case ERROR:
532  send(out, COMMAND_ERROR, c.getResponse());
533  break;
534  }
535  break;
536  case COMMAND_REJECTED:
537  failed |= current;
538  int available = c.getMechs() & (~failed);
539  if (0 != (available & AUTH_EXTERNAL)) {
540  send(out, COMMAND_AUTH, "EXTERNAL", Uid);
541  current = AUTH_EXTERNAL;
542  } else if (0 != (available & AUTH_SHA)) {
543  send(out, COMMAND_AUTH, "DBUS_COOKIE_SHA1", Uid);
544  current = AUTH_SHA;
545  } else if (0 != (available & AUTH_ANON)) {
546  send(out, COMMAND_AUTH, "ANONYMOUS");
547  current = AUTH_ANON;
548  } else state = FAILED;
549  break;
550  case COMMAND_ERROR:
551  send(out, COMMAND_CANCEL);
552  state = WAIT_REJECT;
553  break;
554  case COMMAND_OK:
555  send(out, COMMAND_BEGIN);
556  state = AUTHENTICATED;
557  break;
558  default:
559  send(out, COMMAND_ERROR, "Got invalid command");
560  break;
561  }
562  break;
563  case WAIT_OK:
564  c = receive(in);
565  switch (c.getCommand()) {
566  case COMMAND_OK:
567  send(out, COMMAND_BEGIN);
568  state = AUTHENTICATED;
569  break;
570  case COMMAND_ERROR:
571  case COMMAND_DATA:
572  send(out, COMMAND_CANCEL);
573  state = WAIT_REJECT;
574  break;
575  case COMMAND_REJECTED:
576  failed |= current;
577  int available = c.getMechs() & (~failed);
578  state = WAIT_DATA;
579  if (0 != (available & AUTH_EXTERNAL)) {
580  send(out, COMMAND_AUTH, "EXTERNAL", Uid);
581  current = AUTH_EXTERNAL;
582  } else if (0 != (available & AUTH_SHA)) {
583  send(out, COMMAND_AUTH, "DBUS_COOKIE_SHA1", Uid);
584  current = AUTH_SHA;
585  } else if (0 != (available & AUTH_ANON)) {
586  send(out, COMMAND_AUTH, "ANONYMOUS");
587  current = AUTH_ANON;
588  } else state = FAILED;
589  break;
590  default:
591  send(out, COMMAND_ERROR, "Got invalid command");
592  break;
593  }
594  break;
595  case WAIT_REJECT:
596  c = receive(in);
597  switch (c.getCommand()) {
598  case COMMAND_REJECTED:
599  failed |= current;
600  int available = c.getMechs() & (~failed);
601  if (0 != (available & AUTH_EXTERNAL)) {
602  send(out, COMMAND_AUTH, "EXTERNAL", Uid);
603  current = AUTH_EXTERNAL;
604  } else if (0 != (available & AUTH_SHA)) {
605  send(out, COMMAND_AUTH, "DBUS_COOKIE_SHA1", Uid);
606  current = AUTH_SHA;
607  } else if (0 != (available & AUTH_ANON)) {
608  send(out, COMMAND_AUTH, "ANONYMOUS");
609  current = AUTH_ANON;
610  } else state = FAILED;
611  break;
612  default:
613  state = FAILED;
614  break;
615  }
616  break;
617  default:
618  state = FAILED;
619  }
620  break;
621  case MODE_SERVER:
622  switch (state) {
623  case INITIAL_STATE:
624  byte[] buf = new byte[1];
625  if (null == us) {
626  in.read(buf);
627  } else {
628  buf[0] = us.recvCredentialByte();
629  int kuid = us.getPeerUID();
630  if (kuid >= 0)
631  kernelUid = stupidlyEncode("" + kuid);
632  }
633  if (0 != buf[0]) state = FAILED;
634  else state = WAIT_AUTH;
635  break;
636  case WAIT_AUTH:
637  c = receive(in);
638  switch (c.getCommand()) {
639  case COMMAND_AUTH:
640  if (null == c.getData()) {
641  send(out, COMMAND_REJECTED, getTypes(types));
642  } else {
643  switch (do_response(current, Uid, kernelUid, c)) {
644  case CONTINUE:
645  send(out, COMMAND_DATA, c.getResponse());
646  current = c.getMechs();
647  state = WAIT_DATA;
648  break;
649  case OK:
650  send(out, COMMAND_OK, guid);
651  state = WAIT_BEGIN;
652  current = 0;
653  break;
654  case REJECT:
655  send(out, COMMAND_REJECTED, getTypes(types));
656  current = 0;
657  break;
658  }
659  }
660  break;
661  case COMMAND_ERROR:
662  send(out, COMMAND_REJECTED, getTypes(types));
663  break;
664  case COMMAND_BEGIN:
665  state = FAILED;
666  break;
667  default:
668  send(out, COMMAND_ERROR, "Got invalid command");
669  break;
670  }
671  break;
672  case WAIT_DATA:
673  c = receive(in);
674  switch (c.getCommand()) {
675  case COMMAND_DATA:
676  switch (do_response(current, Uid, kernelUid, c)) {
677  case CONTINUE:
678  send(out, COMMAND_DATA, c.getResponse());
679  state = WAIT_DATA;
680  break;
681  case OK:
682  send(out, COMMAND_OK, guid);
683  state = WAIT_BEGIN;
684  current = 0;
685  break;
686  case REJECT:
687  send(out, COMMAND_REJECTED, getTypes(types));
688  current = 0;
689  break;
690  }
691  break;
692  case COMMAND_ERROR:
693  case COMMAND_CANCEL:
694  send(out, COMMAND_REJECTED, getTypes(types));
695  state = WAIT_AUTH;
696  break;
697  case COMMAND_BEGIN:
698  state = FAILED;
699  break;
700  default:
701  send(out, COMMAND_ERROR, "Got invalid command");
702  break;
703  }
704  break;
705  case WAIT_BEGIN:
706  c = receive(in);
707  switch (c.getCommand()) {
708  case COMMAND_ERROR:
709  case COMMAND_CANCEL:
710  send(out, COMMAND_REJECTED, getTypes(types));
711  state = WAIT_AUTH;
712  break;
713  case COMMAND_BEGIN:
714  state = AUTHENTICATED;
715  break;
716  default:
717  send(out, COMMAND_ERROR, "Got invalid command");
718  break;
719  }
720  break;
721  default:
722  state = FAILED;
723  }
724  break;
725  default:
726  return false;
727  }
728  }
729 
730  return state == AUTHENTICATED;
731  }
static final int COMMAND_BEGIN
Definition: Transport.java:272
static final int REJECT
Definition: Transport.java:288
static final int COMMAND_OK
Definition: Transport.java:271
static final int AUTHENTICATED
Definition: Transport.java:282
static final int MODE_CLIENT
Definition: Transport.java:261
static final int INITIAL_STATE
Definition: Transport.java:276
static final int OK
Definition: Transport.java:285
static final int ERROR
Definition: Transport.java:287
int do_challenge(int auth, Command c)
Definition: Transport.java:353
static final int FAILED
Definition: Transport.java:283
String stupidlyEncode(String data)
Definition: Transport.java:207
String [] getTypes(int types)
Definition: Transport.java:460
static final int WAIT_DATA
Definition: Transport.java:277
static final int CONTINUE
Definition: Transport.java:286
static final int WAIT_OK
Definition: Transport.java:278
static final int AUTH_ANON
Definition: Transport.java:266
static final int COMMAND_AUTH
Definition: Transport.java:268
static final int COMMAND_CANCEL
Definition: Transport.java:273
static final int COMMAND_REJECTED
Definition: Transport.java:270
static final int COMMAND_ERROR
Definition: Transport.java:274
Command receive(InputStream s)
Definition: Transport.java:290
int do_response(int auth, String Uid, String kernelUid, Command c)
Definition: Transport.java:401
static final int AUTH_SHA
Definition: Transport.java:265
void send(OutputStream out, int command, String... data)
Definition: Transport.java:316
static final int WAIT_AUTH
Definition: Transport.java:280
static final int COMMAND_DATA
Definition: Transport.java:269
static final int WAIT_BEGIN
Definition: Transport.java:281
static final int AUTH_EXTERNAL
Definition: Transport.java:264
static final int MODE_SERVER
Definition: Transport.java:260
static final int WAIT_REJECT
Definition: Transport.java:279

◆ do_challenge()

int org.freedesktop.dbus.Transport.SASL.do_challenge ( int  auth,
Command  c 
) throws IOException
inline
353  {
354  switch (auth) {
355  case AUTH_SHA:
356  String[] reply = stupidlyDecode(c.getData()).split(" ");
357  if (Debug.debug) Debug.print(Debug.VERBOSE, Arrays.toString(reply));
358  if (3 != reply.length) {
359  if (Debug.debug) Debug.print(Debug.DEBUG, "Reply is not length 3");
360  return ERROR;
361  }
362  String context = reply[0];
363  String ID = reply[1];
364  String serverchallenge = reply[2];
365  MessageDigest md = null;
366  try {
367  md = MessageDigest.getInstance("SHA");
368  } catch (NoSuchAlgorithmException NSAe) {
369  if (Debug.debug && AbstractConnection.EXCEPTION_DEBUG) Debug.print(Debug.ERR, NSAe);
370  return ERROR;
371  }
372  byte[] buf = new byte[8];
373  Message.marshallintBig(System.currentTimeMillis(), buf, 0, 8);
374  String clientchallenge = stupidlyEncode(md.digest(buf));
375  md.reset();
376  long start = System.currentTimeMillis();
377  String cookie = null;
378  while (null == cookie && (System.currentTimeMillis() - start) < LOCK_TIMEOUT)
379  cookie = findCookie(context, ID);
380  if (null == cookie) {
381  if (Debug.debug)
382  Debug.print(Debug.DEBUG, "Did not find a cookie in context " + context + " with ID " + ID);
383  return ERROR;
384  }
385  String response = serverchallenge + ":" + clientchallenge + ":" + cookie;
386  buf = md.digest(response.getBytes());
387  if (Debug.debug)
388  Debug.print(Debug.VERBOSE, "Response: " + response + " hash: " + Hexdump.format(buf));
389  response = stupidlyEncode(buf);
390  c.setResponse(stupidlyEncode(clientchallenge + " " + response));
391  return OK;
392  default:
393  if (Debug.debug) Debug.print(Debug.DEBUG, "Not DBUS_COOKIE_SHA1 authtype.");
394  return ERROR;
395  }
396  }
boolean auth(int mode, int types, String guid, OutputStream out, InputStream in, UnixSocket us)
Definition: Transport.java:488
String findCookie(String context, String ID)
Definition: Transport.java:134
String cookie
Definition: Transport.java:399
static final int OK
Definition: Transport.java:285
static final int ERROR
Definition: Transport.java:287
String stupidlyEncode(String data)
Definition: Transport.java:207
String stupidlyDecode(String data)
Definition: Transport.java:247
static final int AUTH_SHA
Definition: Transport.java:265
static final int LOCK_TIMEOUT
Definition: Transport.java:127

◆ do_response()

int org.freedesktop.dbus.Transport.SASL.do_response ( int  auth,
String  Uid,
String  kernelUid,
Command  c 
)
inline
401  {
402  MessageDigest md = null;
403  try {
404  md = MessageDigest.getInstance("SHA");
405  } catch (NoSuchAlgorithmException NSAe) {
406  if (Debug.debug && AbstractConnection.EXCEPTION_DEBUG) Debug.print(Debug.ERR, NSAe);
407  return ERROR;
408  }
409  switch (auth) {
410  case AUTH_NONE:
411  switch (c.getMechs()) {
412  case AUTH_ANON:
413  return OK;
414  case AUTH_EXTERNAL:
415  if (0 == col.compare(Uid, c.getData()) &&
416  (null == kernelUid || 0 == col.compare(Uid, kernelUid)))
417  return OK;
418  else
419  return ERROR;
420  case AUTH_SHA:
421  String context = COOKIE_CONTEXT;
422  long id = System.currentTimeMillis();
423  byte[] buf = new byte[8];
424  Message.marshallintBig(id, buf, 0, 8);
425  challenge = stupidlyEncode(md.digest(buf));
426  Random r = new Random();
427  r.nextBytes(buf);
428  cookie = stupidlyEncode(md.digest(buf));
429  try {
430  addCookie(context, "" + id, id / 1000, cookie);
431  } catch (IOException IOe) {
432  if (Debug.debug && AbstractConnection.EXCEPTION_DEBUG) Debug.print(Debug.ERR, IOe);
433  }
434  if (Debug.debug)
435  Debug.print(Debug.DEBUG, "Sending challenge: " + context + ' ' + id + ' ' + challenge);
436  c.setResponse(stupidlyEncode(context + ' ' + id + ' ' + challenge));
437  return CONTINUE;
438  default:
439  return ERROR;
440  }
441  case AUTH_SHA:
442  String[] response = stupidlyDecode(c.getData()).split(" ");
443  if (response.length < 2) return ERROR;
444  String cchal = response[0];
445  String hash = response[1];
446  String prehash = challenge + ":" + cchal + ":" + cookie;
447  byte[] buf = md.digest(prehash.getBytes());
448  String posthash = stupidlyEncode(buf);
449  if (Debug.debug)
450  Debug.print(Debug.DEBUG, "Authenticating Hash; data=" + prehash + " remote hash=" + hash + " local hash=" + posthash);
451  if (0 == col.compare(posthash, hash))
452  return OK;
453  else
454  return ERROR;
455  default:
456  return ERROR;
457  }
458  }
void addCookie(String context, String ID, long timestamp, String cookie)
Definition: Transport.java:155
boolean auth(int mode, int types, String guid, OutputStream out, InputStream in, UnixSocket us)
Definition: Transport.java:488
static final int AUTH_NONE
Definition: Transport.java:263
String cookie
Definition: Transport.java:399
static final int OK
Definition: Transport.java:285
static Collator col
Definition: Transport.java:120
static final int ERROR
Definition: Transport.java:287
String stupidlyEncode(String data)
Definition: Transport.java:207
static final int CONTINUE
Definition: Transport.java:286
static final String COOKIE_CONTEXT
Definition: Transport.java:132
String challenge
Definition: Transport.java:398
static final int AUTH_ANON
Definition: Transport.java:266
String stupidlyDecode(String data)
Definition: Transport.java:247
static final int AUTH_SHA
Definition: Transport.java:265
static final int AUTH_EXTERNAL
Definition: Transport.java:264

◆ findCookie()

String org.freedesktop.dbus.Transport.SASL.findCookie ( String  context,
String  ID 
) throws IOException
inlineprivate
134  {
135  String homedir = System.getProperty("user.home");
136  File f = new File(homedir + "/.dbus-keyrings/" + context);
137  BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
138  String s = null;
139  String cookie = null;
140  long now = System.currentTimeMillis() / 1000;
141  while (null != (s = r.readLine())) {
142  String[] line = s.split(" ");
143  long timestamp = Long.parseLong(line[1]);
144  if (line[0].equals(ID) && (!(timestamp < 0 ||
145  (now + MAX_TIME_TRAVEL_SECONDS) < timestamp ||
146  (now - EXPIRE_KEYS_TIMEOUT_SECONDS) > timestamp))) {
147  cookie = line[2];
148  break;
149  }
150  }
151  r.close();
152  return cookie;
153  }
String cookie
Definition: Transport.java:399
static final int EXPIRE_KEYS_TIMEOUT_SECONDS
Definition: Transport.java:129
static final int MAX_TIME_TRAVEL_SECONDS
Definition: Transport.java:130

◆ getNibble()

byte org.freedesktop.dbus.Transport.SASL.getNibble ( char  c)
inlineprivate
215  {
216  switch (c) {
217  case '0':
218  case '1':
219  case '2':
220  case '3':
221  case '4':
222  case '5':
223  case '6':
224  case '7':
225  case '8':
226  case '9':
227  return (byte) (c - '0');
228  case 'A':
229  case 'B':
230  case 'C':
231  case 'D':
232  case 'E':
233  case 'F':
234  return (byte) (c - 'A' + 10);
235  case 'a':
236  case 'b':
237  case 'c':
238  case 'd':
239  case 'e':
240  case 'f':
241  return (byte) (c - 'a' + 10);
242  default:
243  return 0;
244  }
245  }

◆ getTypes()

String [] org.freedesktop.dbus.Transport.SASL.getTypes ( int  types)
inline
460  {
461  switch (types) {
462  case AUTH_EXTERNAL:
463  return new String[]{"EXTERNAL"};
464  case AUTH_SHA:
465  return new String[]{"DBUS_COOKIE_SHA1"};
466  case AUTH_ANON:
467  return new String[]{"ANONYMOUS"};
468  case AUTH_SHA + AUTH_EXTERNAL:
469  return new String[]{"EXTERNAL", "DBUS_COOKIE_SHA1"};
470  case AUTH_SHA + AUTH_ANON:
471  return new String[]{"ANONYMOUS", "DBUS_COOKIE_SHA1"};
472  case AUTH_EXTERNAL + AUTH_ANON:
473  return new String[]{"ANONYMOUS", "EXTERNAL"};
475  return new String[]{"ANONYMOUS", "EXTERNAL", "DBUS_COOKIE_SHA1"};
476  default:
477  return new String[]{};
478  }
479  }
static final int AUTH_ANON
Definition: Transport.java:266
static final int AUTH_SHA
Definition: Transport.java:265
static final int AUTH_EXTERNAL
Definition: Transport.java:264

◆ receive()

Command org.freedesktop.dbus.Transport.SASL.receive ( InputStream  s) throws IOException
inline
290  {
291  StringBuffer sb = new StringBuffer();
292  top:
293  while (true) {
294  int c = s.read();
295  switch (c) {
296  case -1:
297  throw new IOException("Stream unexpectedly short (broken pipe)");
298  case 0:
299  case '\r':
300  continue;
301  case '\n':
302  break top;
303  default:
304  sb.append((char) c);
305  }
306  }
307  if (Debug.debug) Debug.print(Debug.VERBOSE, "received: " + sb);
308  try {
309  return new Command(sb.toString());
310  } catch (Exception e) {
311  if (Debug.debug && AbstractConnection.EXCEPTION_DEBUG) Debug.print(Debug.ERR, e);
312  return new Command();
313  }
314  }

◆ send()

void org.freedesktop.dbus.Transport.SASL.send ( OutputStream  out,
int  command,
String...  data 
) throws IOException
inline
316  {
317  StringBuffer sb = new StringBuffer();
318  switch (command) {
319  case COMMAND_AUTH:
320  sb.append("AUTH");
321  break;
322  case COMMAND_DATA:
323  sb.append("DATA");
324  break;
325  case COMMAND_REJECTED:
326  sb.append("REJECTED");
327  break;
328  case COMMAND_OK:
329  sb.append("OK");
330  break;
331  case COMMAND_BEGIN:
332  sb.append("BEGIN");
333  break;
334  case COMMAND_CANCEL:
335  sb.append("CANCEL");
336  break;
337  case COMMAND_ERROR:
338  sb.append("ERROR");
339  break;
340  default:
341  return;
342  }
343  for (String s : data) {
344  sb.append(' ');
345  sb.append(s);
346  }
347  sb.append('\r');
348  sb.append('\n');
349  if (Debug.debug) Debug.print(Debug.VERBOSE, "sending: " + sb);
350  out.write(sb.toString().getBytes());
351  }
static final int COMMAND_BEGIN
Definition: Transport.java:272
static final int COMMAND_OK
Definition: Transport.java:271
static final int COMMAND_AUTH
Definition: Transport.java:268
static final int COMMAND_CANCEL
Definition: Transport.java:273
static final int COMMAND_REJECTED
Definition: Transport.java:270
static final int COMMAND_ERROR
Definition: Transport.java:274
static final int COMMAND_DATA
Definition: Transport.java:269

◆ stupidlyDecode()

String org.freedesktop.dbus.Transport.SASL.stupidlyDecode ( String  data)
inlineprivate
247  {
248  char[] cs = new char[data.length()];
249  char[] res = new char[cs.length / 2];
250  data.getChars(0, data.length(), cs, 0);
251  for (int i = 0, j = 0; j < res.length; i += 2, j++) {
252  int b = 0;
253  b |= getNibble(cs[i]) << 4;
254  b |= getNibble(cs[i + 1]);
255  res[j] = (char) b;
256  }
257  return new String(res);
258  }
byte getNibble(char c)
Definition: Transport.java:215

◆ stupidlyEncode() [1/2]

String org.freedesktop.dbus.Transport.SASL.stupidlyEncode ( String  data)
inlineprivate

Takes the string, encodes it as hex and then turns it into a string again. No, I don't know why either.

207  {
208  return Hexdump.toHex(data.getBytes()).replaceAll(" ", "");
209  }

◆ stupidlyEncode() [2/2]

String org.freedesktop.dbus.Transport.SASL.stupidlyEncode ( byte []  data)
inlineprivate
211  {
212  return Hexdump.toHex(data).replaceAll(" ", "");
213  }

メンバ詳解

◆ AUTH_ANON

final int org.freedesktop.dbus.Transport.SASL.AUTH_ANON = 4
static

◆ AUTH_EXTERNAL

final int org.freedesktop.dbus.Transport.SASL.AUTH_EXTERNAL = 1
static

◆ AUTH_NONE

final int org.freedesktop.dbus.Transport.SASL.AUTH_NONE = 0
static

◆ AUTH_SHA

final int org.freedesktop.dbus.Transport.SASL.AUTH_SHA = 2
static

◆ AUTHENTICATED

final int org.freedesktop.dbus.Transport.SASL.AUTHENTICATED = 6
static

◆ challenge

String org.freedesktop.dbus.Transport.SASL.challenge = ""

◆ col

Collator org.freedesktop.dbus.Transport.SASL.col = Collator.getInstance()
staticprivate

◆ COMMAND_AUTH

final int org.freedesktop.dbus.Transport.SASL.COMMAND_AUTH = 1
static

◆ COMMAND_BEGIN

final int org.freedesktop.dbus.Transport.SASL.COMMAND_BEGIN = 5
static

◆ COMMAND_CANCEL

final int org.freedesktop.dbus.Transport.SASL.COMMAND_CANCEL = 6
static

◆ COMMAND_DATA

final int org.freedesktop.dbus.Transport.SASL.COMMAND_DATA = 2
static

◆ COMMAND_ERROR

final int org.freedesktop.dbus.Transport.SASL.COMMAND_ERROR = 7
static

◆ COMMAND_OK

final int org.freedesktop.dbus.Transport.SASL.COMMAND_OK = 4
static

◆ COMMAND_REJECTED

final int org.freedesktop.dbus.Transport.SASL.COMMAND_REJECTED = 3
static

◆ CONTINUE

final int org.freedesktop.dbus.Transport.SASL.CONTINUE = 2
static

◆ cookie

String org.freedesktop.dbus.Transport.SASL.cookie = ""

◆ COOKIE_CONTEXT

final String org.freedesktop.dbus.Transport.SASL.COOKIE_CONTEXT = "org_freedesktop_java"
static

◆ COOKIE_TIMEOUT

final int org.freedesktop.dbus.Transport.SASL.COOKIE_TIMEOUT = 240
static

◆ ERROR

final int org.freedesktop.dbus.Transport.SASL.ERROR = 3
static

◆ EXPIRE_KEYS_TIMEOUT_SECONDS

final int org.freedesktop.dbus.Transport.SASL.EXPIRE_KEYS_TIMEOUT_SECONDS = NEW_KEY_TIMEOUT_SECONDS + (60 * 2)
static

◆ FAILED

final int org.freedesktop.dbus.Transport.SASL.FAILED = 7
static

◆ INITIAL_STATE

final int org.freedesktop.dbus.Transport.SASL.INITIAL_STATE = 0
static

◆ LOCK_TIMEOUT

final int org.freedesktop.dbus.Transport.SASL.LOCK_TIMEOUT = 1000
static

◆ MAX_TIME_TRAVEL_SECONDS

final int org.freedesktop.dbus.Transport.SASL.MAX_TIME_TRAVEL_SECONDS = 60 * 5
static

◆ MODE_CLIENT

final int org.freedesktop.dbus.Transport.SASL.MODE_CLIENT = 2
static

◆ MODE_SERVER

final int org.freedesktop.dbus.Transport.SASL.MODE_SERVER = 1
static

◆ NEW_KEY_TIMEOUT_SECONDS

final int org.freedesktop.dbus.Transport.SASL.NEW_KEY_TIMEOUT_SECONDS = 60 * 5
static

◆ OK

final int org.freedesktop.dbus.Transport.SASL.OK = 1
static

◆ REJECT

final int org.freedesktop.dbus.Transport.SASL.REJECT = 4
static

◆ WAIT_AUTH

final int org.freedesktop.dbus.Transport.SASL.WAIT_AUTH = 4
static

◆ WAIT_BEGIN

final int org.freedesktop.dbus.Transport.SASL.WAIT_BEGIN = 5
static

◆ WAIT_DATA

final int org.freedesktop.dbus.Transport.SASL.WAIT_DATA = 1
static

◆ WAIT_OK

final int org.freedesktop.dbus.Transport.SASL.WAIT_OK = 2
static

◆ WAIT_REJECT

final int org.freedesktop.dbus.Transport.SASL.WAIT_REJECT = 3
static

このクラス詳解は次のファイルから抽出されました: