package de.persosim.simulator.protocols.pace; import de.persosim.simulator.cardobjects.OidIdentifier; import de.persosim.simulator.protocols.GenericOid; import de.persosim.simulator.protocols.Oid; import de.persosim.simulator.protocols.Tr03110; import de.persosim.simulator.utils.Utils; /** * This interface provides constants used in the context of the PACE protocol according to TR-03110. * @author slutters * */ public interface Pace extends Tr03110 { /* PACE OIDs according to TR-03110 v2.1 part 3 */ /* PACE id */ // 0x02 bsi-de protocols(2) // 0x02 smartcard(2) // 0x04 4 pace protocol(4) public final static byte[] id_PACE = Utils.appendBytes(id_BSI, new byte[]{0x02, 0x02, 0x04}); public final static String id_PACE_STRING = "id-PACE"; /*--------------------------------------------------------------------------------*/ /* Key agreement & mapping */ public final static byte ECDH_GM = (byte) 0x02; public final static byte[] KEY_AGREEMENT_AND_MAPPING = new byte[]{ECDH_GM}; /*--------------------------------------------------------------------------------*/ /* Key agreement & mapping */ public final static String ECDH_GM_STRING = "ECDH-GM"; /*--------------------------------------------------------------------------------*/ /* ECDH-GM */ public final static byte[] id_PACE_ECDH_GM_AES_CBC_CMAC_128 = Utils.appendBytes(id_PACE, ECDH_GM, AES_CBC_CMAC_128); public final static byte[] id_PACE_ECDH_GM_AES_CBC_CMAC_192 = Utils.appendBytes(id_PACE, ECDH_GM, AES_CBC_CMAC_192); public final static byte[] id_PACE_ECDH_GM_AES_CBC_CMAC_256 = Utils.appendBytes(id_PACE, ECDH_GM, AES_CBC_CMAC_256); /*--------------------------------------------------------------------------------*/ public final static Oid OID_id_PACE = new GenericOid(id_PACE); /* ECDH-GM */ public final static PaceOid OID_id_PACE_ECDH_GM_AES_CBC_CMAC_128 = new PaceOid(id_PACE_ECDH_GM_AES_CBC_CMAC_128); public final static PaceOid OID_id_PACE_ECDH_GM_AES_CBC_CMAC_192 = new PaceOid(id_PACE_ECDH_GM_AES_CBC_CMAC_192); public final static PaceOid OID_id_PACE_ECDH_GM_AES_CBC_CMAC_256 = new PaceOid(id_PACE_ECDH_GM_AES_CBC_CMAC_256); /*--------------------------------------------------------------------------------*/ // {@link OidIdentifier} /* ECDH-GM */ public final static OidIdentifier OID_IDENTIFIER_id_PACE_ECDH_GM_AES_CBC_CMAC_128 = new OidIdentifier(OID_id_PACE_ECDH_GM_AES_CBC_CMAC_128); public final static OidIdentifier OID_IDENTIFIER_id_PACE_ECDH_GM_AES_CBC_CMAC_192 = new OidIdentifier(OID_id_PACE_ECDH_GM_AES_CBC_CMAC_192); public final static OidIdentifier OID_IDENTIFIER_id_PACE_ECDH_GM_AES_CBC_CMAC_256 = new OidIdentifier(OID_id_PACE_ECDH_GM_AES_CBC_CMAC_256); /*--------------------------------------------------------------------------------*/ /* ECDH-GM */ public final static String id_PACE_ECDH_GM_AES_CBC_CMAC_128_STRING = "id-PACE-ECDH-GM-AES-CBC-CMAC-128"; public final static String id_PACE_ECDH_GM_AES_CBC_CMAC_192_STRING = "id-PACE-ECDH-GM-AES-CBC-CMAC-192"; public final static String id_PACE_ECDH_GM_AES_CBC_CMAC_256_STRING = "id-PACE-ECDH-GM-AES-CBC-CMAC-256"; /*--------------------------------------------------------------------------------*/ /* Password */ public static final byte PWD_MRZ = (byte) 0x01; public static final byte PWD_CAN = (byte) 0x02; public static final byte PWD_PIN = (byte) 0x03; public static final byte PWD_PUK = (byte) 0x04; /*--------------------------------------------------------------------------------*/ /* Password */ public static final String PWD_MRZ_STRING = "MRZ"; public static final String PWD_CAN_STRING = "CAN"; public static final String PWD_PIN_STRING = "PIN"; public static final String PWD_PUK_STRING = "PUK"; /*--------------------------------------------------------------------------------*/ /* Password */ public final static String[] PASSWORD = new String[]{PWD_MRZ_STRING, PWD_CAN_STRING, PWD_PIN_STRING, PWD_PUK_STRING}; }