// Encrypt one block from src into dst, using the expanded key xk. func encryptBlockGo(xk []uint32, dst, src []byte) { … } // Decrypt one block from src into dst, using the expanded key xk. func decryptBlockGo(xk []uint32, dst, src []byte) { … } // Apply sbox0 to each byte in w. func subw(w uint32) uint32 { … } // Rotate func rotw(w uint32) uint32 { … } // Key expansion algorithm. See FIPS-197, Figure 11. // Their rcon[i] is our powx[i-1] << 24. func expandKeyGo(key []byte, enc, dec []uint32) { … }