From f6e393fd4d0e9e26ee34b5877898f1b6cb8ef8a0 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Wed, 4 May 2016 14:23:47 +0200 Subject: [PATCH] licensing: connection via authenticated proxy supported (IDEA-149370) --- .../intellij/util/net/HttpConfigurable.java | 28 ++++ .../com/intellij/util/proxy/CommonProxy.java | 4 + .../util/proxy/SharedProxyConfig.java | 155 ++++++++++++++++++ 3 files changed, 187 insertions(+) create mode 100644 platform/platform-api/src/com/intellij/util/proxy/SharedProxyConfig.java diff --git a/platform/platform-api/src/com/intellij/util/net/HttpConfigurable.java b/platform/platform-api/src/com/intellij/util/net/HttpConfigurable.java index e19bc46abb53..c5e28131e8b4 100644 --- a/platform/platform-api/src/com/intellij/util/net/HttpConfigurable.java +++ b/platform/platform-api/src/com/intellij/util/net/HttpConfigurable.java @@ -40,6 +40,8 @@ import com.intellij.util.WaitForProgressToShow; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.proxy.CommonProxy; import com.intellij.util.proxy.JavaProxyProperty; +import com.intellij.util.proxy.SharedProxyConfig; +import com.intellij.util.xmlb.SkipDefaultsSerializationFilter; import com.intellij.util.xmlb.XmlSerializer; import com.intellij.util.xmlb.XmlSerializerUtil; import com.intellij.util.xmlb.annotations.Transient; @@ -129,6 +131,32 @@ public class HttpConfigurable implements PersistentStateComponent> 24)& 0xFF); + data[1] = (byte)((length >> 16)& 0xFF); + data[2] = (byte)((length >> 8)& 0xFF); + data[3] = (byte)(length & 0xFF); + + System.arraycopy(iv, 0, data, 4, iv.length); + System.arraycopy(body, 0, data, 4 + iv.length, body.length); + return data; + } + + private static byte[] decrypt(byte[] data, Key key) throws Exception { + int bodyLength = data[0] & 0xFF; + bodyLength = (bodyLength << 8) + data[1] & 0xFF; + bodyLength = (bodyLength << 8) + data[2] & 0xFF; + bodyLength = (bodyLength << 8) + data[3] & 0xFF; + + final int ivlength = data.length - 4 - bodyLength; + + final Cipher ciph = Cipher.getInstance("AES/CBC/PKCS5Padding"); + ciph.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(data, 4, ivlength)); + return ciph.doFinal(data, 4 + ivlength, bodyLength); + } + +}