v2client/src/main/java/com/yubico/client/v2/impl/YubicoClientImpl.java
public VerificationResponse verify(String otp) throws YubicoVerificationException, YubicoValidationFailure {
        if (!isValidOTPFormat(otp)) {
            throw new IllegalArgumentException("The OTP is not a valid format");
        }
        Map<String, String> requestMap = new TreeMap<String, String>();
        String nonce = UUID.randomUUID().toString().replaceAll("-", "");
        requestMap.put("nonce", nonce);
        requestMap.put("id", clientId.toString());
        requestMap.put("otp", otp);
        requestMap.put("timestamp", "1");
        if (sync != null) {
            requestMap.put("sl", sync.toString());
        }

        String queryString;
        try {
            queryString = toQueryString(requestMap);
        } catch (UnsupportedEncodingException e) {
            throw new YubicoVerificationException("Failed to encode parameter.", e);
        }

        if (key != null) {
            queryString = sign(queryString);
        }


        String[] wsapiUrls = this.getWsapiUrls();
        List<String> validationUrls = new ArrayList<String>();
        for (String wsapiUrl : wsapiUrls) {
            warnIfDeprecatedUrl(wsapiUrl);
            validationUrls.add(wsapiUrl + "?" + queryString);
        }

        VerificationResponse response = validationService.fetch(validationUrls, userAgent);

        if (key != null) {
            verifySignature(response);
        }

        // NONCE/OTP fields are not returned to the client when sending error codes.
        // If there is an error response, don't need to check them.
        if (!response.getStatus().isError()) {
            if (response.getOtp() == null || !otp.equals(response.getOtp())) {
                throw new YubicoValidationFailure("OTP mismatch in response, is there a man-in-the-middle?");
            }
            if (response.getNonce() == null || !nonce.equals(response.getNonce())) {
                throw new YubicoValidationFailure("Nonce mismatch in response, is there a man-in-the-middle?");
            }
        }
        return response;
    }
public VerificationResponse verify(String otp) throws YubicoVerificationException, YubicoValidationFailure {
        if (!isValidOTPFormat(otp)) {
            throw new IllegalArgumentException("The OTP is not a valid format");
        }
        Map<String, String> requestMap = new TreeMap<String, String>();
        String nonce = UUID.randomUUID().toString().replaceAll("-", "");
        requestMap.put("nonce", nonce);
        requestMap.put("id", clientId.toString());
        requestMap.put("otp", otp);
        requestMap.put("timestamp", "1");
        if (sync != null) {
            requestMap.put("sl", sync.toString());
        }

        String queryString;
        try {
            queryString = toQueryString(requestMap);
        } catch (UnsupportedEncodingException e) {
            throw new YubicoVerificationException("Failed to encode parameter.", e);
        }

        if (key != null) {
            queryString = sign(queryString);
        }


        String[] wsapiUrls = this.getWsapiUrls();
        List<String> validationUrls = new ArrayList<String>();
        for (String wsapiUrl : wsapiUrls) {
            warnIfDeprecatedUrl(wsapiUrl);
            validationUrls.add(wsapiUrl + "?" + queryString);
        }

        VerificationResponse response = validationService.fetch(validationUrls, userAgent);

        if (key != null) {
            verifySignature(response);
        }

        // NONCE/OTP fields are not returned to the client when sending error codes.
        // If there is an error response, don't need to check them.
        if (!response.getStatus().isError()) {
            if (response.getOtp() == null || !otp.equals(response.getOtp())) {
                throw new YubicoValidationFailure("OTP mismatch in response, is there a man-in-the-middle?");
            }
            if (response.getNonce() == null || !nonce.equals(response.getNonce())) {
                throw new YubicoValidationFailure("Nonce mismatch in response, is there a man-in-the-middle?");
            }
        }
        return response;
    }
public VerificationResponse verify ( String otp ) throws YubicoVerificationException , YubicoValidationFailure { if ( ! isValidOTPFormat ( otp ) ) { throw new IllegalArgumentException ( "The OTP is not a valid format" ) ; } Map < String , String > requestMap = new TreeMap < String , String > ( ) ; String nonce = UUID . randomUUID ( ) . toString ( ) . replaceAll ( "-" , "" ) ; requestMap . put ( "nonce" , nonce ) ; requestMap . put ( "id" , clientId . toString ( ) ) ; requestMap . put ( "otp" , otp ) ; requestMap . put ( "timestamp" , "1" ) ; if ( sync != null ) { requestMap . put ( "sl" , sync . toString ( ) ) ; } String queryString ; try { queryString = toQueryString ( requestMap ) ; } catch ( UnsupportedEncodingException e ) { throw new YubicoVerificationException ( "Failed to encode parameter." , e ) ; } if ( key != null ) { queryString = sign ( queryString ) ; } String [ ] wsapiUrls = this . getWsapiUrls ( ) ; List < String > validationUrls = new ArrayList < String > ( ) ; for ( String wsapiUrl : wsapiUrls ) { warnIfDeprecatedUrl ( wsapiUrl ) ; validationUrls . add ( wsapiUrl + "?" + queryString ) ; } VerificationResponse response = validationService . fetch ( validationUrls , userAgent ) ; if ( key != null ) { verifySignature ( response ) ; } // NONCE/OTP fields are not returned to the client when sending error codes. // If there is an error response, don't need to check them. if ( ! response . getStatus ( ) . isError ( ) ) { if ( response . getOtp ( ) == null || ! otp . equals ( response . getOtp ( ) ) ) { throw new YubicoValidationFailure ( "OTP mismatch in response, is there a man-in-the-middle?" ) ; } if ( response . getNonce ( ) == null || ! nonce . equals ( response . getNonce ( ) ) ) { throw new YubicoValidationFailure ( "Nonce mismatch in response, is there a man-in-the-middle?" ) ; } } return response ; }
{@inheritDoc}
{