code: private static byte[] lmv2Response(byte[] hash, byte[] clientData,
              byte[] challenge) throws Exception {
          byte[] data = new byte[challenge.length + clientData.length];
          System.arraycopy(challenge, 0, data, 0, challenge.length);
          System.arraycopy(clientData, 0, data, challenge.length,
                  clientData.length);
          byte[] mac = hmacMD5(data, hash);
          byte[] lmv2Response = new byte[mac.length + clientData.length];
          System.arraycopy(mac, 0, lmv2Response, 0, mac.length);
          System.arraycopy(clientData, 0, lmv2Response, mac.length,
                  clientData.length);
          return lmv2Response;
      }
docs: Creates the LMv2 Response from the given hash, client data, and
  Type 2 challenge.
  
  @param hash The NTLMv2 Hash.
  @param clientData The client data (blob or client nonce).
  @param challenge The server challenge from the Type 2 message.
  
  @return The response (either NTLMv2 or LMv2, depending on the
  client data).