将密钥对存储在代号为 one app 的设备中

Store keypair in the device in codename one app

我目前正在尝试代号为 one 的框架,我想知道是否有办法存储由 bouncy castle 库生成的密钥对?

我尝试使用 Storage 和 Preferences 来存储密钥,但总是产生相同的异常

java.io.IOException: Object type not supported: org.bouncycastle.asn1.pkcs.RSAPublicKey value: org.bouncycastle.asn1.pkcs.RSAPublicKey@581c
    at com.codename1.io.Util.writeObject(Util.java:481)
    at com.codename1.io.Storage.writeObject(Storage.java:227)

您需要保存与键相关的字节数组,而不是键对象。例如

byte[] b = key.toASN1Primitive().getEncoded();

并恢复:

RSAPublicKey key = RSAPublicKey.getInstance(b);

还没有尝试过,但查看代码我认为这应该可行。