php-internal-docs
8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
SnP-Relaned.h
Go to the documentation of this file.
1
/*
2
Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni,
3
Joan Daemen, Michaƫl Peeters, Gilles Van Assche and Ronny Van Keer, hereby
4
denoted as "the implementer".
5
6
For more information, feedback or questions, please refer to our websites:
7
http://keccak.noekeon.org/
8
http://keyak.noekeon.org/
9
http://ketje.noekeon.org/
10
11
To the extent possible under law, the implementer has waived all copyright
12
and related or neighboring rights to the source code in this file.
13
http://creativecommons.org/publicdomain/zero/1.0/
14
*/
15
16
#ifndef _SnP_Relaned_h_
17
#define _SnP_Relaned_h_
18
19
#define SnP_AddBytes(state, data, offset, length, SnP_AddLanes, SnP_AddBytesInLane, SnP_laneLengthInBytes) \
20
{ \
21
if ((offset) == 0) { \
22
SnP_AddLanes(state, data, (length)/SnP_laneLengthInBytes); \
23
SnP_AddBytesInLane(state, \
24
(length)/SnP_laneLengthInBytes, \
25
(data)+((length)/SnP_laneLengthInBytes)*SnP_laneLengthInBytes, \
26
0, \
27
(length)%SnP_laneLengthInBytes); \
28
} \
29
else { \
30
unsigned int _sizeLeft = (length); \
31
unsigned int _lanePosition = (offset)/SnP_laneLengthInBytes; \
32
unsigned int _offsetInLane = (offset)%SnP_laneLengthInBytes; \
33
const unsigned char *_curData = (data); \
34
while(_sizeLeft > 0) { \
35
unsigned int _bytesInLane = SnP_laneLengthInBytes - _offsetInLane; \
36
if (_bytesInLane > _sizeLeft) \
37
_bytesInLane = _sizeLeft; \
38
SnP_AddBytesInLane(state, _lanePosition, _curData, _offsetInLane, _bytesInLane); \
39
_sizeLeft -= _bytesInLane; \
40
_lanePosition++; \
41
_offsetInLane = 0; \
42
_curData += _bytesInLane; \
43
} \
44
} \
45
}
46
47
#define SnP_OverwriteBytes(state, data, offset, length, SnP_OverwriteLanes, SnP_OverwriteBytesInLane, SnP_laneLengthInBytes) \
48
{ \
49
if ((offset) == 0) { \
50
SnP_OverwriteLanes(state, data, (length)/SnP_laneLengthInBytes); \
51
SnP_OverwriteBytesInLane(state, \
52
(length)/SnP_laneLengthInBytes, \
53
(data)+((length)/SnP_laneLengthInBytes)*SnP_laneLengthInBytes, \
54
0, \
55
(length)%SnP_laneLengthInBytes); \
56
} \
57
else { \
58
unsigned int _sizeLeft = (length); \
59
unsigned int _lanePosition = (offset)/SnP_laneLengthInBytes; \
60
unsigned int _offsetInLane = (offset)%SnP_laneLengthInBytes; \
61
const unsigned char *_curData = (data); \
62
while(_sizeLeft > 0) { \
63
unsigned int _bytesInLane = SnP_laneLengthInBytes - _offsetInLane; \
64
if (_bytesInLane > _sizeLeft) \
65
_bytesInLane = _sizeLeft; \
66
SnP_OverwriteBytesInLane(state, _lanePosition, _curData, _offsetInLane, _bytesInLane); \
67
_sizeLeft -= _bytesInLane; \
68
_lanePosition++; \
69
_offsetInLane = 0; \
70
_curData += _bytesInLane; \
71
} \
72
} \
73
}
74
75
#define SnP_ExtractBytes(state, data, offset, length, SnP_ExtractLanes, SnP_ExtractBytesInLane, SnP_laneLengthInBytes) \
76
{ \
77
if ((offset) == 0) { \
78
SnP_ExtractLanes(state, data, (length)/SnP_laneLengthInBytes); \
79
SnP_ExtractBytesInLane(state, \
80
(length)/SnP_laneLengthInBytes, \
81
(data)+((length)/SnP_laneLengthInBytes)*SnP_laneLengthInBytes, \
82
0, \
83
(length)%SnP_laneLengthInBytes); \
84
} \
85
else { \
86
unsigned int _sizeLeft = (length); \
87
unsigned int _lanePosition = (offset)/SnP_laneLengthInBytes; \
88
unsigned int _offsetInLane = (offset)%SnP_laneLengthInBytes; \
89
unsigned char *_curData = (data); \
90
while(_sizeLeft > 0) { \
91
unsigned int _bytesInLane = SnP_laneLengthInBytes - _offsetInLane; \
92
if (_bytesInLane > _sizeLeft) \
93
_bytesInLane = _sizeLeft; \
94
SnP_ExtractBytesInLane(state, _lanePosition, _curData, _offsetInLane, _bytesInLane); \
95
_sizeLeft -= _bytesInLane; \
96
_lanePosition++; \
97
_offsetInLane = 0; \
98
_curData += _bytesInLane; \
99
} \
100
} \
101
}
102
103
#define SnP_ExtractAndAddBytes(state, input, output, offset, length, SnP_ExtractAndAddLanes, SnP_ExtractAndAddBytesInLane, SnP_laneLengthInBytes) \
104
{ \
105
if ((offset) == 0) { \
106
SnP_ExtractAndAddLanes(state, input, output, (length)/SnP_laneLengthInBytes); \
107
SnP_ExtractAndAddBytesInLane(state, \
108
(length)/SnP_laneLengthInBytes, \
109
(input)+((length)/SnP_laneLengthInBytes)*SnP_laneLengthInBytes, \
110
(output)+((length)/SnP_laneLengthInBytes)*SnP_laneLengthInBytes, \
111
0, \
112
(length)%SnP_laneLengthInBytes); \
113
} \
114
else { \
115
unsigned int _sizeLeft = (length); \
116
unsigned int _lanePosition = (offset)/SnP_laneLengthInBytes; \
117
unsigned int _offsetInLane = (offset)%SnP_laneLengthInBytes; \
118
const unsigned char *_curInput = (input); \
119
unsigned char *_curOutput = (output); \
120
while(_sizeLeft > 0) { \
121
unsigned int _bytesInLane = SnP_laneLengthInBytes - _offsetInLane; \
122
if (_bytesInLane > _sizeLeft) \
123
_bytesInLane = _sizeLeft; \
124
SnP_ExtractAndAddBytesInLane(state, _lanePosition, _curInput, _curOutput, _offsetInLane, _bytesInLane); \
125
_sizeLeft -= _bytesInLane; \
126
_lanePosition++; \
127
_offsetInLane = 0; \
128
_curInput += _bytesInLane; \
129
_curOutput += _bytesInLane; \
130
} \
131
} \
132
}
133
134
#endif
ext
hash
sha3
generic32lc
SnP-Relaned.h
Generated on Sat Aug 23 2025 01:46:08 for php-internal-docs by
1.13.2