// 
// Decompiled by Procyon v0.6.0
// 

package org.bouncycastle.cert.path;

import java.util.Collection;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import java.util.HashSet;
import java.util.Set;
import org.bouncycastle.util.Memoable;

public class CertPathValidationContext implements Memoable
{
    private Set criticalExtensions;
    private Set handledExtensions;
    private boolean endEntity;
    private int index;
    
    public CertPathValidationContext(final Set criticalExtensions) {
        this.handledExtensions = new HashSet();
        this.criticalExtensions = criticalExtensions;
    }
    
    public void addHandledExtension(final ASN1ObjectIdentifier asn1ObjectIdentifier) {
        this.handledExtensions.add(asn1ObjectIdentifier);
    }
    
    public void setIsEndEntity(final boolean endEntity) {
        this.endEntity = endEntity;
    }
    
    public Set getUnhandledCriticalExtensionOIDs() {
        final HashSet set = new HashSet(this.criticalExtensions);
        set.removeAll(this.handledExtensions);
        return set;
    }
    
    public boolean isEndEntity() {
        return this.endEntity;
    }
    
    @Override
    public Memoable copy() {
        final CertPathValidationContext certPathValidationContext = new CertPathValidationContext(new HashSet(this.criticalExtensions));
        certPathValidationContext.handledExtensions = new HashSet(this.handledExtensions);
        certPathValidationContext.endEntity = this.endEntity;
        certPathValidationContext.index = this.index;
        return certPathValidationContext;
    }
    
    @Override
    public void reset(final Memoable memoable) {
        final CertPathValidationContext certPathValidationContext = (CertPathValidationContext)memoable;
        this.criticalExtensions = new HashSet(certPathValidationContext.criticalExtensions);
        this.handledExtensions = new HashSet(certPathValidationContext.handledExtensions);
        this.endEntity = certPathValidationContext.endEntity;
        this.index = certPathValidationContext.index;
    }
}
