001: /*
002: *
003: *
004: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: */
026:
027: package javax.microedition.securityservice;
028:
029: /**
030: *
031: * This class is used to identify error conditions
032: * detected while signing messages.
033: * Thrown by the <code>CMSMessageSignatureService</code> and
034: * <code>UserCredentialManager</code>
035: * classes.
036: */
037: final public class CMSMessageSignatureServiceException extends
038: Exception {
039: /**
040: * Error code returned if a cyptographic error occured.
041: */
042: public static final byte CRYPTO_FAILURE = 0x01;
043:
044: /**
045: * Error code returned if an error occurs when formatting a
046: * result.
047: */
048: public static final byte CRYPTO_FORMAT_ERROR = 0x02;
049:
050: /**
051: * Error code returned if detached signatures
052: * are not supported.
053: */
054: public static final byte CRYPTO_NO_DETACHED_SIG = 0x03;
055:
056: /**
057: * Error code returned if opaque signatures
058: * are not supported.
059: */
060: public static final byte CRYPTO_NO_OPAQUE_SIG = 0x04;
061:
062: /**
063: * Error code returned if security element is busy.
064: */
065: public static final byte SE_BUSY = 0x05;
066:
067: /**
068: * Error code returned if an operation involving the security
069: * element fails.
070: */
071: public static final byte SE_FAILURE = 0x06;
072:
073: /**
074: * Error code returned if a cryptographic operation failed in
075: * a security element.
076: */
077: public static final byte SE_CRYPTO_FAILURE = 0x07;
078:
079: /**
080: * Error code returned if a certificate is not available
081: * on the device for the selected public key.
082: */
083: public static final byte CRYPTO_NO_CERTIFICATE = 0x08;
084:
085: /**
086: * The reason code for exception.
087: */
088: private byte reasonCode;
089:
090: /**
091: * Construct an exception with specific reason code.
092: * @param code the code for the error condition
093: */
094: public CMSMessageSignatureServiceException(byte code) {
095: super (getMessageForReason(code));
096: reasonCode = code;
097: }
098:
099: /**
100: * Gets the reason code.
101: * @return the reason code for the error detected
102: */
103: public byte getReason() {
104: return reasonCode;
105: }
106:
107: /**
108: * Gets the exception message for a reason.
109: *
110: * @param reason reason code
111: *
112: * @return exception message
113: */
114: static String getMessageForReason(int reason) {
115: switch (reason) {
116: case CRYPTO_FAILURE:
117: return "Failed to perform cryptographic function";
118:
119: case CRYPTO_FORMAT_ERROR:
120: return "Formatting error during cryptographic processing";
121:
122: case CRYPTO_NO_DETACHED_SIG:
123: return "Detached signatures not supported";
124:
125: case CRYPTO_NO_OPAQUE_SIG:
126: return "Opaque signatures not supported";
127:
128: case SE_BUSY:
129: return "Security element is busy";
130:
131: case SE_FAILURE:
132: return "Security element failure";
133:
134: case SE_CRYPTO_FAILURE:
135: return "Security element failed cryptographic request";
136:
137: case CRYPTO_NO_CERTIFICATE:
138: return "Certificate was not found for cryptographic operation";
139: }
140:
141: return "Unknown reason (" + reason + ")";
142: }
143:
144: }
|