| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | 
							- #ifndef SHANNON_H
 
- #define SHANNON_H
 
- #include <cstdint>  // for uint32_t, uint8_t
 
- #include <vector>   // for 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
 
 
  |