code: function(key,size)
  		{
  			var expandedKeySize = (16*(this.numberOfRounds(size)+1));
  			
  			/* current expanded keySize, in bytes */
  			var currentSize = 0;
  			var rconIteration = 1;
  			var t = [];   // temporary 4-byte variable
  			
  			var expandedKey = [];
  			for(var i = 0;i < expandedKeySize;i++)
  				expandedKey[i] = 0;
  		
  			/* set the 16,24,32 bytes of the expanded key to the input key */
  			for (var j = 0; j < size; j++)
  				expandedKey[j] = key[j];
  			currentSize += size;
  		
  			while (currentSize < expandedKeySize)
  			{
  				/* assign the previous 4 bytes to the temporary value t */
  				for (var k = 0; k < 4; k++)
  					t[k] = expandedKey[(currentSize - 4) + k];
  		
  				/* every 16,24,32 bytes we apply the core schedule to t
  				 * and increment rconIteration afterwards
  				 */
  				if(currentSize % size == 0)
  					t = this.core(t, rconIteration++);
  		
  				/* For 256-bit keys, we add an extra sbox to the calculation */
  				if(size == this.keySize.SIZE_256 && ((currentSize % size) == 16))
  					for(var l = 0; l < 4; l++)
  						t[l] = this.sbox[t[l]];
  		
  				/* We XOR t with the four-byte block 16,24,32 bytes before the new expanded key.
  				 * This becomes the next four bytes in the expanded key.
  				 */
  				for(var m = 0; m < 4; m++) {
  					expandedKey[currentSize] = expandedKey[currentSize - size] ^ t[m];
  					currentSize++;
  				}
  			}
  			return expandedKey;
  		}
docs: /* Rijndael's key expansion
  expands an 128,192,256 key into an 176,208,240 bytes key
  
  expandedKey is a pointer to an char array of large enough size
  key is a pointer to a non-expanded key