Shuyi Chen | d7955ce | 2013-05-22 14:51:55 -0700 | [diff] [blame] | 1 | /* ************************************************************************** |
| 2 | * $OpenLDAP: /com/novell/sasl/client/ResponseAuth.java,v 1.3 2005/01/17 15:00:54 sunilk Exp $ |
| 3 | * |
| 4 | * Copyright (C) 2002 Novell, Inc. All Rights Reserved. |
| 5 | * |
| 6 | * THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND |
| 7 | * TREATIES. USE, MODIFICATION, AND REDISTRIBUTION OF THIS WORK IS SUBJECT |
| 8 | * TO VERSION 2.0.1 OF THE OPENLDAP PUBLIC LICENSE, A COPY OF WHICH IS |
| 9 | * AVAILABLE AT HTTP://WWW.OPENLDAP.ORG/LICENSE.HTML OR IN THE FILE "LICENSE" |
| 10 | * IN THE TOP-LEVEL DIRECTORY OF THE DISTRIBUTION. ANY USE OR EXPLOITATION |
| 11 | * OF THIS WORK OTHER THAN AS AUTHORIZED IN VERSION 2.0.1 OF THE OPENLDAP |
| 12 | * PUBLIC LICENSE, OR OTHER PRIOR WRITTEN CONSENT FROM NOVELL, COULD SUBJECT |
| 13 | * THE PERPETRATOR TO CRIMINAL AND CIVIL LIABILITY. |
| 14 | ******************************************************************************/ |
| 15 | package com.novell.sasl.client; |
| 16 | |
| 17 | import java.util.*; |
| 18 | import org.apache.harmony.javax.security.sasl.*; |
| 19 | |
| 20 | /** |
| 21 | * Implements the ResponseAuth class used by the DigestMD5SaslClient mechanism |
| 22 | */ |
| 23 | class ResponseAuth |
| 24 | { |
| 25 | |
| 26 | private String m_responseValue; |
| 27 | |
| 28 | ResponseAuth( |
| 29 | byte[] responseAuth) |
| 30 | throws SaslException |
| 31 | { |
| 32 | m_responseValue = null; |
| 33 | |
| 34 | DirectiveList dirList = new DirectiveList(responseAuth); |
| 35 | try |
| 36 | { |
| 37 | dirList.parseDirectives(); |
| 38 | checkSemantics(dirList); |
| 39 | } |
| 40 | catch (SaslException e) |
| 41 | { |
| 42 | } |
| 43 | } |
| 44 | |
| 45 | /** |
| 46 | * Checks the semantics of the directives in the directive list as parsed |
| 47 | * from the digest challenge byte array. |
| 48 | * |
| 49 | * @param dirList the list of directives parsed from the digest challenge |
| 50 | * |
| 51 | * @exception SaslException If a semantic error occurs |
| 52 | */ |
| 53 | void checkSemantics( |
| 54 | DirectiveList dirList) throws SaslException |
| 55 | { |
| 56 | Iterator directives = dirList.getIterator(); |
| 57 | ParsedDirective directive; |
| 58 | String name; |
| 59 | |
| 60 | while (directives.hasNext()) |
| 61 | { |
| 62 | directive = (ParsedDirective)directives.next(); |
| 63 | name = directive.getName(); |
| 64 | if (name.equals("rspauth")) |
| 65 | m_responseValue = directive.getValue(); |
| 66 | } |
| 67 | |
| 68 | /* post semantic check */ |
| 69 | if (m_responseValue == null) |
| 70 | throw new SaslException("Missing response-auth directive."); |
| 71 | } |
| 72 | |
| 73 | /** |
| 74 | * returns the ResponseValue |
| 75 | * |
| 76 | * @return the ResponseValue as a String. |
| 77 | */ |
| 78 | public String getResponseValue() |
| 79 | { |
| 80 | return m_responseValue; |
| 81 | } |
| 82 | } |
| 83 | |