blob: 0aef955d055460e5184ea6b5f084ba5634debd9d [file] [log] [blame]
Shuyi Chend7955ce2013-05-22 14:51:55 -07001/* **************************************************************************
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 ******************************************************************************/
15package com.novell.sasl.client;
16
17import java.util.*;
18import org.apache.harmony.javax.security.sasl.*;
19
20/**
21 * Implements the ResponseAuth class used by the DigestMD5SaslClient mechanism
22 */
23class 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