| package org.bouncycastle.cert.path; |
| |
| import java.util.Collections; |
| import java.util.Set; |
| |
| import org.bouncycastle.util.Arrays; |
| |
| public class CertPathValidationResult |
| { |
| private final boolean isValid; |
| private final CertPathValidationException cause; |
| private final Set unhandledCriticalExtensionOIDs; |
| private final int certIndex; |
| private final int ruleIndex; |
| |
| private CertPathValidationException[] causes; |
| private int[] certIndexes; |
| private int[] ruleIndexes; |
| |
| public CertPathValidationResult(CertPathValidationContext context) |
| { |
| this.unhandledCriticalExtensionOIDs = Collections.unmodifiableSet(context.getUnhandledCriticalExtensionOIDs()); |
| this.isValid = this.unhandledCriticalExtensionOIDs.isEmpty(); |
| this.certIndex = -1; |
| this.ruleIndex = -1; |
| cause = null; |
| } |
| |
| public CertPathValidationResult(CertPathValidationContext context, int certIndex, int ruleIndex, CertPathValidationException cause) |
| { |
| this.unhandledCriticalExtensionOIDs = Collections.unmodifiableSet(context.getUnhandledCriticalExtensionOIDs()); |
| this.isValid = false; |
| this.certIndex = certIndex; |
| this.ruleIndex = ruleIndex; |
| this.cause = cause; |
| } |
| |
| public CertPathValidationResult(CertPathValidationContext context, int[] certIndexes, int[] ruleIndexes, CertPathValidationException[] causes) |
| { |
| this.unhandledCriticalExtensionOIDs = Collections.unmodifiableSet(context.getUnhandledCriticalExtensionOIDs()); |
| this.isValid = false; |
| this.cause = causes[0]; |
| this.certIndex = certIndexes[0]; |
| this.ruleIndex = ruleIndexes[0]; |
| this.causes = causes; |
| this.certIndexes = certIndexes; |
| this.ruleIndexes = ruleIndexes; |
| } |
| |
| public boolean isValid() |
| { |
| return isValid; |
| } |
| |
| public CertPathValidationException getCause() |
| { |
| if (cause != null) |
| { |
| return cause; |
| } |
| |
| if (!unhandledCriticalExtensionOIDs.isEmpty()) |
| { |
| return new CertPathValidationException("Unhandled Critical Extensions"); |
| } |
| |
| return null; |
| } |
| |
| public int getFailingCertIndex() |
| { |
| return certIndex; |
| } |
| |
| public int getFailingRuleIndex() |
| { |
| return ruleIndex; |
| } |
| |
| public Set getUnhandledCriticalExtensionOIDs() |
| { |
| return unhandledCriticalExtensionOIDs; |
| } |
| |
| public boolean isDetailed() |
| { |
| return this.certIndexes != null; |
| } |
| |
| public CertPathValidationException[] getCauses() |
| { |
| if (causes != null) |
| { |
| CertPathValidationException[] rv = new CertPathValidationException[causes.length]; |
| |
| System.arraycopy(causes, 0, rv, 0, causes.length); |
| |
| return rv; |
| } |
| |
| if (!unhandledCriticalExtensionOIDs.isEmpty()) |
| { |
| return new CertPathValidationException[] |
| { new CertPathValidationException("Unhandled Critical Extensions") }; |
| } |
| |
| return null; |
| } |
| |
| public int[] getFailingCertIndexes() |
| { |
| return Arrays.clone(certIndexes); |
| } |
| |
| public int[] getFailingRuleIndexes() |
| { |
| return Arrays.clone(ruleIndexes); |
| } |
| } |