ECTester icon indicating copy to clipboard operation
ECTester copied to clipboard

Some libraries trigger paramSpec must not be null for ECDSA

Open quapka opened this issue 3 months ago • 1 comments

The command java -jar standalone/build/libs/ECTesterStandalone.jar ecdsa -n 10 -t NONEwithECDSA openssl works, but for nettle it doesn't work:

$ java -jar standalone/build/libs/ECTesterStandalone.jar ecdsa -n 10 -t NONEwithECDSA  nettle
index;signTime[nano];verifyTime[nano];data;pubW;privS;signature[NONE];nonce;verified
java.security.spec.InvalidParameterSpecException: paramSpec must not be null
        at java.base/sun.security.util.ECParameters.engineInit(ECParameters.java:107)
        at java.base/java.security.AlgorithmParameters.init(AlgorithmParameters.java:294)
        at cz.crcs.ectester.standalone.libs.jni.NativeSignatureSpi$Nettle.sign(NativeSignatureSpi.java:582)
        at cz.crcs.ectester.standalone.libs.jni.NativeSignatureSpi$SimpleSignatureSpi.engineSign(NativeSignatureSpi.java:78)
        at java.base/java.security.Signature$Delegate.engineSign(Signature.java:1404)
        at java.base/java.security.Signature.sign(Signature.java:713)
        at cz.crcs.ectester.standalone.ECTesterStandalone.ecdsa(ECTesterStandalone.java:642)
        at cz.crcs.ectester.standalone.ECTesterStandalone.run(ECTesterStandalone.java:164)
        at cz.crcs.ectester.standalone.ECTesterStandalone.main(ECTesterStandalone.java:846)
Exception in thread "main" java.lang.NullPointerException
        at cz.crcs.ectester.standalone.libs.jni.NativeECPublicKey$ANSIX962.getW(NativeECPublicKey.java:54)
        at cz.crcs.ectester.standalone.libs.jni.NativeECPublicKey$Nettle.getW(NativeECPublicKey.java:179)
        at cz.crcs.ectester.standalone.libs.jni.NativeECPublicKey$ANSIX962.getData(NativeECPublicKey.java:63)
        at cz.crcs.ectester.standalone.libs.jni.NativeECPublicKey$Nettle.getData(NativeECPublicKey.java:179)
        at cz.crcs.ectester.standalone.libs.jni.NativeSignatureSpi$SimpleSignatureSpi.engineVerify(NativeSignatureSpi.java:85)
        at java.base/java.security.Signature$Delegate.engineVerify(Signature.java:1416)
        at java.base/java.security.Signature.verify(Signature.java:790)
        at cz.crcs.ectester.standalone.ECTesterStandalone.ecdsa(ECTesterStandalone.java:652)
        at cz.crcs.ectester.standalone.ECTesterStandalone.run(ECTesterStandalone.java:164)
        at cz.crcs.ectester.standalone.ECTesterStandalone.main(ECTesterStandalone.java:846)

At least from the output of list-libs it seems like it should be supported:

 - Nettle
                - Fullname: Nettle
                - Version: 3.9
                - Supports native timing: [cputime-processor, cputime-thread, monotonic, monotonic-raw, rdtsc]
                - KeyPairGenerators: EC
                - KeyAgreements: ECDH
                - Signatures: NONEwithECDSA
                - Curves: secp192r1, secp224r1, secp256r1, secp384r1, secp521r1

Maybe a correct curve needs to be input from the CLI?

quapka avatar Apr 04 '24 14:04 quapka