diff options
| author | J08nY | 2018-07-28 12:39:25 +0200 |
|---|---|---|
| committer | J08nY | 2018-07-28 12:43:39 +0200 |
| commit | 4399ba5e724763675ddda41a9f9380fa565f5584 (patch) | |
| tree | 7fe6ee5b1c36f6e82b41bb2312906841fcff64f1 | |
| parent | 0582131bbcabea050f6a43643b7e81e922e3acd0 (diff) | |
| download | ECTester-4399ba5e724763675ddda41a9f9380fa565f5584.tar.gz ECTester-4399ba5e724763675ddda41a9f9380fa565f5584.tar.zst ECTester-4399ba5e724763675ddda41a9f9380fa565f5584.zip | |
| -rw-r--r-- | src/cz/crcs/ectester/standalone/libs/jni/NativeKeyAgreementSpi.java | 65 | ||||
| -rw-r--r-- | src/cz/crcs/ectester/standalone/libs/jni/NativeSignatureSpi.java | 68 |
2 files changed, 75 insertions, 58 deletions
diff --git a/src/cz/crcs/ectester/standalone/libs/jni/NativeKeyAgreementSpi.java b/src/cz/crcs/ectester/standalone/libs/jni/NativeKeyAgreementSpi.java index 1211519..31886cf 100644 --- a/src/cz/crcs/ectester/standalone/libs/jni/NativeKeyAgreementSpi.java +++ b/src/cz/crcs/ectester/standalone/libs/jni/NativeKeyAgreementSpi.java @@ -16,9 +16,9 @@ import java.security.spec.ECParameterSpec; * @author Jan Jancar johny@neuromancer.sk */ public abstract class NativeKeyAgreementSpi extends KeyAgreementSpi { - private ECPrivateKey privateKey; - private ECPublicKey publicKey; - private ECParameterSpec params; + ECPrivateKey privateKey; + ECPublicKey publicKey; + ECParameterSpec params; @Override protected void engineInit(Key key, SecureRandom random) throws InvalidKeyException { @@ -60,23 +60,6 @@ public abstract class NativeKeyAgreementSpi extends KeyAgreementSpi { } @Override - protected byte[] engineGenerateSecret() throws IllegalStateException { - byte[] pubkey; - if (publicKey instanceof NativeECPublicKey) { - pubkey = ((NativeECPublicKey) publicKey).getData(); - } else { - pubkey = ECUtil.toX962Uncompressed(publicKey.getW(), params.getCurve()); - } - byte[] privkey; - if (privateKey instanceof NativeECPrivateKey) { - privkey = ((NativeECPrivateKey) privateKey).getData(); - } else { - privkey = ECUtil.toByteArray(privateKey.getS(), params.getCurve().getField().getFieldSize()); - } - return generateSecret(pubkey, privkey, params); - } - - @Override protected int engineGenerateSecret(byte[] sharedSecret, int offset) throws IllegalStateException, ShortBufferException { byte[] secret = engineGenerateSecret(); if (sharedSecret.length < offset + secret.length) { @@ -92,16 +75,46 @@ public abstract class NativeKeyAgreementSpi extends KeyAgreementSpi { return new SecretKeySpec(engineGenerateSecret(), algorithm); } - abstract byte[] generateSecret(byte[] pubkey, byte[] privkey, ECParameterSpec params); + private abstract static class SimpleKeyAgreementSpi extends NativeKeyAgreementSpi { + + @Override + protected byte[] engineGenerateSecret() throws IllegalStateException { + byte[] pubkey; + if (publicKey instanceof NativeECPublicKey) { + pubkey = ((NativeECPublicKey) publicKey).getData(); + } else { + pubkey = ECUtil.toX962Uncompressed(publicKey.getW(), params.getCurve()); + } + byte[] privkey; + if (privateKey instanceof NativeECPrivateKey) { + privkey = ((NativeECPrivateKey) privateKey).getData(); + } else { + privkey = ECUtil.toByteArray(privateKey.getS(), params.getCurve().getField().getFieldSize()); + } + return generateSecret(pubkey, privkey, params); + } + + abstract byte[] generateSecret(byte[] pubkey, byte[] privkey, ECParameterSpec params); + } + + private abstract static class ExtendedKeyAgreementSpi extends NativeKeyAgreementSpi { + + @Override + protected byte[] engineGenerateSecret() throws IllegalStateException { + return generateSecret(publicKey, privateKey, params); + } + + abstract byte[] generateSecret(ECPublicKey pubkey, ECPrivateKey privkey, ECParameterSpec params); + } - public static class TomCrypt extends NativeKeyAgreementSpi { + public static class TomCrypt extends SimpleKeyAgreementSpi { @Override native byte[] generateSecret(byte[] pubkey, byte[] privkey, ECParameterSpec params); } - public abstract static class Botan extends NativeKeyAgreementSpi { + public abstract static class Botan extends SimpleKeyAgreementSpi { private String type; public Botan(String type) { @@ -148,7 +161,7 @@ public abstract class NativeKeyAgreementSpi extends KeyAgreementSpi { } } - public abstract static class Cryptopp extends NativeKeyAgreementSpi { + public abstract static class Cryptopp extends SimpleKeyAgreementSpi { private String type; public Cryptopp(String type) { @@ -165,7 +178,7 @@ public abstract class NativeKeyAgreementSpi extends KeyAgreementSpi { } } - public abstract static class Openssl extends NativeKeyAgreementSpi { + public abstract static class Openssl extends SimpleKeyAgreementSpi { private String type; public Openssl(String type) { @@ -182,7 +195,7 @@ public abstract class NativeKeyAgreementSpi extends KeyAgreementSpi { } } - public abstract static class Mscng extends NativeKeyAgreementSpi { + public abstract static class Mscng extends SimpleKeyAgreementSpi { private String type; public Mscng(String type) { diff --git a/src/cz/crcs/ectester/standalone/libs/jni/NativeSignatureSpi.java b/src/cz/crcs/ectester/standalone/libs/jni/NativeSignatureSpi.java index e347120..81c7948 100644 --- a/src/cz/crcs/ectester/standalone/libs/jni/NativeSignatureSpi.java +++ b/src/cz/crcs/ectester/standalone/libs/jni/NativeSignatureSpi.java @@ -12,11 +12,11 @@ import java.security.spec.ECParameterSpec; * @author Jan Jancar johny@neuromancer.sk */ public abstract class NativeSignatureSpi extends SignatureSpi { - private ECPublicKey verifyKey; - private ECPrivateKey signKey; - private ECParameterSpec params; + ECPublicKey verifyKey; + ECPrivateKey signKey; + ECParameterSpec params; - private ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); @Override protected void engineInitVerify(PublicKey publicKey) throws InvalidKeyException { @@ -50,27 +50,6 @@ public abstract class NativeSignatureSpi extends SignatureSpi { buffer.write(b, off, len); } - @Override - protected byte[] engineSign() throws SignatureException { - byte[] privkey; - if (signKey instanceof NativeECPrivateKey) { - privkey = ((NativeECPrivateKey) signKey).getData(); - } else { - privkey = ECUtil.toByteArray(signKey.getS(), params.getCurve().getField().getFieldSize()); - } - return sign(buffer.toByteArray(), privkey, params); - } - - @Override - protected boolean engineVerify(byte[] sigBytes) throws SignatureException { - byte[] pubkey; - if (verifyKey instanceof NativeECPublicKey) { - pubkey = ((NativeECPublicKey) verifyKey).getData(); - } else { - pubkey = ECUtil.toX962Uncompressed(verifyKey.getW(), params); - } - return verify(sigBytes, buffer.toByteArray(), pubkey, params); - } @Override @Deprecated @@ -84,11 +63,36 @@ public abstract class NativeSignatureSpi extends SignatureSpi { throw new UnsupportedOperationException("getParameter() not supported"); } - abstract byte[] sign(byte[] data, byte[] privkey, ECParameterSpec params); + private abstract static class SimpleSignatureSpi extends NativeSignatureSpi { - abstract boolean verify(byte[] signature, byte[] data, byte[] pubkey, ECParameterSpec params); + @Override + protected byte[] engineSign() throws SignatureException { + byte[] privkey; + if (signKey instanceof NativeECPrivateKey) { + privkey = ((NativeECPrivateKey) signKey).getData(); + } else { + privkey = ECUtil.toByteArray(signKey.getS(), params.getCurve().getField().getFieldSize()); + } + return sign(buffer.toByteArray(), privkey, params); + } + + @Override + protected boolean engineVerify(byte[] sigBytes) throws SignatureException { + byte[] pubkey; + if (verifyKey instanceof NativeECPublicKey) { + pubkey = ((NativeECPublicKey) verifyKey).getData(); + } else { + pubkey = ECUtil.toX962Uncompressed(verifyKey.getW(), params); + } + return verify(sigBytes, buffer.toByteArray(), pubkey, params); + } + + abstract byte[] sign(byte[] data, byte[] privkey, ECParameterSpec params); + + abstract boolean verify(byte[] signature, byte[] data, byte[] pubkey, ECParameterSpec params); + } - public static class TomCryptRaw extends NativeSignatureSpi { + public static class TomCryptRaw extends SimpleSignatureSpi { @Override native byte[] sign(byte[] data, byte[] privkey, ECParameterSpec params); @@ -97,7 +101,7 @@ public abstract class NativeSignatureSpi extends SignatureSpi { native boolean verify(byte[] signature, byte[] data, byte[] pubkey, ECParameterSpec params); } - public abstract static class Botan extends NativeSignatureSpi { + public abstract static class Botan extends SimpleSignatureSpi { private String type; public Botan(String type) { @@ -237,7 +241,7 @@ public abstract class NativeSignatureSpi extends SignatureSpi { } } - public abstract static class Cryptopp extends NativeSignatureSpi { + public abstract static class Cryptopp extends SimpleSignatureSpi { private String type; public Cryptopp(String type) { @@ -286,7 +290,7 @@ public abstract class NativeSignatureSpi extends SignatureSpi { } } - public abstract static class Openssl extends NativeSignatureSpi { + public abstract static class Openssl extends SimpleSignatureSpi { private String type; public Openssl(String type) { @@ -307,7 +311,7 @@ public abstract class NativeSignatureSpi extends SignatureSpi { } } - public abstract static class Mscng extends NativeSignatureSpi { + public abstract static class Mscng extends SimpleSignatureSpi { private String type; public Mscng(String type) { |
