108ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project/* 208ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * Copyright (C) 2009 The Android Open Source Project 308ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * 408ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 508ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * you may not use this file except in compliance with the License. 608ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * You may obtain a copy of the License at 708ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * 808ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 908ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * 1008ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1108ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1208ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1308ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * See the License for the specific language governing permissions and 1408ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * limitations under the License. 1508ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project */ 1608ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project 17860d2707ce126ef8f66e3eac7ceeab6d24218cd8Kenny Rootpackage org.conscrypt; 1808ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project 1908ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Projectimport javax.net.ssl.SSLSession; 2008ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project 2108ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project/** 2208ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * A persistent {@link javax.net.ssl.SSLSession} cache used by 2308ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * {@link javax.net.ssl.SSLSessionContext} to share client-side SSL sessions 2408ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * across processes. For example, this cache enables applications to 2508ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * persist and reuse sessions across restarts. 2608ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * 2708ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * <p>The {@code SSLSessionContext} implementation converts 2808ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * {@code SSLSession}s into raw bytes and vice versa. The exact makeup of the 2908ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * session data is dependent upon the caller's implementation and is opaque to 3008ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * the {@code SSLClientSessionCache} implementation. 3108ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project */ 3208ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Projectpublic interface SSLClientSessionCache { 3308ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project 3408ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project /** 3508ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * Gets data from a pre-existing session for a given server host and port. 3608ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * 3708ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * @param host from {@link javax.net.ssl.SSLSession#getPeerHost()} 3808ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * @param port from {@link javax.net.ssl.SSLSession#getPeerPort()} 3908ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * @return the session data or null if none is cached 4008ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * @throws NullPointerException if host is null 4108ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project */ 4208ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project public byte[] getSessionData(String host, int port); 4308ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project 4408ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project /** 4508ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * Stores session data for the given session. 4608ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * 4708ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * @param session to cache data for 4808ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * @param sessionData to cache 4908ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * @throws NullPointerException if session, result of 5008ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project * {@code session.getPeerHost()} or data is null 5108ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project */ 5208ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project public void putSessionData(SSLSession session, byte[] sessionData); 5308ecc8c0f00f1a7f2258c569187e36606ed73045The Android Open Source Project}