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
Post a Comment