在Java Card上编码publicKey

时间:2015-05-20 17:41:21

标签: java encoding javacard ecdsa pkcs#8

如何在Java Card上编码ECDSA PublicKey,以便在我可以在另一个平台上解码之后(例如,在响应APDU中发送编码密钥并在标准Java应用程序中处理它)? Java上的keyPair.getPublic().getEncoded()会使用PKCS#8编码,但据我所知,Java Card平台上没有getEncoded()

2 个答案:

答案 0 :(得分:4)

您可以像这样实现此功能:

卡方:

  • 1 KeyPair.getPublicKey() - >公钥;
  • 2 publicKey.getW() - >瓦;
  • 3发送W到外面;

标准java应用程序端:

  • 1获取W数据字节;
  • 2 W数据字节 - > ECPoint;
  • 3使用ECPointKeySpec类生成的ECPoint构建PublicKey;
  • 4在您的应用程序中使用公钥;

答案 1 :(得分:1)

getEncoded()方法以主编码格式返回密钥,如果密钥不支持编码,则返回null。因此,您不需要将它用于您的目标。你只需使用向下转换为ECPublicKey

ECPublicKey pubKey = (ECPublicKey) keyPair.getPublic()

上面一行中的pubKey与Java应用程序中getEncoded()方法的输出相等。