2

ポイントの x 座標と y 座標と曲線の名前があります。org.bouncycastle.jce.interfaces.ECPublicKey提供されている実装を使用して、そこからオブジェクトを自動的に作成したいと思います。目標は、bouncycastle またはその Android ポートである spongycastle が使用されているかどうかに関係なく、オブジェクトを作成できるようにすることです。

これが私が今していることです。つまり、EC5Util クラスは spongycastle に含まれていません。呼び出す必要があるメソッドが 1 つだけのファクトリを使用したソリューションが必要です。それは可能ですか?

java.security.spec.ECPoint w = new java.security.spec.ECPoint(x, y);
ECNamedCurveParameterSpec params = ECNamedCurveTable.getParameterSpec("secp256k1");
KeyFactory fact = KeyFactory.getInstance("ECDSA", "BC");
ECCurve curve = params.getCurve();
java.security.spec.EllipticCurve ellipticCurve = EC5Util.convertCurve(curve, params.getSeed());
java.security.spec.ECParameterSpec params2 = EC5Util.convertSpec(ellipticCurve, params);
java.security.spec.ECPublicKeySpec keySpec = new java.security.spec.ECPublicKeySpec(w, params2);
return (ECPublicKey) fact.generatePublic(keySpec);
4

2 に答える 2

2

ECPointTest.java の Bouncycastle 内の単体テストは、このケースをカバーしているようです。

ECFieldElement.Fp x_ecfe = new ECFieldElement.Fp(q, x);
ECFieldElement.Fp y_ecfe = new ECFieldElement.Fp(q, y);
ECPoint.Fp point = new ECPoint.Fp(curve, x_ecfe, y_ecfe);

これはあなたが置かれている非常にユニークな状況です。なぜあなたがこれを行っているのかを詳しく説明したいのであれば、ぜひ知りたいと思います。

于 2013-09-20T23:31:08.620 に答える