Я получил эту ошибку:
ava.lang.ClassCastException: org.bouncycastle.math.ec.ECFieldElement $ Fp нельзя преобразовать в org.bouncycastle.math.ec.custom.sec.SecP256K1FieldElement
однажды пытается прочитать открытый ключ как строку в Android, которая извлекается из файла .pem как
----- НАЧАТЬ ПУБЛИЧНЫЙ КЛЮЧ ----- \ n
MIH1MIGuBgcqhkjOPQIBMIGiAgEBMCwGByqGSM49AQECIQD /////////////////
/////////////////// + /// 8LzAGBAEABAEHBEEEeb5mfvncu6xVoGKVzocLBwKb
/ NstzijZWfKBWxb4F5hIOtp3JqPEZV2k + / wOEQio / Re0SKaFVBmcR9CP + xDUuAIh
AP //////////////////// 66rtzmr0igO7 / SXozQNkFBAgEBA0IABK5F1KgwnBG3
jVLqtqJ9 + uesDOzP00s88bgGyYQen86xLn1iUJxy / qPPmn9WZyfQ + b27UaHNAa09
83BuGKHERAE =
\ n ----- КОНЕЦ ОБЩЕСТВЕННОГО КЛЮЧА -----
Этот ключ типа secp256k1
и это часть кода чтения открытого ключа:
Security.removeProvider(BouncyCastleProvider.PROVIDER_NAME);
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
Reader rdr = new StringReader (keys[seletedTFE]);
Object parsed = new org.bouncycastle.openssl.PEMParser(rdr).readObject();
ECPublicKey key = (ECPublicKey) new org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter().getPublicKey((Subje.ctPublicKeyInfo) parsed);
ECPoint P = key.getQ();
и ошибка из-за этой точки: при добавлении С1 к С2 он говорит, что С2 типа ECpointfp, а С2 типа ECElementFieldsecp256k1
ECPoint C1;
ECPoint C2;
ECPoint C3;
C2 = P.multiply(beta);
C3 = C1.add(C2) ;
и этот код работает с prime256v1 и secp256r1, но мне нужно использовать secp256k1, так как решить эту проблему?