summaryrefslogtreecommitdiffstats
path: root/pki/base/util/src/com/netscape/cmsutil/ocsp/OCSPResponseStatus.java
blob: 5eff86c44f6f51492f7bb9afdd58380ea80edfb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
// --- BEGIN COPYRIGHT BLOCK ---
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; version 2 of the License.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
//
// (C) 2007 Red Hat, Inc.
// All rights reserved.
// --- END COPYRIGHT BLOCK ---
package com.netscape.cmsutil.ocsp;

import org.mozilla.jss.asn1.*;
import java.io.*;

/**
 * RFC 2560:
 *
 * <pre>
 * OCSPResponseStatus ::= ENUMERATED {
 *     successful            (0),  --Response has valid confirmations
 *     malformedRequest      (1),  --Illegal confirmation request
 *     internalError         (2),  --Internal error in issuer
 *     tryLater              (3),  --Try again later
 *                                 --(4) is not used
 *     sigRequired           (5),  --Must sign the request
 *     unauthorized          (6)   --Request unauthorized
 * }
 * </pre>
 *
 * @version $Revision$ $Date$
 */
public class OCSPResponseStatus implements ASN1Value
{
	///////////////////////////////////////////////////////////////////////
	// Members and member access
	///////////////////////////////////////////////////////////////////////
	public final static OCSPResponseStatus SUCCESSFUL = 
		new OCSPResponseStatus(0);
	public final static OCSPResponseStatus MALFORMED_REQUEST =
		new OCSPResponseStatus(1);
	public final static OCSPResponseStatus INTERNAL_ERROR =
		new OCSPResponseStatus(2);
	public final static OCSPResponseStatus TRY_LATER =
		new OCSPResponseStatus(3);
	public final static OCSPResponseStatus SIG_REQUIRED =
		new OCSPResponseStatus(5);
	public final static OCSPResponseStatus UNAUTHORIZED = 
		new OCSPResponseStatus(6);

	private ENUMERATED responseStatus;

	public long getValue()
	{
		return responseStatus.getValue();
	}

	///////////////////////////////////////////////////////////////////////
	// Constructors
	///////////////////////////////////////////////////////////////////////
	private OCSPResponseStatus() { }

	public OCSPResponseStatus(long val)
	{
		responseStatus = new ENUMERATED(val);
	}

	///////////////////////////////////////////////////////////////////////
	// encoding/decoding
	///////////////////////////////////////////////////////////////////////

	private static final Tag TAG = ENUMERATED.TAG;

	public Tag getTag()
	{
		return TAG;
	}

	public void encode(OutputStream ostream) throws IOException
	{
		encode(TAG, ostream);
	}

	public void encode(Tag implicitTag, OutputStream ostream)
		throws IOException
	{
		responseStatus.encode(implicitTag, ostream);
	}

	private static final Template templateInstance = new Template();

	public static Template getTemplate() {
		return templateInstance;
	}

	/**
	 * A Template for decoding an <code>OCSPResponseStatus</code>.
	 */
	public static class Template implements ASN1Template
	{
		public boolean tagMatch(Tag tag)
		{
			return TAG.equals(tag);
		}

		public ASN1Value decode(InputStream istream)
			throws InvalidBERException, IOException
		{
			return decode(TAG, istream);
		}

		public ASN1Value decode(Tag implicitTag, InputStream istream)
			throws InvalidBERException, IOException
		{
			ENUMERATED.Template enumt = new ENUMERATED.Template(); 
			ENUMERATED enum1 = (ENUMERATED) enumt.decode(implicitTag, istream);

			return new OCSPResponseStatus(enum1.getValue());
		}
	}
}