cryptography - java.lang.IllegalArgumentException: string curve25519 not an OID bouncycastle 1.52 -


i'm trying generate key pair using /java bouncy castle 1.52 implementation curve 25519 gives me

java.lang.illegalargumentexception: string curve25519 not oid

here code:

public keypair generatekeys() throws nosuchalgorithmexception,         nosuchproviderexception, invalidalgorithmparameterexception {     ecparameterspec ecspec = ecnamedcurvetable.getparameterspec("curve25519");     keypairgenerator g = keypairgenerator.getinstance("ecdsa", "bc");     g.initialize(ecspec, new securerandom());      return g.generatekeypair(); } 

the result of code stacktrace below:

java.lang.illegalargumentexception: string curve25519 not oid @ org.bouncycastle.asn1.asn1objectidentifier.(unknown source) @ org.bouncycastle.jcajce.provider.asymmetric.ec.bcecpublickey.getencoded(unknown source) @ org.bouncycastle.jcajce.provider.asymmetric.ec.bcecprivatekey.getpublickeydetails(unknown source) @ org.bouncycastle.jcajce.provider.asymmetric.ec.bcecprivatekey.(unknown source) @ org.bouncycastle.jcajce.provider.asymmetric.ec.keypairgeneratorspi$ec.generatekeypair(unknown source) @ com.poc.databank.encryption.bouncycastleencryption.generatekeys(bouncycastleencryption.java:22) @ com.poc.databank.encryption.bouncycastletest.testapp(bouncycastletest.java:16) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ org.junit.runners.model.frameworkmethod$1.runreflectivecall(frameworkmethod.java:47) @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:12) @ org.junit.runners.model.frameworkmethod.invokeexplosively(frameworkmethod.java:44) @ org.junit.internal.runners.statements.invokemethod.evaluate(invokemethod.java:17) @ org.junit.runners.parentrunner.runleaf(parentrunner.java:271) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:70) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:50) @ org.junit.runners.parentrunner$3.run(parentrunner.java:238) @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:63) @ org.junit.runners.parentrunner.runchildren(parentrunner.java:236) @ org.junit.runners.parentrunner.access$000(parentrunner.java:53) @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:229) @ org.junit.runners.parentrunner.run(parentrunner.java:309) @ org.eclipse.jdt.internal.junit4.runner.junit4testreference.run(junit4testreference.java:50) @ org.eclipse.jdt.internal.junit.runner.testexecution.run(testexecution.java:38) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:467) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:683) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.run(remotetestrunner.java:390) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.main(remotetestrunner.java:197)

i checked bouncy castle code , figured out curve25519 registered in customnamedcurves class

definecurve("curve25519", curve25519); 

but not

definecurvewithoid("secp192k1", secobjectidentifiers.secp192k1,             secp192k1); 

i understand there should reason this. please me found out way how can generate key pair uising curve25519.

you need curve parameters in x9.62 format , convert them jce format

x9ecparameters ecp = customnamedcurves.getbyname("curve25519"); ecparameterspec ecspec=new ecparameterspec(ecp.getcurve(), ecp.getg(),         ecp.getn(), ecp.geth(), ecp.getseed()); 

then produce ecdsa key normal

provider bcprovider = new bouncycastleprovider(); keypairgenerator g = keypairgenerator.getinstance("ecdsa", bcprovider); g.initialize(ecspec, new securerandom()); keypair keypair = g.generatekeypair(); assert.assertnotnull(keypair); 

i believe curve25519 has no object identifier assigned it. doesn't excuse inability find curve name.


Comments

Popular posts from this blog

java - Spring Data JPA: Why findOne(id) executing delete query internally? -

python - Mongodb How to add addtional information when aggregating? -

java - Incorrect order of records in M-M relationship in hibernate -