   static int byteCount = 0;
   sourcePool[byteCount] = currentByte;
   byteCount = ++byteCount % SAMPLE_SIZE;
+  //Serial.println(byteCount);
+
   if (byteCount == 0){
     return true;
   }
   return false;
 }
-
+ 
 void conditionPool(){
+  //Serial.println("Conditioning");
+  static byte iv[BLOCK_SIZE] = {0};
+  byte output[SAMPLE_SIZE];
+  cbc.clear();
+  cbc.setKey(key, 16);
+  cbc.setIV(iv, 16);
+  cbc.encrypt(output, sourcePool, SAMPLE_SIZE);
   
+   //advance pointer to last block (the MAC)
+  byte *outBuf = &output[SAMPLE_SIZE - BLOCK_SIZE]; 
+  Serial.write(outBuf, BLOCK_SIZE);
 }
 
 void loop()

#include "AES.h"

#define CHAIN_SIZE 2
#define BLOCK_SIZE 16
#define SAMPLE_SIZE BLOCK_SIZE * CHAIN_SIZE

AES128 aes128;
byte key[16] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
                    0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};

byte sourcePool[SAMPLE_SIZE];
 

  boolean byteReady = collectBit(pinVal, &currentByte);
 
  if (byteReady){
    //Serial.println("ByteCollected");
    boolean poolFull = collectByte(currentByte);
    if (poolFull){
      conditionPool();
