标签: smartcard

加载MSCAPI Java密钥库而不加载私钥(硬令牌)

我想MSCAPI keystore在Java中加载一个并检查MY商店中的可用证书.但是,这些证书的某些密钥驻留在硬件令牌上,并且弹出窗口在加载期间要求令牌.

有没有办法在加载Windows密钥库时推迟加载私钥?

keyStore = KeyStore.getInstance("Windows-MY", "SunMSCAPI");
keystore.load(null,null);
Run Code Online (Sandbox Code Playgroud)

java keystore smartcard

12
推荐指数
1
解决办法
3143
查看次数

将POS应用程序与VeriFone终端集成

目前,我正在一个团队中创建自定义POS解决方案.我们想要集成IC /信用卡终端(就像我们拥有的VeriFone,即Vx510).我认为最简单的模式是允许收银员手动输入客户必须支付的金额.以更先进(理想)的方式,我们的POS将向终端发送要支付的金额.

无论"模式"如何,如果交易成功与否,我们都希望从VeriFone获取信息.这是我们达到的死胡同.AFAIK,为了对VeriFone终端进行编程或与之集成,您必须成为经过认证的VeriFone开发人员.如果是这样,那么我知道从哪里开始.如果没有,请告诉我.

有没有其他方法可以获得付款成功的终端信息?是否有任何第三方库与此类设备进行通信?与我的问题最相关我能找到的SO线程是这个,但对我来说没什么帮助.我们不想处理任何机密数据,因此我们不想与Authorize.NET集成

integration credit-card smartcard point-of-sale verifone

12
推荐指数
2
解决办法
1万
查看次数

用于Yubico OpenPGP智能卡的PGP数据加密

我正在尝试在Java应用程序中实现基于Yubikey NEO OpenPGP智能卡小程序的PGP加密.这似乎是一个黑暗的艺术,并不容易谷歌这个东西,但这里是我到目前为止的地方:

  1. 卡被初始化,密钥使用gpg工具生成.它通常有效.我有.asc格式的公钥,并设法加载它org.bouncycastle.openpgp

  2. 使用javax.smartcardioAPI 连接USB加密狗中的智能卡.

  3. 选择OpenPGP小程序

    val pgpAID = bytes(0xD2, 0x76, 0x00, 0x01, 0x24, 0x01)
    val answer = cardChannel.transmit(CommandAPDU(0x00, 0xA4, 0x04, 0x00, pgpAID))
    
    Run Code Online (Sandbox Code Playgroud)
  4. 成功向卡片出示正确的PIN码

    val pin = "123456"
    return bytes(0x00, 0x20, 0x00, 0x82, pin.length) + pin.toByteArray(Charsets.UTF_8)
    
    Run Code Online (Sandbox Code Playgroud)
  5. 发送准成功(见下文)decipher命令

    bytes(0x00, 0x2a, 0x80, 0x86, data.size) + data + bytes(0x00)
    
    Run Code Online (Sandbox Code Playgroud)

    何时data = "xxxx".toByteArray(),结果是SW=9000(=成功)但没有返回数据.这是一个天真的测试,因为第52页的OpenPGP applet文档提到了这一点

    在加密之前,命令输入(填充指示符字节除外)应根据PKCS#1格式化.

我不知道如何加密数据并将其转换为PKCS#1格式.

我也试过阅读Yubico OpenPGP卡实现测试,但它只提供了另一个"失败"的例子(第196行).我尝试运行它,但结果是不同的:测试期望SW=0050(表示异常?)和我得到的是SW=6f00(没有精确的诊断,根据这个文件).

我用完整的代码创建了一个GitHub存储库.它是用Kotlin编写的,但应该很容易阅读.

java encryption smartcard openpgp yubico

12
推荐指数
1
解决办法
893
查看次数

带有opensc pkcs#11提供程序的java keytool仅适用于启用调试选项

我在ubuntu 11.10上使用OpenJDK(java版"1.6.0_22")运行最新的opensc 0.12.2

我可以阅读我的智能卡(飞天ePass PKI)

pkcs15-tool --dump
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用带有keytool的智能卡:

keytool 
   -providerClass sun.security.pkcs11.SunPKCS11 \
   -providerArg /etc/opensc/opensc-java.cfg \
   -keystore NONE -storetype PKCS11 -list 
Run Code Online (Sandbox Code Playgroud)

这会导致错误:

keytool error: java.security.KeyStoreException: PKCS11 not found
java.security.KeyStoreException: PKCS11 not found
    at java.security.KeyStore.getInstance(KeyStore.java:603)
    at sun.security.tools.KeyTool.doCommands(KeyTool.java:621)
    at sun.security.tools.KeyTool.run(KeyTool.java:194)
    at sun.security.tools.KeyTool.main(KeyTool.java:188)
Caused by: java.security.NoSuchAlgorithmException: PKCS11 KeyStore not available
    at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
    at java.security.Security.getImpl(Security.java:696)
    at java.security.KeyStore.getInstance(KeyStore.java:600)
    ... 3 more
Run Code Online (Sandbox Code Playgroud)

当我运行相同的命令时启用调试选项,如下所示:

keytool 
   -providerClass sun.security.pkcs11.SunPKCS11 \
   -providerArg /etc/opensc/opensc-java.cfg \
   -keystore NONE -storetype PKCS11 -list \
   -J-Djava.security.debug=sunpkcs11
Run Code Online (Sandbox Code Playgroud)

它突然起作用:

... debug infos ...
Enter keystore password:  
sunpkcs11: login …
Run Code Online (Sandbox Code Playgroud)

java keytool smartcard pkcs#11

11
推荐指数
1
解决办法
2万
查看次数

Java Card:如何将SIM小程序加载到真正的智能卡?

我在Eclipse中开发了一个Java Card applet并获得了一个cap文件.然后我使用jcManager - Java安全卡管理器将该文件加载到我的智能卡.我有两种类型的智能卡:

  1. 联系方式,JCOP 2.1 36K
  2. 非接触式,JCOP 2.1

我的智能卡读卡器是:SDI011双接口读卡器.

另外,对于开发SIM applet,我正在使用Gemalto Developer Suite [3.6].该IDE有一个GSM模拟器,我的SIM小程序可以很好地工作.它给出了applet的cap,jar,jac,exp ..文件.

到目前为止一切都很好,但我想将该cap文件加载到我的联系人或非接触式Java卡[因为我没有可用的SIM卡],然后发送 - 接收APDU消息.

可能吗?如果有,怎么样?如何将我的SIM小程序加载到真正的智能卡 [ 不是SIM卡 ]?

java apdu smartcard javacard sim-card

10
推荐指数
1
解决办法
3063
查看次数

初始更新在两种不同的情况下给出了6985和61xx

我有一张java卡,我写了一个小代码,将APDU发送到java卡.这里当我发送Init_Update命令时,得到0x6985像: -

CMD -> 80 50 00 00 08 11 22 33 44 55 66 77 88
RES <- 6985
Run Code Online (Sandbox Code Playgroud)

但是当我用其他工具发送此命令时,它会给出所需的结果,如: -

Transmit: 80 50 00 00 08    []
  11 22 33 44 55 66 77 88                            ."3DUfw.
Card answered: 61 1C
Run Code Online (Sandbox Code Playgroud)

我的java代码对我有的其他java卡很有用.谁能告诉我这种不同行为的原因是什么?

// full java code


     public static void main(String[] args) {
            // TODO code application logic here
            try
            {

        factory = TerminalFactory.getDefault();
                    terminals = factory.terminals().list(); 
                terminal = terminals.get(0);
                card = terminal.connect("*");
                    channel =card.getBasicChannel();

                    CommandAPDU cmdAPDU;
                     ResponseAPDU response;
                    byte[] …
Run Code Online (Sandbox Code Playgroud)

smartcard javacard

10
推荐指数
1
解决办法
1352
查看次数

将APDU命令发送到android中的USIM/SIM卡

我已经使用过智能卡,我熟悉APDU命令(在ISO/IEC 7816全球平台规范中定义).

现在我想知道是否有办法将APDU命令发送到插入手机的USIM/SIM卡?(安装了Android v4.4.4 kitkat的三星A3.)

我已经在谷歌搜索过,我发现了一些名为SIM Toolkit ApplicationSeek for Android的相关主题和工具.但我真的不明白这些是什么?这些项目是我必须在手机上安装的两个应用程序吗?或者这两个工具是否已经安装在USIM/SIM卡上并从手机接收命令?

主动命令,APDU命令AT命令有什么区别?

我应该学习android来开发SIM卡应用程序还是我只需要Java Card规范和ETSI标准?

提前致谢.

java android smartcard javacard sim-card

10
推荐指数
2
解决办法
1万
查看次数

如何区分不同的ISO 14443-4卡?

有不同的智能卡支持ISO 14443-4.例如,Mifare Plus及其本机命令集.或其他具有不同命令集的卡(即7816-4 APDU).

我为读卡器开发了一些软件,我需要确定卡支持哪些命令(例如,它是否支持ISO 7816-4结构中的命令).

建议区分它们的方法是什么?我应该从Mifare Plus命令集中尝试一些命令并检查我是否得到正确的回复?或者有更聪明的方法吗?

apdu smartcard smartcard-reader contactless-smartcard

10
推荐指数
2
解决办法
3399
查看次数

如何从Java中读取EMV SmartCard中的PAN

我需要通过智能卡读卡器读取Maestro/Mastercard的帐号.我正在使用Java 1.6及其javax.smartcardio包.我需要发送APDU命令,它会询问存储在卡芯片上的EMV应用程序的PAN号.问题是,我找不到常规的字节数组来构造APDU命令,它会在任何地方返回所需的数据......

java apdu smartcard emv

9
推荐指数
1
解决办法
2万
查看次数

APDU命令获取智能卡uid

我正在寻找APDU找到联系少的ISO 14443智能卡的UID以及如何使用它在Linux终端上打印.问题是我发现很多人都在谈论它,但没有解决方案.谁能帮到这方面呢??? 谢谢

uniqueidentifier apdu smartcard

9
推荐指数
2
解决办法
2万
查看次数