-
Notifications
You must be signed in to change notification settings - Fork 26
/
Changelog
172 lines (108 loc) · 6.46 KB
/
Changelog
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
Changes with version 0.13 12 Dec 2018
* Feature: relicense under the dual BSD/GPL-2.0+ license.
* Feature: use unaligned SSE2 instructions for loading data.
* Bugfix: improve the distribution detection in the RPM spec.
* Bugfix: avoid the 'stringop-truncation' warning.
* Bugfix: simplified version of add512()
Changes with version 0.12 20 Apr 2018
* Feature: Dockerfile added
* Feature: RPM specification added
Changes with version 0.11 22 Feb 2013
* Feature: command line options "-e" introduced (switch endianness). The
standard does not specifies explicitly how to output the resulting hash.
This implementation outputs hash in hexadecimal format in order how
bytes are represented in memory - least significant first. With this
option set, program outputs digest in hexadecimal format in reversed
order - most significant first.
* Feature: example messages from standard are added in "examples"
directory.
* Feature: set SUPERCOP environment when configuring to prepare this
implementation to run on SUPERCOP toolkit.
* Bugfix: variables, structures, functions changed their names from
*GOST3411* to fully-qualified *GOST34112012*
* Bugfix: API: GOST34112012Init() now operates on allocated memory.
Previously, memory allocation for context has been done with
GOST34112012Init() call - this guarantee proper alignment for context's
members. As for now, alignment is done with ALIGN keyword in object
declaration and GOST34112012Init() does not allocate any byte of memory.
* Bugfix: API: GOST34112012Final() now returns digest in memory pointed by
second argument. Context member "hexdigest" not used anymore thus
abandoned. It is up to calling application to present digest in
hexadecimal (or any) format.
Changes with version 0.10 29 Jan 2013
* Feature: performance optimization in substitution S: perform
substitution by Pi[] while generating multiplication lookup table.
Lookup table arranged in a such way totally eliminates the need to do
whole S-cycle in LPS.
* Feature: use SSE4.1 instructions set in LPS if available.
* Feature: multiplication lookup table is now statically precomputed in
header file and is in constant memory.
* Bugfix: rewrite GOST3411Update() function to implement streaming mode
when processing large amount of data.
* Bugfix: rename round2() and round3() to stage2() and stage3()
respectively.
* Bugfix: in auto configuration probes: delete temporary files.
Changes with version 0.09 22 Jan 2013
* Feature: internal data flow and representation rewritten so that whole
internal state of compression function g() is hold in two XMM-register
quadruples. This avoid copying of temporary key and internal state
between rounds in g(), thus reduce instructions count per plaintext
block.
* Feature: with code optimization above, performance on 32-bit systems
greatly improved and is now about as fast as with 64-bit systems.
* Feature: detect MMX and SSE2 capabilities on compile time and use faster
code when possible. From this version onward there are at least two
versions of implementation: portable (not using any extensions like MMX
or SSE) and optimized one.
* Feature: big-endian systems compatibility.
* Bugfix: in function g(): unload function's output directly to it's
internal state, thus avoid one extra memcpy() call per plaintext block.
* Bugfix: integer overflow incorrectly handled in addition by modulo 2.
This could lead to incorrect results on some files.
Changes with version 0.08 19 Jan 2013
* Feature: boost performance on 32-bit systems by using 64-bit MMX XOR
instructions in XLPS.
* Feature: Use 128-bit SSE2 for X on both 32-bit and 64-bit systems. For
latter this will decrease number of instructions in about two times when
XORing 512-bit block.
Changes with version 0.07 17 Jan 2013
* Feature: boost performance on 32-bit systems by using SSE2.
* Bugfix: padding function rewritten to less complex.
* Bugfix: key generation function K replaced with XLPS macros to avoid
inlining issues when max inline instruction limit reached.
* Bugfix: encryption function E inlined to compression g to avoid
compile-time inlining issues when max inline instruction limit reached.
* Bugfix: use unsigned integers where possible.
* Bugfix: fix typo in update() when comparing bufsize.
* Bugfix: memory allocator rewritten to use posix_memalign().
Changes with version 0.06 09 Jan 2013
* Feature: performance optimization in LPS: hint compiler to use eight
registers instead of union buffer.
* Feature: performance optimization in permutation P: rotate matrix by
cyclic right shifting bits in source matrix columns to rows in
destination matrix.
* Feature: as result of previous two optimizations: replace LPS macros
with improved macros XLPS.
* Bugfix: improve constant table C presentation to avoid runtime
conversion in key generator K.
* Bugfix: unroll key generation loop in E.
* Bugfix: rename union member names according to their natural meaning.
Changes with version 0.05 24 Dec 2012
* Feature: issue all the warnings demanded by strict ISO C.
* Feature: performance optimization in LPS: execute substitution and
permutation within single loop.
Changes with version 0.04 17 Dec 2012
* Bugfix: fixed memory leaks (make valgrind happy).
* Bugfix: update code to work on 32-bit systems.
* Bugfix: code improvement in Key generator K.
* Feature: performance optimization in linear transformation L (based on
Assembler instructions generated by CLang).
Changes with version 0.03 16 Dec 2012
* Bugfix: algorithm optimization in linear transformation L.
Changes with version 0.02 15 Dec 2012
* Feature: Makefile improvements.
* Bugfix: recent GCC version compatibility (GCC 4.7).
* Bugfix: layout modification: isolate core from main program.
* Bugfix: handle read errors with ferror().
Initial version 0.01 14 Dec 2012
GOST R 34.11-2012 hash function with 512/256 bits digest.