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*******************************************************************************/
29package gov.nist.javax.sip.header;
30import gov.nist.core.*;
31
32/**
33 * Credentials  that are used in authentication and authorization headers.
34 * @author M. Ranganathan
35 * @version 1.2 $Revision: 1.7 $ $Date: 2009/07/17 18:57:30 $
36 * @since 1.1
37 */
38public class Credentials extends SIPObject {
39
40    /**
41     * Comment for <code>serialVersionUID</code>
42     */
43    private static final long serialVersionUID = -6335592791505451524L;
44
45    private static String DOMAIN = ParameterNames.DOMAIN;
46    private static String REALM = ParameterNames.REALM;
47    private static String OPAQUE = ParameterNames.OPAQUE;
48    private static String RESPONSE = ParameterNames.RESPONSE;
49    private static String URI = ParameterNames.URI;
50    private static String NONCE = ParameterNames.NONCE;
51    private static String CNONCE = ParameterNames.CNONCE;
52    private static String USERNAME = ParameterNames.USERNAME;
53
54    protected String scheme;
55
56    /**
57     * parameters list.
58     */
59    protected NameValueList parameters;
60
61    /**
62     * Default constructor
63     */
64    public Credentials() {
65        parameters = new NameValueList();
66        parameters.setSeparator(COMMA);
67    }
68
69    /**
70     * get the parameters list.
71     * @return NameValueList
72     */
73    public NameValueList getCredentials() {
74        return parameters;
75    }
76
77    /**
78     * get the scheme field.
79     * @return String.
80     */
81    public String getScheme() {
82        return scheme;
83    }
84
85    /**
86     * Set the scheme member
87     * @param s String to set
88     */
89    public void setScheme(String s) {
90        scheme = s;
91    }
92
93    /**
94     * Set the parameters member
95     * @param c NameValueList to set.
96     */
97    public void setCredentials(NameValueList c) {
98        parameters = c;
99    }
100
101    public String encode() {
102        String retval = scheme;
103        if (!parameters.isEmpty()) {
104            retval += SP + parameters.encode();
105        }
106        return retval;
107    }
108
109    /*public void setCredential(NameValue nameValue) {
110        if (nameValue.getName().compareToIgnoreCase(URI) == 0)
111            nameValue.setQuotedValue();
112        else if (nameValue.getName().compareToIgnoreCase(NONCE) == 0)
113            nameValue.setQuotedValue();
114        else if (nameValue.getName().compareToIgnoreCase(REALM) == 0)
115            nameValue.setQuotedValue();
116        else if (nameValue.getName().compareToIgnoreCase(CNONCE) == 0)
117            nameValue.setQuotedValue();
118        else if (nameValue.getName().compareToIgnoreCase(RESPONSE) == 0)
119            nameValue.setQuotedValue();
120        else if (nameValue.getName().compareToIgnoreCase(OPAQUE) == 0)
121            nameValue.setQuotedValue();
122        else if (nameValue.getName().compareToIgnoreCase(USERNAME) == 0)
123            nameValue.setQuotedValue();
124        else if (nameValue.getName().compareToIgnoreCase(DOMAIN) == 0)
125            nameValue.setQuotedValue();
126        parameters.set(nameValue);
127    }*/
128
129    public Object clone() {
130        Credentials retval = (Credentials) super.clone();
131        if (this.parameters != null)
132            retval.parameters = (NameValueList) this.parameters.clone();
133        return retval;
134    }
135}
136