package de.persosim.simulator.protocols.pace; /* * AUTOMATICALLY GENERATED CODE - DO NOT EDIT! * * (C) 2013 HJP-Consulting GmbH */ @SuppressWarnings("all")//generated code /* Command line options: -verbose -p EA -o DefaultPaceProtocol -l java -t PACE:paceclass C:\develop\wd\protocol_pace.xml */ /* This file is generated from protocol_pace.xml - do not edit manually */ /* Generated on: Tue Oct 13 09:36:37 CEST 2015 / version 3.52beta2 */ public class DefaultPaceProtocol extends AbstractPaceProtocol { public static final int REGISTER_APDU_PERFORM_KEY_AGREEMENT = 0; public static final int PACE_GET_NONCE_RECEIVED = 1; public static final int PACE_MUTUAL_AUTHENTICATE_PROCESSED = 2; public static final int CHAINING_INTERRUPTED = 3; public static final int PACE_MAP_NONCE_RECEIVED = 4; public static final int RESET = 5; public static final int PACE_SET_AT_PROCESSED = 6; public static final int PACE_MUTUAL_AUTHENTICATE_RECEIVED = 7; public static final int PACE_COMPLETED = 8; public static final int REGISTER_APDU_SET_AT = 9; public static final int PACE_GET_NONCE_PROCESSED = 10; public static final int REGISTER_APDUS = 11; public static final int REGISTER_APDU_GET_NONCE = 12; public static final int REGISTER_APDU_MUTUAL_AUTHENTICATE = 13; public static final int PACE_IN_PROGRESS = 14; public static final int PACE_MAP_NONCE_PROCESSED = 15; public static final int PACE_ANNOUNCED = 16; public static final int REGISTER_APDU_MAP_NONCE = 17; public static final int PACE_PERFORM_KEY_AGREEMENT_RECEIVED = 18; public static final int DUMMY_INITIAL = 19; public static final int PACE_INIT = 20; public static final int PROCESSING_ERROR = 21; public static final int PACE_SET_AT_RECEIVED = 22; public static final int GENERAL_AUTHENTICATE_CHAINING = 23; public static final int PACE_PERFORM_KEY_AGREEMENT_PROCESSED = 24; public static final int __UNKNOWN_STATE__ = 25; public static final int DEFAULTPACEPROTOCOL_NO_MSG = 0; // flag if initialized protected boolean m_initialized=false; int stateVar; int stateVarREGISTER_APDUS; int stateVarPACE_ANNOUNCED; int stateVarPACE_IN_PROGRESS; int stateVarGENERAL_AUTHENTICATE_CHAINING; // State handler class default ctor public DefaultPaceProtocol() { } /* Helper(s) to reset history */ public void resetHistoryREGISTER_APDUS(){stateVarREGISTER_APDUS= REGISTER_APDU_SET_AT;} public void resetHistoryPACE_ANNOUNCED(){stateVarPACE_ANNOUNCED= PACE_INIT;} public void resetHistoryPACE_IN_PROGRESS(){stateVarPACE_IN_PROGRESS= PACE_SET_AT_RECEIVED;} public void resetHistoryGENERAL_AUTHENTICATE_CHAINING(){stateVarGENERAL_AUTHENTICATE_CHAINING= PACE_GET_NONCE_PROCESSED;} /* Helper to get innermost active state id */ public int getInnermostActiveState() { if(isInPACE_PERFORM_KEY_AGREEMENT_PROCESSED()){ return PACE_PERFORM_KEY_AGREEMENT_PROCESSED; }else if(isInPACE_PERFORM_KEY_AGREEMENT_RECEIVED()){ return PACE_PERFORM_KEY_AGREEMENT_RECEIVED; }else if(isInPACE_MAP_NONCE_PROCESSED()){ return PACE_MAP_NONCE_PROCESSED; }else if(isInPACE_GET_NONCE_PROCESSED()){ return PACE_GET_NONCE_PROCESSED; }else if(isInPACE_MUTUAL_AUTHENTICATE_RECEIVED()){ return PACE_MUTUAL_AUTHENTICATE_RECEIVED; }else if(isInPACE_MAP_NONCE_RECEIVED()){ return PACE_MAP_NONCE_RECEIVED; }else if(isInPACE_SET_AT_RECEIVED()){ return PACE_SET_AT_RECEIVED; }else if(isInPACE_SET_AT_PROCESSED()){ return PACE_SET_AT_PROCESSED; }else if(isInPACE_GET_NONCE_RECEIVED()){ return PACE_GET_NONCE_RECEIVED; }else if(isInPACE_INIT()){ return PACE_INIT; }else if(isInREGISTER_APDU_MAP_NONCE()){ return REGISTER_APDU_MAP_NONCE; }else if(isInREGISTER_APDU_MUTUAL_AUTHENTICATE()){ return REGISTER_APDU_MUTUAL_AUTHENTICATE; }else if(isInREGISTER_APDU_GET_NONCE()){ return REGISTER_APDU_GET_NONCE; }else if(isInREGISTER_APDU_SET_AT()){ return REGISTER_APDU_SET_AT; }else if(isInPACE_MUTUAL_AUTHENTICATE_PROCESSED()){ return PACE_MUTUAL_AUTHENTICATE_PROCESSED; }else if(isInREGISTER_APDU_PERFORM_KEY_AGREEMENT()){ return REGISTER_APDU_PERFORM_KEY_AGREEMENT; }else if(isInPROCESSING_ERROR()){ return PROCESSING_ERROR; }else if(isInDUMMY_INITIAL()){ return DUMMY_INITIAL; }else if(isInPACE_COMPLETED()){ return PACE_COMPLETED; }else if(isInRESET()){ return RESET; }else if(isInCHAINING_INTERRUPTED()){ return CHAINING_INTERRUPTED; }else{ return __UNKNOWN_STATE__; } } // Helper(s) to find out if the machine is in a certain state public boolean isInREGISTER_APDU_PERFORM_KEY_AGREEMENT(){return (((stateVarREGISTER_APDUS== REGISTER_APDU_PERFORM_KEY_AGREEMENT)&&(stateVar== REGISTER_APDUS)) ? (true) : (false));} public boolean isInPACE_GET_NONCE_RECEIVED(){return (((stateVarPACE_IN_PROGRESS== PACE_GET_NONCE_RECEIVED)&&(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS)&&(stateVar== PACE_ANNOUNCED)) ? (true) : (false));} public boolean isInPACE_MUTUAL_AUTHENTICATE_PROCESSED(){return (((stateVarPACE_ANNOUNCED== PACE_MUTUAL_AUTHENTICATE_PROCESSED)&&(stateVar== PACE_ANNOUNCED)) ? (true) : (false));} public boolean isInCHAINING_INTERRUPTED(){return (((stateVar== CHAINING_INTERRUPTED)) ? (true) : (false));} public boolean isInPACE_MAP_NONCE_RECEIVED(){return (((stateVarGENERAL_AUTHENTICATE_CHAINING== PACE_MAP_NONCE_RECEIVED)&&(stateVarPACE_IN_PROGRESS== GENERAL_AUTHENTICATE_CHAINING)&&(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS)&&(stateVar== PACE_ANNOUNCED)) ? (true) : (false));} public boolean isInRESET(){return (((stateVar== RESET)) ? (true) : (false));} public boolean isInPACE_SET_AT_PROCESSED(){return (((stateVarPACE_IN_PROGRESS== PACE_SET_AT_PROCESSED)&&(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS)&&(stateVar== PACE_ANNOUNCED)) ? (true) : (false));} public boolean isInPACE_MUTUAL_AUTHENTICATE_RECEIVED(){return (((stateVarGENERAL_AUTHENTICATE_CHAINING== PACE_MUTUAL_AUTHENTICATE_RECEIVED)&&(stateVarPACE_IN_PROGRESS== GENERAL_AUTHENTICATE_CHAINING)&&(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS)&&(stateVar== PACE_ANNOUNCED)) ? (true) : (false));} public boolean isInPACE_COMPLETED(){return (((stateVar== PACE_COMPLETED)) ? (true) : (false));} public boolean isInREGISTER_APDU_SET_AT(){return (((stateVarREGISTER_APDUS== REGISTER_APDU_SET_AT)&&(stateVar== REGISTER_APDUS)) ? (true) : (false));} public boolean isInPACE_GET_NONCE_PROCESSED(){return (((stateVarGENERAL_AUTHENTICATE_CHAINING== PACE_GET_NONCE_PROCESSED)&&(stateVarPACE_IN_PROGRESS== GENERAL_AUTHENTICATE_CHAINING)&&(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS)&&(stateVar== PACE_ANNOUNCED)) ? (true) : (false));} public boolean isInREGISTER_APDUS(){return (((stateVar== REGISTER_APDUS)) ? (true) : (false));} public boolean isInREGISTER_APDU_GET_NONCE(){return (((stateVarREGISTER_APDUS== REGISTER_APDU_GET_NONCE)&&(stateVar== REGISTER_APDUS)) ? (true) : (false));} public boolean isInREGISTER_APDU_MUTUAL_AUTHENTICATE(){return (((stateVarREGISTER_APDUS== REGISTER_APDU_MUTUAL_AUTHENTICATE)&&(stateVar== REGISTER_APDUS)) ? (true) : (false));} public boolean isInPACE_IN_PROGRESS(){return (((stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS)&&(stateVar== PACE_ANNOUNCED)) ? (true) : (false));} public boolean isInPACE_MAP_NONCE_PROCESSED(){return (((stateVarGENERAL_AUTHENTICATE_CHAINING== PACE_MAP_NONCE_PROCESSED)&&(stateVarPACE_IN_PROGRESS== GENERAL_AUTHENTICATE_CHAINING)&&(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS)&&(stateVar== PACE_ANNOUNCED)) ? (true) : (false));} public boolean isInPACE_ANNOUNCED(){return (((stateVar== PACE_ANNOUNCED)) ? (true) : (false));} public boolean isInREGISTER_APDU_MAP_NONCE(){return (((stateVarREGISTER_APDUS== REGISTER_APDU_MAP_NONCE)&&(stateVar== REGISTER_APDUS)) ? (true) : (false));} public boolean isInPACE_PERFORM_KEY_AGREEMENT_RECEIVED(){return (((stateVarGENERAL_AUTHENTICATE_CHAINING== PACE_PERFORM_KEY_AGREEMENT_RECEIVED)&&(stateVarPACE_IN_PROGRESS== GENERAL_AUTHENTICATE_CHAINING)&&(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS)&&(stateVar== PACE_ANNOUNCED)) ? (true) : (false));} public boolean isInDUMMY_INITIAL(){return (((stateVar== DUMMY_INITIAL)) ? (true) : (false));} public boolean isInPACE_INIT(){return (((stateVarPACE_ANNOUNCED== PACE_INIT)&&(stateVar== PACE_ANNOUNCED)) ? (true) : (false));} public boolean isInPROCESSING_ERROR(){return (((stateVar== PROCESSING_ERROR)) ? (true) : (false));} public boolean isInPACE_SET_AT_RECEIVED(){return (((stateVarPACE_IN_PROGRESS== PACE_SET_AT_RECEIVED)&&(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS)&&(stateVar== PACE_ANNOUNCED)) ? (true) : (false));} public boolean isInGENERAL_AUTHENTICATE_CHAINING(){return (((stateVarPACE_IN_PROGRESS== GENERAL_AUTHENTICATE_CHAINING)&&(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS)&&(stateVar== PACE_ANNOUNCED)) ? (true) : (false));} public boolean isInPACE_PERFORM_KEY_AGREEMENT_PROCESSED(){return (((stateVarGENERAL_AUTHENTICATE_CHAINING== PACE_PERFORM_KEY_AGREEMENT_PROCESSED)&&(stateVarPACE_IN_PROGRESS== GENERAL_AUTHENTICATE_CHAINING)&&(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS)&&(stateVar== PACE_ANNOUNCED)) ? (true) : (false));} // Reinitialize the state machine public void reInitialize(){ m_initialized=false; initialize(); } public void initialize(){ if(m_initialized==false){ m_initialized=true; //call on entry code of default states // Set state vars to default states stateVar = DUMMY_INITIAL; /* set init state of top state */ stateVarREGISTER_APDUS = REGISTER_APDU_SET_AT; /* set init state of REGISTER_APDUS */ stateVarPACE_ANNOUNCED = PACE_INIT; /* set init state of PACE_ANNOUNCED */ stateVarPACE_IN_PROGRESS = PACE_SET_AT_RECEIVED; /* set init state of PACE_IN_PROGRESS */ stateVarGENERAL_AUTHENTICATE_CHAINING = PACE_GET_NONCE_PROCESSED; /* set init state of GENERAL_AUTHENTICATE_CHAINING */ } } protected void defaultpaceprotocolChangeToState(int state){ stateVar=state; } protected void defaultpaceprotocolChangeToStateREGISTER_APDUS(int state){ stateVarREGISTER_APDUS = state; } protected void defaultpaceprotocolChangeToStatePACE_ANNOUNCED(int state){ stateVarPACE_ANNOUNCED = state; } protected void defaultpaceprotocolChangeToStatePACE_IN_PROGRESS(int state){ stateVarPACE_IN_PROGRESS = state; } protected void defaultpaceprotocolChangeToStateGENERAL_AUTHENTICATE_CHAINING(int state){ stateVarGENERAL_AUTHENTICATE_CHAINING = state; } public int processEvent(int msg){ int evConsumed = 0; if(m_initialized==false) return 0; /* action code */ this.continueProcessing = true; do{ evConsumed = 0; switch (stateVar) { case CHAINING_INTERRUPTED: /* action code */ processChainingInterrupted(); if(true){ /* Transition from CHAINING_INTERRUPTED to RESET */ evConsumed=16; /* adjust state variables */ stateVar = RESET; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case CHAINING_INTERRUPTED */ case DUMMY_INITIAL: if(true){ if(isInitialized()){ /* Transition from DUMMY_INITIAL to PACE_ANNOUNCED */ evConsumed=16; /* OnEntry code of state PACE_ANNOUNCED */ logs("PACE_ANNOUNCED"); stateVar = PACE_ANNOUNCED;/* entry chain */ if(stateVarPACE_ANNOUNCED== PACE_INIT){ logs("INIT"); returnResult(); }else if(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS){ logs("PACE_IN_PROGRESS"); stateVarPACE_ANNOUNCED = PACE_IN_PROGRESS;/* entry chain */ if(stateVarPACE_IN_PROGRESS== GENERAL_AUTHENTICATE_CHAINING){ logs("GET_NONCE_PROCESSED"); returnResult(); stateVarPACE_IN_PROGRESS = GENERAL_AUTHENTICATE_CHAINING;/* Default in entry chain */ stateVarGENERAL_AUTHENTICATE_CHAINING = PACE_GET_NONCE_PROCESSED;/* Default in entry chain */ }else if(stateVarPACE_IN_PROGRESS== PACE_GET_NONCE_RECEIVED){ logs("GET_NONCE_RECEIVED"); processCommandGetNonce(); }else if(stateVarPACE_IN_PROGRESS== PACE_SET_AT_PROCESSED){ logs("SET_AT_PROCESSED"); returnResult(); }else if(stateVarPACE_IN_PROGRESS== PACE_SET_AT_RECEIVED){ logs("SET_AT_RECEIVED"); processCommandSetAT(); } }else if(stateVarPACE_ANNOUNCED== PACE_MUTUAL_AUTHENTICATE_PROCESSED){ logs("MA_PROCESSED"); } }else{ /* Transition from DUMMY_INITIAL to REGISTER_APDUS */ evConsumed=16; stateVar = REGISTER_APDUS;/* Default in entry chain */ stateVarREGISTER_APDUS = REGISTER_APDU_SET_AT;/* Default in entry chain */ } /*end of event selection */ }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case DUMMY_INITIAL */ case PACE_COMPLETED: if(true){ /* Transition from PACE_COMPLETED to PACE_INIT */ evConsumed=16; /* OnEntry code of state PACE_ANNOUNCED */ logs("PACE_ANNOUNCED"); /* OnEntry code of state PACE_INIT */ logs("INIT"); returnResult(); /* adjust state variables */ stateVar = PACE_ANNOUNCED; stateVarPACE_ANNOUNCED = PACE_INIT; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case PACE_COMPLETED */ case PROCESSING_ERROR: if(true){ /* Transition from PROCESSING_ERROR to RESET */ evConsumed=16; /* adjust state variables */ stateVar = RESET; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case PROCESSING_ERROR */ case REGISTER_APDUS: switch (stateVarREGISTER_APDUS) { case REGISTER_APDU_GET_NONCE: /* action code */ createNewApduSpecification("Get Nonce"); apduSpecification.setIsoFormat(ISO_FORMAT_FIRSTINTERINDUSTRY); apduSpecification.setIsoCase(ISO_CASE_4); apduSpecification.setChaining(true); apduSpecification.setIns(INS_86_GENERAL_AUTHENTICATE); apduSpecification.setP1((byte) 0x00); apduSpecification.setP2((byte) 0x00); apduSpecification.addTag(TAG_7C); registerApduSpecification(apduSpecification); if(true){ /* Transition from REGISTER_APDU_GET_NONCE to REGISTER_APDU_MAP_NONCE */ evConsumed=16; /* adjust state variables */ stateVarREGISTER_APDUS = REGISTER_APDU_MAP_NONCE; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case REGISTER_APDU_GET_NONCE */ case REGISTER_APDU_MAP_NONCE: /* action code */ createNewApduSpecification("Map Nonce"); apduSpecification.setIsoFormat(ISO_FORMAT_FIRSTINTERINDUSTRY); apduSpecification.setIsoCase(ISO_CASE_4); apduSpecification.setChaining(true); apduSpecification.setIns(INS_86_GENERAL_AUTHENTICATE); apduSpecification.setP1((byte) 0x00); apduSpecification.setP2((byte) 0x00); createNewTagSpecification(TAG_7C); apduSpecification.addTag(tagSpecification); createNewPath(); path.add(TAG_7C); createNewTagSpecification(TAG_81); apduSpecification.addTag(path, tagSpecification); registerApduSpecification(apduSpecification); if(true){ /* Transition from REGISTER_APDU_MAP_NONCE to REGISTER_APDU_PERFORM_KEY_AGREEMENT */ evConsumed=16; /* adjust state variables */ stateVarREGISTER_APDUS = REGISTER_APDU_PERFORM_KEY_AGREEMENT; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case REGISTER_APDU_MAP_NONCE */ case REGISTER_APDU_MUTUAL_AUTHENTICATE: /* action code */ createNewApduSpecification("Mutual Authenticate"); apduSpecification.setIsoFormat(ISO_FORMAT_FIRSTINTERINDUSTRY); apduSpecification.setIsoCase(ISO_CASE_4); apduSpecification.setChaining(false); apduSpecification.setIns(INS_86_GENERAL_AUTHENTICATE); apduSpecification.setP1((byte) 0x00); apduSpecification.setP2((byte) 0x00); createNewTagSpecification(TAG_7C); apduSpecification.addTag(tagSpecification); createNewPath(); path.add(TAG_7C); createNewTagSpecification(TAG_85); apduSpecification.addTag(path, tagSpecification); registerApduSpecification(apduSpecification); if(true){ /* Transition from REGISTER_APDU_MUTUAL_AUTHENTICATE to PACE_ANNOUNCED */ evConsumed=16; /* OnEntry code of state PACE_ANNOUNCED */ logs("PACE_ANNOUNCED"); stateVar = PACE_ANNOUNCED;/* entry chain */ if(stateVarPACE_ANNOUNCED== PACE_INIT){ logs("INIT"); returnResult(); }else if(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS){ logs("PACE_IN_PROGRESS"); stateVarPACE_ANNOUNCED = PACE_IN_PROGRESS;/* entry chain */ if(stateVarPACE_IN_PROGRESS== GENERAL_AUTHENTICATE_CHAINING){ logs("GET_NONCE_PROCESSED"); returnResult(); stateVarPACE_IN_PROGRESS = GENERAL_AUTHENTICATE_CHAINING;/* Default in entry chain */ stateVarGENERAL_AUTHENTICATE_CHAINING = PACE_GET_NONCE_PROCESSED;/* Default in entry chain */ }else if(stateVarPACE_IN_PROGRESS== PACE_GET_NONCE_RECEIVED){ logs("GET_NONCE_RECEIVED"); processCommandGetNonce(); }else if(stateVarPACE_IN_PROGRESS== PACE_SET_AT_PROCESSED){ logs("SET_AT_PROCESSED"); returnResult(); }else if(stateVarPACE_IN_PROGRESS== PACE_SET_AT_RECEIVED){ logs("SET_AT_RECEIVED"); processCommandSetAT(); } }else if(stateVarPACE_ANNOUNCED== PACE_MUTUAL_AUTHENTICATE_PROCESSED){ logs("MA_PROCESSED"); } /* adjust state variables */ stateVarREGISTER_APDUS = REGISTER_APDU_SET_AT; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case REGISTER_APDU_MUTUAL_AUTHENTICATE */ case REGISTER_APDU_PERFORM_KEY_AGREEMENT: /* action code */ createNewApduSpecification("Perform Key Agreement"); apduSpecification.setIsoFormat(ISO_FORMAT_FIRSTINTERINDUSTRY); apduSpecification.setIsoCase(ISO_CASE_4); apduSpecification.setChaining(true); apduSpecification.setIns(INS_86_GENERAL_AUTHENTICATE); apduSpecification.setP1((byte) 0x00); apduSpecification.setP2((byte) 0x00); createNewTagSpecification(TAG_7C); apduSpecification.addTag(tagSpecification); createNewPath(); path.add(TAG_7C); createNewTagSpecification(TAG_83); apduSpecification.addTag(path, tagSpecification); registerApduSpecification(apduSpecification); if(true){ /* Transition from REGISTER_APDU_PERFORM_KEY_AGREEMENT to REGISTER_APDU_MUTUAL_AUTHENTICATE */ evConsumed=16; /* adjust state variables */ stateVarREGISTER_APDUS = REGISTER_APDU_MUTUAL_AUTHENTICATE; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case REGISTER_APDU_PERFORM_KEY_AGREEMENT */ case REGISTER_APDU_SET_AT: /* action code */ createNewApduSpecification("Set AT"); apduSpecification.setIsoFormat(ISO_FORMAT_FIRSTINTERINDUSTRY); apduSpecification.setIsoCase(ISO_CASE_3); apduSpecification.setChaining(false); apduSpecification.setIns(INS_22_MANAGE_SECURITY_ENVIRONMENT); apduSpecification.setP1((byte) 0xC1); apduSpecification.setP2((byte) 0xA4); createNewTagSpecification(TAG_80); apduSpecification.addTag(tagSpecification); createNewTagSpecification(TAG_83); apduSpecification.addTag(tagSpecification); createNewTagSpecification(TAG_7F4C); tagSpecification.setRequired(REQ_OPTIONAL); tagSpecification.setAllowUnspecifiedSubTags(true); apduSpecification.addTag(tagSpecification); createNewTagSpecification(TAG_65); tagSpecification.setRequired(REQ_OPTIONAL); tagSpecification.setAllowUnspecifiedSubTags(true); apduSpecification.addTag(tagSpecification); createNewTagSpecification(TAG_84); tagSpecification.setRequired(REQ_OPTIONAL); apduSpecification.addTag(tagSpecification); apduSpecification.setInitialApdu(); registerApduSpecification(apduSpecification); if(true){ /* Transition from REGISTER_APDU_SET_AT to REGISTER_APDU_GET_NONCE */ evConsumed=16; /* adjust state variables */ stateVarREGISTER_APDUS = REGISTER_APDU_GET_NONCE; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case REGISTER_APDU_SET_AT */ default: /* Intentionally left blank */ break; } /* end switch REGISTER_APDUS */ break; /* end of case REGISTER_APDUS */ case RESET: /* action code */ logs("RESET"); if(true){ /* Transition from RESET to PACE_INIT */ evConsumed=16; /* OnEntry code of state PACE_ANNOUNCED */ logs("PACE_ANNOUNCED"); /* OnEntry code of state PACE_INIT */ logs("INIT"); returnResult(); /* adjust state variables */ stateVar = PACE_ANNOUNCED; stateVarPACE_ANNOUNCED = PACE_INIT; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case RESET */ case PACE_ANNOUNCED: switch (stateVarPACE_ANNOUNCED) { case PACE_INIT: if(isAPDU("Set AT")){ /* Transition from PACE_INIT to PACE_IN_PROGRESS */ evConsumed=16; /* OnEntry code of state PACE_IN_PROGRESS */ logs("PACE_IN_PROGRESS"); stateVarPACE_ANNOUNCED = PACE_IN_PROGRESS;/* entry chain */ if(stateVarPACE_IN_PROGRESS== GENERAL_AUTHENTICATE_CHAINING){ logs("GET_NONCE_PROCESSED"); returnResult(); stateVarPACE_IN_PROGRESS = GENERAL_AUTHENTICATE_CHAINING;/* Default in entry chain */ stateVarGENERAL_AUTHENTICATE_CHAINING = PACE_GET_NONCE_PROCESSED;/* Default in entry chain */ }else if(stateVarPACE_IN_PROGRESS== PACE_GET_NONCE_RECEIVED){ logs("GET_NONCE_RECEIVED"); processCommandGetNonce(); }else if(stateVarPACE_IN_PROGRESS== PACE_SET_AT_PROCESSED){ logs("SET_AT_PROCESSED"); returnResult(); }else if(stateVarPACE_IN_PROGRESS== PACE_SET_AT_RECEIVED){ logs("SET_AT_RECEIVED"); processCommandSetAT(); } }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case PACE_INIT */ case PACE_IN_PROGRESS: switch (stateVarPACE_IN_PROGRESS) { case GENERAL_AUTHENTICATE_CHAINING: switch (stateVarGENERAL_AUTHENTICATE_CHAINING) { case PACE_GET_NONCE_PROCESSED: if(isAPDU("Map Nonce")){ /* Transition from PACE_GET_NONCE_PROCESSED to PACE_MAP_NONCE_RECEIVED */ evConsumed=16; /* OnEntry code of state PACE_MAP_NONCE_RECEIVED */ logs("MAP_NONCE_RECEIVED"); processCommandMapNonce(); /* adjust state variables */ stateVarGENERAL_AUTHENTICATE_CHAINING = PACE_MAP_NONCE_RECEIVED; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case PACE_GET_NONCE_PROCESSED */ case PACE_MAP_NONCE_PROCESSED: if(isAPDU("Perform Key Agreement")){ /* Transition from PACE_MAP_NONCE_PROCESSED to PACE_PERFORM_KEY_AGREEMENT_RECEIVED */ evConsumed=16; /* OnEntry code of state PACE_PERFORM_KEY_AGREEMENT_RECEIVED */ logs("PKA_RECEIVED"); processCommandPerformKeyAgreement(); /* adjust state variables */ stateVarGENERAL_AUTHENTICATE_CHAINING = PACE_PERFORM_KEY_AGREEMENT_RECEIVED; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case PACE_MAP_NONCE_PROCESSED */ case PACE_MAP_NONCE_RECEIVED: if(isStatusWord(SW_9000_NO_ERROR)){ /* Transition from PACE_MAP_NONCE_RECEIVED to PACE_MAP_NONCE_PROCESSED */ evConsumed=16; /* OnEntry code of state PACE_MAP_NONCE_PROCESSED */ logs("MAP_NONCE_PROCESSED"); returnResult(); /* adjust state variables */ stateVarGENERAL_AUTHENTICATE_CHAINING = PACE_MAP_NONCE_PROCESSED; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case PACE_MAP_NONCE_RECEIVED */ case PACE_PERFORM_KEY_AGREEMENT_PROCESSED: if(isAPDU("Mutual Authenticate")){ /* Transition from PACE_PERFORM_KEY_AGREEMENT_PROCESSED to PACE_MUTUAL_AUTHENTICATE_RECEIVED */ evConsumed=16; /* OnEntry code of state PACE_MUTUAL_AUTHENTICATE_RECEIVED */ logs("MA_RECEIVED"); processCommandMutualAuthenticate(); /* adjust state variables */ stateVarGENERAL_AUTHENTICATE_CHAINING = PACE_MUTUAL_AUTHENTICATE_RECEIVED; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case PACE_PERFORM_KEY_AGREEMENT_PROCESSED */ case PACE_PERFORM_KEY_AGREEMENT_RECEIVED: if(isStatusWord(SW_9000_NO_ERROR)){ /* Transition from PACE_PERFORM_KEY_AGREEMENT_RECEIVED to PACE_PERFORM_KEY_AGREEMENT_PROCESSED */ evConsumed=16; /* OnEntry code of state PACE_PERFORM_KEY_AGREEMENT_PROCESSED */ logs("PKA_PROCESSED"); returnResult(); /* adjust state variables */ stateVarGENERAL_AUTHENTICATE_CHAINING = PACE_PERFORM_KEY_AGREEMENT_PROCESSED; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case PACE_PERFORM_KEY_AGREEMENT_RECEIVED */ case PACE_MUTUAL_AUTHENTICATE_RECEIVED: if(isStatusWord(SW_9000_NO_ERROR)){ /* Transition from PACE_MUTUAL_AUTHENTICATE_RECEIVED to PACE_MUTUAL_AUTHENTICATE_PROCESSED */ evConsumed=16; /* OnEntry code of state PACE_MUTUAL_AUTHENTICATE_PROCESSED */ logs("MA_PROCESSED"); /* adjust state variables */ stateVarPACE_ANNOUNCED = PACE_MUTUAL_AUTHENTICATE_PROCESSED; stateVarGENERAL_AUTHENTICATE_CHAINING = PACE_GET_NONCE_PROCESSED; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case PACE_MUTUAL_AUTHENTICATE_RECEIVED */ default: /* Intentionally left blank */ break; } /* end switch GENERAL_AUTHENTICATE_CHAINING */ /* Check if event was already processed */ if(evConsumed==0){ if(true){ if(warningOrErrorOccurredDuringProcessing()){ /* Transition from GENERAL_AUTHENTICATE_CHAINING to PROCESSING_ERROR */ evConsumed=16; /* adjust state variables */ stateVar = PROCESSING_ERROR; }else{ /* Transition from GENERAL_AUTHENTICATE_CHAINING to CHAINING_INTERRUPTED */ evConsumed=16; /* adjust state variables */ stateVar = CHAINING_INTERRUPTED; } /*end of event selection */ }else{ /* Intentionally left blank */ } /*end of event selection */ } break; /* end of case GENERAL_AUTHENTICATE_CHAINING */ case PACE_GET_NONCE_RECEIVED: if(isStatusWord(SW_9000_NO_ERROR)){ /* Transition from PACE_GET_NONCE_RECEIVED to GENERAL_AUTHENTICATE_CHAINING */ evConsumed=16; logs("GET_NONCE_PROCESSED"); returnResult(); stateVarPACE_IN_PROGRESS = GENERAL_AUTHENTICATE_CHAINING;/* Default in entry chain */ stateVarGENERAL_AUTHENTICATE_CHAINING = PACE_GET_NONCE_PROCESSED;/* Default in entry chain */ }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case PACE_GET_NONCE_RECEIVED */ case PACE_SET_AT_PROCESSED: if(isAPDU("Get Nonce")){ /* Transition from PACE_SET_AT_PROCESSED to PACE_GET_NONCE_RECEIVED */ evConsumed=16; /* OnEntry code of state PACE_GET_NONCE_RECEIVED */ logs("GET_NONCE_RECEIVED"); processCommandGetNonce(); /* adjust state variables */ stateVarPACE_IN_PROGRESS = PACE_GET_NONCE_RECEIVED; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case PACE_SET_AT_PROCESSED */ case PACE_SET_AT_RECEIVED: if(isStatusWord(SW_9000_NO_ERROR)){ /* Transition from PACE_SET_AT_RECEIVED to PACE_SET_AT_PROCESSED */ evConsumed=16; /* OnEntry code of state PACE_SET_AT_PROCESSED */ logs("SET_AT_PROCESSED"); returnResult(); /* adjust state variables */ stateVarPACE_IN_PROGRESS = PACE_SET_AT_PROCESSED; }else if(isStatusWord_63CX_Counter()){ /* Transition from PACE_SET_AT_RECEIVED to PACE_SET_AT_PROCESSED */ evConsumed=16; /* OnEntry code of state PACE_SET_AT_PROCESSED */ logs("SET_AT_PROCESSED"); returnResult(); /* adjust state variables */ stateVarPACE_IN_PROGRESS = PACE_SET_AT_PROCESSED; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case PACE_SET_AT_RECEIVED */ default: /* Intentionally left blank */ break; } /* end switch PACE_IN_PROGRESS */ break; /* end of case PACE_IN_PROGRESS */ case PACE_MUTUAL_AUTHENTICATE_PROCESSED: if(true){ /* Transition from PACE_MUTUAL_AUTHENTICATE_PROCESSED to PACE_COMPLETED */ evConsumed=16; /* OnEntry code of state PACE_COMPLETED */ logs("COMPLETED"); returnResult(); /* adjust state variables */ stateVar = PACE_COMPLETED; }else{ /* Intentionally left blank */ } /*end of event selection */ break; /* end of case PACE_MUTUAL_AUTHENTICATE_PROCESSED */ default: /* Intentionally left blank */ break; } /* end switch PACE_ANNOUNCED */ /* Check if event was already processed */ if(evConsumed==0){ if(true){ if(warningOrErrorOccurredDuringProcessing()){ /* Transition from PACE_ANNOUNCED to RESET */ evConsumed=16; if(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS){ if(stateVarPACE_IN_PROGRESS== GENERAL_AUTHENTICATE_CHAINING){ } } /* Action code for transition */ logs("error occurred during processing"); /* adjust state variables */ stateVar = RESET; }else{ /* Transition from PACE_ANNOUNCED to PACE_ANNOUNCED */ evConsumed=16; if(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS){ if(stateVarPACE_IN_PROGRESS== GENERAL_AUTHENTICATE_CHAINING){ } } /* Action code for transition */ logs("unable to process APDU - returning to previous state"); /* OnEntry code of state PACE_ANNOUNCED */ logs("PACE_ANNOUNCED"); stateVar = PACE_ANNOUNCED;/* entry chain */ if(stateVarPACE_ANNOUNCED== PACE_INIT){ logs("INIT"); returnResult(); }else if(stateVarPACE_ANNOUNCED== PACE_IN_PROGRESS){ logs("PACE_IN_PROGRESS"); stateVarPACE_ANNOUNCED = PACE_IN_PROGRESS;/* entry chain */ if(stateVarPACE_IN_PROGRESS== GENERAL_AUTHENTICATE_CHAINING){ logs("GET_NONCE_PROCESSED"); returnResult(); stateVarPACE_IN_PROGRESS = GENERAL_AUTHENTICATE_CHAINING;/* Default in entry chain */ stateVarGENERAL_AUTHENTICATE_CHAINING = PACE_GET_NONCE_PROCESSED;/* Default in entry chain */ }else if(stateVarPACE_IN_PROGRESS== PACE_GET_NONCE_RECEIVED){ logs("GET_NONCE_RECEIVED"); processCommandGetNonce(); }else if(stateVarPACE_IN_PROGRESS== PACE_SET_AT_PROCESSED){ logs("SET_AT_PROCESSED"); returnResult(); }else if(stateVarPACE_IN_PROGRESS== PACE_SET_AT_RECEIVED){ logs("SET_AT_RECEIVED"); processCommandSetAT(); } }else if(stateVarPACE_ANNOUNCED== PACE_MUTUAL_AUTHENTICATE_PROCESSED){ logs("MA_PROCESSED"); } } /*end of event selection */ }else{ /* Intentionally left blank */ } /*end of event selection */ } break; /* end of case PACE_ANNOUNCED */ default: /* Intentionally left blank */ break; } /* end switch stateVar_root */ /* Post Action Code */ }while (this.continueProcessing); return evConsumed; } }