/****************************************************************************
* Copyright (C) 2012 ecsec GmbH.
* All rights reserved.
* Contact: ecsec GmbH (info@ecsec.de)
*
* This file is part of the Open eCard App.
*
* GNU General Public License Usage
* This file may be used under the terms of the GNU General Public
* License version 3.0 as published by the Free Software Foundation
* and appearing in the file LICENSE.GPL included in the packaging of
* this file. Please review the following information to ensure the
* GNU General Public License version 3.0 requirements will be met:
* http://www.gnu.org/copyleft/gpl.html.
*
* Other Usage
* Alternatively, this file may be used in accordance with the terms
* and conditions contained in a signed written agreement between
* you and ecsec GmbH.
*
***************************************************************************/
package org.openecard.common;
import java.util.TreeMap;
/**
*
* @author Tobias Wich <tobias.wich@ecsec.de>
*/
public class ECardConstants {
private static final String ECARD_PREFIX = "http://www.bsi.bund.de/ecard/api/1.1/";
private static final String MAJOR_PREFIX = ECARD_PREFIX + "resultmajor#";
private static final String DSS_PREFIX = "urn:oasis:names:tc:dss:1.0:";
private static final String MINOR_PREFIX = ECARD_PREFIX + "resultminor/";
private static final String APP_PREFIX = MINOR_PREFIX + "al"; // Application Layer
private static final String DP_PREFIX = MINOR_PREFIX + "dp"; // Dispatcher
private static final String IL_PREFIX = MINOR_PREFIX + "il"; // Identity Layer
private static final String SAL_PREFIX = MINOR_PREFIX + "sal"; // Service Access Layer
private static final String IFD_PREFIX = MINOR_PREFIX + "ifdl"; // Interface Device Layer
//
// Inofficial Constants
//
public static final int CONTEXT_HANDLE_DEFAULT_SIZE = 16;
public static final int SLOT_HANDLE_DEFAULT_SIZE = 24;
public static final String UNKNOWN_CARD = "http://bsi.bund.de/cif/unknown";
public static final String PAOS_NEXT = ECARD_PREFIX + "PAOS/GetNextCommand";
public static final String ACTOR_NEXT = "http://schemas.xmlsoap.org/soap/actor/next";
public static final String SOAP_ENVELOPE = "http://schemas.xmlsoap.org/soap/envelope/";
public static final String PAOS_VERSION_11 = "urn:liberty:paos:2003-08";
public static final String PAOS_VERSION_20 = "urn:liberty:paos:2006-08";
public static final String WS_ADDRESSING = "http://www.w3.org/2005/03/addressing";
public static class CIF {
public static final String GET_SPECIFIED = ECARD_PREFIX + "cardinfo/action#getSpecifiedFile";
public static final String GET_RELATED = ECARD_PREFIX + "cardinfo/action#getRelatedFiles";
public static final String GET_OTHER = ECARD_PREFIX + "cardinfo/action#getOtherFiles";
};
public static class Profile {
public static final String ECSEC = "http://ws.ecsec.de";
public static final String ECARD_1_1 = "http://www.bsi.bund.de/ecard/api/1.1";
};
public static class Protocol {
public static final String PIN_COMPARE = "urn:oid:1.3.162.15480.3.0.9";
public static final String MUTUAL_AUTH = "urn:oid:1.3.162.15480.3.0.12";
public static final String EAC_GENERIC = "urn:oid:1.3.162.15480.3.0.14";
public static final String EAC2 = "urn:oid:1.3.162.15480.3.0.14.2";
public static final String RSA_AUTH = "urn:oid:1.3.162.15480.3.0.15";
public static final String GENERIC_CRYPTO = "urn:oid:1.3.162.15480.3.0.25";
public static final String TERMINAL_AUTH = "urn:oid:0.4.0.127.0.7.2.2.2";
public static final String CHIP_AUTH = "urn:oid:0.4.0.127.0.7.2.2.3";
public static final String PACE = "urn:oid:0.4.0.127.0.7.2.2.4";
public static final String RESTRICTED_ID = "urn:oid:0.4.0.127.0.7.2.2.5";
public static final String IRMA_PROVER = "urn:oid:23.0.0.0.0.0.0.0.5";
public static final String ABC4Trust_PROVER = "urn:oid:24.0.0.0.0.0.0.0.5";
};
public static class IFD {
public static class Protocol {
public static final String T0 = "urn:iso:std:iso-iec:7816:-3:tech:protocols:T-equals-0";
public static final String T1 = "urn:iso:std:iso-iec:7816:-3:tech:protocols:T-equals-1";
public static final String T2 = "urn:iso:std:iso-iec:10536:tech:protocols:T-equals-2";
public static final String TYPE_A = "urn:iso:std:iso-iec:14443:-2:tech:protocols:Type-A";
public static final String TYPE_B = "urn:iso:std:iso-iec:14443:-2:tech:protocols:Type-B";
};
};
//
// Major values
//
public static class Major {
public static final String OK = MAJOR_PREFIX + "ok";
public static final String PENDING = DSS_PREFIX + "profiles:asynchronousprocessing:resultmajor:Pending";
public static final String WARN = MAJOR_PREFIX + "warning";
public static final String ERROR = MAJOR_PREFIX + "error";
public static final String NEXT = MAJOR_PREFIX + "nextRequest";
};
//
// Minor values
//
public static class Minor {
public static class App {
public static final String NO_PERM = APP_PREFIX + "/common#noPermission";
public static final String INT_ERROR = APP_PREFIX + "/common#internalError";
public static final String PARM_ERROR = APP_PREFIX + "/common#parameterError";
public static final String UNKNOWN_ERROR = APP_PREFIX + "/common#unknownError";
public static final String INCORRECT_PARM = APP_PREFIX + "/common#incorrectParameter";
};
public static class Disp {
public static final String INVALID_CHANNEL_HANDLE = DP_PREFIX + "#invalidChannelHandle";
};
public static class Ident {
private static final String IL_IS_PREFIX = IL_PREFIX + "il"; // Identity Layer - Identity Service
public static final String AUTH_FAIL = IL_IS_PREFIX + "#authenticationFailure";
public static final String UNKNOWN_POLICY = "unknownPolicyWarning";
public static final String UNKNOWN_ATTRIBUTE = "unknownAttributeWarning";
public static final String UNKNOWN_DEFAULT_URI = "unknownDefaultURIWarning";
public static class Sig {
};
public static class Enc {
};
};
public static class SAL {
public static final String UNKNOWN_HANDLE = SAL_PREFIX + "#unknownConnectionHandle";
public static final String UNKNOWN_CARDTYPE = SAL_PREFIX + "#unknownCardType";
public static final String PROTOCOL_NOT_RECOGNIZED = SAL_PREFIX + "#protocolNotRecognized";
public static final String INAPPROPRIATE_PROTOCOL_FOR_ACTION = SAL_PREFIX + "#inappropriateProtocolForAction";
public static final String REPO_UNREACHABLE = SAL_PREFIX + "/support#cardInfoRepositoryUnreachable";
public static final String SECURITY_CONDITINON_NOT_SATISFIED = SAL_PREFIX + "#securityConditionNotSatisfied";
public static final String NAMED_ENTITY_NOT_FOUND = SAL_PREFIX + "#namedEntityNotFound";
public static final String CANCELLATION_BY_USER = SAL_PREFIX + "#cancellationByUser";
public static final String INVALID_SIGNATURE = SAL_PREFIX + "#invalidSignature";
};
public static class IFD {
public static final String CANCELLATION_BY_USER = IFD_PREFIX + "#cancellationByUser";
public static final String INVALID_CONTEXT_HANDLE = IFD_PREFIX + "/common#invalidContextHandle";
public static final String INVALID_SLOT_HANDLE = IFD_PREFIX + "/common#invalidSlotHandle";
public static final String TIMEOUT_ERROR = IFD_PREFIX + "/common#timeoutError";
public static final String IFD_SHARING_VIOLATION = IFD_PREFIX + "/terminal#IFDSharingViolation";
public static final String NO_CARD = IFD_PREFIX + "/terminal#noCard";
public static final String UNKNOWN_ACTION = IFD_PREFIX + "/terminal#unknownAction";
public static final String UNKNOWN_IFD = IFD_PREFIX + "/terminal#unknownIFD";
public static final String UNKNOWN_SLOT = IFD_PREFIX + "/terminal#unknownSlot";
// Not yet specified by the BSI
public static final String PASSWORD_SUSPENDED = IFD_PREFIX + "/passwordSuspended";
public static final String PASSWORD_BLOCKED = IFD_PREFIX + "/passwordBlocked";
public static final String PASSWORD_ERROR = IFD_PREFIX + "/passwordError";
public static final String PASSWORD_DEACTIVATED = IFD_PREFIX + "/passwordDeactivated";
public static final String AUTHENTICATION_FAILED = IFD_PREFIX + "/authenticationFailed";
public static final String UNKNOWN_ERROR = IFD_PREFIX + "/unknownError";
public static class IO {
private static final String IO_PREFIX = IFD_PREFIX + "/IO";
public static final String NO_TRANSACTION_STARTED = IFD_PREFIX + "#noTransactionStarted";
public static final String UNKNOWN_DISPLAY_INDEX = IO_PREFIX + "#unknownDisplayIndex";
public static final String UNKNOWN_OUTPUT_DEVICE = IO_PREFIX + "#unknownOutputDevice";
public static final String UNKNOWN_INPUT_UNIT = IO_PREFIX + "#unknownInputUnit";
public static final String UNKNOWN_PIN_FORMAT = IO_PREFIX + "#unknownPINFormat";
public static final String CANCEL_NOT_POSSIBLE = IO_PREFIX + "#cancelNotPossible";
};
};
};
private static final TreeMap<String,String> msgMap = new TreeMap<String, String>();
static {
// major types
msgMap.put(Major.OK, "No error occurred during execution of the operation.");
msgMap.put(Major.WARN, "If the result of the operation is in principle OK, but there is a detail which may require closer investigation, a warning is given as a response.");
msgMap.put(Major.ERROR, "An error occurred during execution of the operation.");
msgMap.put(Major.NEXT, "This result appears if at least one more request is expected within a protocol.");
// minor App
// minor App common
msgMap.put(Minor.App.NO_PERM, "Use of the function by the client application is not permitted.");
msgMap.put(Minor.App.INT_ERROR, "Internal error.");
msgMap.put(Minor.App.PARM_ERROR, "There was some problem with a provided or omitted parameter.");
// minor SAL
msgMap.put(Minor.SAL.UNKNOWN_HANDLE, "Unknown connection handle specified.");
msgMap.put(Minor.SAL.UNKNOWN_CARDTYPE, "Unknown card type specified.");
// minor SAL support
msgMap.put(Minor.SAL.REPO_UNREACHABLE, "The CardInfo repository server is not accessible");
}
public static String URI2Msg(final String uri) {
String result = msgMap.get(uri);
return (result != null) ? result : "";
}
}