From 890c3c0d321c3b59ec1224d4630b3f2401ef94e7 Mon Sep 17 00:00:00 2001 From: tkellner Date: Tue, 7 Jan 2014 17:28:54 +0000 Subject: Add custom PC/SC library for MacOS X from OpeneCard project git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@1276 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- .../java/org/openecard/scio/osx/PCSCException.java | 178 +++++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 smcc/src/main/java/org/openecard/scio/osx/PCSCException.java (limited to 'smcc/src/main/java/org/openecard/scio/osx/PCSCException.java') diff --git a/smcc/src/main/java/org/openecard/scio/osx/PCSCException.java b/smcc/src/main/java/org/openecard/scio/osx/PCSCException.java new file mode 100644 index 00000000..fc25be1d --- /dev/null +++ b/smcc/src/main/java/org/openecard/scio/osx/PCSCException.java @@ -0,0 +1,178 @@ +/* + * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code 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 + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package org.openecard.scio.osx; + +import static org.openecard.scio.osx.PCSC.SCARD_E_CANCELLED; +import static org.openecard.scio.osx.PCSC.SCARD_E_CANT_DISPOSE; +import static org.openecard.scio.osx.PCSC.SCARD_E_CARD_UNSUPPORTED; +import static org.openecard.scio.osx.PCSC.SCARD_E_DUPLICATE_READER; +import static org.openecard.scio.osx.PCSC.SCARD_E_INSUFFICIENT_BUFFER; +import static org.openecard.scio.osx.PCSC.SCARD_E_INVALID_ATR; +import static org.openecard.scio.osx.PCSC.SCARD_E_INVALID_HANDLE; +import static org.openecard.scio.osx.PCSC.SCARD_E_INVALID_PARAMETER; +import static org.openecard.scio.osx.PCSC.SCARD_E_INVALID_TARGET; +import static org.openecard.scio.osx.PCSC.SCARD_E_INVALID_VALUE; +import static org.openecard.scio.osx.PCSC.SCARD_E_NOT_READY; +import static org.openecard.scio.osx.PCSC.SCARD_E_NOT_TRANSACTED; +import static org.openecard.scio.osx.PCSC.SCARD_E_NO_MEMORY; +import static org.openecard.scio.osx.PCSC.SCARD_E_NO_READERS_AVAILABLE; +import static org.openecard.scio.osx.PCSC.SCARD_E_NO_SERVICE; +import static org.openecard.scio.osx.PCSC.SCARD_E_NO_SMARTCARD; +import static org.openecard.scio.osx.PCSC.SCARD_E_PCI_TOO_SMALL; +import static org.openecard.scio.osx.PCSC.SCARD_E_PROTO_MISMATCH; +import static org.openecard.scio.osx.PCSC.SCARD_E_READER_UNAVAILABLE; +import static org.openecard.scio.osx.PCSC.SCARD_E_READER_UNSUPPORTED; +import static org.openecard.scio.osx.PCSC.SCARD_E_SERVICE_STOPPED; +import static org.openecard.scio.osx.PCSC.SCARD_E_SHARING_VIOLATION; +import static org.openecard.scio.osx.PCSC.SCARD_E_SYSTEM_CANCELLED; +import static org.openecard.scio.osx.PCSC.SCARD_E_TIMEOUT; +import static org.openecard.scio.osx.PCSC.SCARD_E_UNKNOWN_CARD; +import static org.openecard.scio.osx.PCSC.SCARD_E_UNKNOWN_READER; +import static org.openecard.scio.osx.PCSC.SCARD_E_UNSUPPORTED_FEATURE; +import static org.openecard.scio.osx.PCSC.SCARD_F_COMM_ERROR; +import static org.openecard.scio.osx.PCSC.SCARD_F_INTERNAL_ERROR; +import static org.openecard.scio.osx.PCSC.SCARD_F_UNKNOWN_ERROR; +import static org.openecard.scio.osx.PCSC.SCARD_F_WAITED_TOO_LONG; +import static org.openecard.scio.osx.PCSC.SCARD_S_SUCCESS; +import static org.openecard.scio.osx.PCSC.SCARD_W_INSERTED_CARD; +import static org.openecard.scio.osx.PCSC.SCARD_W_REMOVED_CARD; +import static org.openecard.scio.osx.PCSC.SCARD_W_RESET_CARD; +import static org.openecard.scio.osx.PCSC.SCARD_W_UNPOWERED_CARD; +import static org.openecard.scio.osx.PCSC.SCARD_W_UNRESPONSIVE_CARD; +import static org.openecard.scio.osx.PCSC.SCARD_W_UNSUPPORTED_CARD; +import static org.openecard.scio.osx.PCSC.WINDOWS_ERROR_INVALID_HANDLE; +import static org.openecard.scio.osx.PCSC.WINDOWS_ERROR_INVALID_PARAMETER; + +/** + * Exception for PC/SC errors. The native code portion checks the return value + * of the SCard* functions. If it indicates an error, the native code constructs + * an instance of this exception, throws it, and returns to Java. + * + * @since 1.6 + * @author Andreas Sterbenz + */ +final class PCSCException extends Exception { + + private static final long serialVersionUID = -3703197031255879618L; + + final int code; + + PCSCException(int code) { + super(toErrorString(code)); + this.code = code; + } + + private static String toErrorString(int code) { + switch (code) { + case SCARD_S_SUCCESS: + return "SCARD_S_SUCCESS"; + case SCARD_E_CANCELLED: + return "SCARD_E_CANCELLED"; + case SCARD_E_CANT_DISPOSE: + return "SCARD_E_CANT_DISPOSE"; + case SCARD_E_INSUFFICIENT_BUFFER: + return "SCARD_E_INSUFFICIENT_BUFFER"; + case SCARD_E_INVALID_ATR: + return "SCARD_E_INVALID_ATR"; + case SCARD_E_INVALID_HANDLE: + return "SCARD_E_INVALID_HANDLE"; + case SCARD_E_INVALID_PARAMETER: + return "SCARD_E_INVALID_PARAMETER"; + case SCARD_E_INVALID_TARGET: + return "SCARD_E_INVALID_TARGET"; + case SCARD_E_INVALID_VALUE: + return "SCARD_E_INVALID_VALUE"; + case SCARD_E_NO_MEMORY: + return "SCARD_E_NO_MEMORY"; + case SCARD_F_COMM_ERROR: + return "SCARD_F_COMM_ERROR"; + case SCARD_F_INTERNAL_ERROR: + return "SCARD_F_INTERNAL_ERROR"; + case SCARD_F_UNKNOWN_ERROR: + return "SCARD_F_UNKNOWN_ERROR"; + case SCARD_F_WAITED_TOO_LONG: + return "SCARD_F_WAITED_TOO_LONG"; + case SCARD_E_UNKNOWN_READER: + return "SCARD_E_UNKNOWN_READER"; + case SCARD_E_TIMEOUT: + return "SCARD_E_TIMEOUT"; + case SCARD_E_SHARING_VIOLATION: + return "SCARD_E_SHARING_VIOLATION"; + case SCARD_E_NO_SMARTCARD: + return "SCARD_E_NO_SMARTCARD"; + case SCARD_E_UNKNOWN_CARD: + return "SCARD_E_UNKNOWN_CARD"; + case SCARD_E_PROTO_MISMATCH: + return "SCARD_E_PROTO_MISMATCH"; + case SCARD_E_NOT_READY: + return "SCARD_E_NOT_READY"; + case SCARD_E_SYSTEM_CANCELLED: + return "SCARD_E_SYSTEM_CANCELLED"; + case SCARD_E_NOT_TRANSACTED: + return "SCARD_E_NOT_TRANSACTED"; + case SCARD_E_READER_UNAVAILABLE: + return "SCARD_E_READER_UNAVAILABLE"; + + case SCARD_W_UNSUPPORTED_CARD: + return "SCARD_W_UNSUPPORTED_CARD"; + case SCARD_W_UNRESPONSIVE_CARD: + return "SCARD_W_UNRESPONSIVE_CARD"; + case SCARD_W_UNPOWERED_CARD: + return "SCARD_W_UNPOWERED_CARD"; + case SCARD_W_RESET_CARD: + return "SCARD_W_RESET_CARD"; + case SCARD_W_REMOVED_CARD: + return "SCARD_W_REMOVED_CARD"; + case SCARD_W_INSERTED_CARD: + return "SCARD_W_INSERTED_CARD"; + + case SCARD_E_UNSUPPORTED_FEATURE: + return "SCARD_E_UNSUPPORTED_FEATURE"; + case SCARD_E_PCI_TOO_SMALL: + return "SCARD_E_PCI_TOO_SMALL"; + case SCARD_E_READER_UNSUPPORTED: + return "SCARD_E_READER_UNSUPPORTED"; + case SCARD_E_DUPLICATE_READER: + return "SCARD_E_DUPLICATE_READER"; + case SCARD_E_CARD_UNSUPPORTED: + return "SCARD_E_CARD_UNSUPPORTED"; + case SCARD_E_NO_SERVICE: + return "SCARD_E_NO_SERVICE"; + case SCARD_E_SERVICE_STOPPED: + return "SCARD_E_SERVICE_STOPPED"; + + case SCARD_E_NO_READERS_AVAILABLE: + return "SCARD_E_NO_READERS_AVAILABLE"; + case WINDOWS_ERROR_INVALID_HANDLE: + return "WINDOWS_ERROR_INVALID_HANDLE"; + case WINDOWS_ERROR_INVALID_PARAMETER: + return "WINDOWS_ERROR_INVALID_PARAMETER"; + + default: + return "Unknown error 0x" + Integer.toHexString(code); + } + } +} -- cgit v1.2.3