1 /* 2 * Copyright 2018 The Netty Project 3 * 4 * The Netty Project licenses this file to you under the Apache License, 5 * version 2.0 (the "License"); you may not use this file except in compliance 6 * with the License. You may obtain a copy of the License at: 7 * 8 * https://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, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations 14 * under the License. 15 */ 16 package io.netty.handler.ssl; 17 18 import io.netty.util.ReferenceCounted; 19 20 import java.security.cert.X509Certificate; 21 22 /** 23 * Holds references to the native key-material that is used by OpenSSL. 24 */ 25 interface OpenSslKeyMaterial extends ReferenceCounted { 26 27 /** 28 * Returns the configured {@link X509Certificate}s. 29 */ 30 X509Certificate[] certificateChain(); 31 32 /** 33 * Returns the pointer to the {@code STACK_OF(X509)} which holds the certificate chain. 34 */ 35 long certificateChainAddress(); 36 37 /** 38 * Returns the pointer to the {@code EVP_PKEY}. 39 */ 40 long privateKeyAddress(); 41 42 @Override 43 OpenSslKeyMaterial retain(); 44 45 @Override 46 OpenSslKeyMaterial retain(int increment); 47 48 @Override 49 OpenSslKeyMaterial touch(); 50 51 @Override 52 OpenSslKeyMaterial touch(Object hint); 53 54 @Override 55 boolean release(); 56 57 @Override 58 boolean release(int decrement); 59 }