0

我正在试验 JavaCard 的小程序——它是非常简单的 SCWS serverlet(基本上来自 Gemalto Dev Suite 的模板)。我希望它在卡上存储一些数据 - 怎么做?我只找到了一些关于线性和循环文件的理论材料。

//编辑

我设法找到了这样的东西:

private byte createfile()
    {
        try{
            AdminFileView uiccAdminFileView = AdminFileViewBuilder.getTheUICCAdminFileView(JCSystem.CLEAR_ON_RESET);
            if(uiccAdminFileView == null){
                return 'a';
            }
            uiccAdminFileView.select((short)0x7F60);
            EditHandler editHandler = (EditHandler) HandlerBuilder.buildTLVHandler(HandlerBuilder.EDIT_HANDLER,
                    (short) 50);
            editHandler.clear();
            editHandler.appendArray(CreateEF, (short) 0,(short) CreateEF.length);
            uiccAdminFileView.createFile(editHandler);
            data[0] = (byte) 0x12;
            data[1] = (byte) 0x34;
            data[2] = (byte) 0x56;
            uiccAdminFileView.select((short)0xEE00);
            uiccAdminFileView.updateBinary((short) 0, data, (short)0, (short)3);
        } catch(UICCException e){

            return (byte)e.getReason();
        }
        return 'b';
    }

但此时它每次都返回“a”——据我所知,它与小程序的访问权限有关。

4

3 回答 3

1

Java Card 中曾经有一个基于 ISO 7816-4 文件的 API,但很久以前就已经沉没了。现在你只需要自己编程。您至少需要方便地使用 ISO 7816-4 (2005) 标准,以使任何东西都与基于文件的卡远程兼容。

当您必须通过安全的消息传递通道从超过 32K 的偏移量发送文件数据,同时注意文件选择和访问权限时,真正的“乐趣”就开始了。对于任何阅读这个老问题的答案的人:祝你好运 - 并且知道这是可以做到的。

于 2012-02-14T21:03:57.423 回答
0

It seems that your issue is answered here: http://developer.gemalto.com/nc/forums.html?view=single_thread&cat_uid=3&conf_uid=2&thread_uid=154

于 2012-03-22T08:22:53.397 回答
0

对于“真正的”智能卡,您可以通过称为 APDU 命令的标准来创建/编辑/删除数据。为此,卡上必须安装一个操作系统,能够处理 APDU 以创建/更新/读取文件等。如果卡完全是原始的(即它里面真的什么都没有),你必须使用卡的API 或阅读规范并自己做所有事情(很可能你会处理组装)。我不知道你的卡是什么所以我不能给出具体的说明,阅读你的手册。

于 2011-11-10T15:30:28.087 回答