/*
* Copyright (c) 2011 ICM Uniwersytet Warszawski All rights reserved.
* See LICENCE file for licensing information.
*/
package eu.emi.security.authn.x509.helpers.ns;
import java.security.cert.X509Certificate;
import java.util.Collection;
import java.util.List;
import javax.security.auth.x500.X500Principal;
/**
* Store of {@link NamespacePolicy} objects.
* The objects are retrieved by the issuer name.
* The implementations must be thread safe.
*
* @author K. Benedyczak
*/
public interface NamespacesStore
{
public void setPolicies(Collection<String> locations);
/**
* Gets namespace policies applicable for the CA. The CA must be present in the cert chain,
* at the position given. The subsequent chain elements might be used if there is no explicit policy
* defined for the CA itself: then it is checked if any of the parent CAs defined policy for this CA.
* @param chain chain
* @param position position
* @return policies
*/
public List<NamespacePolicy> getPolicies(X509Certificate[] chain, int position);
/**
* As {@link #getPolicies(X509Certificate[], int)} but with principals of certificates only
* @param chain chain
* @param position position
* @return policies
*/
public List<NamespacePolicy> getPolicies(X500Principal[] chain, int position);
}