使用YubiKey生成密钥对并将私钥存储在桌面应用程序中

问题描述 投票:0回答:1

我正在用java制作一个桌面应用程序,并使用YubiKey来验证需要用户确认的请求。 我的 YubiKey 是 YubiKey 5C NFC。

在我的项目中,我使用库:“com.yubico.yubikit.core: 2.4.0”和“com.yubico.yubikit.piv: 2.4.0”。

在图书馆, 有一种生成密钥对的方法,如下所示:

public PublicKeyValues generateKeyValues(Slot slot, KeyType keyType, PinPolicy pinPolicy, TouchPolicy touchPolicy){}

这是插槽的枚举:

public enum Slot {     
AUTHENTICATION(154, 6275333),     
SIGNATURE(156, 6275338),     
KEY_MANAGEMENT(157, 6275339),     
CARD_AUTH(158, 6275329),     
RETIRED1(130, 6275341),     
RETIRED2(131, 6275342),     
...     
RETIRED20(149, 6275360),     
ATTESTATION(249, 6291201);
}

这是 PinPolicy 的枚举:

public enum PinPolicy {     
DEFAULT(0),     
NEVER(1),     
ONCE(2),     
ALWAYS(3);
}

这是 TouchPolicy 的枚举:

public enum TouchPolicy {     
DEFAULT(0),     
NEVER(1),     
ALWAYS(2),     
CACHED(3);
}

我设置了

KeyType keyType = KeyType.RSA2048;

在我的代码中,我这样调用:

PublicKeyValues PublicKeyValues = pivSession.generateKeyValues(slot, keyType, pinPolicy, touchPolicy);

我还可以输入我的 PIN 码并检查我的代码是否与 YubiKey 连接。运行时它无法生成密钥对并出现错误:

Caused by: com.yubico.yubikit.core.smartcard.ApduException: APDU error: 0x6982
这意味着“安全状态不满足”。但我可以输入我的 PIN,验证正确并检查我的代码是否与我的 YubiKey 连接。

我尝试设置所有类型的

PinPolicy
TouchPolicy
但仍然是同样的错误。 已调试,并已上线:

byte[] response = this.protocol.sendAndReceive(new Apdu(0, 71, 0, slot.value, (new Tlv(-84, Tlvs.encodeMap(tlvs))).getBytes()));

位于“generateKeyValue”方法内部

java desktop-application yubikey
1个回答
0
投票

同样的问题!我也需要帮助解决问题。该死!!!!

© www.soinside.com 2019 - 2024. All rights reserved.