1 17 package org.alfresco.filesys.server.auth.ntlm; 18 19 24 public class Type1NTLMMessage extends NTLMMessage 25 { 26 28 public static final int MinimalMessageLength = 16; 29 30 32 public static final int OffsetFlags = 12; 33 public static final int OffsetData = 16; 34 35 38 public Type1NTLMMessage() 39 { 40 super(); 41 } 42 43 48 public Type1NTLMMessage(byte[] buf) 49 { 50 super(buf, 0, buf.length); 51 } 52 53 60 public Type1NTLMMessage(byte[] buf, int offset, int len) 61 { 62 super(buf, offset, len); 63 } 64 65 70 public int getFlags() 71 { 72 return getIntValue(OffsetFlags); 73 } 74 75 80 public final boolean hasDomain() 81 { 82 if ( getLength() == MinimalMessageLength || hasFlag(NTLM.FlagDomainSupplied) == false) 83 return false; 84 return true; 85 } 86 87 92 public final String getDomain() 93 { 94 if ( hasFlag(NTLM.FlagDomainSupplied) == false) 95 return null; 96 97 return getStringValue(OffsetData, false); 98 } 99 100 105 public final boolean hasWorkstation() 106 { 107 if ( getLength() == MinimalMessageLength || hasFlag(NTLM.FlagWorkstationSupplied) == false) 108 return false; 109 return true; 110 } 111 112 117 public final String getWorkstation() 118 { 119 if ( hasFlag(NTLM.FlagWorkstationSupplied) == false) 120 return null; 121 122 int bufPos = OffsetData; 123 if ( hasFlag(NTLM.FlagDomainSupplied)) 124 bufPos += BufferHeaderLen; 125 126 return getStringValue(bufPos, false); 127 } 128 129 136 public final void buildType1(int flags, String domain, String workstation) 137 { 138 int bufPos = OffsetData; 139 int strOff = OffsetData; 140 141 if ( domain != null) 142 strOff += BufferHeaderLen; 143 if ( workstation != null) 144 strOff += BufferHeaderLen; 145 146 148 if ( domain != null) 149 { 150 strOff = setStringValue(bufPos, domain, strOff, false); 151 flags |= NTLM.FlagDomainSupplied; 152 bufPos += BufferHeaderLen; 153 } 154 155 157 if ( workstation != null) 158 { 159 strOff = setStringValue(bufPos, workstation, strOff, false); 160 flags |= NTLM.FlagWorkstationSupplied; 161 } 162 163 165 initializeHeader(NTLM.Type1, flags); 166 167 169 setLength(strOff); 170 } 171 172 177 protected void setFlags(int flags) 178 { 179 setIntValue( OffsetFlags, flags); 180 } 181 182 187 public String toString() 188 { 189 StringBuilder str = new StringBuilder (); 190 191 str.append("[Type1:0x"); 192 str.append(Integer.toHexString(getFlags())); 193 str.append(",Domain:"); 194 if ( hasDomain()) 195 str.append(getDomain()); 196 else 197 str.append("<NotSet>"); 198 str.append(",Wks:"); 199 200 if ( hasWorkstation()) 201 str.append(getWorkstation()); 202 else 203 str.append("<NotSet>"); 204 str.append("]"); 205 206 return str.toString(); 207 } 208 } 209 | Popular Tags |