标签: javacard

尝试选择 Applet 时收到 6E00

我创建了示例代码的.cap文件[a Simple Hello World] 并通过JCManager将其成功上传到我的 javacard 上。

  • 包裹援助:01 02 01 02 01 02 01

  • 小程序辅助:01 02 01 02 01 02 01 02

这是 JCManager 的输出:

    Open terminal ...
    EstablishContext(): ...
    Wait for card in a certain reader ...
    Pick reader ...
    **********************
    Selecting Card Manager
    ***********************
    -> 00 A4 04 00 08 A0 00 00 00 03 00 00 00
    <- 6F 10 84 08 A0 00 00 00 03 00 00 …
Run Code Online (Sandbox Code Playgroud)

apdu smartcard javacard

3
推荐指数
1
解决办法
3321
查看次数

为什么oracle不提供Java Card 3.0.1、3.0.2和3.0.4的开发工具包?

我有JCOP v2.4.2 r3智能卡。它的Security Target中写到我的卡支持Java Card 3.0.1 Classic版本。我在Oracle网站上搜索了一个开发套件来为我的卡开发一些小程序,但我找不到它们。Java Card 3.0.3只有一个开发套件,而所有版本都有规范。

Q1:如何将我的“.java”文件转换为除v3.0.3之外的其他版本的“.cap”文件?

javacard

3
推荐指数
1
解决办法
2029
查看次数

如何使用 JavaCard 中的现有密钥对初始化 EC 密钥对?

我已经有一个存储在字节数组中的二进制格式的 EC 密钥对(secp256r1),如下所示:

// private key, 32 bytes
byte[] privKey = {0x4c, (byte)0xc7, (byte)0xcf, 0x68, (byte)0x91, 0x18, (byte)0x96, (byte)0xc8, (byte)0xe2, (byte)0xf9, (byte)0xc8, (byte)0xcc, 0x2f, 0x7f, 0x0a, (byte)0xa2, 0x1c, 0x6a, (byte)0xcb, (byte)0xba, 0x38, 0x1c, 0x10, (byte)0x9a, (byte)0xfe, (byte)0x91, 0x18, (byte)0xf6, (byte)0xca, (byte)0xd9, 0x0f, 0x0b};
//public key, 65 bytes, which is contained in a X.509 certificate
byte[] pubKey = {0x04, 0x72, (byte)0x9a, 0x71, (byte)0xd0, (byte)0x81, 0x62, 0x42, (byte)0x84, (byte)0x92, (byte)0xf2, (byte)0xd9, 0x61, (byte)0x92, 0x4d, 0x37, 0x44, 0x3a, 0x4f, 0x1b, (byte)0xda, 0x58, 0x0f, …
Run Code Online (Sandbox Code Playgroud)

java key javacard

3
推荐指数
1
解决办法
1792
查看次数

如何检测传入命令的接口?

我有一个包含我的小程序的双接口 Java 卡。我想对来自不同接口的单个​​命令有两个不同的 APDU 响应。

例如,00 10 00 00当从接触式接口接收到命令时,我想用“Contact”响应APDU 命令,并在从非接触式接口接收到此命令时响应“ContactLess”。

那么,Java Card API 或Global Platform API 中是否有任何方法来检测传入命令的接口?

apdu javacard globalplatform

3
推荐指数
1
解决办法
352
查看次数

如何从智能卡获取CPLC数据?

我在带有智能卡读卡器的Ubuntu VM上使用GPShell(型号为ACR122),我正在使用几种不同的恩智浦SmartMX芯片.

使用他们的Android TagInfo应用程序,当我扫描一个特定的SmartMX芯片时,我能够看到"卡片生产生命周期数据".

但是,我想使用GPShell来获取CPLC数据.我认为它是可访问的,因为我可以在Android设备上扫描标签时看到它.

我有一个名为的程序connect.txt,它有以下内容:

mode_211
enable_trace
establish_context
card_connect
get_data -identifier 9F7F
card_disconnect
release_context
Run Code Online (Sandbox Code Playgroud)

这是输出:

josh@josh-VirtualBox:~/projects/gpshell-test$ gpshell connect.txt
mode_211
enable_trace
establish_context
card_connect
* reader name ACS ACR122U PICC Interface 00 00
get_data -identifier 9F7F
Command --> 80CA9F7F00
Wrapped command --> 80CA9F7F00
Response <-- 
get_data() returns 0x80200000 (Unknown ISO7816 error: 0x0000)
Run Code Online (Sandbox Code Playgroud)

我正在尝试按照上面的命令()的GPShell文档,get_data -identifier 9F7F这应该是获取CPLC数据的命令.

我如何获得CPLC数据?

至于调试,我尝试了一些GPShell附带的示例脚本(例如,选择某个AID,或列出AID,尝试使用默认密钥进行身份验证等).所有命令都给我与上面相同的输出.我也搜索gpshellStackOverflow并阅读大多数问题/答案,但它们似乎都没有覆盖我在这里要求的内容(如果需要,我可以提供链接).谢谢.

ubuntu nfc javacard globalplatform gpshell

3
推荐指数
1
解决办法
3329
查看次数

将applet 安装到java 卡的APDU 命令顺序是什么?

我有一个 .CAP 文件(小程序),我想将它安装到我的 java 卡上。我知道我可以使用 GPShell 或 apdutool(来自 JCDK)之类的工具来做到这一点,但我想自己复制安装过程。

令人困惑的是,在 GP 标准中,安装过程是: APDU 命令 INSTALL[for load] 然后是多个 LOAD 命令,然后是 INSTALL[for install] 命令。

虽然 oracle 文档提出了用于安装 .CAP 文件的不同 APDU 命令序列:Select(Issuer Security Domain?)、CAP begin、Component ## Begin+Data+End(对于每个组件)、CAP End、Create Applet。

两种安装小程序的方法是否等效?

LOAD 命令的 DATA 字段包含什么?GP 标准没有指定,我知道从 .CAP 文件发送原始字节是错误的。我使用 GPShell 成功安装了小程序,但 LOAD 命令的 DATA 字段对我来说没有意义。 GPSshell 输出

对于 oracle 方法,我使用 Java Card Developement Kit 中的 scriptgen 来生成 APDU 命令,但是来自这些命令(B0、B2、B4、BC、BA)的 INS 字节没有 GP 引用。脚本生成输出

java smartcard javacard globalplatform

3
推荐指数
1
解决办法
1657
查看次数

Java Card 可共享接口是否可以跨安全域访问?

通常是否可以访问安装在符合 Java 卡和全局平台规范的卡中不同安全域中的小程序的可共享接口?

如果这是不可能的,是否有另一种方法可以调用另一个安全域中的应用程序,可能是通过安全通道手动通信?

javacard globalplatform

3
推荐指数
1
解决办法
160
查看次数

如何发送OTA消息?

您可能知道,OTA 消息或无线消息是特制的二进制 SMS 消息,移动运营商使用它们向 SIM 卡发送 APDU 命令以进行管理。例如,他们可以使用此类消息在 SIM 卡上安装或删除小程序。

我想知道是否有任何公开文件从下到上说明这些消息的格式和结构?!换句话说:是否有任何规范可供我用来根据它来制作 OTA 消息?

我知道 OTA 消息通常由只有提供商可能拥有的密钥进行签名,但我听说其中一些不需要任何签名。

javacard sim-card

3
推荐指数
1
解决办法
4830
查看次数

SIM 卡 GlobalPlatform 密钥在现场的使用

问题1.当 SIM 制造商对 SIM 卡进行个性化处理,然后移动运营商将其交给最终用户时,GlobalPlatform (GP) 密钥(ENC、MAC、KEK...)是否有任何用途?

只要我知道 SIM 文件结构或其小程序可以通过 OTA RFM 和 RAM 访问(KID/KIC/KIK)。因此,当 SIM 到达客户手中时,无需拥有 GP 密钥。

是否有什么特殊的地方(例如,在 OTA 交互过程中,我们是否需要 GP 密钥)?正如我所理解的,当我们物理上可以访问 SIM 卡并且可以直接向 SIM 卡发送 APDU 时,GP 密钥就可用。我对吗?

问题2。是否可以使用全局平台命令(例如是否可以读取记录、读取二进制)使用 GP 密钥访问 SIM/USIM 文件结构并访问 ISD 拥有的权限?通常,可以使用 PIN 和 ADM 密钥根据 3GPP TS 51.011/ETSI TS 151 011 中定义的访问条件来访问文件结构。但是是否可以使用 ISD 拥有的 GP 密钥和访问权限?

smartcard javacard ota sim-card globalplatform

3
推荐指数
1
解决办法
759
查看次数

用于 Java 卡的 Kotlin?

是否可以使用Kotlin语言开发Java Card小程序?

我知道 Kotlin 生成 JVM 兼容的字节代码,但我不确定 Kotlin 编译器能否生成 Java Card 兼容的字节代码。谷歌对此一无所知..

javacard kotlin

3
推荐指数
1
解决办法
174
查看次数

标签 统计

javacard ×10

globalplatform ×5

smartcard ×3

apdu ×2

java ×2

sim-card ×2

gpshell ×1

key ×1

kotlin ×1

nfc ×1

ota ×1

ubuntu ×1