如何使用 Visual C++/PCSC 以编程方式加载 Java 卡小程序(.cap 文件)

2024-01-02

我目前正在进行的一个项目需要我将 JavaCard 应用程序 Applet(.cap)文件加载到 JavaCard。我们的框架基于Visual C++和PCSC,因此我们需要将相同的小程序加载到一系列JavaCard上。有谁知道如何处理这个问题?我的意思是,我应该从哪里开始。谢谢!


你是对的,这不是一项微不足道的工作。

不同的javacard之间存在差异,但通常需要做4件事:

  • 初始化与卡的安全通信(因为许多 javacard 是“全球平台”卡,它们需要安全通道)
  • 发送一个命令说“我想安装一个小程序”
  • 发送要安装的小程序的二进制数据
  • 发送二进制数据后发送命令来“实例化”小程序

我建议最初使用 eclipse 插件安装小程序,因为您可以看到该插件生成的 APDU 来执行上述步骤。一旦您知道安装小程序必须发送的 APDU 命令,您就可以使用 C++ 代码中的 PCSC 接口直接发送这些命令,以在大量卡上自动安装。

我的公司制作了一个名为的网络浏览器插件卡老大 https://cardboss.cometway.com要从浏览器执行此类操作(通过 pcsc 进行卡通信),您可以使用一个网页,您可以在其中键入自己的 APDU 并将其发送到位于以下 URL 的卡:

https://cardboss.cometway.com/content.agent?page_name=Card+Boss+Lab https://cardboss.cometway.com/content.agent?page_name=Card+Boss+Lab

如果您使用我们的工具,您的小程序安装脚本应如下所示(请注意,这是使用默认 jcop 密钥的 JCOP 卡的脚本)

    MESSAGE BOX Installing applets...

    INIT CHANNEL 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f, 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f

    // INSTALL CAP: 
    SEND 80 E6 02 00 1D 10 A0 00 00 00 09 00 03 FF FF FF FF 89 10 71 00 01 08 A0 00 00 00 03 00 00 00 00 00 00 

    // LOADING CAP: 
    SEND 80 E8 00 00 FA C4 82 01 03 01 00 25 DE CA FF (snip, I removed a bunch 
of binary data representing the cap file to shorten this post, and you might
need multiple SEND commands because of limits on the size of APDUS)

    // INSTANTIATING Applet
    SEND 80 E6 0C 00 1E 05 63 6F 6D 65 74 07 63 6F 6D 65 74 00 01 05 00 00 00 00 00 01 00 06 C9 04 68 2C 00 03 00 00 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Visual C++/PCSC 以编程方式加载 Java 卡小程序(.cap 文件) 的相关文章

  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏
  • 是否有可能劫持标准输出

    我正在尝试使用 C 重定向 Windows XP 上已运行进程的标准输出 我知道如果我自己生成进程 我可以做到这一点 但对于这个应用程序 我更喜欢一个 监听器 我可以附加到另一个进程 这在纯 Net 中可能吗 如果不可能 在 Win32 中
  • 警告 C4800:“int”:强制值为 bool“true”或“false”(性能警告)

    我的代码中有这个问题 bool CBase isNumber return id MID NUMBER bool CBase isVar return id MID VARIABLE bool CBase isSymbol return i
  • Dapper 在执行时挂起

    我有一个 IDb连接 sql UPDATE 表名 SET json json lastupdate SYSDATE WHERE id id var param new DynamicParameters param Add json jso
  • ASP.NET - 在 RenderContent 调用中将事件处理程序添加到 Repeater 内的 LinkBut​​ton

    我有一个加载自定义用户控件的 Sharepoint WebPart 用户控件包含一个 Repeater 而 Repeater 又包含多个 LinkBut ton 在 Web 部件的 RenderContent 调用中 我有一些用于添加事件处
  • 如何在C中同时运行两个子进程?

    所以我开始学习并发编程 但由于某种原因我什至无法掌握基础知识 我有一个名为 fork c 的文件 其中包含一个 main 方法 在此方法中 我将 main 分叉两次 分别进入子进程 1 和 2 在孩子 1 中 我打印了字符 A 50 次 在
  • 将 dataGridView 中选定的行作为对象检索

    我有一堂这样的课 public partial class AdressBokPerson public long Session get set public string F rnamn get set public string Ef
  • Monotouch全局异常处理

    我在野外发现了一只令人讨厌的虫子 但我无法确定它的具体情况 有没有办法拥有全局 Try Catch 块 或者有办法处理 Monotouch 中未处理的任何异常 我可以包起来吗UIApplication Main args 在 try cat
  • 组合框下拉位置

    我有一个最大化的表单 其中包含 500px 的组合框控件 停靠在右上角 Width 尝试打开组合框后 列表的一半超出了屏幕 如何强制列表显示在表单中 棘手的问题 我找不到解决这个问题的好办法 只是一个解决方法 添加一个新类并粘贴如下所示的代
  • 控制台应用程序中使用 Unicode 字符的 _tprintf

    我正在从 Unicode 构建的控制台应用程序 使用 C 和 Visual Studio 2008 执行这个简单的输出 此代码旨在在 Windows 上运行 tprintf L Some sample string n 一切正常 但是如果我
  • C# 枚举到字符串自动转换?

    是否可以让编译器自动将我的 Enum 值转换为字符串 这样我就可以避免每次都显式调用 ToString 方法 这是我想做的一个例子 enum Rank A B C Rank myRank Rank A string myString Ran
  • 我在使用 ado.net 时收到错误 Argument 2 may not be pass with ref keywords

    int t 0 cmd Parameters AddWithValue Res ref t 我在第二行收到错误 参数 2 不能与 ref 关键字一起传递 您只能通过引用传递参数ref if the 范围 is a ref参数也是如此 Add
  • 在 C# 中使用命名空间别名有什么好处? [复制]

    这个问题在这里已经有答案了 使用命名空间别名有什么好处 仅仅是为了简化编码吗 仅当与类发生冲突时我才使用名称空间别名 对我来说 这根本没有简化 我的意见是 如果没有必要 就不要使用
  • C#:自定义转换为值类型

    是否可以将自定义类转换为值类型 这是一个例子 var x new Foo var y int x Does not compile 是否有可能实现上述情况 我需要超载一些东西吗Foo 您将必须重载强制转换运算符 public class F
  • 从 DataRow 单元格解析 int [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 如何从 DataRow 单元格解析 int 值 Int32 Parse item QuestionId ToString 这段代码可以工作 但看
  • 使用多态对象数组进行 JSON 反序列化

    我在涉及多态对象数组的 JSON 反序列化方面遇到问题 我已经尝试过记录的序列化解决方案here https stackoverflow com questions 5186973 json serialization of array w
  • 卸载程序

    我正在尝试使用此代码卸载程序 但它似乎不起作用 我尝试过其他答案 但似乎也不起作用 有人可以帮助我吗 我正在尝试按给定名称 displayName 卸载该程序 例如 我给出 displayName Appname 那么此代码应该从我的计算机
  • 从对列表创建邻接列表类型结构

    在 C 中 我有 class Pair int val1 int val2 我有一个来自以下来源的配对列表 List
  • 为什么在构造函数中设置字段是(或不是)线程安全的?

    假设您有一个像这样的简单类 class MyClass private readonly int a private int b public MyClass int a int b this a a this b b public int
  • 如何在 C 中创建最低有效位设置为 1 的掩码

    这个功能如何运作 最低有效 n 位设置为 1 的掩码 Example n 6 gt 0x2F n 17 gt 0x1FFFF 我根本不明白这些 尤其是 n 6 gt 0x2F 另外 什么是面膜 通常的方法是采取1 并将其左移n位 这会给你类

随机推荐

  • 如何在 C# 中解析/反序列化从 Rest 服务返回的 JSON

    我从结构如下的 URL 获取字符串格式的 JSON 但无法解析它 它抛出异常 知道如何解析它吗 结构如下 pathway patients patient patientid 7703176 name Abbot Bud status In
  • Magento 自定义管理模块为空

    我创建了一个自定义管理模块 但我无法在其中添加内容 它始终是空白的 我正在尝试使用简单的代码进行测试 但似乎没有任何效果 public function indexAction this gt loadLayout this gt addC
  • 即使关闭页面后脚本还会继续运行吗?

    如果我通过 jquery ajax 调用一个 php 文件 其中包含一个脚本来执行一些需要一段时间的操作 例如上传一个大视频 然后我关闭页面 php 脚本是否继续加载视频 看这里 http php net manual en functio
  • 在 Turtle - Python 3.4 中不设置动画?

    下面的代码创建一棵分形树 我想尽可能快地绘制它 我不希望发生任何动画 否则绘制需要很长时间 在Python的早期版本中 这是通过turtle speed 0 实现的 如下所示 这在 python 3 4 中不起作用 import turtl
  • 如果元素的 proptype 是默认值?

    如果我尝试将 proptype 设置为PropTypes element 不是必需的 正确的默认值是什么 static propTypes expandable PropTypes bool popover PropTypes elemen
  • 许多等待异步方法,还是单个等待包装 Task.Run?

    假设我们必须通过异步流程在数据库中写入包含 1000 个元素的列表 是等待 1000 次异步插入语句更好 还是将所有 1000 次插入包装在封装到一个同步方法中 Task Run声明 等待一次 例如 SqlCommand每种方法都与他的方法
  • 空引用检查的良好做法是什么? [复制]

    这个问题在这里已经有答案了 检查对象上的空引用的最有效方法是什么 我见过各种代码示例 它们具有不同的检查方式 因此以下哪一种是最有效的 或者哪一种被认为是最佳实践 Object ReferenceEquals item null item
  • 无法使用 StringLiteralConvertible 类型的参数列表调用“init”

    当我尝试运行下面的代码时 出现此错误 Cannot invoke init with argument list of type id StringLiteralConvertible host Contact target Contact
  • 我如何从 C++ 的子 c-tor 中初始化超类参数?

    观看以下示例 class A public A int param1 int param2 int param3 class B public A public B m param1 1 m param 2 m param 3 A m pa
  • Rails 5.1,图表显示多种货币的总和

    我遇到了一个关于图表踢的小问题 我有一个铁路应用程序 您可以在其中创建不同的货币 然后 您可以创建包含标题 金额的费用 并从列表和 user id 中选择货币 这种关系已经建立并且正在发挥作用 我的用户控制器中有这样的东西 user spe
  • 具有多个参数的 JPA Criteria API

    我需要创建一个使用带有多个参数的 JPA Criteria API 的搜索方法 现在的问题是并不是每个参数都是必需的 因此有些可能为空 并且它们不应包含在查询中 我已经用 CriteriaBuilder 尝试过此操作 但我不知道如何使其工作
  • 针对匿名对象的 System.Text.Json 序列化

    我正在开发一个 ASP Net Core 3 1 应用程序 使用 2 2 从另一个应用程序移植部分代码 到目前为止 我想从 NewtonSoft JSON 序列化库切换到新的 System Text Json 但遇到了一些麻烦 考虑一个使用
  • 将控制台输出定向到 Windows 窗体中的文本框的好方法是什么?

    在 C 中 将控制台输出定向到 Windows 窗体中的文本框的好方法是什么 如果我有一个包含 console WriteLine 的现有程序 我是否需要重载 Windows 窗体文本框中的函数 创建一个写入文本框的文本编写器 public
  • 描述符可以分配给实例属性而不是类属性吗?

    我正在研究 Python 描述符 到目前为止 我在 Google 上找到的所有示例都仅分配描述符对象的类属性 是否应该始终将描述符分配给类属性 描述符可以分配给实例属性吗 如果是这样 有什么例子或用例吗 例如 所有的例子都是这样的 gt g
  • Android:基于速度的 ViewPager 滚动

    ViewPager 现在的滚动方式是每个手势滚动一个项目 无论是全屏快速滑动还是慢速拖动 它对滑动手势的处理方式都是相同的 在最后一页仅前进一步 是否有任何项目或示例会添加基于速度的滑动 根据现有滑动的速度滚动多个项目 如果仍在进行中 并且
  • Matlab中散点数据的双三次插值

    我想知道是否有一种方法可以对分散的数据集 2d 进行双三次插值 我做了一些在线搜索 发现双三次补丁 不确定这些是什么 需要安装在分散的数据上 不知道如何从这里继续 任何帮助将不胜感激 注意 据我了解 Matlab 推荐TriScattere
  • Rx - 取消订阅事件

    我有一个 INotifyPropertyChanged 对象 Foo 我使用 Rx 的 FromEvent 方法将 Foo 转换为可观察的事件流 var myFoo new Foo var eventStream Observable Fr
  • Kubernetes - 更新后旧 Pod 未被删除

    我正在使用 Deployments 来控制 K8S 集群中的 pod 我的原始部署文件如下所示 apiVersion extensions v1beta1 kind Deployment metadata name websocket ba
  • pandas DataFrame 的矢量化更新?

    我有一个数据框 我想用数组中的一些值更新列 然而 该数组与数据帧的长度不同 但我有要更新的数据帧的行的索引 我可以通过循环遍历行 如下 来完成此操作 但我希望有一种更有效的方法可以通过矢量化方法来完成此操作 但我似乎无法获得正确的语法 在下
  • 如何使用 Visual C++/PCSC 以编程方式加载 Java 卡小程序(.cap 文件)

    我目前正在进行的一个项目需要我将 JavaCard 应用程序 Applet cap 文件加载到 JavaCard 我们的框架基于Visual C 和PCSC 因此我们需要将相同的小程序加载到一系列JavaCard上 有谁知道如何处理这个问题