X509CertificateObject
を使用して Bouncy Castle をシリアライズおよびデシリアライズしようとしていますorg.apache.commons.lang3.SerializationUtils
。どうやら、逆シリアル化されたオブジェクトはsun.security.x509.X509CertImpl
、最初にシリアル化されたオブジェクト ( org.bouncycastle.jce.provider.X509CertificateObject
) とは異なる型 ( ) です。その結果、キャストは失敗します。私は何を間違っていますか?
public static void test(X509CertificateObject certObj) {
byte[] serializedObj;
Object deSerializedObj;
X509CertificateObject deSerializedCertObj;
X509Certificate deSerializedCert;
System.out.println("certObj type: " + certObj.getClass().getName());
serializedObj = SerializationUtils.serialize(certObj);
deSerializedObj = SerializationUtils.deserialize(serializedObj);
System.out.println("deSerializedObj type: " + deSerializedObj.getClass().getName());
deSerializedCert = (X509Certificate) deSerializedObj;
System.out.println("deSerializedCert type: " + deSerializedCert.getClass().getName());
deSerializedCertObj = (X509CertificateObject) deSerializedObj;
System.out.println("deSerializedCertObj type: " + deSerializedCertObj.getClass().getName());
}
結果:
certObj type: org.bouncycastle.jce.provider.X509CertificateObject
deSerializedObj type: sun.security.x509.X509CertImpl
deSerializedCert type: sun.security.x509.X509CertImpl
そして最後に
java.lang.ClassCastException: sun.security.x509.X509CertImpl cannot be cast to org.bouncycastle.jce.provider.X509CertificateObject
at Test.test(Test.java:1010)
at Test.main(Test.java:153)
X509CertificateObject
これは、 の上位クラスX509Certificate
が抽象的であり、および/またはX509CertificateObject
独自の を定義していないためserialVersionUID
ですか?