www.pudn.com > openemv-code-3-trunk.zip > EMVConstants.java, change:2011-11-30,size:2536b


/* 
 * Copyright (C) 2011  Digital Security group, Radboud University
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 */
 
package openemv;

import javacard.framework.ISO7816;

/* EMVConstants defines a constants used in the EMV standard and 
 * constants specific to this implementation. It extends ISO7816
 * as some ISO7816 constants are also used by EMV.
 *
 * @author joeri (joeri@cs.ru.nl)
 * @author erikpoll (erikpoll@cs.ru.nl)
  *
 */

public interface EMVConstants extends ISO7816 {

    // commands
    byte INS_GENERATE_AC = (byte) 0xAE;
    byte INS_GET_DATA = (byte) 0xCA;
    byte INS_GET_PROCESSING_OPTIONS = (byte) 0xA8;
    byte INS_INTERNAL_AUTHENTICATE = (byte) 0x88;
    byte INS_VERIFY = (byte) 0x20;
    byte INS_GET_CHALLENGE = (byte) 0x84 ;
    byte INS_READ_RECORD = (byte) 0xB2;

    // Already defined in ISO7816.java:
    //  INS_SELECT = A4
    //  INS_EXTERNAL_AUTHENTICATE = 82

    // post-issuance commands
    byte INS_APPLICATION_BLOCK = (byte)0x1E;
    byte INS_APPLICATION_UNBLOCK = (byte)0x18;
    byte INS_CARD_BLOCK = (byte)0x16;
    byte INS_PIN_CHANGE_UNBLOCK = (byte)0x24;

    // status words
    short SW_ISSUER_AUTHENTICATION_FAILED = (short)0x6300;

    // constants to record the (persistent) lifecycle state
    byte PERSONALISATION = (byte)0x00;
    byte READY = (byte)0x01;
    byte BLOCKED = (byte)0x02;

    /* codes for cryptogram types used in P1*/
    byte ARQC_CODE = (byte)0x80;
    byte   TC_CODE = (byte)0x40;
    byte  AAC_CODE = (byte)0x00;
    byte  RFU_CODE = (byte)0xC0;
    
    /* types of AC  */
    byte NONE = (byte)0x00;
    byte ARQC = (byte)0x01;
    byte   TC = (byte)0x02;
    byte  AAC = (byte)0x03;

    // types of CVM performed; NONE for none.
    public final static byte PLAINTEXT_PIN = (byte)0x01;
    public final static byte ENCRYPTED_PIN = (byte)0x02;

}