| 
									
										
										
										
											2000-12-08 22:29:13 +08:00
										 |  |  | =pod | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NAME | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-17 08:13:40 +08:00
										 |  |  | SSL_CTX_add_extra_chain_cert, SSL_CTX_clear_extra_chain_certs - add or clear | 
					
						
							|  |  |  | extra chain certificates | 
					
						
							| 
									
										
										
										
											2000-12-08 22:29:13 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SYNOPSIS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  #include <openssl/ssl.h> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-17 08:13:40 +08:00
										 |  |  |  long SSL_CTX_add_extra_chain_cert(SSL_CTX *ctx, X509 *x509); | 
					
						
							|  |  |  |  long SSL_CTX_clear_extra_chain_certs(SSL_CTX *ctx); | 
					
						
							| 
									
										
										
										
											2000-12-08 22:29:13 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 DESCRIPTION | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-17 08:13:40 +08:00
										 |  |  | SSL_CTX_add_extra_chain_cert() adds the certificate B<x509> to the extra chain | 
					
						
							|  |  |  | certificates associated with B<ctx>. Several certificates can be added one | 
					
						
							|  |  |  | after another. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SSL_CTX_clear_extra_chain_certs() clears all extra chain certificates | 
					
						
							|  |  |  | associated with B<ctx>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | These functions are implemented as macros. | 
					
						
							| 
									
										
										
										
											2000-12-08 22:29:13 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 NOTES | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-17 08:13:40 +08:00
										 |  |  | When sending a certificate chain, extra chain certificates are sent in order | 
					
						
							|  |  |  | following the end entity certificate. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If no chain is specified, the library will try to complete the chain from the | 
					
						
							|  |  |  | available CA certificates in the trusted CA storage, see | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | L<SSL_CTX_load_verify_locations(3)>. | 
					
						
							| 
									
										
										
										
											2000-12-08 22:29:13 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-17 08:13:40 +08:00
										 |  |  | The B<x509> certificate provided to SSL_CTX_add_extra_chain_cert() will be | 
					
						
							|  |  |  | freed by the library when the B<SSL_CTX> is destroyed. An application | 
					
						
							|  |  |  | B<should not> free the B<x509> object. | 
					
						
							| 
									
										
										
										
											2014-06-27 23:33:06 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-17 01:11:29 +08:00
										 |  |  | =head1 RESTRICTIONS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Only one set of extra chain certificates can be specified per SSL_CTX | 
					
						
							|  |  |  | structure. Different chains for different certificates (for example if both | 
					
						
							|  |  |  | RSA and DSA certificates are specified by the same server) or different SSL | 
					
						
							|  |  |  | structures with the same parent SSL_CTX cannot be specified using this | 
					
						
							|  |  |  | function. For more flexibility functions such as SSL_add1_chain_cert() should | 
					
						
							|  |  |  | be used instead. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-12-08 22:29:13 +08:00
										 |  |  | =head1 RETURN VALUES | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-17 08:13:40 +08:00
										 |  |  | SSL_CTX_add_extra_chain_cert() and SSL_CTX_clear_extra_chain_certs() return | 
					
						
							|  |  |  | 1 on success and 0 for failure. Check out the error stack to find out the | 
					
						
							|  |  |  | reason for failure. | 
					
						
							| 
									
										
										
										
											2000-12-08 22:29:13 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 SEE ALSO | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-11 16:33:09 +08:00
										 |  |  | L<ssl(7)>, | 
					
						
							| 
									
										
										
										
											2015-08-18 03:21:33 +08:00
										 |  |  | L<SSL_CTX_use_certificate(3)>, | 
					
						
							|  |  |  | L<SSL_CTX_set_client_cert_cb(3)>, | 
					
						
							|  |  |  | L<SSL_CTX_load_verify_locations(3)> | 
					
						
							|  |  |  | L<SSL_CTX_set0_chain(3)> | 
					
						
							|  |  |  | L<SSL_CTX_set1_chain(3)> | 
					
						
							|  |  |  | L<SSL_CTX_add0_chain_cert(3)> | 
					
						
							|  |  |  | L<SSL_CTX_add1_chain_cert(3)> | 
					
						
							|  |  |  | L<SSL_set0_chain(3)> | 
					
						
							|  |  |  | L<SSL_set1_chain(3)> | 
					
						
							|  |  |  | L<SSL_add0_chain_cert(3)> | 
					
						
							|  |  |  | L<SSL_add1_chain_cert(3)> | 
					
						
							|  |  |  | L<SSL_CTX_build_cert_chain(3)> | 
					
						
							|  |  |  | L<SSL_build_cert_chain(3)> | 
					
						
							| 
									
										
										
										
											2000-12-08 22:29:13 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-18 23:44:05 +08:00
										 |  |  | =head1 COPYRIGHT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Licensed under the OpenSSL license (the "License").  You may not use | 
					
						
							|  |  |  | this file except in compliance with the License.  You can obtain a copy | 
					
						
							|  |  |  | in the file LICENSE in the source distribution or at | 
					
						
							|  |  |  | L<https://www.openssl.org/source/license.html>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =cut |