package org.apache.kerberos.kerb.preauth.pkinit;
import org.apache.kerberos.kerb.spec.common.PrincipalName;
public class PkinitIdenity {
public static void processIdentityOption(IdentityOpts identityOpts, String value) {
IdentityType idType = IdentityType.NONE;
String residual = null;
if (value.contains(":")) {
if (value.startsWith("FILE:")) {
idType = IdentityType.FILE;
} else if (value.startsWith("PKCS11:")) {
idType = IdentityType.PKCS11;
} else if (value.startsWith("PKCS12:")) {
idType = IdentityType.PKCS12;
} else if (value.startsWith("DIR:")) {
idType = IdentityType.DIR;
} else if (value.startsWith("ENV:")) {
idType = IdentityType.ENVVAR;
} else {
throw new RuntimeException("Invalid Identity option format: " + value);
}
} else {
residual = value;
idType = IdentityType.FILE;
}
identityOpts.idType = idType;
switch (idType) {
case ENVVAR:
processIdentityOption(identityOpts, System.getenv(residual));
break;
case FILE:
parseFileOption(identityOpts, residual);
break;
case PKCS11:
parsePkcs11Option(identityOpts, residual);
break;
case PKCS12:
parsePkcs12Option(identityOpts, residual);
break;
case DIR:
identityOpts.certFile = residual;
break;
}
}
public static void parseFileOption(IdentityOpts identityOpts, String residual) {
String[] parts = residual.split(",");
String certName = null;
String keyName = null;
certName = parts[0];
if (parts.length > 1) {
keyName = parts[1];
}
identityOpts.certFile = certName;
identityOpts.keyFile = keyName;
}
public static void parsePkcs12Option(IdentityOpts identityOpts, String residual) {
identityOpts.certFile = residual;
identityOpts.keyFile = residual;
}
public static void parsePkcs11Option(IdentityOpts identityOpts, String residual) {
// TODO
}
public static void loadCerts(IdentityOpts identityOpts, PrincipalName principal) {
switch (identityOpts.idType) {
case FILE:
loadCertsFromFile(identityOpts, principal);
break;
case DIR:
loadCertsFromDir(identityOpts, principal);
break;
case PKCS11:
loadCertsAsPkcs11(identityOpts, principal);
break;
case PKCS12:
loadCertsAsPkcs12(identityOpts, principal);
break;
}
}
private static void loadCertsAsPkcs12(IdentityOpts identityOpts, PrincipalName principal) {
}
private static void loadCertsAsPkcs11(IdentityOpts identityOpts, PrincipalName principal) {
}
private static void loadCertsFromDir(IdentityOpts identityOpts, PrincipalName principal) {
}
private static void loadCertsFromFile(IdentityOpts identityOpts, PrincipalName principal) {
}
public static void initialize(IdentityOpts identityOpts, PrincipalName principal) {
}
}