keccak/keccak_gen.go

124 lines
2.5 KiB
Go
Raw Normal View History

2015-01-01 00:40:56 +00:00
// Generated from go run gen.go
// DO NOT EDIT
package keccak
2015-01-01 00:52:34 +00:00
// round implements one round of the keccak-f[1600] permutation.
func roundGo(a *[25]uint64) {
var b00, b01, b02, b03, b04 uint64
var b10, b11, b12, b13, b14 uint64
var b20, b21, b22, b23, b24 uint64
var b30, b31, b32, b33, b34 uint64
var b40, b41, b42, b43, b44 uint64
2015-01-01 00:40:56 +00:00
2015-01-01 00:52:34 +00:00
// Theta
var c0, c1, c2, c3, c4 uint64
c0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20]
c1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21]
c2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22]
c3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23]
c4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24]
2015-01-01 00:52:34 +00:00
var d0, d1, d2, d3, d4 uint64
d0 = c4 ^ (c1<<1 | c1>>63)
b00 = a[0] ^ d0
b01 = a[5] ^ d0
b02 = a[10] ^ d0
b03 = a[15] ^ d0
b04 = a[20] ^ d0
2015-01-01 00:40:56 +00:00
d1 = c0 ^ (c2<<1 | c2>>63)
b10 = a[1] ^ d1
b11 = a[6] ^ d1
b12 = a[11] ^ d1
b13 = a[16] ^ d1
b14 = a[21] ^ d1
2015-01-01 00:40:56 +00:00
d2 = c1 ^ (c3<<1 | c3>>63)
b20 = a[2] ^ d2
b21 = a[7] ^ d2
b22 = a[12] ^ d2
b23 = a[17] ^ d2
b24 = a[22] ^ d2
2015-01-01 00:52:34 +00:00
d3 = c2 ^ (c4<<1 | c4>>63)
b30 = a[3] ^ d3
b31 = a[8] ^ d3
b32 = a[13] ^ d3
b33 = a[18] ^ d3
b34 = a[23] ^ d3
2015-01-01 00:40:56 +00:00
d4 = c3 ^ (c0<<1 | c0>>63)
b40 = a[4] ^ d4
b41 = a[9] ^ d4
b42 = a[14] ^ d4
b43 = a[19] ^ d4
b44 = a[24] ^ d4
2015-01-01 00:40:56 +00:00
// Rho / Pi
c0 = b00<<0 | b00>>64
c1 = b11<<44 | b11>>20
c2 = b22<<43 | b22>>21
c3 = b33<<21 | b33>>43
c4 = b44<<14 | b44>>50
// Chi
a[0] = c0 ^ (c2 &^ c1)
a[1] = c1 ^ (c3 &^ c2)
a[2] = c2 ^ (c4 &^ c3)
a[3] = c3 ^ (c0 &^ c4)
a[4] = c4 ^ (c1 &^ c0)
2015-01-01 00:40:56 +00:00
// Rho / Pi
c0 = b30<<28 | b30>>36
c1 = b41<<20 | b41>>44
c2 = b02<<3 | b02>>61
c3 = b13<<45 | b13>>19
c4 = b24<<61 | b24>>3
// Chi
a[5] = c0 ^ (c2 &^ c1)
a[6] = c1 ^ (c3 &^ c2)
a[7] = c2 ^ (c4 &^ c3)
a[8] = c3 ^ (c0 &^ c4)
a[9] = c4 ^ (c1 &^ c0)
2015-01-01 00:40:56 +00:00
// Rho / Pi
c0 = b10<<1 | b10>>63
c1 = b21<<6 | b21>>58
c2 = b32<<25 | b32>>39
c3 = b43<<8 | b43>>56
c4 = b04<<18 | b04>>46
// Chi
a[10] = c0 ^ (c2 &^ c1)
a[11] = c1 ^ (c3 &^ c2)
a[12] = c2 ^ (c4 &^ c3)
a[13] = c3 ^ (c0 &^ c4)
a[14] = c4 ^ (c1 &^ c0)
2015-01-01 00:40:56 +00:00
// Rho / Pi
c0 = b40<<27 | b40>>37
c1 = b01<<36 | b01>>28
c2 = b12<<10 | b12>>54
c3 = b23<<15 | b23>>49
c4 = b34<<56 | b34>>8
// Chi
a[15] = c0 ^ (c2 &^ c1)
a[16] = c1 ^ (c3 &^ c2)
a[17] = c2 ^ (c4 &^ c3)
a[18] = c3 ^ (c0 &^ c4)
a[19] = c4 ^ (c1 &^ c0)
2015-01-01 00:40:56 +00:00
// Rho / Pi
c0 = b20<<62 | b20>>2
c1 = b31<<55 | b31>>9
c2 = b42<<39 | b42>>25
c3 = b03<<41 | b03>>23
c4 = b14<<2 | b14>>62
// Chi
a[20] = c0 ^ (c2 &^ c1)
a[21] = c1 ^ (c3 &^ c2)
a[22] = c2 ^ (c4 &^ c3)
a[23] = c3 ^ (c0 &^ c4)
a[24] = c4 ^ (c1 &^ c0)
2015-01-01 00:40:56 +00:00
}