亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? javapursecrypto.java

?? 一個javacard的身份驗證程序
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *//* * @(#)JavaPurseCrypto.java	1.8 06/01/04 */package	com.sun.javacard.samples.JavaPurseCrypto;import javacard.framework.*;import javacard.security.*;import javacardx.crypto.*;import com.sun.javacard.samples.SampleLibrary.JavaLoyaltyInterface;/** * This class is intended to demonstrate how an electronic cash application * might be developed using Java Card * <p>See <em>Java Card(TM) Reference Implementation User's Guide</em>  * for details. * * @author Vadim Temkin, Modified to include cryptographic signatures by M. Saltz */public class JavaPurseCrypto extends Applet  {    /*     *     * Constants     *     */    final static byte  VERIFY = (byte)0x20; //INS value for ISO 7816-4 VERIFY command    final static byte  READ = (byte)0xB2;	//INS value for ISO 7816-4 READ RECORD command    final static byte  INITIALIZE_TRANSACTION = (byte)0x20; //INS byte for Initialize Transaction    final static byte  COMPLETE_TRANSACTION = (byte)0x22; //INS byte for Complete Transaction    final static byte  INITIALIZE_UPDATE = (byte)0x24; //INS byte for Initialize Parameter Update    final static byte  COMPLETE_UPDATE = (byte)0x26; //INS byte for Complete Parameter Update    final static byte  CREDIT = (byte)0x01;	//P1 byte for Credit in Initialize Transaction    final static byte  DEBIT = (byte)0x02;	//P1 byte for Debit in Initialize Transaction    final static byte  MASTER_PIN = (byte)0x81; //P2 byte for Master PIN in Verify    final static byte  USER_PIN = (byte)0x82; //P2 byte for User PIN in Verify        final static short    MAX_MAC_DATA = (short) 0x001E; //maximimum length of data used in MAC    final static short	SW_CREDIT_TOO_HIGH = (short)0x9101;//SW bytes for Credit Too High condition    final static short	SW_NOT_ENOUGH_FUNDS = (short)0x9102;//SW bytes for Not Enough Funds	condition    final static short	SW_AMOUNT_TOO_HIGH = (short)0x9103;//SW bytes for Amount Too High condition    final static short	SW_COMMAND_OUT_OF_SEQUENCE = (short)0x9104;//SW bytes for Command out of Sequence    final static short	SW_WRONG_SIGNATURE = (short)0x9105;//SW bytes for Wrong Signature condition    final static short 	SW_PIN_FAILED = (short)0x69C0;//SW bytes for PIN Failed condition    final static short 	SW_SUCCESS = (short)0x9000;//SW bytes for success, used in MAC.    //The last nibble is replaced with the    //number of remaining tries        final static byte  	LC_IT	 	= 10;	//Lc byte for Initialize Transaction    final static byte  	LC_CT	 	= 13;	//Lc byte for Complete Transaction    final static byte  	LC_CU_MIN 	= 18;	//Lc byte for Complete Update    final static byte 	CAD_ID_OFFSET   = 7;	//Offset for CAD ID in Process Initialize Transaction    final static short	DATE_LENGTH = 3;	//Length of ExpDate array    final static short	DATETIME_LENGTH = 5;//Length of DateTime array    final static short	ID_LENGTH	= 4;	//Length for CAD ID and Purse ID arrays    final static short	SHORT_LENGTH= 2;	//Length of a short value for offset computations    final static short	START		= 0;	//For offset computations    final static short	SIGNATURE_LENGTH    = 8;	//Length of signatures    final static short	MAX_LOYALTY = 4;	//Max number of loyalty applets        // transientShorts array indices    final static byte  	TN_IX = 0;    final static byte  	NEW_BALANCE_IX=(byte)TN_IX+1;    final static byte 	CURRENT_BALANCE_IX=(byte)NEW_BALANCE_IX+1;    final static byte 	AMOUNT_IX=(byte)CURRENT_BALANCE_IX+1;    final static byte   TRANSACTION_TYPE_IX=(byte)AMOUNT_IX+1;    final static byte	SELECTED_FILE_IX=(byte)TRANSACTION_TYPE_IX+1;    final static byte   NUM_TRANSIENT_SHORTS=(byte)SELECTED_FILE_IX+1;        // transientBools array indices    final static byte  	TRANSACTION_INITIALIZED=0;    final static byte  	UPDATE_INITIALIZED=(byte)TRANSACTION_INITIALIZED+1;    final static byte   NUM_TRANSIENT_BOOLS=(byte)UPDATE_INITIALIZED+1;        // constants for response to applet SELECT command    private final static byte FCI_TEMPLATE_TAG = (byte)0x6F;    private final static byte FCI_AID_TAG = (byte)0x84;    private static byte[] FCI_PROPERIETARY = {        (byte)0xA5,   // tag        (byte)0x01,   // length        (byte)0x42 }; // value         private ParametersFile 		parametersFile;    private CyclicFile 			transactionLogFile;    private short 	TN;    private short 	PUN;    private boolean isPersonalized; //set to true when Master PIN is updated first time    /*     * File System emulation constants     */    final static short PARAMETERS_FID =	(short) 0x9102;    final static short TRANSACTION_LOG_FID = (short) 0x9103;    final static short BALANCES_FID	= (short) 0x9104;    final static byte  FID_BYTE = (byte) 0x91;    final static byte  TRANSACTION_RECORD_LENGTH = 18;    final static byte  TRANSACTION_RECORD_NUMBER = 10;    final static byte  BALANCES_RECORD_LENGTH = 6;    final static byte  BALANCES_RECORD_NUMBER = 1;    final static byte  PARAMETERS_RECORD_NUMBER = 11;    final static byte  OFFSET_BAL_CURRENT =	0;    final static byte  OFFSET_BAL_MAX =	2;    final static byte  OFFSET_AMOUNT_MAX = 4;    final static byte  NUMBER_OF_FILES = 3;            private OwnerPIN masterPIN;    private OwnerPIN userPIN;        /*     * Tags for TLV records in Complete Parameter Update C-APDU.     */    final static byte MASTER_PIN_UPDATE 	= (byte)0xC1;    final static byte USER_PIN_UPDATE 		= (byte)0xC2;    final static byte EXP_DATE_UPDATE 		= (byte)0xC5;    final static byte PURSE_ID_UPDATE 		= (byte)0xC6;    final static byte MAX_BAL_UPDATE 		= (byte)0xC7;    final static byte MAX_M_UPDATE 			= (byte)0xC8;    final static byte VERSION_UPDATE 		= (byte)0xC9;    final static byte LOYALTY1_UPDATE 		= (byte)0xCA;    final static byte LOYALTY2_UPDATE 		= (byte)0xCB;    final static byte LOYALTY3_UPDATE 		= (byte)0xCC;    final static byte LOYALTY4_UPDATE 		= (byte)0xCD;        final static short TLV_OFFSET = 13; //Offset of TLV in Complete Parameter Update        /*     * The DES key used for DES MAC calculations. The keyData should be gotten via an update     * method call in a real application.     */    byte[] keyData   = {(byte)0x11, (byte)0x33, (byte)0x22, (byte)0x05, (byte)0x44,        (byte)0x77, (byte)0x06, (byte)0x08};        /*     *     * Various and sundry byte arrays     *     */        private byte[] CAD_ID_array;    private byte[] byteArray8;			// Signature work array    private short[] transientShorts;    private boolean[] transientBools;    private byte[] ID_Purse;    private byte[] ExpDate;    private byte[] balancesRecord;    private byte[] MAC_buffer;        /*     * The two associated arrays to represent Loyalty Applets.     * If value of loyaltyCAD matches first 2 bytes of CAD ID for transaction     * the grantPoints method of corresponding loyalty Shareable Interface Object     * is called. These arrays are populated by Parameter Update APDU commands.     */    private short[] loyaltyCAD;    private JavaLoyaltyInterface[] loyaltySIO;        /*    * signature/key objects     */    private DESKey deskey;    private Signature sig;            /**    * Installs Java Purse applet.    * @param bArray install parameter array.    * @param bOffset where install data begins.    * @param bLength install parameter data length.    */    public static void install( byte[] bArray, short bOffset, byte bLength ) {        new JavaPurseCrypto(bArray, bOffset, bLength);    }        /**    * Performs memory allocations, initialization, and applet registration.    *    * @param bArray received by install.    * @param bOffset received by install.    * @param bLength received by install.    */    protected JavaPurseCrypto(byte[] bArray, short bOffset, byte bLength) {                ID_Purse = new byte[ID_LENGTH];        ExpDate = new byte[DATE_LENGTH];        ExpDate[0] = (byte)12; ExpDate[1] = (byte)31; ExpDate[2] = (byte)99;        balancesRecord = new byte[BALANCES_RECORD_LENGTH];        loyaltyCAD = new short[MAX_LOYALTY];        loyaltySIO = new JavaLoyaltyInterface[MAX_LOYALTY];                TN = 0;        PUN = 0;        isPersonalized = false;                //Create transient objects.        transientShorts = JCSystem.makeTransientShortArray( NUM_TRANSIENT_SHORTS,            JCSystem.CLEAR_ON_DESELECT);        transientBools = JCSystem.makeTransientBooleanArray( NUM_TRANSIENT_BOOLS,            JCSystem.CLEAR_ON_DESELECT);                CAD_ID_array = JCSystem.makeTransientByteArray( (short)4,            JCSystem.CLEAR_ON_DESELECT);                // initialize crypto key/signature objects and work array.        byteArray8 = JCSystem.makeTransientByteArray( (short)8,            JCSystem.CLEAR_ON_DESELECT);        deskey = (DESKey)KeyBuilder.buildKey(KeyBuilder.TYPE_DES_TRANSIENT_DESELECT,             KeyBuilder.LENGTH_DES, false);        MAC_buffer = JCSystem.makeTransientByteArray( MAX_MAC_DATA,            JCSystem.CLEAR_ON_DESELECT);        deskey.setKey(keyData, (short)0);        sig = Signature.getInstance(Signature.ALG_DES_MAC8_ISO9797_M2, false);                masterPIN = new OwnerPIN ((byte)1, (byte)8);        //There is only one try - it's not supposed to be done by human operator        userPIN = new OwnerPIN ((byte)5, (byte)8);                parametersFile = new ParametersFile(PARAMETERS_RECORD_NUMBER);                transactionLogFile = new CyclicFile(TRANSACTION_RECORD_NUMBER,            TRANSACTION_RECORD_LENGTH);        Util.setShort(balancesRecord, OFFSET_BAL_CURRENT, (short)0);                /*         * if AID length is not zero register Java Loyalty         * applet with specified AID         *         * NOTE: all the memory allocations should be performed before register()         */                byte aidLen = bArray[bOffset];        if (aidLen== (byte)0){            register();        } else {            register(bArray, (short)(bOffset+1), aidLen);        }    }            /**     * Performs the session finalization.     */    public void deselect() {        userPIN.reset();        masterPIN.reset();    }            /**     * Dispatches APDU commands.     * @param apdu APDU object     */    public void process(APDU apdu) {        byte[] buffer = apdu.getBuffer();                if (!apdu.isISOInterindustryCLA()) {            switch (buffer[ISO7816.OFFSET_INS]) {            case INITIALIZE_TRANSACTION:                processInitializeTransaction(apdu); break;            case COMPLETE_TRANSACTION:                processCompleteTransaction(apdu); break;            case INITIALIZE_UPDATE:                processInitializeUpdate(apdu);	break;            case COMPLETE_UPDATE:                processCompleteUpdate(apdu); break;            default:                ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);            }        } else {            if (buffer[ISO7816.OFFSET_INS] == VERIFY){                processVerifyPIN(apdu);            } else if (buffer[ISO7816.OFFSET_INS] == ISO7816.INS_SELECT) {                if (selectingApplet())                    processSelectPurse(apdu);                else                     processSelectFile(apdu);            } else if (buffer[ISO7816.OFFSET_INS] == READ) {                processReadRecord(apdu);            } else                 ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);        }    }        /**     * Handles Select Purse APDU.     * @param apdu APDU object     */    private void processSelectPurse(APDU apdu) {        //        // There might be multiple instances of Java Purse on the card with        // different AID values. This method returns the FCI here identifying its         // particular instance.        //                // Format of response data        //  FCI tag, FCI length,        //     AID tag, length, value,        //     PROPRIETARY tag, value.        //                // TEMPLATE        byte[] buffer = apdu.getBuffer();        buffer[0] = FCI_TEMPLATE_TAG;        // buffer[1] set later                // AID        buffer[2] = FCI_AID_TAG;        buffer[3] = JCSystem.getAID().getBytes(buffer, (short)4);        short offset=(short)(3+buffer[3]);                // PROPRIETARY DATA         buffer[offset++] = (byte)FCI_PROPERIETARY.length;         offset = Util.arrayCopyNonAtomic(FCI_PROPERIETARY, (short)0, buffer,             offset, (short)FCI_PROPERIETARY.length);                // FCI template length        buffer[1] = (byte)(offset-(short)2);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级蜜桃2在线观看| 精品一区二区三区免费观看| 99久久精品国产网站| 国产精品毛片久久久久久久| av激情亚洲男人天堂| 一区二区在线观看免费| 欧美性大战久久| 日韩精品免费专区| 久久久一区二区三区捆绑**| 国产iv一区二区三区| 亚洲欧美日韩国产手机在线| 欧美午夜片在线看| 黄一区二区三区| 国产精品萝li| 欧美精品乱码久久久久久按摩| 蜜桃传媒麻豆第一区在线观看| 久久这里只有精品视频网| 99精品视频一区| 无码av中文一区二区三区桃花岛| 精品免费国产一区二区三区四区| 国产精一区二区三区| 亚洲女女做受ⅹxx高潮| 欧美理论电影在线| 国产成人av一区二区三区在线| 最新欧美精品一区二区三区| 在线观看91av| 国产精品18久久久久| 亚洲永久免费视频| 久久综合九色综合欧美就去吻| 91美女蜜桃在线| 久久99精品国产91久久来源| 亚洲视频在线观看一区| 欧美一级二级三级蜜桃| 高清不卡在线观看av| 亚洲成人综合视频| 日本一二三不卡| 7777精品伊人久久久大香线蕉的| 国产a区久久久| 欧美xxxxxxxx| 亚洲专区一二三| 欧美v国产在线一区二区三区| 国产成人av电影在线| 亚洲高清不卡在线观看| 国产欧美日韩亚州综合| 欧美日韩免费在线视频| 久久精品国产秦先生| 欧美精品一区二区在线播放| 国产成人在线视频播放| 亚洲欧洲精品成人久久奇米网| 99久久精品一区| 亚洲成人免费影院| 精品久久一区二区三区| 国产成人综合在线| 亚洲精品视频免费观看| 69堂亚洲精品首页| 国产成人免费视频网站高清观看视频| 国产精品免费久久久久| 欧美性猛片xxxx免费看久爱| 蜜桃精品视频在线| 国产喷白浆一区二区三区| 97久久精品人人做人人爽50路| 亚洲福利一区二区三区| 26uuu色噜噜精品一区| 色综合久久久久网| 天天影视网天天综合色在线播放| 久久中文字幕电影| 欧美唯美清纯偷拍| 国产一区二区导航在线播放| 亚洲精品国产精品乱码不99| 日韩欧美亚洲国产精品字幕久久久| 国产成人福利片| 日日摸夜夜添夜夜添亚洲女人| 久久―日本道色综合久久| 日本高清成人免费播放| 久久国产夜色精品鲁鲁99| 亚洲欧美成aⅴ人在线观看| 欧美成人精品1314www| 成人h动漫精品一区二区| 日本不卡一二三| 亚洲六月丁香色婷婷综合久久| 日韩精品专区在线影院观看| 91黄色小视频| 国产91精品欧美| 男人的天堂久久精品| 亚洲老妇xxxxxx| 中文字幕精品综合| www久久久久| 欧美日韩在线播放一区| av一区二区三区在线| 久久精品免费看| 日韩国产成人精品| 亚洲免费在线视频| 国产精品丝袜91| 久久午夜电影网| 91精品欧美综合在线观看最新| 91毛片在线观看| 国产suv精品一区二区883| 久久精品国产在热久久| 亚洲成在人线免费| 依依成人综合视频| 国产精品美女久久久久aⅴ | 亚洲精品福利视频网站| 久久久久久久综合日本| 日韩欧美国产一二三区| 欧美精品亚洲二区| 欧美人与z0zoxxxx视频| 99精品欧美一区二区蜜桃免费| 国产精品自在欧美一区| 久久精品国产精品青草| 麻豆91精品视频| 青青国产91久久久久久| 亚洲高清三级视频| 亚洲国产一区二区三区青草影视| 亚洲国产高清不卡| 国产精品久线观看视频| 国产亚洲综合色| 中文字幕欧美国产| 国产视频一区在线播放| 国产欧美一二三区| 中文字幕一区二区日韩精品绯色| 久久久久国产精品麻豆 | 欧美午夜寂寞影院| 欧美无乱码久久久免费午夜一区| 欧洲av一区二区嗯嗯嗯啊| 色欧美88888久久久久久影院| 一本久道中文字幕精品亚洲嫩| 成人a区在线观看| 91视频91自| 欧美喷水一区二区| 日韩欧美国产麻豆| 久久精品在这里| 国产精品热久久久久夜色精品三区| 国产精品视频你懂的| 亚洲欧美另类久久久精品2019| 亚洲最快最全在线视频| 日韩精品一级中文字幕精品视频免费观看| 婷婷国产在线综合| 国产在线看一区| 夫妻av一区二区| 日本道精品一区二区三区| 欧美日本乱大交xxxxx| 精品福利视频一区二区三区| 国产日韩精品视频一区| 亚洲乱码国产乱码精品精小说| 视频一区欧美精品| 国产69精品久久久久毛片| 色婷婷精品大在线视频| 日韩午夜激情视频| 国产精品国产三级国产普通话蜜臀| 一区二区三区在线视频免费| 蜜臀av一区二区在线观看| 国产福利视频一区二区三区| 色欧美乱欧美15图片| 日韩精品一区二区三区四区视频| 中文字幕精品三区| 日韩av电影一区| 99久久99久久精品免费观看| 欧美一区二区免费| 亚洲欧美色图小说| 乱中年女人伦av一区二区| 日本韩国一区二区三区| 国产三级一区二区| 日韩中文字幕不卡| 972aa.com艺术欧美| 日韩欧美一卡二卡| 亚洲精品国产精华液| 国内不卡的二区三区中文字幕| 在线观看亚洲一区| 国产精品午夜免费| 精品一区二区三区免费毛片爱| 91国模大尺度私拍在线视频| 久久久欧美精品sm网站| 日韩vs国产vs欧美| 91国内精品野花午夜精品 | 亚洲欧美日韩久久精品| 国产精品一区免费在线观看| 9191成人精品久久| 亚洲精品少妇30p| youjizz久久| 久久久综合激的五月天| 美日韩黄色大片| 欧美人动与zoxxxx乱| 亚洲人成伊人成综合网小说| 粉嫩绯色av一区二区在线观看| 日韩精品一区二区三区视频播放| 亚洲精品成人在线| 91日韩一区二区三区| 国产精品乱码妇女bbbb| 国产激情精品久久久第一区二区 | 高清国产一区二区| 久久久噜噜噜久噜久久综合| 老司机免费视频一区二区三区| 欧美人伦禁忌dvd放荡欲情| 亚洲一区二区三区四区五区黄| 99精品一区二区三区| 中文字幕中文在线不卡住| 国产成人亚洲综合a∨猫咪| 久久视频一区二区| 国产一区二区精品久久91| 亚洲精品一区在线观看|