/* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package java.net; import java.security.Principal; import java.security.cert.Certificate; import java.util.List; import javax.net.ssl.SSLPeerUnverifiedException; /** * A secure cache response represents data which is originally retrieved over a * secure connection. Such a connection can be secured by using a cryptographic * protocol like TLS or SSL. * * @see ResponseCache */ public abstract class SecureCacheResponse extends CacheResponse { /** * Creates a new instance of this class. */ public SecureCacheResponse() { } /** * Gets the cipher suite string on the connection which is originally used * to retrieve the network resource. * * @return the cipher suite string. */ public abstract String getCipherSuite(); /** * Gets the local certificate chain. When the original connection retrieved * the resource data, this certificate chain was sent to the server during * handshaking process. This method only takes effect when certificate-based * cipher suite is enabled. * * @return the certificate chain that was sent to the server. If no * certificate chain was sent, the method returns {@code null}. */ public abstract List<Certificate> getLocalCertificateChain(); /** * Gets the cached server's certificate chain. As part of defining the * session, the certificate chain was established when the original * connection retrieved network resource. This method can only be invoked * when certificated-based cipher suite is enabled. Otherwise, it throws an * {@code SSLPeerUnverifiedException}. * * @return the server's certificate chain. * @throws SSLPeerUnverifiedException * if the peer is unverified. */ public abstract List<Certificate> getServerCertificateChain() throws SSLPeerUnverifiedException; /** * Gets the server's principle. When the original connection retrieved * network resource, the principle was established when defining the * session. * * @return a principal object representing the server's principal. * @throws SSLPeerUnverifiedException * if the peer is unverified. */ public abstract Principal getPeerPrincipal() throws SSLPeerUnverifiedException; /** * Gets the local principle that the original connection sent to the server. * When the original connection fetched the network resource, the principle * was sent to the server during handshaking process. * * @return the local principal object being sent to the server. Returns an * {@code X500Principal} object for X509-based cipher suites. If no * principal was sent, it returns {@code null}. */ public abstract Principal getLocalPrincipal(); }