从 javacard 小程序读取大文件

2023-12-06

我正在编写一个小程序,它存储 3 个不同大小的文件:5 Kb、7 Kb 和 11 Kb。我在小程序中存储文件没有任何问题。但是当我尝试读回它们时,我只能读取前两个(较小的文件)。 第三个文件抛出异常:

javax.smartcardio.CardException: Could not obtain response
at sun.security.smartcardio.ChannelImpl.doTransmit(Unknown Source)
at sun.security.smartcardio.ChannelImpl.transmit(Unknown Source)

我试图找出问题所在,发现它与文件的大小有关。因此,我创建了一个大小为 7 Kb 的测试文件,并一点一点地递增该文件。 它一直工作到我达到 7905 字节。这意味着 7905 字节是我可以从小程序读取的最大字节数。 我使用示例代码链接响应:

public void readFile(APDU apdu, short[] offset, short selectedFile, short MAX_APDU_SEN,       byte OFFSET_SENT) {
    byte[] file = getFile(selectedFile); 
    if (file == null) {
    + ISOException.throwIt(ISO7816.SW_FILE_NOT_FOUND);+
    }
    // work out how many bytes to send this time and how many will be left
    short remain = (short) (file.length - offset[OFFSET_SENT]);
    boolean chain = remain > MAX_APDU_SEN;
    short sendLen = chain ? MAX_APDU_SEN : remain;
    apdu.setOutgoing();
    apdu.setOutgoingLength(sendLen);
    apdu.sendBytesLong(file, offset[OFFSET_SENT], sendLen);
    // Check to see if there are more APDU's to send
    if (chain) {
    +offset[OFFSET_SENT] = sendLen; // count the bytes sent
    ISOException.throwIt(ISO7816.SW_BYTES_REMAINING_00); // indicate there are more bytes     to come
    } else {+
    offset[OFFSET_SENT] = 0; // no more bytes to send
    }
}

我尝试过两种不同类型的卡,即 JC 2.2.1 (36Kb) 和 JC 2.2.2 (80Kb) 兼容卡,但它们的行为都是相同的。

有什么帮助吗?


读取文件通常不使用链接来完成,因为主机应用程序可以方便地指定 P1/P2 中的起始偏移量 - 至少在 ISO 7816-4 中指定的 READ BINARY 命令中如此。我认为,即使对于链式响应,卡也希望在缓冲区中准备数据,我认为缓冲区的有限大小是您问题的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 javacard 小程序读取大文件 的相关文章

  • 验证充气城堡上的 javacard 签名 ALG_ECDSA_SHA

    我的问题如下所示 我在 javaCard jcdk 2 2 2 上生成签名 当我想使用 BouncyCastle 在终端上验证它时 签名并不总是经过验证 3 66 中的 1 100 次尝试的平均值 签名是验证完毕 其余返回 false 当我
  • 如何获得唯一的智能卡ID?

    我正在寻找一种方法来为我使用的每张智能卡找到唯一的号码 我听说每张卡都有唯一的 IC 制造日期 IC 序列号和 IC 批次标识符 我如何从我的卡中获取这些信息 当然 每个硬件供应商都会将上述信息集成到芯片中 不幸的是 这留下了以下问题 操作
  • JavaCard 的数学库?

    我目前正在开发一个 JavaCard 项目 v 2 2 2 我需要使用平方根 对数等来计算值 我知道Math类在 JavaCard API 中不可用 想知道是否存在另一个提供此类操作的库 而且我也不能用double价值观 但我需要 有没有一
  • Mifare认证

    假设我想对 Mifare Classic 进行身份验证 我如何知道要发送到卡的 APDU 的确切类型 Example 这段代码 bcla 0xFF bins 0x86 bp1 0x0 bp2 0x0 currentBlock len 0x5
  • jcop 小程序上传错误

    我是 Java 卡开发的新手 我用jcop工具作为开发套件 当我在 Eclipse 中运行简单的小程序时 出现此错误 在运行配置中我选择Java卡模拟模式 在模拟模式下成功安装后 我想在java卡中安装应用程序 cm gt upload b
  • Java 9、10、11、12...等中的 javax.smartcardio

    从 Java 9 开始 javax smartcardio 库发生了什么 有替代方法或某种方式在 JAR 中获取它吗 在网上搜索了几个小时后 感谢上面的答案 据我了解 Java 9 及更高版本是模块化的 这是几年前计划的语言改进 此外 在新
  • JavaCard 中的类字节到底是什么?

    我已经开始使用 JavaCards 并试图掌握 CLA 字节的含义 如果要读RFC 5 4 1 类字节 http www cardwerk com smartcards smartcard standard ISO7816 4 5 basi
  • 如何检查智能卡在Linux上是否正常工作?

    我有支持 PKCS 11 的智能卡吗 我只是想检查我的智能卡是否工作正常 如何在 Ubuntu 上检查它 请指导我 我可以使用什么软件 我应该遵循什么步骤 重要的是要明白PKCS 11标准只是定义了C语言API访问智能卡和其他类型的加密硬件
  • 使用.Net技术开发智能卡读卡器

    有谁知道如何监控智能卡的存在并读取卡的 UID 值 是的 我在网络上尝试了很多例子 NET 智能卡框架 http www codeproject com Articles 16653 A Smart Card Framework for N
  • 如何创建和使用Java Card库包?

    正如您可能知道的 正如中提到的Java 卡开发套件用户指南为Java Card平台编写大型应用程序的关键是将代码划分为单独的包单元 软件包最重要的限制是最大组件大小为 64KB 对于 方法组件 如果应用程序的方法组件的大小超过 64KB 那
  • Javacard 共享接口:lookupAID 返回 AID,但 getAppletShareableInterface 返回 null

    编辑2 发现错误 我尝试在构造函数中初始化 Shareable 对象 此时客户端的register方法还没有被调用 所以JCRE没有它的AID 虽然我的服务器的 getShareableInterfaceObject AID clienta
  • SIM卡认证

    我是 SIM 卡新手 我正在尝试使用 Gemalto JCardManager 金雅拓开发人员套件的一部分 和 Gemplus USB 智能卡读卡器对 SIM 卡进行身份验证 显然 我拥有所有必要的密钥 kic kid 和 kik 但我无法
  • SCardEstablishContext 内存泄漏

    我们在某些 Windows 安装上突然出现智能卡 API 问题 调用 SCardEstablishContext 函数时似乎存在内存泄漏 可以在控制台应用程序中重现该问题 代码示例位于http www pinvoke net default
  • Java Card 中的加密/解密输出 + 相应的 APDU

    我对 Java Card 的整个主题很陌生 并尝试查看一些代码示例以更好地理解 我在以下位置找到了 AES 使用示例甲骨文论坛 https community oracle com thread 1751988但以下部分有一些问题 priv
  • 从eek-for-android 访问时,Javacard 小程序 RPDU 不包含任何数据

    我有一个复杂的 Javacard 小程序 它是为普通智能卡 例如 NXP J3E145 T 1 开发和测试的 现在我必须在手机的 UICC 中使用它并从我的 Android 应用程序访问它 UICC使用T 0协议 当我从普通读卡器 Omni
  • 作为 Windows 服务运行时的 PCSC.InvalidContextException

    我一直在使用 pcsc sharp 库开发一个小型智能卡扫描仪应用程序 该应用程序作为控制台应用程序运行时工作正常 代码如下 using System using System Collections Generic using Syste
  • mifare 卡身份验证错误“6982:安全状态未满足”

    我有 pc sc 读卡器和非接触式卡 mifare 卡 我可以连接到该卡 并且我也成功执行 getdate 命令 但是当我想进行身份验证时 我看到此错误 6982 安全状态不满足 我已经尝试过这 3 个不同的身份验证命令 但所有这些命令都出
  • 智能卡 CMS 解密

    我在用着充气城堡管理我的项目的加密功能 我设法使用CMS用于加密和解密 两个密钥都存储在我的文件系统中 a cert and a p12 这是我实际使用的两个函数 private static byte CmsEncrypt byte me
  • 无法将小程序(.cap 文件)下载到智能卡中:SW 6D 00(无效指令)

    我正在开发 JCOP3 SecID P60 CS 智能卡 我正在尝试使用下载 cap 文件pyAPDU工具购买 我得到 6D 00回答 无效指令 与 的结果相同gp 请问有人可以告诉我问题出在哪里吗 未给出您用于初始选择颁发者安全域 ISD
  • 编码用于验证 PIN 的 APDU 命令时出现问题

    我正在尝试使用发送验证 pin 命令javax smartcardioAPI 我的密码是 12345678 根据我在网上找到的一些示例 我尝试使用此 APDU 00 20 00 83 08 01 02 03 04 05 06 07 08 但

随机推荐

  • 如何在intellij idea中做netbeans的“制作控制器”

    我使用 netbeans 来制作 javafx 应用程序 在 scenebuilder 中更改一些内容并保存到 fxml 后 我切换到 netbeans 右键单击 fxml 并选择 制作控制器 在控制器类中添加或删除一些代码 现在我切换到i
  • 从先序和中序列表重建二叉树

    嗨 我正在尝试重建一棵二叉树 我几乎得到了它 但它抛出了一个错误 我不知道为什么 buildTree Ord a Eq a gt a gt a gt Tree a buildTree Empty buildTree preOrd inOrd
  • RestTemplate 与 ClientHttpRequestInterceptor 会导致 GZIP 压缩两次

    我正在使用 ClientHttpRequestInterceptor 向 Android 项目中 RestTemplate 发出的每个请求添加基本授权标头 我还通过将 Content Encoding 标头设置为 gzip 来压缩请求正文
  • iPhone 上视频之上的 OpenGL 层?

    我正在尝试在 iPhone 上显示全屏视频并用 OpenGL ES 视图覆盖它 基本上 我想要在后台播放视频 同时在其上绘制 OpenGL 图形 我如何实现这一目标 这可能吗 感谢您的帮助 Florian 要使用自定义叠加视图显示摄像头视频
  • 使用 PHP 检测图像中的主要颜色

    我正在尝试复制 Dribbble com 检测图像中主要颜色的功能 在下图中 您可以看到来自 Dribbble com 的屏幕截图 其中显示了左侧图像中的 8 种主要颜色 这是图像中的实际页面http dribbble com shots
  • 刚接触 swift,我的程序按打开就会崩溃

    我在模拟器上按 打开 程序崩溃 并显示侧面板和底部按 打开 会向右滑动并显示 3 个对象 Hello Second World 您的程序崩溃是因为您在代码中添加了断点 如下所示 您可以通过以下方式将其拖到一边来删除所有内容 对所有断点执行相
  • Android ART 运行时是否具有与 Dalvik 相同的方法限制限制?

    Android ART 运行时是否具有与 Dalvik 相同的方法限制限制 目前 主 dex 文件中的方法数量限制为 64k 问题不在于 Dalvik 运行时 也不在于 DEX 文件格式 而在于当前的一组达尔维克指令 具体来说就是各种方法调
  • Java - 自定义哈希图/表的一些要点

    在之前的一些文章中 我问了一些有关 java 中自定义哈希映射 表编码的问题 现在 由于我无法解决它 并且可能是我忘记正确提及我真正想要的东西 所以我总结了所有这些 以使其清晰而准确 我要做的事 我正在尝试为我们的服务器编写代码 在该服务器
  • 使用 Express 将多个数据库查询结果发送到单个视图

    我有一个仪表板视图 dashboard jade 它将显示两个具有不同信息的面板 所有这些信息都应该从数据库中检索 然后发送到视图 假设我有一个路由文件 document js 其中定义了两个操作 exports getAllDocumen
  • 将字符串转换为模板字符串

    是否可以创建一个模板字符串作为普通字符串 let a b b 然后将其转换为模板字符串 let b 10 console log a template b 10 without eval new Function以及其他动态代码生成方式 在
  • 从Python生成电影而不将单个帧保存到文件中

    我想根据在 matplotlib 中的 python 脚本中生成的帧创建 h264 或 divx 影片 这部电影大约有 100k 帧 在网络上的示例中 例如 1 我只见过将每一帧保存为png 然后在这些文件上运行mencoder或ffmpe
  • Numpy 协方差矩阵 numpy.cov

    我正在使用 numpy 并想要计算 ndarray 的协方差矩阵 我正在尝试使用 numpy cov 但没有得到正确的结果 更多详细信息如下 我的 ndarray 是 768x8 其中 8 是我的数据集中的数字特征 当我使用 MATLAB
  • JOBB DirectoryFullException:de.waldheinz.fs.fat.DirectoryFullException:目录已满

    我正在尝试在包含 192 个 jpg 文件 总计约 70 mb 的目录上使用 JOBB 工具 当我运行命令时jobb d C sdk tools dir data k 123456 o com nick app obb pn com nic
  • DOCX4J 插入换行符

    我在 DOCX 中有一个变量 我想用一个值替换它 首先 该变量不是放置在行的开头 而是放置在一些选项卡之后 我的值是邮政地址 我希望街道和邮政编码 城市 在不同的行中具有相同的缩进 街道替换了该行中的变量 邮政编码位于新行中 如下所示 4
  • 显示 iPhone 键盘时调整 UIView 大小,如何操作? [复制]

    这个问题在这里已经有答案了 我将向您展示一个众所周知的 Whatsapp 的例子 当您触摸文本内部时 键盘会弹出 因此我必须向上移动或移动所有栏并将视图大小调整为一半 这样我仍然可以看到我正在输入的文本和发送按钮 阶段1 http www
  • 为什么使用共享库时 Linux 上的应用程序启动速度会变慢?

    在我正在开发的嵌入式设备上 启动时间是一个重要问题 整个应用程序由多个使用一组库的可执行文件组成 由于闪存空间有限 我们希望使用共享库 当编译并与共享库链接时 应用程序照常工作 并且闪存容量按预期减少 与链接到静态库的版本的区别在于应用程序
  • 如何为 Windows 编写 posix waitpid() 模拟?

    我想将我的linux代码移植到windows上 我不想使用 cygwin 或 mingw 我想通过 WinApi 来完成此操作 那么谁能帮我在windows下写waitpid 模拟呢 CreateProcess创建新进程的方式 它的输出是P
  • Javascript 中的 Mixin 和继承有什么实际区别?

    只是 模拟 多重继承是混合的唯一优点 Object assign MyClassA prototype MyMixinB 与继承 class MyClass extends MyClassB MyClassB class version o
  • 如何优雅地处理 maxRequestLength 异常?

    在我的 ASP NET MVC 如果有的话 v2 应用程序中 我有一个允许用户上传文件的页面 我已为我的应用程序配置了 maxRequestLength 以允许最大 25MB 的文件 作为测试 我向它发送了一个 500MB 的文件 该文件引
  • 从 javacard 小程序读取大文件

    我正在编写一个小程序 它存储 3 个不同大小的文件 5 Kb 7 Kb 和 11 Kb 我在小程序中存储文件没有任何问题 但是当我尝试读回它们时 我只能读取前两个 较小的文件 第三个文件抛出异常 javax smartcardio Card