public CipherInfoGenerator() throws ReflectiveOperationException {
SSLContextImpl sc = new SSLContextImpl.TLS12Context();
- Method m = SSLContextImpl.class
- .getDeclaredMethod("getSupportedCipherSuiteList");
+ Method m = SSLContextImpl.class.getDeclaredMethod("getSupportedCipherSuiteList");
m.setAccessible(true);
Object o = m.invoke(sc);
Class<?> cipherSuiteList = o.getClass();
macSize = mac.getDeclaredField("size");
macSize.setAccessible(true);
}
- public CipherInfo generateInfo(String suiteName)
- throws IllegalArgumentException, IllegalAccessException {
+
+ public CipherInfo generateInfo(String suiteName) throws IllegalArgumentException, IllegalAccessException {
Object suite = names.get(suiteName);
String keyExchange = exchange.get(suite).toString();
Object bulkCipher = cipher.get(suite);
padding = transformationParts[2];
}
- return new CipherInfo(suiteName, keyExchange,
- transformationParts[0], keysize * 8, chaining, padding,
- macNam, macSiz * 8);
+ return new CipherInfo(suiteName, keyExchange, transformationParts[0], keysize * 8, chaining, padding,
+ macNam, macSiz * 8);
}
}
+
String keyExchange;
String cipher;
int keySize;
int macSize;
String suiteName;
- private CipherInfo(String suiteName, String keyExchange, String cipher,
- int keySize, String cipherChaining, String cipherPadding,
- String macName, int macSize) {
+ private CipherInfo(String suiteName, String keyExchange, String cipher, int keySize, String cipherChaining,
+ String cipherPadding, String macName, int macSize) {
this.suiteName = suiteName;
this.keyExchange = keyExchange;
this.cipher = cipher;
}
return null;
}
+
public String getSuiteName() {
return suiteName;
}
+
/**
* 5: ECDHE, AES||CAMELLIA, keysize >=256 <br>
* 4: DHE, AES||CAMELLIA, keysize >= 256<br>
* @return the strength
*/
public int getStrength() {
- if (cipher.equals("NULL") || cipher.equals("RC4")
- || cipher.contains("DES")) {
+ if (cipher.equals("NULL") || cipher.equals("RC4") || cipher.contains("DES")) {
return 0;
}
boolean ecdhe = keyExchange.startsWith("ECDHE");
}
return 0;
}
- private static final String[] CIPHER_RANKING = new String[]{"CAMELLIA",
- "AES", "RC4", "3DES", "DES", "DES40"};
+
+ private static final String[] CIPHER_RANKING = new String[] { "CAMELLIA", "AES", "RC4", "3DES", "DES", "DES40" };
@Override
public String toString() {
- return "CipherInfo [keyExchange=" + keyExchange + ", cipher=" + cipher
- + ", keySize=" + keySize + ", cipherChaining=" + cipherChaining
- + ", cipherPadding=" + cipherPadding + ", macName=" + macName
- + ", macSize=" + macSize + "]";
+ return "CipherInfo [keyExchange=" + keyExchange + ", cipher=" + cipher + ", keySize=" + keySize
+ + ", cipherChaining=" + cipherChaining + ", cipherPadding=" + cipherPadding + ", macName=" + macName
+ + ", macSize=" + macSize + "]";
}
+
/**
* ECDHE<br>
* GCM<br>
return suiteName.compareTo(o.suiteName);
}
+
static String[] cipherRanking = null;
+
public static String[] getCompleteRanking() {
if (cipherRanking == null) {
- String[] ciphers = filterCiphers((Iterable<String>) cig.names
- .keySet());
+ String[] ciphers = filterCiphers((Iterable<String>) cig.names.keySet());
cipherRanking = ciphers;
}
return cipherRanking;
}
+
private static String[] filterCiphers(Iterable<String> toFilter) {
TreeSet<CipherInfo> chosenCiphers = new TreeSet<CipherInfo>();
for (String o : toFilter) {
}
return ciphers;
}
+
public static String[] filter(String[] supportedCipherSuites) {
return filterCiphers(Arrays.asList(supportedCipherSuites));
}