byte[] decryptAndVerifySignedMessage( final byte[] inMessage ) throws NTLMEngineException
        {
            final byte[] signature = new byte[16];
            System.arraycopy( inMessage, 0, signature, 0, signature.length );
            final byte[] encryptedMessage = new byte[inMessage.length - 16];
            System.arraycopy( inMessage, 16, encryptedMessage, 0, encryptedMessage.length );
            final byte[] cleartextMessage = decrypt( encryptedMessage );
            if ( !validateSignature( signature, cleartextMessage ) )
            {
                throw new NTLMEngineException( "Wrong signature" );
            }
            advanceMessageSequence();
            return cleartextMessage;
        }
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 challenge).
@param challenge
           The server challenge from the Type 2 message.

@return The response (either NTLMv2 or LMv2, depending on the client
        data).
httpclient5/src/main/java/org/apache/hc/client5/http/impl/auth/NTLMEngineImpl.java