Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

The following code was working fine on Android 7

    KeyPairGenerator kg = KeyPairGenerator.getInstance("EC","BC");
    kg.initialize(spec);
    KeyPair kp = kg.generateKeyPair();
    mKeyEx = KeyAgreement.getInstance("ECDH");
    mKeyEx.init(kp.getPrivate());
    mPubKeyX509 = kp.getPublic().getEncoded();
    mPubKey = new byte[(spec.getCurve().getField().getFieldSize() + 7) / 8 * 2 + 1];
    System.arraycopy(mPubKeyX509, mPubKeyX509.length - mPubKey.length, mPubKey, 0, mPubKey.length);

As you know bouncy castle has been deprecated on Android 9,so i changed first line to:

 KeyPairGenerator kg = KeyPairGenerator.getInstance("EC");

I get the following message error :

java.lang.RuntimeException: error:0f00007b:elliptic curve routines:OPENSSL_internal:UNKNOWN_GROUP

On the following line

mPubKeyX509 = kp.getPublic().getEncoded();

Any help please ?

This depends on what spec is, so you need to include it in your code. Java providers have the annoying problem with not being fail fast, i.e. often keys are "constructed" and then only if you perform an operation then you'll find out they're not valid. – Maarten Bodewes May 2, 2020 at 23:00 i can share spec with you if you don't mind, the problem is that my spec are working fine in android 7. Thank you for your help – Singa May 3, 2020 at 0:45

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.