aboutsummaryrefslogtreecommitdiff
path: root/docs/DEVELOPING.md
blob: a5eda6c5581e7991f2a13062236e4a5f852a8e8a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Developing ECTester

This document describes some development guidelines and how-tos regarding
developing the ECTester tool itself.

## Developing ECTester standalone modules

 - Create Java classes inheriting Native{ECPrivateKey,ECPublicKey,KeyPairGeneratorSpi,KeyAgreementSpi,SignatureSpi}.
 - Run `gradle :standalone:compileJava` to compile the classes and obtain a native header file. It will be in
 `standalone/build/generated/sources/headers/java/main`. Ideally, copy the generated function declarations into
 the `native.h` file found in the `standalone/src/java/resources/cz/crcs/ectester/standalone/libs/jni` directory.
 - Create module file (C/C++) in `standalone/src/java/resources/cz/crcs/ectester/standalone/libs/jni`, and add it to the Makefile.
 - Implement the required JNI functions, look at existing modules for what is expected, what the contract
 of the function is, use the `native_timing_*` functions around points that should be measurable.
 - Compile and run ECTester using your new module.