-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME.txt
119 lines (64 loc) · 3.14 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# MiRitH (MinRank in the Head)
## License
This implementation of MiRitH is released under the Apache License (v2.0).
See `NOTICE.txt` and `LICENSE.txt`.
## Documentation
The documentation is contained in the folder `Supporting_Documentation`
and consists of `Coversheet.pdf`, `IP_Statements.pdf`, and
`MiRitH_Documentation.pdf`.
## Compile and Test
To compile and test the reference implementation of MiRitH, move to
the folder
`Reference_Implementation/mirith_[parameter set]/test`
and run the command `make all && ./test_mirith`.
To compile and test the AVX2 optimized implementation of MiRitH, move to
the folder
`Optimized_Implementation/mirith_hypercube_avx2_[parameter set]/test`
and run the command `make all && ./test_mirith`.
To compile and test the NEON optimized implementation of MiRitH, move to
the folder
`Optimized_Implementation/mirith_hypercube_neon_[parameter set]/test`
and run the command `make all && ./test_mirith`.
To compile and test the Cortex-m4 optimized implementation of MiRitH, move to
the folder
`Optimized_Implementation/mirith_hypercube_m4_[parameter set]/test`
and run the command `make all && ./test_mirith`.
## Benchmark (without SUPERCOP)
To benchmark the AVX2 optimized implementation of MiRitH, move to the folder
`Optimized_Implementation/mirith_hypercube_avx2_[parameter set]/bench`
and run the command `make all && ./bench_mirith`.
To benchmark the NEON optimized implementation of MiRitH, move to the folder
`Optimized_Implementation/mirith_hypercube_neon_[parameter set]/bench`
and run the command `make all && ./bench_mirith`.
To compile and test the Cortex-m4 optimized implementation of MiRitH, move to
the folder
`Optimized_Implementation/mirith_hypercube_m4_[parameter set]/bench`
and run the command `make all && ./bench_mirith``.
## Benchmark with SUPERCOP
To benchmark the AVX2 optimized implementation of MiRitH with SUPERCOP, copy
the folder
`Optimized_Implementation/mirith_hypercube_avx2_[parameter set]`
into `[SUPERCOP folder]/crypto_sign`, and edit the file
`[SUPERCOP folder]/crypto_sign/mirith_hypercube_avx2_[parameter set]/config.h`
by uncommenting the line
`/* #define MIRITH_SUPERCOP */`
Then in the SUPERCOP folder run the command
`./do-part crypto_sign mirith_hypercube_avx2_[parameter set]`
To benchmark the NEON optimized implementation of MiRitH with SUPERCOP, copy
the folder
`Optimized_Implementation/mirith_hypercube_neon_[parameter set]`
into `[SUPERCOP folder]/crypto_sign`, and edit the file
`[SUPERCOP folder]/crypto_sign/mirith_hypercube_neon_[parameter set]/config.h`
by uncommenting the line
`/* #define MIRITH_SUPERCOP */`
Then in the SUPERCOP folder run the command
`./do-part crypto_sign mirith_hypercube_neon_[parameter set]`
To benchmark the Cortex-m4 optimized implementation of MiRitH with SUPERCOP, copy
the folder
`Optimized_Implementation/mirith_hypercube_m4_[parameter set]`
into `[SUPERCOP folder]/crypto_sign`, and edit the file
`[SUPERCOP folder]/crypto_sign/mirith_hypercube_m4_[parameter set]/config.h`
by uncommenting the line
`/* #define MIRITH_SUPERCOP */`
Then in the SUPERCOP folder run the command
`./do-part crypto_sign mirith_hypercube_m4_[parameter set]`