public int ginjectEncPayload(byte[] info, int start) {
        int i, j, n_ent, k = start;

        if (isInput()) {
            return 0;
        }
        
        // Create vector and array of the correct size

        n_ent = 1 << n_inputs;
        encrypted_truth_table = new Vector<byte[]>(n_ent);
        encrypted_perm = new byte[n_ent];

        // Inject all data into appropriate structures

        for (i = 0 ; i < n_ent; i++, k++) // Encrypted perm bytes
            encrypted_perm[i] = info[k];

        for (i = 0; i < n_ent; i++) { // Encrypted truth table
            byte[] temp = new byte[NBYTESG] ;
		    for (j = 0; j < NBYTESG; j++, k++)
		         temp[j] = info[k] ;
            encrypted_truth_table.add(temp) ;
        }

		if (isAliceOutput()) { // Hashes of Alice codes
            hcode0 = new byte[NBYTESG];
		    for (j = 0; j < NBYTESG; j++, k++)
               hcode0[j] = info[k] ;
            hcode1 = new byte[NBYTESG];
		    for (j = 0; j < NBYTESG; j++, k++)
               hcode1[j] = info[k] ;
        }
           
        return (k - start); // Number of bytes consumed by this gate
    }