question: private void checkQopSupport ( byte [ ] qopInChallenge , byte [ ] ciphersInChallenge ) throws IOException { String qopOptions ; if ( qopInChallenge == null ) { qopOptions = "auth" ; } else { qopOptions = new String ( qopInChallenge , encoding ) ; } String [ ] serverQopTokens = new String [ 3 ] ; byte [ ] serverQop = parseQop ( qopOptions , serverQopTokens , true ) ; byte serverAllQop = combineMasks ( serverQop ) ; switch ( findPreferredMask ( serverAllQop , qop ) ) { case 0 : throw new SaslException ( "DIGEST-MD5: No common protection " + "layer between client and server" ) ; case NO_PROTECTION : negotiatedQop = "auth" ; break ; case INTEGRITY_ONLY_PROTECTION : negotiatedQop = "auth-int" ; integrity = true ; rawSendSize = sendMaxBufSize - 16 ; break ; case PRIVACY_PROTECTION : negotiatedQop = "auth-conf" ; privacy = integrity = true ; rawSendSize = sendMaxBufSize - 26 ; checkStrengthSupport ( ciphersInChallenge ) ; break ; } if ( logger . isLoggable ( Level . FINE ) ) { logger . log ( Level . FINE , "DIGEST61:Raw send size: {0}" , new Integer ( rawSendSize ) ) ; } }
target:  Parses the 'qop' directive. If 'auth-conf' is specified by the client and offered as a QOP option by the server, then a check is client-side supported ciphers is performed.