private static byte[] _cryptIES(byte[] input, Key recipient,
boolean forEncryption) throws InvalidKeyException,
IllegalBlockSizeException, BadPaddingException {
IESCipher cipher = new IESCipher(new IESEngine(
new ECDHBasicAgreement(), new KDF2BytesGenerator(
new SHA1Digest()), new HMac(new SHA256Digest()),
new PaddedBufferedBlockCipher(new CBCBlockCipher(
new AESEngine()))));
cipher.engineInit(forEncryption ? Cipher.ENCRYPT_MODE