Java X500Principal extractName(final X500Principal dname)

Here you can find the source of extractName(final X500Principal dname)

Description

extract Name

License

Open Source License

Declaration

public static String extractName(final X500Principal dname) 

Method Source Code

//package com.java2s;
/**/*from  w  w w .j  a v a2  s .c o  m*/
 * Copyright 2013 Ministerio de Industria, Energ?a y Turismo
 *
 * Este fichero es parte de "Componentes de Firma XAdES 1.1.7".
 *
 * Licencia con arreglo a la EUPL, Versi?n 1.1 o ?en cuanto sean aprobadas por la Comisi?n Europea? versiones posteriores de la EUPL (la Licencia);
 * Solo podr? usarse esta obra si se respeta la Licencia.
 *
 * Puede obtenerse una copia de la Licencia en:
 *
 * http://joinup.ec.europa.eu/software/page/eupl/licence-eupl
 *
 * Salvo cuando lo exija la legislaci?n aplicable o se acuerde por escrito, el programa distribuido con arreglo a la Licencia se distribuye ?TAL CUAL?,
 * SIN GARANT??AS NI CONDICIONES DE NING?N TIPO, ni expresas ni impl?citas.
 * V?ase la Licencia en el idioma concreto que rige los permisos y limitaciones que establece la Licencia.
 */

import java.util.ArrayList;

import java.util.List;
import javax.security.auth.x500.X500Principal;

public class Main {

    public static String extractName(final X500Principal dname) {
        return extractName(dname.getName());
    }

    public static String extractName(final String dname) {
        String res = null;
        String[] col = splitAttributes(dname);
        res = searchAttribute(col, "CN");
        if (res == null) {
            res = searchAttribute(col, "OU");
        }
        if (res == null) {
            res = searchAttribute(col, "O");
        }
        return res;
    }

    /**
     * <p>Separa las distintas partes, separadas por comas, de las que se compone el String proporcionado.</p>
     * @param dname String a separar en partes
     * @return Array de String con las partes obtenidas
     */
    private static String[] splitAttributes(final String dname) {
        List<String> results = new ArrayList<String>();
        String[] col = dname.split(",");
        for (int i = 0; i < col.length; i++) {
            String piece = col[i];
            while (i < col.length - 1) {
                if (!col[i + 1].contains("=")) {
                    piece += "," + col[++i];
                } else {
                    break;
                }
            }
            results.add(piece);
        }
        return results.toArray(new String[0]);
    }

    private static String searchAttribute(final String[] col, final String att) {
        String res = null;
        String attmod = att.toLowerCase() + "=";
        for (int i = 0; i < col.length; i++) {
            if (col[i].trim().toLowerCase().startsWith(attmod)) {
                res = col[i].trim().substring(attmod.length());
                break;
            }
        }
        return res;
    }
}

Related

  1. convX509Name(X500Principal principal)
  2. createSubject(GSSName principals, GSSCredential credentials)
  3. extractRDN(String rdn, X500Principal dn)
  4. getDNField(String fieldID, X500Principal principal)
  5. isTGSPrincipal(KerberosPrincipal principal)
  6. isTicketGrantingServerPrincipal(KerberosPrincipal principal)