Home | History | Annotate | Download | only in header
      1 /*
      2 * Conditions Of Use
      3 *
      4 * This software was developed by employees of the National Institute of
      5 * Standards and Technology (NIST), an agency of the Federal Government.
      6 * Pursuant to title 15 Untied States Code Section 105, works of NIST
      7 * employees are not subject to copyright protection in the United States
      8 * and are considered to be in the public domain.  As a result, a formal
      9 * license is not needed to use the software.
     10 *
     11 * This software is provided by NIST as a service and is expressly
     12 * provided "AS IS."  NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED
     13 * OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF
     14 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT
     15 * AND DATA ACCURACY.  NIST does not warrant or make any representations
     16 * regarding the use of the software or the results thereof, including but
     17 * not limited to the correctness, accuracy, reliability or usefulness of
     18 * the software.
     19 *
     20 * Permission to use this software is contingent upon your acceptance
     21 * of the terms of this agreement
     22 *
     23 * .
     24 *
     25 */
     26 /*******************************************************************************
     27 * Product of NIST/ITL Advanced Networking Technologies Division (ANTD).        *
     28 *******************************************************************************/
     29 package gov.nist.javax.sip.header;
     30 
     31 import gov.nist.core.*;
     32 
     33 /**
     34  * Challenge part of the Auth header. This is only used by the parser interface
     35  *
     36  * @author M. Ranganathan    <br/>
     37  * @version 1.2 $Revision: 1.7 $ $Date: 2009/07/17 18:57:28 $
     38  * @since 1.1
     39  *
     40 */
     41 public class Challenge extends SIPObject {
     42 
     43     /**
     44      * Comment for <code>serialVersionUID</code>
     45      */
     46     private static final long serialVersionUID = 5944455875924336L;
     47 
     48     private static String DOMAIN = ParameterNames.DOMAIN;
     49     private static String REALM = ParameterNames.REALM;
     50     private static String OPAQUE = ParameterNames.OPAQUE;
     51     private static String ALGORITHM = ParameterNames.ALGORITHM;
     52     private static String QOP = ParameterNames.QOP;
     53     private static String STALE = ParameterNames.STALE;
     54     private static String SIGNATURE = ParameterNames.SIGNATURE;
     55     private static String RESPONSE = ParameterNames.RESPONSE;
     56     private static String SIGNED_BY = ParameterNames.SIGNED_BY;
     57     private static String URI = ParameterNames.URI;
     58 
     59     /**
     60      * scheme field
     61      */
     62     protected String scheme;
     63 
     64     /**
     65      * authParms list
     66      */
     67     protected NameValueList authParams;
     68 
     69     /**
     70      * Default constructor
     71      */
     72     public Challenge() {
     73         authParams = new NameValueList();
     74         authParams.setSeparator(COMMA);
     75     }
     76 
     77     /**
     78      * Encode the challenge in canonical form.
     79      * @return String
     80      */
     81     public String encode() {
     82         return new StringBuffer(scheme)
     83             .append(SP)
     84             .append(authParams.encode())
     85             .toString();
     86     }
     87 
     88     /**
     89      * get the scheme field
     90      * @return String
     91      */
     92     public String getScheme() {
     93         return scheme;
     94     }
     95 
     96     /**
     97      * get AuthParms list.
     98      * @return NameValueList
     99      */
    100     public NameValueList getAuthParams() {
    101         return authParams;
    102     }
    103 
    104     /**
    105      * get the domain
    106      * @return String
    107      */
    108     public String getDomain() {
    109         return (String) authParams.getValue(DOMAIN);
    110     }
    111 
    112     /**
    113      * get the URI field
    114      * @return String
    115      */
    116     public String getURI() {
    117         return (String) authParams.getValue(URI);
    118     }
    119 
    120     /**
    121      * get the Opaque field
    122      * @return String
    123      */
    124     public String getOpaque() {
    125         return (String) authParams.getValue(OPAQUE);
    126     }
    127 
    128     /**
    129      * get QOP value
    130      * @return String
    131      */
    132     public String getQOP() {
    133         return (String) authParams.getValue(QOP);
    134     }
    135 
    136     /**
    137      * get the Algorithm value.
    138      * @return String
    139      */
    140     public String getAlgorithm() {
    141         return (String) authParams.getValue(ALGORITHM);
    142     }
    143 
    144     /**
    145      * get the State value.
    146      * @return String
    147      */
    148     public String getStale() {
    149         return (String) authParams.getValue(STALE);
    150     }
    151 
    152     /**
    153      * get the Signature value.
    154      * @return String
    155      */
    156     public String getSignature() {
    157         return (String) authParams.getValue(SIGNATURE);
    158     }
    159 
    160     /**
    161      * get the signedBy value.
    162      * @return String
    163      */
    164     public String getSignedBy() {
    165         return (String) authParams.getValue(SIGNED_BY);
    166     }
    167 
    168     /**
    169      * get the Response value.
    170      * @return String
    171      */
    172     public String getResponse() {
    173         return (String) authParams.getValue(RESPONSE);
    174     }
    175 
    176     /**
    177      * get the realm value.
    178      * @return String.
    179      */
    180     public String getRealm() {
    181         return (String) authParams.getValue(REALM);
    182     }
    183 
    184     /**
    185      * get the specified parameter
    186      * @param name String to set
    187      * @return String to set
    188      */
    189     public String getParameter(String name) {
    190         return (String) authParams.getValue(name);
    191     }
    192 
    193     /**
    194      * boolean function
    195      * @param name String to set
    196      * @return true if this header has the specified parameter, false otherwise.
    197      */
    198     public boolean hasParameter(String name) {
    199         return authParams.getNameValue(name) != null;
    200     }
    201 
    202     /**
    203      * Boolean function
    204      * @return true if this header has some parameters.
    205      */
    206     public boolean hasParameters() {
    207         return authParams.size() != 0;
    208     }
    209 
    210     /**
    211      * delete the specified parameter
    212      * @param name String
    213      * @return true if the specified parameter has been removed, false
    214      * otherwise.
    215      */
    216     public boolean removeParameter(String name) {
    217         return authParams.delete(name);
    218     }
    219 
    220     /**
    221      * remove all parameters
    222      */
    223     public void removeParameters() {
    224         authParams = new NameValueList();
    225     }
    226 
    227     /**
    228      * set the specified parameter
    229      * @param nv NameValue to set
    230      */
    231     public void setParameter(NameValue nv) {
    232         authParams.set(nv);
    233     }
    234 
    235     /**
    236      * Set the scheme member
    237      * @param s String to set
    238      */
    239     public void setScheme(String s) {
    240         scheme = s;
    241     }
    242 
    243     /**
    244      * Set the authParams member
    245      * @param a NameValueList to set
    246      */
    247     public void setAuthParams(NameValueList a) {
    248         authParams = a;
    249     }
    250 
    251     public Object clone() {
    252         Challenge retval = (Challenge) super.clone();
    253         if (this.authParams != null)
    254             retval.authParams = (NameValueList) this.authParams.clone();
    255         return retval;
    256     }
    257 }
    258