Как решить эту проблему, добавив две точки на кривой secp256k1 ECDSA? - PullRequest
0 голосов
/ 06 января 2019

Я получил эту ошибку: 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, так как решить эту проблему?

...