xref: /aosp_15_r20/external/grpc-grpc-java/xds/src/main/java/io/grpc/xds/TlsContextManager.java (revision e07d83d3ffcef9ecfc9f7f475418ec639ff0e5fe)
1 /*
2  * Copyright 2020 The gRPC Authors
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package io.grpc.xds;
18 
19 import io.grpc.Internal;
20 import io.grpc.xds.EnvoyServerProtoData.DownstreamTlsContext;
21 import io.grpc.xds.EnvoyServerProtoData.UpstreamTlsContext;
22 import io.grpc.xds.internal.security.SslContextProvider;
23 
24 @Internal
25 public interface TlsContextManager {
26 
27   /** Creates a SslContextProvider. Used for retrieving a server-side SslContext. */
findOrCreateServerSslContextProvider( DownstreamTlsContext downstreamTlsContext)28   SslContextProvider findOrCreateServerSslContextProvider(
29       DownstreamTlsContext downstreamTlsContext);
30 
31   /** Creates a SslContextProvider. Used for retrieving a client-side SslContext. */
findOrCreateClientSslContextProvider( UpstreamTlsContext upstreamTlsContext)32   SslContextProvider findOrCreateClientSslContextProvider(
33       UpstreamTlsContext upstreamTlsContext);
34 
35   /**
36    * Releases an instance of the given client-side {@link SslContextProvider}.
37    *
38    * <p>The instance must have been obtained from {@link #findOrCreateClientSslContextProvider}.
39    * Otherwise will throw IllegalArgumentException.
40    *
41    * <p>Caller must not release a reference more than once. It's advised that you clear the
42    * reference to the instance with the null returned by this method.
43    */
releaseClientSslContextProvider(SslContextProvider sslContextProvider)44   SslContextProvider releaseClientSslContextProvider(SslContextProvider sslContextProvider);
45 
46   /**
47    * Releases an instance of the given server-side {@link SslContextProvider}.
48    *
49    * <p>The instance must have been obtained from {@link #findOrCreateServerSslContextProvider}.
50    * Otherwise will throw IllegalArgumentException.
51    *
52    * <p>Caller must not release a reference more than once. It's advised that you clear the
53    * reference to the instance with the null returned by this method.
54    */
releaseServerSslContextProvider(SslContextProvider sslContextProvider)55   SslContextProvider releaseServerSslContextProvider(SslContextProvider sslContextProvider);
56 }
57