package org.apereo.cas.adaptors.x509.authentication.principal; import org.apache.commons.lang3.builder.ToStringBuilder; import java.security.cert.X509Certificate; /** * Returns a new principal based on the Sereial Number of the certificate. * * @author Scott Battaglia * @since 3.0.0 */ public class X509SerialNumberPrincipalResolver extends AbstractX509PrincipalResolver { /** * Radix to use in {@code toString} method. */ private int radix = 10; private boolean zeroPadding; public X509SerialNumberPrincipalResolver() { } public X509SerialNumberPrincipalResolver(final int radix, final boolean zeroPadding) { this.radix = radix; this.zeroPadding = zeroPadding; } @Override protected String resolvePrincipalInternal(final X509Certificate certificate) { final String principal = certificate.getSerialNumber().toString(radix); if (zeroPadding && principal.length() % 2 == 1) { return "0" + principal; } return principal; } @Override public String toString() { return new ToStringBuilder(this) .appendSuper(super.toString()) .toString(); } }