code: private byte[] getKeyFromKDF(byte[] ki, String label, byte[] context, int l)
  			throws IOException {
  		int bytesCount = l >>> 3;
  		ByteArrayOutputStream baos = new ByteArrayOutputStream();
  		byte[] counter = new byte[] { (byte) 0x00, (byte) 0x00, (byte) 0x00,
  				(byte) 0x01 };
  		baos.write(counter);
  		baos.write(label.getBytes());
  		baos.write((byte) 0x00);
  		baos.write(context);
  		byte[] len = new byte[4];
  		for (int i = 3; i >= 0; i--) {
  			len[i] = (byte) (l & 0xFF);
  			l >>>= 8;
  		}
  		baos.write(len);
  		byte[] array = baos.toByteArray();
  		baos.close();
  		byte[] hmac = createSHAHMAC(array, 0, array.length, ki);
  		// Create a new result array of aL bits
  		byte[] result = new byte[bytesCount];
  		// Copy aL leftmost bits of the HMAC
  		System.arraycopy(hmac, 0, result, 0, bytesCount);
  		return result;
  	}
docs: Generate key/salt pairs for SRTP using the S0 and KDF_Context provided
  (Section 4.5.3)
  
  @param ki
  S0
  @param label
  Text string used in key/salt generation
  @param context
  KDF_Context
  @param l
  Length of the key/salt in bits
  @return Key/salt with length of aL bits. If aL is smaller than 256, the
  32 bits result is truncated and aL leftmost bits are returned as
  specified in section 4.5.3.
  @throws IOException