aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2018-10-22 00:00:42 +0200
committerJ08nY2018-10-22 00:00:42 +0200
commitc241bf27a9afc5ac8cb69072f3d732ae1dbf413c (patch)
tree4af8973f52dabd8962341dac5946f0abec17d1b3
parent9409b2b99eb54dc48616241bbf83c09d1b99e407 (diff)
downloadECTester-c241bf27a9afc5ac8cb69072f3d732ae1dbf413c.tar.gz
ECTester-c241bf27a9afc5ac8cb69072f3d732ae1dbf413c.tar.zst
ECTester-c241bf27a9afc5ac8cb69072f3d732ae1dbf413c.zip
-rw-r--r--build-standalone.xml3
-rw-r--r--nbproject/reader/project.properties4
-rw-r--r--nbproject/standalone/project.properties4
-rw-r--r--src/cz/crcs/ectester/standalone/libs/jni/botan.cpp39
-rw-r--r--src/cz/crcs/ectester/standalone/libs/jni/cryptopp.cpp6
5 files changed, 25 insertions, 31 deletions
diff --git a/build-standalone.xml b/build-standalone.xml
index 62b7813..9382a8f 100644
--- a/build-standalone.xml
+++ b/build-standalone.xml
@@ -118,7 +118,8 @@
</exec>
</target>
- <target name="-post-compile"/>
+ <target name="-post-compile" depends="libs-try"/>
+
<target name="-post-clean">
<exec dir="src/cz/crcs/ectester/standalone/libs/jni" failonerror="true" executable="make" osfamily="unix">
<arg value="clean"/>
diff --git a/nbproject/reader/project.properties b/nbproject/reader/project.properties
index 8e11520..c00c309 100644
--- a/nbproject/reader/project.properties
+++ b/nbproject/reader/project.properties
@@ -6,7 +6,7 @@ annotation.processing.source.output=${build.generated.sources.dir}/ap-source-out
application.title=ECTesterReader
application.vendor=xsvenda
build.classes.dir=${build.dir}/classes
-build.classes.excludes=**/*.java,**/*.form,**/*.c,**/*.cpp,**/*.hpp,**/*.h,**/*.a,**/*.o,**/Makefile
+build.classes.excludes=**/*.java,**/*.form,**/*.c,**/*.cpp,**/*.hpp,**/*.h,**/*.a,**/*.o,**/*.so,**/Makefile,**/Makefile.bat
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
@@ -22,7 +22,7 @@ debug.classpath=\
debug.test.classpath=\
${run.test.classpath}
# Files in build.classes.dir which should be excluded from distribution jar
-dist.archive.excludes=
+dist.archive.excludes=**/*.java,**/*.form,**/*.c,**/*.cpp,**/*.hpp,**/*.h,**/*.a,**/*.o,**/*.so,**/Makefile,**/Makefile.bat
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/ECTesterReader.jar
diff --git a/nbproject/standalone/project.properties b/nbproject/standalone/project.properties
index 7ad08a1..6b6d440 100644
--- a/nbproject/standalone/project.properties
+++ b/nbproject/standalone/project.properties
@@ -6,7 +6,7 @@ annotation.processing.source.output=${build.generated.sources.dir}/ap-source-out
application.title=ECTesterStandalone
application.vendor=xsvenda
build.classes.dir=${build.dir}/classes
-build.classes.excludes=**/*.java,**/*.form,**/*.c,**/*.cpp,**/*.hpp,**/*.h,**/*.a,**/*.o,**/Makefile
+build.classes.excludes=**/*.java,**/*.form,**/*.c,**/*.cpp,**/*.hpp,**/*.h,**/*.a,**/*.o,**/Makefile,**/Makefile.bat
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
@@ -22,7 +22,7 @@ debug.classpath=\
debug.test.classpath=\
${run.test.classpath}
# Files in build.classes.dir which should be excluded from distribution jar
-dist.archive.excludes=**/*.java,**/*.form,**/*.c,**/*.cpp,**/*.hpp,**/*.h,**/*.a,**/*.o,**/Makefile
+dist.archive.excludes=**/*.java,**/*.form,**/*.c,**/*.cpp,**/*.hpp,**/*.h,**/*.a,**/*.o,**/Makefile,**/Makefile.bat
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/ECTesterStandalone.jar
diff --git a/src/cz/crcs/ectester/standalone/libs/jni/botan.cpp b/src/cz/crcs/ectester/standalone/libs/jni/botan.cpp
index 5de9dd3..b7940df 100644
--- a/src/cz/crcs/ectester/standalone/libs/jni/botan.cpp
+++ b/src/cz/crcs/ectester/standalone/libs/jni/botan.cpp
@@ -19,6 +19,7 @@
#include "cpp_utils.hpp"
static jclass provider_class;
+static Botan::AutoSeeded_RNG rng;
JNIEXPORT jobject JNICALL Java_cz_crcs_ectester_standalone_libs_BotanLib_createProvider(JNIEnv *env, jobject self) {
/* Create the custom provider. */
@@ -234,8 +235,6 @@ static jobject params_from_group(JNIEnv *env, Botan::EC_Group group) {
}
static jobject generate_from_group(JNIEnv* env, jobject self, Botan::EC_Group group) {
- Botan::AutoSeeded_RNG rng;
-
jclass botan_kpg_class = env->FindClass("cz/crcs/ectester/standalone/libs/jni/NativeKeyPairGeneratorSpi$Botan");
jfieldID type_id = env->GetFieldID(botan_kpg_class, "type", "Ljava/lang/String;");
jstring type = (jstring) env->GetObjectField(self, type_id);
@@ -348,8 +347,6 @@ jbyteArray generate_secret(JNIEnv *env, jobject self, jbyteArray pubkey, jbyteAr
Botan::BigInt privkey_scalar((unsigned char *) privkey_data, privkey_length);
env->ReleaseByteArrayElements(privkey, privkey_data, JNI_ABORT);
- Botan::AutoSeeded_RNG rng;
-
Botan::ECDH_PrivateKey skey(rng, curve_group, privkey_scalar);
jsize pubkey_length = env->GetArrayLength(pubkey);
@@ -415,8 +412,6 @@ JNIEXPORT jbyteArray JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeSig
Botan::BigInt privkey_scalar((uint8_t*) privkey_bytes, privkey_length);
env->ReleaseByteArrayElements(privkey, privkey_bytes, JNI_ABORT);
- Botan::AutoSeeded_RNG rng;
-
std::unique_ptr<Botan::EC_PrivateKey> skey;
if (type_str.find("ECDSA") != std::string::npos) {
skey = std::make_unique<Botan::ECDSA_PrivateKey>(rng, curve_group, privkey_scalar);
@@ -426,22 +421,22 @@ JNIEXPORT jbyteArray JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeSig
skey = std::make_unique<Botan::ECGDSA_PrivateKey>(rng, curve_group, privkey_scalar);
}
- std::string kdf;
+ std::string emsa;
if (type_str.find("NONE") != std::string::npos) {
- kdf = "Raw";
+ emsa = "Raw";
} else if (type_str.find("SHA1") != std::string::npos) {
- kdf = "EMSA1(SHA-1)";
+ emsa = "EMSA1(SHA-1)";
} else if (type_str.find("SHA224") != std::string::npos) {
- kdf = "EMSA1(SHA-224)";
+ emsa = "EMSA1(SHA-224)";
} else if (type_str.find("SHA256") != std::string::npos) {
- kdf = "EMSA1(SHA-256)";
+ emsa = "EMSA1(SHA-256)";
} else if (type_str.find("SHA384") != std::string::npos) {
- kdf = "EMSA1(SHA-384)";
+ emsa = "EMSA1(SHA-384)";
} else if (type_str.find("SHA512") != std::string::npos) {
- kdf = "EMSA1(SHA-512)";
+ emsa = "EMSA1(SHA-512)";
}
- Botan::PK_Signer signer(*skey, rng, kdf, Botan::DER_SEQUENCE);
+ Botan::PK_Signer signer(*skey, rng, emsa, Botan::DER_SEQUENCE);
jsize data_length = env->GetArrayLength(data);
jbyte *data_bytes = env->GetByteArrayElements(data, NULL);
@@ -487,22 +482,22 @@ JNIEXPORT jboolean JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeSigna
pkey = std::make_unique<Botan::ECGDSA_PublicKey>(curve_group, public_point);
}
- std::string kdf;
+ std::string emsa;
if (type_str.find("NONE") != std::string::npos) {
- kdf = "Raw";
+ emsa = "Raw";
} else if (type_str.find("SHA1") != std::string::npos) {
- kdf = "EMSA1(SHA-1)";
+ emsa = "EMSA1(SHA-1)";
} else if (type_str.find("SHA224") != std::string::npos) {
- kdf = "EMSA1(SHA-224)";
+ emsa = "EMSA1(SHA-224)";
} else if (type_str.find("SHA256") != std::string::npos) {
- kdf = "EMSA1(SHA-256)";
+ emsa = "EMSA1(SHA-256)";
} else if (type_str.find("SHA384") != std::string::npos) {
- kdf = "EMSA1(SHA-384)";
+ emsa = "EMSA1(SHA-384)";
} else if (type_str.find("SHA512") != std::string::npos) {
- kdf = "EMSA1(SHA-512)";
+ emsa = "EMSA1(SHA-512)";
}
- Botan::PK_Verifier verifier(*pkey, kdf, Botan::DER_SEQUENCE);
+ Botan::PK_Verifier verifier(*pkey, emsa, Botan::DER_SEQUENCE);
jsize data_length = env->GetArrayLength(data);
jsize sig_length = env->GetArrayLength(signature);
diff --git a/src/cz/crcs/ectester/standalone/libs/jni/cryptopp.cpp b/src/cz/crcs/ectester/standalone/libs/jni/cryptopp.cpp
index 1e212de..f14aa97 100644
--- a/src/cz/crcs/ectester/standalone/libs/jni/cryptopp.cpp
+++ b/src/cz/crcs/ectester/standalone/libs/jni/cryptopp.cpp
@@ -23,7 +23,6 @@ using CryptoPP::byte;
#include "cryptopp/osrng.h"
using CryptoPP::AutoSeededRandomPool;
-using CryptoPP::AutoSeededX917RNG;
#include "cryptopp/sha.h"
using CryptoPP::SHA1;
@@ -73,6 +72,7 @@ using CryptoPP::Integer;
#include "cpp_utils.hpp"
static jclass provider_class;
+static AutoSeededRandomPool rng;
JNIEXPORT jobject JNICALL Java_cz_crcs_ectester_standalone_libs_CryptoppLib_createProvider(JNIEnv *env, jobject self) {
@@ -494,7 +494,6 @@ template <> jobject params_from_group<EC2N>(JNIEnv *env, DL_GroupParameters_EC<E
}
template <class EC> jobject generate_from_group(JNIEnv *env, DL_GroupParameters_EC<EC> group, jobject params) {
- AutoSeededRandomPool rng;
typename ECDH<EC>::Domain ec_domain(group);
SecByteBlock priv(ec_domain.PrivateKeyLength()), pub(ec_domain.PublicKeyLength());
@@ -616,7 +615,6 @@ JNIEXPORT jobject JNICALL Java_cz_crcs_ectester_standalone_libs_jni_NativeKeyAgr
template <class EC, class H>
jbyteArray sign_message(JNIEnv *env, DL_GroupParameters_EC<EC> group, jbyteArray data, const Integer & private_key_x) {
- AutoSeededRandomPool prng;
typename ECDSA<EC, H>::PrivateKey pkey;
pkey.Initialize(group, private_key_x);
@@ -626,7 +624,7 @@ jbyteArray sign_message(JNIEnv *env, DL_GroupParameters_EC<EC> group, jbyteArray
jsize data_length = env->GetArrayLength(data);
jbyte *data_bytes = env->GetByteArrayElements(data, NULL);
- size_t len = signer.SignMessage(prng, (byte *)data_bytes, data_length, (byte *)signature.c_str());
+ size_t len = signer.SignMessage(rng, (byte *)data_bytes, data_length, (byte *)signature.c_str());
env->ReleaseByteArrayElements(data, data_bytes, JNI_ABORT);
signature.resize(len);