首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >EMV JavaCard APDU响应TLV格式

EMV JavaCard APDU响应TLV格式
EN

Stack Overflow用户
提问于 2016-04-02 16:19:54
回答 1查看 1.1K关注 0票数 0

我有一个简单的JavaCard HelloWorld脚本,我在JCIDE中使用虚拟读取器执行它,然后从pyapdutool: 00a404000 e援助发送apdu命令,然后接收javacard字符串,一切正常运行。我的问题是:如何返回tlv格式的数据而不是响应?我在emv书4.3中找到了这方面的内容,而且google还没有找到一个在javacard脚本中实现emv标记的例子。有人能让我走上正确的道路来理解这一点吗?

代码语言:javascript
运行
复制
package helloworld;
import javacard.framework.*;

public class helloworld extends Applet
{
private static final byte[] javacard = {(byte)'J',(byte)'a',(byte)'v'(byte)'a',(byte)' ',(byte)'C',(byte)'a',(byte)'r',(byte)'d',(byte)'!',};
private static final byte JC_CLA = (byte)0x80;
private static final byte JC_INS = (byte)0x00;

public static void install(byte[] bArray, short bOffset, byte bLength)
{
   new helloworld().register(bArray, (short) (bOffset + 1), bArray[bOffset]);
}

public void process(APDU apdu)
{
   if (selectingApplet())
  {
     return;
  }

  byte[] buf = apdu.getBuffer();

  byte CLA = (byte) (buf[ISO7816.OFFSET_CLA] & 0xFF);
    byte INS = (byte) (buf[ISO7816.OFFSET_INS] & 0xFF);

    if (CLA != JC_CLA)
    {
        ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
    }

  switch (buf[ISO7816.OFFSET_INS])
  {
  case (byte)0x00:
     OutPut(apdu);
     break;
  default:
     ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
  }
}

private void OutPut( APDU apdu)
    {
    byte[] buffer = apdu.getBuffer();
    short length = (short) javacard.length;
    Util.arrayCopyNonAtomic(javacard, (short)0, buffer, (short)0, (short)  length);
    apdu.setOutgoingAndSend((short)0, length);
     }
   }

简而言之:我希望能够以这种格式发送响应,比如: 6F1A840E315041592E5359532E4444463031A5088801025F2D02656E,然后当我到http://www.emvlab.org/tlvutils/去解码它。

EN

回答 1

Stack Overflow用户

发布于 2016-04-04 08:11:02

Javacard中有几个TLV类,但它们是可选的,据我所知,没有任何发卡者实现这些类。所以你可以:

  • 硬编码任何TLV对象,如果它们一点也不改变
  • 您可以手动构建这些部件,并在代码中将它们连接到每个新的TLV对象中,或者
  • 您构建自己的TLV解析器/编码器。

在javacard中,最后一个选项很难成为无错误和可执行的选项,所以如果您是初学者,那么如果您对第一个选项过于恼火,您可以尝试构建一个tlv解析器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36375710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档