ECTester mostly reads/outputs data in either human-readable format or using CSV, YAML or XML, depending on the data.
By default test runs are output in a human readable format, however YAML and XML is also supported and can be selected
by using the --format
option. Also, prefixing the output file name when using the -o/--output
option allows to output
the same test run in different formats to different files.
For example:
--format yaml -o default_output.yaml -o xml:output_file.xml -o text:readable_text_file.txt
The YAML output of the test runs is used to generate the static pages of the tests at https://crocs-muni.github.io/ECTester/.
In the rest of this documentation the following notation is used
p
- prime F_pm
- binary field exponent F_2^me1
- largest exponent of the field polynomiale2
- middle exponent of the field polynomial, or0000
if field poly is a trinomiale3
- smallest exponent (except zero) of the field polynomial, or0000
if field poly is a trinomial
a
- a parameter in short Weierstrass curve equationb
- b parameter in short Weierstrass curve equationgx
- x coordinate of the curve base-point ggy
- y coordinate of the curve base-point gn
- the base-point orderh
- the base-point cofactorwx
- the x coordinate of the public keywy
- the y coordinate of the public keys
- the private key value
Input files for the -c/--curve
option should be in CSV, little-endian hexadecimal format.
Output of the -e/--export
option will also be in this format.
p,a,b,gx,gy,n,h
m,e1,e2,e3,a,b,gx,gy,n,h
Input files for the -k/--key
, -pub/--public
and -priv/--private
options should be in CSV, little-endian hexadecimal format.
wx,wy,s
wx,wy
s
Output of the -g/--generate
option.
For ECTesterReader this has the format:
index;genTime[milli];exportTime[milli];pubW;privS
where pubW
is the public key used in ANSI X9.62 format,
privS
is the private key, genTime
is the time required to generate the keypair and exportTime
is the time required to export it (recover it from the JavaCard API and send it to the reader).
For ECTesterStandalone this has the format:
index;time[nano];pubW;privS
The string in the brackets denotes the measurement unit used, can be one of milli
, micro
, nano
and also instr
for ECTesterStandalone, if the measured duration is instructions.
Output of the -dh/--ecdh
option.
For ECTesterReader this has the format:
index;time[milli];pubW;privS;secret[SHA1]
where pubW
is the public key used in ANSI X9.62 format, privS
is the private key
and secret
is the KeyAgreement result. The value in brackets denotes what hash algorithm was used, can be NONE
.
For ECTesterStandalone this has the format:
index;time[nano];pubW;privS;secret[SHA1]
and the same meaning as for ECTesterReader.
The string in the brackets denotes the measurement unit used, can be one of milli
, micro
, nano
and also instr
for ECTesterStandalone, if the measured duration is instructions.
Output of the -dsa/--ecdsa
option.
For ECTesterReader this has the format:
index;signTime[milli];verifyTime[milli];data;pubW;privS;signature[SHA1];nonce;valid
where pubW
is the public key used
in ANSI X9.62 format, privS
is the private key, signTime
and verifyTime
are the durations of the sign and verify operations,
data
is the signed data (if available), signature
is the produced signature, nonce
is the k
(nonce) value recovered from the signature
abd the private key (if possible), valid
denotes the verification result. The value in brackets after signature
denotes what hash algorithm was used, can be NONE
.
For ECTesterStandalone this has the format:
index;signTime[nano];verifyTime[nano];data;pubW;privS;signature[SHA1];nonce;verified
and the same meaning as for ECTesterReader.
The string in the brackets denotes the measurement unit used, can be one of milli
, micro
, nano
and also instr
for ECTesterStandalone, if the measured duration is instructions.