| /* ************************************************************************** |
| * $OpenLDAP: /com/novell/sasl/client/ResponseAuth.java,v 1.3 2005/01/17 15:00:54 sunilk Exp $ |
| * |
| * Copyright (C) 2002 Novell, Inc. All Rights Reserved. |
| * |
| * THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND |
| * TREATIES. USE, MODIFICATION, AND REDISTRIBUTION OF THIS WORK IS SUBJECT |
| * TO VERSION 2.0.1 OF THE OPENLDAP PUBLIC LICENSE, A COPY OF WHICH IS |
| * AVAILABLE AT HTTP://WWW.OPENLDAP.ORG/LICENSE.HTML OR IN THE FILE "LICENSE" |
| * IN THE TOP-LEVEL DIRECTORY OF THE DISTRIBUTION. ANY USE OR EXPLOITATION |
| * OF THIS WORK OTHER THAN AS AUTHORIZED IN VERSION 2.0.1 OF THE OPENLDAP |
| * PUBLIC LICENSE, OR OTHER PRIOR WRITTEN CONSENT FROM NOVELL, COULD SUBJECT |
| * THE PERPETRATOR TO CRIMINAL AND CIVIL LIABILITY. |
| ******************************************************************************/ |
| package com.novell.sasl.client; |
| |
| import java.util.*; |
| import org.apache.harmony.javax.security.sasl.*; |
| |
| /** |
| * Implements the ResponseAuth class used by the DigestMD5SaslClient mechanism |
| */ |
| class ResponseAuth |
| { |
| |
| private String m_responseValue; |
| |
| ResponseAuth( |
| byte[] responseAuth) |
| throws SaslException |
| { |
| m_responseValue = null; |
| |
| DirectiveList dirList = new DirectiveList(responseAuth); |
| try |
| { |
| dirList.parseDirectives(); |
| checkSemantics(dirList); |
| } |
| catch (SaslException e) |
| { |
| } |
| } |
| |
| /** |
| * Checks the semantics of the directives in the directive list as parsed |
| * from the digest challenge byte array. |
| * |
| * @param dirList the list of directives parsed from the digest challenge |
| * |
| * @exception SaslException If a semantic error occurs |
| */ |
| void checkSemantics( |
| DirectiveList dirList) throws SaslException |
| { |
| Iterator directives = dirList.getIterator(); |
| ParsedDirective directive; |
| String name; |
| |
| while (directives.hasNext()) |
| { |
| directive = (ParsedDirective)directives.next(); |
| name = directive.getName(); |
| if (name.equals("rspauth")) |
| m_responseValue = directive.getValue(); |
| } |
| |
| /* post semantic check */ |
| if (m_responseValue == null) |
| throw new SaslException("Missing response-auth directive."); |
| } |
| |
| /** |
| * returns the ResponseValue |
| * |
| * @return the ResponseValue as a String. |
| */ |
| public String getResponseValue() |
| { |
| return m_responseValue; |
| } |
| } |
| |