001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package org.ietf.jgss;
019:
020: public class GSSException extends Exception {
021:
022: private static final long serialVersionUID = -2706218945227726672L;
023:
024: public static final int BAD_BINDINGS = 1;
025:
026: public static final int BAD_MECH = 2;
027:
028: public static final int BAD_MIC = 6;
029:
030: public static final int BAD_NAME = 3;
031:
032: public static final int BAD_NAMETYPE = 4;
033:
034: public static final int BAD_QOP = 14;
035:
036: public static final int BAD_STATUS = 5;
037:
038: public static final int CONTEXT_EXPIRED = 7;
039:
040: public static final int CREDENTIALS_EXPIRED = 8;
041:
042: public static final int DEFECTIVE_CREDENTIAL = 9;
043:
044: public static final int DEFECTIVE_TOKEN = 10;
045:
046: public static final int DUPLICATE_ELEMENT = 17;
047:
048: public static final int DUPLICATE_TOKEN = 19;
049:
050: public static final int FAILURE = 11;
051:
052: public static final int GAP_TOKEN = 22;
053:
054: public static final int NAME_NOT_MN = 18;
055:
056: public static final int NO_CONTEXT = 12;
057:
058: public static final int NO_CRED = 13;
059:
060: public static final int OLD_TOKEN = 20;
061:
062: public static final int UNAUTHORIZED = 15;
063:
064: public static final int UNAVAILABLE = 16;
065:
066: public static final int UNSEQ_TOKEN = 21;
067:
068: // error messages
069: private static final String[] errorMessages = {
070: "BAD BINDINGS", "BAD MECH", //$NON-NLS-1$ //$NON-NLS-2$
071: "BAD NAME", "BAD NAMETYPE", "BAD STATUS", "BAD MIC", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
072: "CONTEXT EXPIRED", "CREDENTIALS EXPIRED", "DEFECTIVE CREDENTIAL", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
073: "DEFECTIVE TOKEN", "FAILURE", "NO CONTEXT", "NO CRED", "BAD QOP", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
074: "UNAUTHORIZED", "UNAVAILABLE", "DUPLICATE ELEMENT", "NAME NOT MN", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
075: "DUPLICATE TOKEN", "OLD TOKEN", "UNSEQ TOKEN", "GAP TOKEN" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
076:
077: // major code
078: private int major = FAILURE;
079:
080: // minor code
081: private int minor;
082:
083: // minor string
084: private String minorMessage;
085:
086: // major string
087: private String majorString;
088:
089: public GSSException(int majorCode) {
090: super ();
091: if (majorCode > 0 && majorCode <= 22) {
092: this .major = majorCode;
093: }
094: this .majorString = errorMessages[major - 1];
095: }
096:
097: public GSSException(int majorCode, int minorCode, String minorString) {
098: this (majorCode);
099: this .minor = minorCode;
100: this .minorMessage = minorString;
101: }
102:
103: public int getMajor() {
104: return major;
105: }
106:
107: public String getMajorString() {
108: return majorString;
109: }
110:
111: public int getMinor() {
112: return minor;
113: }
114:
115: public String getMinorString() {
116: if (minor == 0) {
117: return null;
118: }
119: return minorMessage;
120: }
121:
122: @Override
123: public String getMessage() {
124: String tmp = getMinorString();
125: String tmp2 = getMajorString();
126: if (tmp == null) {
127: return tmp2;
128: }
129: return tmp2 + " (" + tmp + ')'; //$NON-NLS-1$
130: }
131:
132: public void setMinor(int minorCode, String minorString) {
133: this .minor = minorCode;
134: this .minorMessage = minorString;
135: }
136:
137: @Override
138: public String toString() {
139: return "GSSException: " + getMessage(); //$NON-NLS-1$
140: }
141: }
|