diff options
| author | Michal Čech | 2019-12-25 20:46:52 +0100 |
|---|---|---|
| committer | Ján Jančár | 2019-12-25 20:46:52 +0100 |
| commit | 79143562568a91ea7c3db66b9e97eb4a46c3ea04 (patch) | |
| tree | c27818ba28d5be3b619c41b415d00bf14e341d75 /src/cz/crcs/ectester/standalone/libs/jni/NativeKeyPairGeneratorSpi.java | |
| parent | d4611ac11ac0cbb91e5a0b27ef8799ec686eea7b (diff) | |
| download | ECTester-79143562568a91ea7c3db66b9e97eb4a46c3ea04.tar.gz ECTester-79143562568a91ea7c3db66b9e97eb4a46c3ea04.tar.zst ECTester-79143562568a91ea7c3db66b9e97eb4a46c3ea04.zip | |
Nettle support (#4)
* Added Nettle java file, added Nettle class to NativeProvider files
* Nettle makefile
* Nettle get curves and setup
* makefile and build-standalone
* makefile hogweed
* added other curves
* mpz to biginteger
* switch nignum to mpz
* it is finally possible to write nettle info
* prepared generate curve
* generate key pair progress
* removed key agreement
* ECParameterSpec experiment
* ECParameterSpec experiment - source
* Another try
* it is finally running (at least), debugging messages
* generator generates - needs to be tested
* removed unnecessary function
* signature preparations
* signature almost done
* added der encoding
* verification and der decoder
* added support for secp192r1, secp224r1, secp384r1 and secp521r1
* fixed the variable length of the points and scalars
* removed debug prints
* removed debug prints (java)
* removed Curve25519 artifacts, added ECDH support
* removed fragment of openssl, added cleanup to ecdh
* src/cz/crcs/ectester/standalone/libs/jni/nettle.c
* reverted plot
* fixed signature for secp521r1
* replaced for loop with memset
* added nettle to requirements in NettleLib class
* removed conflicting lines
* fixed the der signature encoder / decoder
* Switched ECGenParameterSpec -> ECParameterSpec explicit retyping to EC_Store
Co-authored-by: Ján Jančár <J08nY@users.noreply.github.com>
Diffstat (limited to 'src/cz/crcs/ectester/standalone/libs/jni/NativeKeyPairGeneratorSpi.java')
| -rw-r--r-- | src/cz/crcs/ectester/standalone/libs/jni/NativeKeyPairGeneratorSpi.java | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/src/cz/crcs/ectester/standalone/libs/jni/NativeKeyPairGeneratorSpi.java b/src/cz/crcs/ectester/standalone/libs/jni/NativeKeyPairGeneratorSpi.java index 3598d61..636f423 100644 --- a/src/cz/crcs/ectester/standalone/libs/jni/NativeKeyPairGeneratorSpi.java +++ b/src/cz/crcs/ectester/standalone/libs/jni/NativeKeyPairGeneratorSpi.java @@ -1,7 +1,14 @@ package cz.crcs.ectester.standalone.libs.jni; +import cz.crcs.ectester.common.ec.EC_Curve; +import cz.crcs.ectester.data.EC_Store; + import java.security.*; import java.security.spec.AlgorithmParameterSpec; +import java.security.AlgorithmParameters; +import java.security.spec.ECGenParameterSpec; +import java.security.spec.ECParameterSpec; +import java.security.spec.InvalidParameterSpecException; /** * @author Jan Jancar johny@neuromancer.sk @@ -62,6 +69,7 @@ public abstract class NativeKeyPairGeneratorSpi extends KeyPairGeneratorSpi { abstract KeyPair generate(AlgorithmParameterSpec params, SecureRandom random); + public static class TomCrypt extends NativeKeyPairGeneratorSpi { public TomCrypt() { @@ -306,8 +314,9 @@ public abstract class NativeKeyPairGeneratorSpi extends KeyPairGeneratorSpi { @Override native KeyPair generate(AlgorithmParameterSpec params, SecureRandom random); } - + public static class Libressl extends NativeKeyPairGeneratorSpi { + public Libressl() { initialize(256, new SecureRandom()); } @@ -324,4 +333,35 @@ public abstract class NativeKeyPairGeneratorSpi extends KeyPairGeneratorSpi { @Override native KeyPair generate(AlgorithmParameterSpec params, SecureRandom random); } + + public static class Nettle extends NativeKeyPairGeneratorSpi { + public Nettle() { + initialize(256, new SecureRandom()); + } + + @Override + native boolean keysizeSupported(int keysize); + + @Override + native boolean paramsSupported(AlgorithmParameterSpec params); + + @Override + native KeyPair generate(int keysize, SecureRandom random); + + @Override + KeyPair generate(AlgorithmParameterSpec params, SecureRandom random) { + if (params instanceof ECGenParameterSpec) { + String curveName = ((ECGenParameterSpec) params).getName(); + if (curveName.contains("secp")) { + curveName = "secg/" + curveName; + } + EC_Curve curve = EC_Store.getInstance().getObject(EC_Curve.class, curveName); + ECParameterSpec spec = curve.toSpec(); + return generate(params, random, spec); + } + return null; + } + + native KeyPair generate(AlgorithmParameterSpec params, SecureRandom random, AlgorithmParameterSpec spec); + } } |
