log.debug("Type 2 returned. Setting next token.");
ntlmCredentials.setNextToken(type2.toByteArray());
return false;
case 3:
log.debug("Type 3 received");
final Type3Message type3 = new Type3Message(src);
final byte[] lmResponse = type3.getLMResponse() == null
? new byte[0] : type3.getLMResponse();
byte[] ntResponse = type3.getNTResponse() == null
? new byte[0] : type3.getNTResponse();
final NtlmPasswordAuthentication ntlm = new NtlmPasswordAuthentication(
type3.getDomain(), type3.getUser(), challenge,
lmResponse, ntResponse);
log.debug("Trying to authenticate " + type3.getUser()
+ " with domain controller");
try {
SmbSession.logon(dc, ntlm);
ntlmCredentials.setPrincipal(new SimplePrincipal(type3
.getUser()));
return true;
} catch (final SmbAuthException sae) {
log.debug("Authentication failed", sae);
return false;