public RecoverResult handleRecoverRequest(RecoverRequest request) {
try {
prepare(request, request.getRecoverKeyBinding());
// TODO Validate ..
RecoverKeyBinding recoverKeyBinding = request
.getRecoverKeyBinding();
String[] aliases = null;
X509Certificate cert = recoverKeyBinding.getCertValue();
if (cert != null) {
String issuerDN = cert.getIssuerDN().getName();
BigInteger serialNumber = cert.getSerialNumber();
String alias = getAliasForX509Cert(issuerDN, serialNumber);
if (alias != null) {
aliases = new String[] { alias };
}
} else {
String subjectDN = getSubjectDN(recoverKeyBinding);
if (subjectDN != null) {
aliases = getAliasesForDN(subjectDN);
}
}
if (aliases == null) {
String keyName = recoverKeyBinding.getKeyName();
if (keyName != null) {
aliases = new String[] { keyName };
}
}