当前位置: 首页>>代码示例>>Java>>正文


Java ISO7816.OFFSET_CLA属性代码示例

本文整理汇总了Java中javacard.framework.ISO7816.OFFSET_CLA属性的典型用法代码示例。如果您正苦于以下问题:Java ISO7816.OFFSET_CLA属性的具体用法?Java ISO7816.OFFSET_CLA怎么用?Java ISO7816.OFFSET_CLA使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在javacard.framework.ISO7816的用法示例。


在下文中一共展示了ISO7816.OFFSET_CLA属性的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: get_data

public void get_data(APDU apdu, byte[] buf)
{
	//verify that the class for this instruction is correct
	if((short)(buf[ISO7816.OFFSET_CLA] & 0xFF) != 0x80)
		ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
	//check state - this command only works in the PERSO state
	if(PROFILE.STATE != PERSO)
		ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
	//check that P1 & P2 are correct
	if(buf[ISO7816.OFFSET_P1] != (byte) 0x00 || (byte)buf[ISO7816.OFFSET_P2] != (byte) 0xCF)
		ISOException.throwIt((short)0x6A88); //referenced data not found
	//build response message
	apdu.setOutgoing();
	apdu.setOutgoingLength((short)13);

	buf[0]=(byte)0xCF; //Key Data Tag
	buf[1]=(byte)11;   //length
		buf[2]=PROFILE.VER_KMC;
		Util.arrayCopyNonAtomic(PROFILE.KMC_ID,(short)0,buf,(short)3,(short)6);
		Util.arrayCopyNonAtomic(PROFILE.CSN,(short)0,buf,(short)9,(short)4);
		
	apdu.sendBytes((short)0,(short)13);		
}
 
开发者ID:jiankeliu5,项目名称:CardApplet-PayPass,代码行数:23,代码来源:PayPass.java

示例2: get_data

public void get_data(APDU apdu, byte[] buf) {
    // verify that the class for this instruction is correct
    if ((short) (buf[ISO7816.OFFSET_CLA] & 0xFF) != 0x80)
        ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
    // check state - this command only works in the PERSO state
    if (PROFILE.STATE != PERSO)
        ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
    // check that P1 & P2 are correct
    if (buf[ISO7816.OFFSET_P1] != (byte) 0x00 || (byte) buf[ISO7816.OFFSET_P2] != (byte) 0xCF)
        ISOException.throwIt((short) 0x6A88); //referenced data not found
    // build response message
    apdu.setOutgoing();
    apdu.setOutgoingLength((short) 13);

    buf[0] = (byte) 0xCF; //Key Data Tag
    buf[1] = (byte) 11;   //length
    buf[2] = PROFILE.VER_KMC;
    Util.arrayCopyNonAtomic(PROFILE.KMC_ID, (short) 0, buf, (short) 3, (short) 6);
    Util.arrayCopyNonAtomic(PROFILE.CSN, (short) 0, buf, (short) 9, (short) 4);

    apdu.sendBytes((short) 0, (short) 13);
}
 
开发者ID:SimplyTapp,项目名称:CardExamples,代码行数:22,代码来源:PayPass.java

示例3: process

public void process(APDU apdu) throws ISOException {
    byte[] buff = apdu.getBuffer();

    if (selectingApplet()) {
        return;
    }

    // account for logical channels
    if (((byte) (buff[ISO7816.OFFSET_CLA] & (byte) 0xFC)) != CLA) {
        ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
    }

    switch (buff[ISO7816.OFFSET_INS]) {
    case INS_GET_STATUS:
        getInitStatus(apdu);
        break;
    case INS_GEN_RANDOM:
        prng(apdu);
        break;
    case INS_GEN_KEY:
        generateKeys(apdu);
        break;
    case INS_ENCRYPT:
        encrypt(apdu);
        break;
    case INS_DECRYPT:
        decrypt(apdu);
        break;
    case INS_CLEAR:
        clear(apdu);
        break;

    default:
        ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
    }
}
 
开发者ID:nelenkov,项目名称:sim-password-manager,代码行数:36,代码来源:PasswordManagerApplet.java

示例4: process

public void process(APDU apdu) throws ISOException {
    byte[] buffer = apdu.getBuffer();
    if (selectingApplet()) {
        if (attestationCertificateSet) {
            Util.arrayCopyNonAtomic(VERSION, (short)0, buffer, (short)0, (short)VERSION.length);
            apdu.setOutgoingAndSend((short)0, (short)VERSION.length);
        }
        return;
    }
    if (buffer[ISO7816.OFFSET_CLA] == PROPRIETARY_CLA) {
        if (attestationCertificateSet) {
            ISOException.throwIt(ISO7816.SW_SECURITY_STATUS_NOT_SATISFIED);
        }
        switch(buffer[ISO7816.OFFSET_INS]) {
        case FIDO_ADM_SET_ATTESTATION_CERT:
            handleSetAttestationCert(apdu);
            break;
        default:
            ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
        }
    }
    else if (buffer[ISO7816.OFFSET_CLA] == FIDO_CLA) {
        if (!attestationCertificateSet) {
            ISOException.throwIt(ISO7816.SW_SECURITY_STATUS_NOT_SATISFIED);
        }
        switch(buffer[ISO7816.OFFSET_INS]) {
        case FIDO_INS_ENROLL:
            handleEnroll(apdu);
            break;
        case FIDO_INS_SIGN:
            handleSign(apdu);
            break;
        case FIDO_INS_VERSION:
            handleVersion(apdu);
            break;
        case ISO_INS_GET_DATA:
            handleGetData(apdu);
            break;
        default:
            ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
        }
    }
    else {
        ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
    }
}
 
开发者ID:tsenger,项目名称:CCU2F,代码行数:46,代码来源:U2FApplet.java

示例5: process

@Override
	public void process(APDU apdu)
	{
		if (selectingApplet())
			return;
		byte[] buffer = apdu.getBuffer();

		if (buffer[ISO7816.OFFSET_CLA] != BASE_CLA)
		{
			ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
		}

		if (equals(ROOT, buffer))
		{
			ISOException.throwIt(ISO7816.SW_NO_ERROR);
		}
		else if (equals(READ_StatusVD, buffer))
		{
			response(apdu, statusData);
		}
//		else if (equals(READ_VERSION_RECORD1, buffer))
//		{
//			response(apdu, versionR1Data);
//		}
//		else if (equals(READ_VERSION_RECORD2, buffer))
//		{
//			response(apdu, versionR2Data);
//		}
//		else if (equals(READ_VERSION_RECORD3, buffer))
//		{
//			response(apdu, versionR3Data);
//		}
		else if (equals(READ_ATR, buffer))
		{
			response(apdu, atrData);
		}
		else if (equals(HCA, buffer))
		{
			ISOException.throwIt(ISO7816.SW_NO_ERROR);
		}
		else if (equals(READ_PD, buffer))
		{
			response(apdu, pData);
		}
		else if (equals(READ_VD, buffer))
		{
			response(apdu, vData);
		}
		else
		{
			ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
		}
	}
 
开发者ID:patrick-werner,项目名称:EGKfeuer,代码行数:53,代码来源:EgkSimG0.java

示例6: process

@Override
public void process(APDU apdu)
{
	if (selectingApplet())
		return;
	byte[] buffer = apdu.getBuffer();

	if (buffer[ISO7816.OFFSET_CLA] != BASE_CLA)
	{
		ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
	}

	if (equals(ROOT, buffer))
	{
		ISOException.throwIt(ISO7816.SW_NO_ERROR);
	}
	else if (equals(READ_StatusVD, buffer))
	{
		response(apdu, statusData);
	}
	else if (equals(READ_VERSION_RECORD1, buffer))
	{
		response(apdu, versionR1Data);
	}
	else if (equals(READ_VERSION_RECORD2, buffer))
	{
		response(apdu, versionR2Data);
	}
	else if (equals(READ_VERSION_RECORD3, buffer))
	{
		response(apdu, versionR3Data);
	}
	else if (equals(READ_ATR, buffer))
	{
		response(apdu, atrData);
	}
	else if (equals(HCA, buffer))
	{
		ISOException.throwIt(ISO7816.SW_NO_ERROR);
	}
	else if (equals(READ_PD, buffer))
	{
		response(apdu, pData);
	}
	else if (equals(READ_VD, buffer))
	{
		response(apdu, vData);
	}
	else
	{
		ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
	}
}
 
开发者ID:patrick-werner,项目名称:EGKfeuer,代码行数:53,代码来源:EgkSimG1Plus.java

示例7: process

/**
 * \brief Processes an incoming APDU.
 *
 * \see APDU.
 *
 * \param apdu The incoming APDU.
 */
public void process(APDU apdu) {
    byte buffer[] = apdu.getBuffer();
    byte ins = buffer[ISO7816.OFFSET_INS];

    // No secure messaging at the moment
    if((buffer[ISO7816.OFFSET_CLA] & 0x0C) != 0) {
        ISOException.throwIt(ISO7816.SW_SECURE_MESSAGING_NOT_SUPPORTED);
    }

    transmitManager.processChainInitialization(apdu);

    if((buffer[ISO7816.OFFSET_CLA] & 0xE0) == 0) {
        switch (ins) {
        case INS_ACTIVATE_FILE:
            fs.processActivateFile(apdu);
            break;
        case INS_CREATE_FILE:
            fs.processCreateFile(apdu);
            break;
        case INS_CHANGE_REFERENCE_DATA:
            pinManager.processChangeReferenceData(apdu);
            break;
        case INS_DELETE_FILE:
            fs.processDeleteFile(apdu);
            break;
        case INS_GENERAL_AUTHENTICATE:
            pinManager.processGeneralAuthenticate(apdu);
            break;
        case INS_GENERATE_ASYMMETRIC_KEYPAIR:
            processGenerateAsymmetricKeypair(apdu);
            break;
        case INS_GET_DATA:
            processGetData(apdu);
            break;
        case INS_GET_RESPONSE:
            transmitManager.processGetResponse(apdu);
            break;
        case INS_MANAGE_SECURITY_ENVIRONMENT:
            processManageSecurityEnvironment(apdu);
            break;
        case INS_PERFORM_SECURITY_OPERATION:
            processPerformSecurityOperation(apdu);
            break;
        case INS_PUT_DATA:
            processPutData(apdu);
            break;
        case INS_RESET_RETRY_COUNTER:
            pinManager.processResetRetryCounter(apdu);
            break;
        case ISO7816.INS_SELECT:
            fs.processSelectFile(apdu, selectingApplet());
            break;
        case INS_TERMINATE_DF:
            processTerminateDF(apdu);
            break;
        case INS_VERIFY:
            pinManager.processVerify(apdu);
            break;
        default:
            ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
        } // switch
    } else {
        ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
    }
}
 
开发者ID:vletoux,项目名称:GidsApplet,代码行数:72,代码来源:GidsApplet.java

示例8: doPutData

private void doPutData(APDU apdu) throws ISOException {
    byte[] buf = apdu.getBuffer();
    byte p1 = buf[ISO7816.OFFSET_P1];
    byte p2 = buf[ISO7816.OFFSET_P2];
    byte cla = buf[ISO7816.OFFSET_CLA];
    short lc = apdu.setIncomingAndReceive();
    short offset = apdu.getOffsetCdata();
    byte id;

    if (p1 != (byte) 0x3F || p2 != (byte) 0xFF) {
        ISOException.throwIt(ISO7816.SW_INCORRECT_P1P2);
    }

    if ((cla != 0x0) && (cla != 0x10)) {
        ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
    }

    if (!authenticated[0]) {
        ISOException.throwIt(ISO7816.SW_SECURITY_STATUS_NOT_SATISFIED);
    }

    if (io.isLoaded()) {
        io.receiveFile(buf, offset, lc);
        if (cla == 0x00) {
            io.clear();
        }
        ISOException.throwIt(ISO7816.SW_NO_ERROR);
    }

    if (lc != apdu.getIncomingLength() || lc < (byte) 0x06) {
        ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
    }

    if (buf[offset] == (byte) 0x5C) {
        if ((buf[(short) (offset + 1)] != (byte) 0x03)
                || (buf[(short) (offset + 2)] != (byte) 0x5F)
                || (buf[(short) (offset + 3)] != (byte) 0xC1)) {
            ISOException.throwIt(ISO7816.SW_DATA_INVALID);
        }
        id = (byte) (buf[(short) (offset + 4)] - 1);
        if ((id == (byte) 0x03)
                || (id > (byte) 0x0A)) {
            ISOException.throwIt(ISO7816.SW_FILE_NOT_FOUND);
        }
        offset += 5;
    } else if (buf[offset] == (byte) 0x7E) {
        id = FileIndex.DISCOVERY;
        offset += 1;
    } else {
        ISOException.throwIt(ISO7816.SW_FUNC_NOT_SUPPORTED);
        return;
    }
    if (buf[offset] != (byte) 0x53) {
        ISOException.throwIt(ISO7816.SW_DATA_INVALID);
    }

    BERTLV btlv = new BERTLV(buf, (short) (offset + 1),
            (short) (apdu.getOffsetCdata() + lc));
    short l = btlv.readLength();
    short off = btlv.getOffset();

    io.createFile(id, (short) (l + (off - offset)));
    io.receiveFile(buf, offset, (short) (lc - (offset - apdu.getOffsetCdata())));

    if (cla == 0x00) {
        io.clear();
    }
}
 
开发者ID:mbrossard,项目名称:cryptonit-applet,代码行数:68,代码来源:CryptonitApplet.java

示例9: process

@Override
public void process(APDU apdu) throws ISOException {
    if (selectingApplet()) {
        return;
    }
    byte[] buffer = apdu.getBuffer();
    if (buffer[ISO7816.OFFSET_CLA] != NFCFORUM_CLA) {
        ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
    }
    switch(buffer[ISO7816.OFFSET_INS]) {
        case INS_SELECT: {
            apdu.setIncomingAndReceive();
            short selectedFile = Util.getShort(buffer, ISO7816.OFFSET_CDATA);
            switch(selectedFile) {
                case EF_CONTAINER:
                    scratch[OFFSET_SELECTED_FILE] = SELECTED_FILE_CONTAINER;
                    break;
                case EF_NDEF:
                    scratch[OFFSET_SELECTED_FILE] = SELECTED_FILE_NDEF;
                    break;
                default:
                    ISOException.throwIt(ISO7816.SW_FILE_NOT_FOUND);
            }
        }
        break;
        
        case INS_READ: {
            short offset = Util.makeShort(buffer[ISO7816.OFFSET_P1], buffer[ISO7816.OFFSET_P2]);
            if (scratch[OFFSET_SELECTED_FILE] == SELECTED_FILE_NONE) {
                ISOException.throwIt(ISO7816.SW_CONDITIONS_NOT_SATISFIED);
            }
            byte[] fileData = null;
            switch(scratch[OFFSET_SELECTED_FILE]) {
                case SELECTED_FILE_CONTAINER:
                    fileData = CONTAINER_DATA;
                    break;
                case SELECTED_FILE_NDEF:
                    fileData = FILE_DATA;
                    break;
            }
            if (offset >= (short)fileData.length) {
                ISOException.throwIt(ISO7816.SW_INCORRECT_P1P2);
            }
            short sizeRead = (short)(buffer[ISO7816.OFFSET_LC] & 0xff);
            short blockLength = (((short)(offset + sizeRead) > (short)fileData.length) ? (short)(fileData.length - offset) : sizeRead);
            Util.arrayCopyNonAtomic(fileData, offset, buffer, (short)0, blockLength);
            apdu.setOutgoingAndSend((short)0, blockLength);
        }
        break;
            
    }       
}
 
开发者ID:LedgerHQ,项目名称:ledger-javacard,代码行数:52,代码来源:LWNFCForumApplet.java


注:本文中的javacard.framework.ISO7816.OFFSET_CLA属性示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。