/*
* oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text.
*
* Copyright (c) 2014, Gluu
*/
package org.xdi.oxauth.model.crypto.encryption;
/**
* @author Javier Rojas Blum Date: 12.03.2012
*/
public enum BlockEncryptionAlgorithm {
A128CBC_PLUS_HS256("A128CBC+HS256", "CBC", "AES/CBC/PKCS5Padding", "SHA-256", "HMACSHA256", 256, 128, 128),
A256CBC_PLUS_HS512("A256CBC+HS512", "CBC", "AES/CBC/PKCS5Padding", "SHA-512", "HMACSHA512", 512, 128, 256),
A128GCM("A128GCM", "GCM", "AES/GCM/NoPadding", 128, 96),
A256GCM("A256GCM", "GCM", "AES/GCM/NoPadding", 256, 96);
private final String name;
private final String family;
private final String algorithm;
private final String messageDiggestAlgorithm;
private final String integrityValueAlgorithm;
private final int cmkLength;
private final int initVectorLength;
private final Integer cekLength;
private BlockEncryptionAlgorithm(String name, String family, String algorithm, int cmkLength, int initVectorLength) {
this.name = name;
this.family = family;
this.algorithm = algorithm;
this.messageDiggestAlgorithm = null;
this.integrityValueAlgorithm = null;
this.cmkLength = cmkLength;
this.initVectorLength=initVectorLength;
this.cekLength = null;
}
private BlockEncryptionAlgorithm(String name, String family, String algorithm, String messageDiggestAlgorithm,
String integrityValueAlgorithm, int cmkLength, int initVectorLength, int cekLength) {
this.name = name;
this.family = family;
this.algorithm = algorithm;
this.messageDiggestAlgorithm = messageDiggestAlgorithm;
this.integrityValueAlgorithm = integrityValueAlgorithm;
this.cmkLength = cmkLength;
this.initVectorLength=initVectorLength;
this.cekLength = cekLength;
}
public String getName() {
return name;
}
public String getFamily() {
return family;
}
public String getMessageDiggestAlgorithm() {
return messageDiggestAlgorithm;
}
public String getIntegrityValueAlgorithm() {
return integrityValueAlgorithm;
}
public String getAlgorithm() {
return algorithm;
}
public int getCmkLength() {
return cmkLength;
}
public int getInitVectorLength() {
return initVectorLength;
}
public Integer getCekLength() {
return cekLength;
}
public static BlockEncryptionAlgorithm fromName(String name) {
if (name != null) {
for (BlockEncryptionAlgorithm a : BlockEncryptionAlgorithm.values()) {
if (name.equals(a.name)) {
return a;
}
}
}
return null;
}
@Override
public String toString() {
return name;
}
}