home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / net / www / protocol / http / DigestAuthentication.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.1 KB  |  119 lines

  1. package sun.net.www.protocol.http;
  2.  
  3. import java.net.PasswordAuthentication;
  4. import java.net.URL;
  5. import java.security.MessageDigest;
  6. import java.security.NoSuchAlgorithmException;
  7. import java.util.Arrays;
  8. import sun.net.www.HeaderParser;
  9.  
  10. class DigestAuthentication extends AuthenticationInfo {
  11.    // $FF: renamed from: pw java.net.PasswordAuthentication
  12.    private PasswordAuthentication field_0;
  13.    private URL url;
  14.    private String authMethod;
  15.    private static final char[] charArray = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
  16.  
  17.    public DigestAuthentication(URL var1, String var2, String var3, PasswordAuthentication var4) {
  18.       super('s', var1.getHost(), var1.getPort(), var2);
  19.       this.authMethod = var3;
  20.       this.url = var1;
  21.       this.field_0 = var4;
  22.    }
  23.  
  24.    boolean supportsPreemptiveAuthorization() {
  25.       return false;
  26.    }
  27.  
  28.    String getHeaderName() {
  29.       return "";
  30.    }
  31.  
  32.    String getHeaderValue() {
  33.       return "";
  34.    }
  35.  
  36.    boolean setHeaders(HttpURLConnection var1, HeaderParser var2) {
  37.       String var3 = var2.findValue("nonce");
  38.       String var4 = this.url.getFile();
  39.       if (var3 != null && this.authMethod != null && this.field_0 != null && super.realm != null) {
  40.          if (this.authMethod.length() >= 1) {
  41.             this.authMethod = Character.toUpperCase(this.authMethod.charAt(0)) + this.authMethod.substring(1).toLowerCase();
  42.          }
  43.  
  44.          String var5 = var2.findValue("algorithm");
  45.          if (var5 == null || "".equals(var5)) {
  46.             var5 = "MD5";
  47.          }
  48.  
  49.          char[] var7 = this.field_0.getPassword();
  50.  
  51.          String var6;
  52.          label106: {
  53.             boolean var9;
  54.             try {
  55.                var6 = this.computeDigest(this.field_0.getUserName(), var7, super.realm, var1.getMethod(), var4, var3, var5);
  56.                if (var7 != null) {
  57.                   Arrays.fill(var7, ' ');
  58.                }
  59.  
  60.                var7 = null;
  61.                break label106;
  62.             } catch (NoSuchAlgorithmException var14) {
  63.                var9 = false;
  64.             } finally {
  65.                if (var7 != null) {
  66.                   Arrays.fill(var7, ' ');
  67.                }
  68.  
  69.             }
  70.  
  71.             return var9;
  72.          }
  73.  
  74.          String var8 = this.authMethod + " username=\"" + this.field_0.getUserName() + "\", realm=\"" + super.realm + "\", nonce=\"" + var3 + "\", uri=\"" + var4 + "\", response=\"" + var6 + "\"";
  75.          var1.setAuthenticationProperty("Authorization", var8);
  76.          return true;
  77.       } else {
  78.          return false;
  79.       }
  80.    }
  81.  
  82.    private String computeDigest(String var1, char[] var2, String var3, String var4, String var5, String var6, String var7) throws NoSuchAlgorithmException {
  83.       MessageDigest var8 = MessageDigest.getInstance(var7);
  84.       String var9 = var1 + ":" + var3 + ":";
  85.       String var10 = this.encode(var9, var2, var8);
  86.       String var11 = var4 + ":" + var5;
  87.       String var12 = this.encode(var11, (char[])null, var8);
  88.       String var13 = var10 + ":" + var6 + ":" + var12;
  89.       String var14 = this.encode(var13, (char[])null, var8);
  90.       return var14;
  91.    }
  92.  
  93.    private String encode(String var1, char[] var2, MessageDigest var3) {
  94.       var3.update(var1.getBytes());
  95.       if (var2 != null) {
  96.          byte[] var4 = new byte[var2.length];
  97.  
  98.          for(int var5 = 0; var5 < var2.length; ++var5) {
  99.             var4[var5] = (byte)var2[var5];
  100.          }
  101.  
  102.          var3.update(var4);
  103.          Arrays.fill(var4, (byte)0);
  104.       }
  105.  
  106.       byte[] var8 = var3.digest();
  107.       StringBuffer var9 = new StringBuffer(var8.length * 2);
  108.  
  109.       for(int var6 = 0; var6 < var8.length; ++var6) {
  110.          int var7 = var8[var6] >>> 4 & 15;
  111.          var9.append(charArray[var7]);
  112.          var7 = var8[var6] & 15;
  113.          var9.append(charArray[var7]);
  114.       }
  115.  
  116.       return var9.toString();
  117.    }
  118. }
  119.