Coverage report: /home/ellis/comp/ext/ironclad/src/ciphers/seed.lisp
Kind | Covered | All | % |
expression | 0 | 196 | 0.0 |
branch | 0 | 2 | 0.0 |
Key
Not instrumented
Conditionalized out
Executed
Not executed
Both branches taken
One branch taken
Neither branch taken
1
;;;; seed.lisp - implementation of the SEED block cipher
6
:element-type '(unsigned-byte 32)
7
:initial-contents '(#x2989a1a8 #x05858184 #x16c6d2d4 #x13c3d3d0
8
#x14445054 #x1d0d111c #x2c8ca0ac #x25052124
9
#x1d4d515c #x03434340 #x18081018 #x1e0e121c
10
#x11415150 #x3cccf0fc #x0acac2c8 #x23436360
11
#x28082028 #x04444044 #x20002020 #x1d8d919c
12
#x20c0e0e0 #x22c2e2e0 #x08c8c0c8 #x17071314
13
#x2585a1a4 #x0f8f838c #x03030300 #x3b4b7378
14
#x3b8bb3b8 #x13031310 #x12c2d2d0 #x2ecee2ec
15
#x30407070 #x0c8c808c #x3f0f333c #x2888a0a8
16
#x32023230 #x1dcdd1dc #x36c6f2f4 #x34447074
17
#x2ccce0ec #x15859194 #x0b0b0308 #x17475354
18
#x1c4c505c #x1b4b5358 #x3d8db1bc #x01010100
19
#x24042024 #x1c0c101c #x33437370 #x18889098
20
#x10001010 #x0cccc0cc #x32c2f2f0 #x19c9d1d8
21
#x2c0c202c #x27c7e3e4 #x32427270 #x03838380
22
#x1b8b9398 #x11c1d1d0 #x06868284 #x09c9c1c8
23
#x20406060 #x10405050 #x2383a3a0 #x2bcbe3e8
24
#x0d0d010c #x3686b2b4 #x1e8e929c #x0f4f434c
25
#x3787b3b4 #x1a4a5258 #x06c6c2c4 #x38487078
26
#x2686a2a4 #x12021210 #x2f8fa3ac #x15c5d1d4
27
#x21416160 #x03c3c3c0 #x3484b0b4 #x01414140
28
#x12425250 #x3d4d717c #x0d8d818c #x08080008
29
#x1f0f131c #x19899198 #x00000000 #x19091118
30
#x04040004 #x13435350 #x37c7f3f4 #x21c1e1e0
31
#x3dcdf1fc #x36467274 #x2f0f232c #x27072324
32
#x3080b0b0 #x0b8b8388 #x0e0e020c #x2b8ba3a8
33
#x2282a2a0 #x2e4e626c #x13839390 #x0d4d414c
34
#x29496168 #x3c4c707c #x09090108 #x0a0a0208
35
#x3f8fb3bc #x2fcfe3ec #x33c3f3f0 #x05c5c1c4
36
#x07878384 #x14041014 #x3ecef2fc #x24446064
37
#x1eced2dc #x2e0e222c #x0b4b4348 #x1a0a1218
38
#x06060204 #x21012120 #x2b4b6368 #x26466264
39
#x02020200 #x35c5f1f4 #x12829290 #x0a8a8288
40
#x0c0c000c #x3383b3b0 #x3e4e727c #x10c0d0d0
41
#x3a4a7278 #x07474344 #x16869294 #x25c5e1e4
42
#x26062224 #x00808080 #x2d8da1ac #x1fcfd3dc
43
#x2181a1a0 #x30003030 #x37073334 #x2e8ea2ac
44
#x36063234 #x15051114 #x22022220 #x38083038
45
#x34c4f0f4 #x2787a3a4 #x05454144 #x0c4c404c
46
#x01818180 #x29c9e1e8 #x04848084 #x17879394
47
#x35053134 #x0bcbc3c8 #x0ecec2cc #x3c0c303c
48
#x31417170 #x11011110 #x07c7c3c4 #x09898188
49
#x35457174 #x3bcbf3f8 #x1acad2d8 #x38c8f0f8
50
#x14849094 #x19495158 #x02828280 #x04c4c0c4
51
#x3fcff3fc #x09494148 #x39093138 #x27476364
52
#x00c0c0c0 #x0fcfc3cc #x17c7d3d4 #x3888b0b8
53
#x0f0f030c #x0e8e828c #x02424240 #x23032320
54
#x11819190 #x2c4c606c #x1bcbd3d8 #x2484a0a4
55
#x34043034 #x31c1f1f0 #x08484048 #x02c2c2c0
56
#x2f4f636c #x3d0d313c #x2d0d212c #x00404040
57
#x3e8eb2bc #x3e0e323c #x3c8cb0bc #x01c1c1c0
58
#x2a8aa2a8 #x3a8ab2b8 #x0e4e424c #x15455154
59
#x3b0b3338 #x1cccd0dc #x28486068 #x3f4f737c
60
#x1c8c909c #x18c8d0d8 #x0a4a4248 #x16465254
61
#x37477374 #x2080a0a0 #x2dcde1ec #x06464244
62
#x3585b1b4 #x2b0b2328 #x25456164 #x3acaf2f8
63
#x23c3e3e0 #x3989b1b8 #x3181b1b0 #x1f8f939c
64
#x1e4e525c #x39c9f1f8 #x26c6e2e4 #x3282b2b0
65
#x31013130 #x2acae2e8 #x2d4d616c #x1f4f535c
66
#x24c4e0e4 #x30c0f0f0 #x0dcdc1cc #x08888088
67
#x16061214 #x3a0a3238 #x18485058 #x14c4d0d4
68
#x22426260 #x29092128 #x07070304 #x33033330
69
#x28c8e0e8 #x1b0b1318 #x05050104 #x39497178
70
#x10809090 #x2a4a6268 #x2a0a2228 #x1a8a9298)))
72
(defconst +seed-sbox1+
74
:element-type '(unsigned-byte 32)
75
:initial-contents '(#x38380830 #xe828c8e0 #x2c2d0d21 #xa42686a2
76
#xcc0fcfc3 #xdc1eced2 #xb03383b3 #xb83888b0
77
#xac2f8fa3 #x60204060 #x54154551 #xc407c7c3
78
#x44044440 #x6c2f4f63 #x682b4b63 #x581b4b53
79
#xc003c3c3 #x60224262 #x30330333 #xb43585b1
80
#x28290921 #xa02080a0 #xe022c2e2 #xa42787a3
81
#xd013c3d3 #x90118191 #x10110111 #x04060602
82
#x1c1c0c10 #xbc3c8cb0 #x34360632 #x480b4b43
83
#xec2fcfe3 #x88088880 #x6c2c4c60 #xa82888a0
84
#x14170713 #xc404c4c0 #x14160612 #xf434c4f0
85
#xc002c2c2 #x44054541 #xe021c1e1 #xd416c6d2
86
#x3c3f0f33 #x3c3d0d31 #x8c0e8e82 #x98188890
87
#x28280820 #x4c0e4e42 #xf436c6f2 #x3c3e0e32
88
#xa42585a1 #xf839c9f1 #x0c0d0d01 #xdc1fcfd3
89
#xd818c8d0 #x282b0b23 #x64264662 #x783a4a72
90
#x24270723 #x2c2f0f23 #xf031c1f1 #x70324272
91
#x40024242 #xd414c4d0 #x40014141 #xc000c0c0
92
#x70334373 #x64274763 #xac2c8ca0 #x880b8b83
93
#xf437c7f3 #xac2d8da1 #x80008080 #x1c1f0f13
94
#xc80acac2 #x2c2c0c20 #xa82a8aa2 #x34340430
95
#xd012c2d2 #x080b0b03 #xec2ecee2 #xe829c9e1
96
#x5c1d4d51 #x94148490 #x18180810 #xf838c8f0
97
#x54174753 #xac2e8ea2 #x08080800 #xc405c5c1
98
#x10130313 #xcc0dcdc1 #x84068682 #xb83989b1
99
#xfc3fcff3 #x7c3d4d71 #xc001c1c1 #x30310131
100
#xf435c5f1 #x880a8a82 #x682a4a62 #xb03181b1
101
#xd011c1d1 #x20200020 #xd417c7d3 #x00020202
102
#x20220222 #x04040400 #x68284860 #x70314171
103
#x04070703 #xd81bcbd3 #x9c1d8d91 #x98198991
104
#x60214161 #xbc3e8eb2 #xe426c6e2 #x58194951
105
#xdc1dcdd1 #x50114151 #x90108090 #xdc1cccd0
106
#x981a8a92 #xa02383a3 #xa82b8ba3 #xd010c0d0
107
#x80018181 #x0c0f0f03 #x44074743 #x181a0a12
108
#xe023c3e3 #xec2ccce0 #x8c0d8d81 #xbc3f8fb3
109
#x94168692 #x783b4b73 #x5c1c4c50 #xa02282a2
110
#xa02181a1 #x60234363 #x20230323 #x4c0d4d41
111
#xc808c8c0 #x9c1e8e92 #x9c1c8c90 #x383a0a32
112
#x0c0c0c00 #x2c2e0e22 #xb83a8ab2 #x6c2e4e62
113
#x9c1f8f93 #x581a4a52 #xf032c2f2 #x90128292
114
#xf033c3f3 #x48094941 #x78384870 #xcc0cccc0
115
#x14150511 #xf83bcbf3 #x70304070 #x74354571
116
#x7c3f4f73 #x34350531 #x10100010 #x00030303
117
#x64244460 #x6c2d4d61 #xc406c6c2 #x74344470
118
#xd415c5d1 #xb43484b0 #xe82acae2 #x08090901
119
#x74364672 #x18190911 #xfc3ecef2 #x40004040
120
#x10120212 #xe020c0e0 #xbc3d8db1 #x04050501
121
#xf83acaf2 #x00010101 #xf030c0f0 #x282a0a22
122
#x5c1e4e52 #xa82989a1 #x54164652 #x40034343
123
#x84058581 #x14140410 #x88098981 #x981b8b93
124
#xb03080b0 #xe425c5e1 #x48084840 #x78394971
125
#x94178793 #xfc3cccf0 #x1c1e0e12 #x80028282
126
#x20210121 #x8c0c8c80 #x181b0b13 #x5c1f4f53
127
#x74374773 #x54144450 #xb03282b2 #x1c1d0d11
128
#x24250521 #x4c0f4f43 #x00000000 #x44064642
129
#xec2dcde1 #x58184850 #x50124252 #xe82bcbe3
130
#x7c3e4e72 #xd81acad2 #xc809c9c1 #xfc3dcdf1
131
#x30300030 #x94158591 #x64254561 #x3c3c0c30
132
#xb43686b2 #xe424c4e0 #xb83b8bb3 #x7c3c4c70
133
#x0c0e0e02 #x50104050 #x38390931 #x24260622
134
#x30320232 #x84048480 #x68294961 #x90138393
135
#x34370733 #xe427c7e3 #x24240420 #xa42484a0
136
#xc80bcbc3 #x50134353 #x080a0a02 #x84078783
137
#xd819c9d1 #x4c0c4c40 #x80038383 #x8c0f8f83
138
#xcc0ecec2 #x383b0b33 #x480a4a42 #xb43787b3)))
140
(defconst +seed-sbox2+
142
:element-type '(unsigned-byte 32)
143
:initial-contents '(#xa1a82989 #x81840585 #xd2d416c6 #xd3d013c3
144
#x50541444 #x111c1d0d #xa0ac2c8c #x21242505
145
#x515c1d4d #x43400343 #x10181808 #x121c1e0e
146
#x51501141 #xf0fc3ccc #xc2c80aca #x63602343
147
#x20282808 #x40440444 #x20202000 #x919c1d8d
148
#xe0e020c0 #xe2e022c2 #xc0c808c8 #x13141707
149
#xa1a42585 #x838c0f8f #x03000303 #x73783b4b
150
#xb3b83b8b #x13101303 #xd2d012c2 #xe2ec2ece
151
#x70703040 #x808c0c8c #x333c3f0f #xa0a82888
152
#x32303202 #xd1dc1dcd #xf2f436c6 #x70743444
153
#xe0ec2ccc #x91941585 #x03080b0b #x53541747
154
#x505c1c4c #x53581b4b #xb1bc3d8d #x01000101
155
#x20242404 #x101c1c0c #x73703343 #x90981888
156
#x10101000 #xc0cc0ccc #xf2f032c2 #xd1d819c9
157
#x202c2c0c #xe3e427c7 #x72703242 #x83800383
158
#x93981b8b #xd1d011c1 #x82840686 #xc1c809c9
159
#x60602040 #x50501040 #xa3a02383 #xe3e82bcb
160
#x010c0d0d #xb2b43686 #x929c1e8e #x434c0f4f
161
#xb3b43787 #x52581a4a #xc2c406c6 #x70783848
162
#xa2a42686 #x12101202 #xa3ac2f8f #xd1d415c5
163
#x61602141 #xc3c003c3 #xb0b43484 #x41400141
164
#x52501242 #x717c3d4d #x818c0d8d #x00080808
165
#x131c1f0f #x91981989 #x00000000 #x11181909
166
#x00040404 #x53501343 #xf3f437c7 #xe1e021c1
167
#xf1fc3dcd #x72743646 #x232c2f0f #x23242707
168
#xb0b03080 #x83880b8b #x020c0e0e #xa3a82b8b
169
#xa2a02282 #x626c2e4e #x93901383 #x414c0d4d
170
#x61682949 #x707c3c4c #x01080909 #x02080a0a
171
#xb3bc3f8f #xe3ec2fcf #xf3f033c3 #xc1c405c5
172
#x83840787 #x10141404 #xf2fc3ece #x60642444
173
#xd2dc1ece #x222c2e0e #x43480b4b #x12181a0a
174
#x02040606 #x21202101 #x63682b4b #x62642646
175
#x02000202 #xf1f435c5 #x92901282 #x82880a8a
176
#x000c0c0c #xb3b03383 #x727c3e4e #xd0d010c0
177
#x72783a4a #x43440747 #x92941686 #xe1e425c5
178
#x22242606 #x80800080 #xa1ac2d8d #xd3dc1fcf
179
#xa1a02181 #x30303000 #x33343707 #xa2ac2e8e
180
#x32343606 #x11141505 #x22202202 #x30383808
181
#xf0f434c4 #xa3a42787 #x41440545 #x404c0c4c
182
#x81800181 #xe1e829c9 #x80840484 #x93941787
183
#x31343505 #xc3c80bcb #xc2cc0ece #x303c3c0c
184
#x71703141 #x11101101 #xc3c407c7 #x81880989
185
#x71743545 #xf3f83bcb #xd2d81aca #xf0f838c8
186
#x90941484 #x51581949 #x82800282 #xc0c404c4
187
#xf3fc3fcf #x41480949 #x31383909 #x63642747
188
#xc0c000c0 #xc3cc0fcf #xd3d417c7 #xb0b83888
189
#x030c0f0f #x828c0e8e #x42400242 #x23202303
190
#x91901181 #x606c2c4c #xd3d81bcb #xa0a42484
191
#x30343404 #xf1f031c1 #x40480848 #xc2c002c2
192
#x636c2f4f #x313c3d0d #x212c2d0d #x40400040
193
#xb2bc3e8e #x323c3e0e #xb0bc3c8c #xc1c001c1
194
#xa2a82a8a #xb2b83a8a #x424c0e4e #x51541545
195
#x33383b0b #xd0dc1ccc #x60682848 #x737c3f4f
196
#x909c1c8c #xd0d818c8 #x42480a4a #x52541646
197
#x73743747 #xa0a02080 #xe1ec2dcd #x42440646
198
#xb1b43585 #x23282b0b #x61642545 #xf2f83aca
199
#xe3e023c3 #xb1b83989 #xb1b03181 #x939c1f8f
200
#x525c1e4e #xf1f839c9 #xe2e426c6 #xb2b03282
201
#x31303101 #xe2e82aca #x616c2d4d #x535c1f4f
202
#xe0e424c4 #xf0f030c0 #xc1cc0dcd #x80880888
203
#x12141606 #x32383a0a #x50581848 #xd0d414c4
204
#x62602242 #x21282909 #x03040707 #x33303303
205
#xe0e828c8 #x13181b0b #x01040505 #x71783949
206
#x90901080 #x62682a4a #x22282a0a #x92981a8a)))
208
(defconst +seed-sbox3+
210
:element-type '(unsigned-byte 32)
211
:initial-contents '(#x08303838 #xc8e0e828 #x0d212c2d #x86a2a426
212
#xcfc3cc0f #xced2dc1e #x83b3b033 #x88b0b838
213
#x8fa3ac2f #x40606020 #x45515415 #xc7c3c407
214
#x44404404 #x4f636c2f #x4b63682b #x4b53581b
215
#xc3c3c003 #x42626022 #x03333033 #x85b1b435
216
#x09212829 #x80a0a020 #xc2e2e022 #x87a3a427
217
#xc3d3d013 #x81919011 #x01111011 #x06020406
218
#x0c101c1c #x8cb0bc3c #x06323436 #x4b43480b
219
#xcfe3ec2f #x88808808 #x4c606c2c #x88a0a828
220
#x07131417 #xc4c0c404 #x06121416 #xc4f0f434
221
#xc2c2c002 #x45414405 #xc1e1e021 #xc6d2d416
222
#x0f333c3f #x0d313c3d #x8e828c0e #x88909818
223
#x08202828 #x4e424c0e #xc6f2f436 #x0e323c3e
224
#x85a1a425 #xc9f1f839 #x0d010c0d #xcfd3dc1f
225
#xc8d0d818 #x0b23282b #x46626426 #x4a72783a
226
#x07232427 #x0f232c2f #xc1f1f031 #x42727032
227
#x42424002 #xc4d0d414 #x41414001 #xc0c0c000
228
#x43737033 #x47636427 #x8ca0ac2c #x8b83880b
229
#xc7f3f437 #x8da1ac2d #x80808000 #x0f131c1f
230
#xcac2c80a #x0c202c2c #x8aa2a82a #x04303434
231
#xc2d2d012 #x0b03080b #xcee2ec2e #xc9e1e829
232
#x4d515c1d #x84909414 #x08101818 #xc8f0f838
233
#x47535417 #x8ea2ac2e #x08000808 #xc5c1c405
234
#x03131013 #xcdc1cc0d #x86828406 #x89b1b839
235
#xcff3fc3f #x4d717c3d #xc1c1c001 #x01313031
236
#xc5f1f435 #x8a82880a #x4a62682a #x81b1b031
237
#xc1d1d011 #x00202020 #xc7d3d417 #x02020002
238
#x02222022 #x04000404 #x48606828 #x41717031
239
#x07030407 #xcbd3d81b #x8d919c1d #x89919819
240
#x41616021 #x8eb2bc3e #xc6e2e426 #x49515819
241
#xcdd1dc1d #x41515011 #x80909010 #xccd0dc1c
242
#x8a92981a #x83a3a023 #x8ba3a82b #xc0d0d010
243
#x81818001 #x0f030c0f #x47434407 #x0a12181a
244
#xc3e3e023 #xcce0ec2c #x8d818c0d #x8fb3bc3f
245
#x86929416 #x4b73783b #x4c505c1c #x82a2a022
246
#x81a1a021 #x43636023 #x03232023 #x4d414c0d
247
#xc8c0c808 #x8e929c1e #x8c909c1c #x0a32383a
248
#x0c000c0c #x0e222c2e #x8ab2b83a #x4e626c2e
249
#x8f939c1f #x4a52581a #xc2f2f032 #x82929012
250
#xc3f3f033 #x49414809 #x48707838 #xccc0cc0c
251
#x05111415 #xcbf3f83b #x40707030 #x45717435
252
#x4f737c3f #x05313435 #x00101010 #x03030003
253
#x44606424 #x4d616c2d #xc6c2c406 #x44707434
254
#xc5d1d415 #x84b0b434 #xcae2e82a #x09010809
255
#x46727436 #x09111819 #xcef2fc3e #x40404000
256
#x02121012 #xc0e0e020 #x8db1bc3d #x05010405
257
#xcaf2f83a #x01010001 #xc0f0f030 #x0a22282a
258
#x4e525c1e #x89a1a829 #x46525416 #x43434003
259
#x85818405 #x04101414 #x89818809 #x8b93981b
260
#x80b0b030 #xc5e1e425 #x48404808 #x49717839
261
#x87939417 #xccf0fc3c #x0e121c1e #x82828002
262
#x01212021 #x8c808c0c #x0b13181b #x4f535c1f
263
#x47737437 #x44505414 #x82b2b032 #x0d111c1d
264
#x05212425 #x4f434c0f #x00000000 #x46424406
265
#xcde1ec2d #x48505818 #x42525012 #xcbe3e82b
266
#x4e727c3e #xcad2d81a #xc9c1c809 #xcdf1fc3d
267
#x00303030 #x85919415 #x45616425 #x0c303c3c
268
#x86b2b436 #xc4e0e424 #x8bb3b83b #x4c707c3c
269
#x0e020c0e #x40505010 #x09313839 #x06222426
270
#x02323032 #x84808404 #x49616829 #x83939013
271
#x07333437 #xc7e3e427 #x04202424 #x84a0a424
272
#xcbc3c80b #x43535013 #x0a02080a #x87838407
273
#xc9d1d819 #x4c404c0c #x83838003 #x8f838c0f
274
#xcec2cc0e #x0b33383b #x4a42480a #x87b3b437)))
278
:element-type '(unsigned-byte 32)
279
:initial-contents '(#x9e3779b9 #x3c6ef373 #x78dde6e6 #xf1bbcdcc
280
#xe3779b99 #xc6ef3733 #x8dde6e67 #x1bbcdccf
281
#x3779b99e #x6ef3733c #xdde6e678 #xbbcdccf1
282
#x779b99e3 #xef3733c6 #xde6e678d #xbcdccf1b)))
285
`(logxor (aref +seed-sbox0+ (logand ,x 255))
286
(aref +seed-sbox1+ (logand (ash ,x -8) 255))
287
(aref +seed-sbox2+ (logand (ash ,x -16) 255))
288
(aref +seed-sbox3+ (logand (ash ,x -24) 255))))
290
(defmacro seed-f (r0 r1 k0 k1)
291
`(let* ((a (logxor ,r0 ,k0))
292
(b (seed-g (logxor a ,r1 ,k1)))
293
(c (seed-g (mod32+ b a))))
294
(declare (type (unsigned-byte 32) a b c))
295
(setf ,r1 (seed-g (mod32+ c b))
296
,r0 (mod32+ ,r1 c))))
298
(defclass seed (cipher 16-byte-block-mixin)
299
((round-keys :accessor round-keys
300
:type (simple-array (unsigned-byte 32) (32)))))
302
(defmethod schedule-key ((cipher seed) key)
303
(declare (type (simple-array (unsigned-byte 8) (*)) key))
304
(let ((round-keys (make-array 32 :element-type '(unsigned-byte 32)))
305
(k0 (ub32ref/be key 0))
306
(k1 (ub32ref/be key 4))
307
(k2 (ub32ref/be key 8))
308
(k3 (ub32ref/be key 12)))
310
(setf (aref round-keys (* 2 i)) (seed-g (mod32- (mod32+ k0 k2) (aref +seed-kc+ i)))
311
(aref round-keys (+ (* 2 i) 1)) (seed-g (mod32+ (mod32- k1 k3) (aref +seed-kc+ i))))
313
(let ((n (mod32ash k0 24)))
314
(setf k0 (logior (mod32ash k0 -8) (mod32ash k1 24))
315
k1 (logior (mod32ash k1 -8) n)))
316
(let ((n (mod32ash k2 -24)))
317
(setf k2 (logior (mod32ash k2 8) (mod32ash k3 -24))
318
k3 (logior (mod32ash k3 8) n)))))
319
(setf (round-keys cipher) round-keys)
322
(define-block-encryptor seed 16
323
(let ((round-keys (round-keys context))
326
(declare (type (simple-array (unsigned-byte 32) (32)) round-keys)
327
(type (unsigned-byte 32) t0 t1))
328
(with-words ((l0 l1 r0 r1) plaintext plaintext-start :size 4)
329
(dotimes-unrolled (i 15)
332
(seed-f r0 r1 (aref round-keys (* 2 i)) (aref round-keys (+ (* 2 i) 1)))
333
(setf r0 (logxor r0 l0)
339
(seed-f t0 t1 (aref round-keys 30) (aref round-keys 31))
340
(setf l0 (logxor l0 t0)
342
(store-words ciphertext ciphertext-start l0 l1 r0 r1))))
344
(define-block-decryptor seed 16
345
(let ((round-keys (round-keys context))
348
(declare (type (simple-array (unsigned-byte 32) (32)) round-keys)
349
(type (unsigned-byte 32) t0 t1))
350
(with-words ((l0 l1 r0 r1) ciphertext ciphertext-start :size 4)
351
(dotimes-unrolled (i 15)
354
(seed-f r0 r1 (aref round-keys (- 30 (* 2 i))) (aref round-keys (- 31 (* 2 i))))
355
(setf r0 (logxor r0 l0)
361
(seed-f t0 t1 (aref round-keys 0) (aref round-keys 1))
362
(setf l0 (logxor l0 t0)
364
(store-words plaintext plaintext-start l0 l1 r0 r1))))
367
(:encrypt-function seed-encrypt-block)
368
(:decrypt-function seed-decrypt-block)
370
(:key-length (:fixed 16)))