/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2013, MPL CodeInside http://codeinside.ru */ package ru.codeinside.sign; import java.security.cert.X509Certificate; final class Cert { final String type; final String alias; final X509Certificate certificate; final String name; public Cert(String type, String alias, X509Certificate certificate) { this.type = type; this.alias = alias; this.certificate = certificate; name = rebuild(certificate.getSubjectDN().getName()); } @Override public String toString() { return name; } private String rebuild(final String fullName) { final String cn = extract(fullName, "CN="); final String o = extract(fullName, "O="); final String sn = extract(fullName, "SURNAME="); final String gn = extract(fullName, "GIVENNAME="); if (cn == null && o == null && sn == null && gn == null) { return fullName; } StringBuilder s = new StringBuilder(); if (sn != null && gn != null) { s.append(sn).append(' ').append(gn); } else if (cn != null) { s.append(cn); } if (o != null) { if (cn != null || (sn != null && gn != null)) { s.append(' '); } s.append('(').append(o).append(')'); } return s.toString(); } String extract(final String full, final String part) { final int index = full.indexOf(part); if (index < 0) { return null; } final int first = index + part.length(); final int last = full.indexOf(", ", first); if (last < 0) { return full.substring(first); } return full.substring(first, last); } }