| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | 
							- #ifndef SHANNON_H
 
- #define SHANNON_H
 
- #include <cstdint>
 
- #include <vector>
 
- class Shannon
 
- {
 
- public:
 
-     static constexpr unsigned int N = 16;
 
-     void key(const std::vector<uint8_t> &key);     /* set key */
 
-     void nonce(const std::vector<uint8_t> &nonce); /* set Init Vector */
 
-     void stream(std::vector<uint8_t> &buf);  /* stream cipher */
 
-     void maconly(std::vector<uint8_t> &buf); /* accumulate MAC */
 
-     void encrypt(std::vector<uint8_t> &buf); /* encrypt + MAC */
 
-     void decrypt(std::vector<uint8_t> &buf); /* finalize + MAC */
 
-     void finish(std::vector<uint8_t> &buf);  /* finalise MAC */
 
- private:
 
-     static constexpr unsigned int FOLD = Shannon::N;
 
-     static constexpr unsigned int INITKONST = 0x6996c53a;
 
-     static constexpr unsigned int KEYP = 13;
 
-     uint32_t R[Shannon::N];
 
-     uint32_t CRC[Shannon::N];
 
-     uint32_t initR[Shannon::N];
 
-     uint32_t konst;
 
-     uint32_t sbuf;
 
-     uint32_t mbuf;
 
-     int nbuf;
 
-     static uint32_t sbox1(uint32_t w);
 
-     static uint32_t sbox2(uint32_t w);
 
-     void cycle();
 
-     void crcfunc(uint32_t i);
 
-     void macfunc(uint32_t i);
 
-     void initState();
 
-     void saveState();
 
-     void reloadState();
 
-     void genkonst();
 
-     void diffuse();
 
-     void loadKey(const std::vector<uint8_t> &key);
 
- };
 
- #endif
 
 
  |