package diskCacheV111.vehicles;
import com.google.common.collect.ImmutableMap;
import eu.emi.security.authn.x509.X509Credential;
import java.net.InetSocketAddress;
import java.security.PrivateKey;
import java.security.cert.X509Certificate;
import org.dcache.auth.OpenIdCredential;
/**
* Provides information for HTTP transfer of a file using SSL/TLS encryption.
*/
public class RemoteHttpsDataTransferProtocolInfo extends RemoteHttpDataTransferProtocolInfo
{
private static final long serialVersionUID = 1L;
private final PrivateKey key;
private final X509Certificate[] certChain;
public RemoteHttpsDataTransferProtocolInfo(String protocol, int major,
int minor, InetSocketAddress addr, String url,
boolean isVerificationRequired, ImmutableMap<String,String> headers,
X509Credential credential)
{
this(protocol, major, minor, addr, url, isVerificationRequired,
headers, credential == null ? null : credential.getKey(),
credential == null ? null : credential.getCertificateChain());
}
public RemoteHttpsDataTransferProtocolInfo(String protocol, int major,
int minor, InetSocketAddress addr, String url,
boolean isVerificationRequired, ImmutableMap<String,String> headers,
PrivateKey privateKey, X509Certificate[] certificateChain)
{
super(protocol, major, minor, addr, url, isVerificationRequired, headers);
key = privateKey;
certChain = certificateChain;
}
public RemoteHttpsDataTransferProtocolInfo(String protocol, int major,
int minor, InetSocketAddress addr, String url,
boolean isVerificationRequired, ImmutableMap<String,String> headers,
OpenIdCredential token)
{
super(protocol, major, minor, addr, url, isVerificationRequired, headers, token);
key = null;
certChain = null;
}
public boolean hasCredential()
{
return key != null && certChain != null;
}
public PrivateKey getPrivateKey()
{
return key;
}
public X509Certificate[] getCertificateChain()
{
return certChain;
}
}