1*07bab3e1Stb.\" $OpenBSD: X509_VERIFY_PARAM_set_flags.3,v 1.29 2023/04/30 19:40:23 tb Exp $ 2c4dcc0bcSschwarze.\" full merge up to: OpenSSL d33def66 Feb 9 14:17:13 2016 -0500 3d3e4a707Sschwarze.\" selective merge up to: OpenSSL 24a535ea Sep 22 13:14:20 2020 +0100 48974101aSjmc.\" 5471f033cSschwarze.\" This file is a derived work. 6471f033cSschwarze.\" The changes are covered by the following Copyright and license: 7471f033cSschwarze.\" 88b174191Sschwarze.\" Copyright (c) 2018, 2021, 2022 Ingo Schwarze <schwarze@openbsd.org> 9471f033cSschwarze.\" 10471f033cSschwarze.\" Permission to use, copy, modify, and distribute this software for any 11471f033cSschwarze.\" purpose with or without fee is hereby granted, provided that the above 12471f033cSschwarze.\" copyright notice and this permission notice appear in all copies. 13471f033cSschwarze.\" 14471f033cSschwarze.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 15471f033cSschwarze.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 16471f033cSschwarze.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 17471f033cSschwarze.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 18471f033cSschwarze.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 19471f033cSschwarze.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 20471f033cSschwarze.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 21471f033cSschwarze.\" 22471f033cSschwarze.\" The original file was written by Dr. Stephen Henson <steve@openssl.org> 23c4dcc0bcSschwarze.\" and Viktor Dukhovni <viktor@dukhovni.org>. 24c4dcc0bcSschwarze.\" Copyright (c) 2009, 2013, 2014, 2015, 2016, 2017 The OpenSSL Project. 25c4dcc0bcSschwarze.\" All rights reserved. 26580266f9Sschwarze.\" 27580266f9Sschwarze.\" Redistribution and use in source and binary forms, with or without 28580266f9Sschwarze.\" modification, are permitted provided that the following conditions 29580266f9Sschwarze.\" are met: 30580266f9Sschwarze.\" 31580266f9Sschwarze.\" 1. Redistributions of source code must retain the above copyright 32580266f9Sschwarze.\" notice, this list of conditions and the following disclaimer. 33580266f9Sschwarze.\" 34580266f9Sschwarze.\" 2. Redistributions in binary form must reproduce the above copyright 35580266f9Sschwarze.\" notice, this list of conditions and the following disclaimer in 36580266f9Sschwarze.\" the documentation and/or other materials provided with the 37580266f9Sschwarze.\" distribution. 38580266f9Sschwarze.\" 39580266f9Sschwarze.\" 3. All advertising materials mentioning features or use of this 40580266f9Sschwarze.\" software must display the following acknowledgment: 41580266f9Sschwarze.\" "This product includes software developed by the OpenSSL Project 42580266f9Sschwarze.\" for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 43580266f9Sschwarze.\" 44580266f9Sschwarze.\" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 45580266f9Sschwarze.\" endorse or promote products derived from this software without 46580266f9Sschwarze.\" prior written permission. For written permission, please contact 47580266f9Sschwarze.\" openssl-core@openssl.org. 48580266f9Sschwarze.\" 49580266f9Sschwarze.\" 5. Products derived from this software may not be called "OpenSSL" 50580266f9Sschwarze.\" nor may "OpenSSL" appear in their names without prior written 51580266f9Sschwarze.\" permission of the OpenSSL Project. 52580266f9Sschwarze.\" 53580266f9Sschwarze.\" 6. Redistributions of any form whatsoever must retain the following 54580266f9Sschwarze.\" acknowledgment: 55580266f9Sschwarze.\" "This product includes software developed by the OpenSSL Project 56580266f9Sschwarze.\" for use in the OpenSSL Toolkit (http://www.openssl.org/)" 57580266f9Sschwarze.\" 58580266f9Sschwarze.\" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 59580266f9Sschwarze.\" EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 60580266f9Sschwarze.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 61580266f9Sschwarze.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 62580266f9Sschwarze.\" ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 63580266f9Sschwarze.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 64580266f9Sschwarze.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 65580266f9Sschwarze.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 66580266f9Sschwarze.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 67580266f9Sschwarze.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 68580266f9Sschwarze.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 69580266f9Sschwarze.\" OF THE POSSIBILITY OF SUCH DAMAGE. 70580266f9Sschwarze.\" 719a4df245Stb.Dd $Mdocdate: April 30 2023 $ 72b7f7f640Sschwarze.Dt X509_VERIFY_PARAM_SET_FLAGS 3 73b7f7f640Sschwarze.Os 74b7f7f640Sschwarze.Sh NAME 75471f033cSschwarze.Nm X509_VERIFY_PARAM_get0_name , 76471f033cSschwarze.Nm X509_VERIFY_PARAM_set1_name , 77b7f7f640Sschwarze.Nm X509_VERIFY_PARAM_set_flags , 78b7f7f640Sschwarze.Nm X509_VERIFY_PARAM_clear_flags , 79b7f7f640Sschwarze.Nm X509_VERIFY_PARAM_get_flags , 80b7f7f640Sschwarze.Nm X509_VERIFY_PARAM_set_purpose , 81b7f7f640Sschwarze.Nm X509_VERIFY_PARAM_set_trust , 82b7f7f640Sschwarze.Nm X509_VERIFY_PARAM_set_time , 838b174191Sschwarze.Nm X509_VERIFY_PARAM_get_time , 84b7f7f640Sschwarze.Nm X509_VERIFY_PARAM_add0_policy , 851a92b4a1Sjmc.Nm X509_VERIFY_PARAM_set1_policies , 861a92b4a1Sjmc.Nm X509_VERIFY_PARAM_set_depth , 87c4dcc0bcSschwarze.Nm X509_VERIFY_PARAM_get_depth , 888b174191Sschwarze.Nm X509_VERIFY_PARAM_set_auth_level , 89c4dcc0bcSschwarze.Nm X509_VERIFY_PARAM_set1_host , 90c4dcc0bcSschwarze.Nm X509_VERIFY_PARAM_add1_host , 91c4dcc0bcSschwarze.Nm X509_VERIFY_PARAM_set_hostflags , 92c4dcc0bcSschwarze.Nm X509_VERIFY_PARAM_get0_peername , 93c4dcc0bcSschwarze.Nm X509_VERIFY_PARAM_set1_email , 94c4dcc0bcSschwarze.Nm X509_VERIFY_PARAM_set1_ip , 9589fa9988Sschwarze.Nm X509_VERIFY_PARAM_set1_ip_asc 96b7f7f640Sschwarze.Nd X509 verification parameters 97b7f7f640Sschwarze.Sh SYNOPSIS 98b7f7f640Sschwarze.In openssl/x509_vfy.h 99471f033cSschwarze.Ft const char * 100471f033cSschwarze.Fo X509_VERIFY_PARAM_get0_name 101471f033cSschwarze.Fa "const X509_VERIFY_PARAM *param" 102471f033cSschwarze.Fc 103471f033cSschwarze.Ft int 104471f033cSschwarze.Fo X509_VERIFY_PARAM_set1_name 105471f033cSschwarze.Fa "X509_VERIFY_PARAM *param" 106471f033cSschwarze.Fa "const char *name" 107471f033cSschwarze.Fc 108b7f7f640Sschwarze.Ft int 109b7f7f640Sschwarze.Fo X509_VERIFY_PARAM_set_flags 110b7f7f640Sschwarze.Fa "X509_VERIFY_PARAM *param" 111b7f7f640Sschwarze.Fa "unsigned long flags" 112b7f7f640Sschwarze.Fc 113b7f7f640Sschwarze.Ft int 114b7f7f640Sschwarze.Fo X509_VERIFY_PARAM_clear_flags 115b7f7f640Sschwarze.Fa "X509_VERIFY_PARAM *param" 116b7f7f640Sschwarze.Fa "unsigned long flags" 117b7f7f640Sschwarze.Fc 118b7f7f640Sschwarze.Ft unsigned long 119b7f7f640Sschwarze.Fo X509_VERIFY_PARAM_get_flags 120b7f7f640Sschwarze.Fa "X509_VERIFY_PARAM *param" 121b7f7f640Sschwarze.Fc 122b7f7f640Sschwarze.Ft int 123b7f7f640Sschwarze.Fo X509_VERIFY_PARAM_set_purpose 124b7f7f640Sschwarze.Fa "X509_VERIFY_PARAM *param" 125b7f7f640Sschwarze.Fa "int purpose" 126b7f7f640Sschwarze.Fc 127b7f7f640Sschwarze.Ft int 128b7f7f640Sschwarze.Fo X509_VERIFY_PARAM_set_trust 129b7f7f640Sschwarze.Fa "X509_VERIFY_PARAM *param" 130b7f7f640Sschwarze.Fa "int trust" 131b7f7f640Sschwarze.Fc 132b7f7f640Sschwarze.Ft void 133b7f7f640Sschwarze.Fo X509_VERIFY_PARAM_set_time 134b7f7f640Sschwarze.Fa "X509_VERIFY_PARAM *param" 135b7f7f640Sschwarze.Fa "time_t t" 136b7f7f640Sschwarze.Fc 1378b174191Sschwarze.Ft time_t 1388b174191Sschwarze.Fo X509_VERIFY_PARAM_get_time 1398b174191Sschwarze.Fa const X509_VERIFY_PARAM *param" 1408b174191Sschwarze.Fc 141b7f7f640Sschwarze.Ft int 142b7f7f640Sschwarze.Fo X509_VERIFY_PARAM_add0_policy 143b7f7f640Sschwarze.Fa "X509_VERIFY_PARAM *param" 144b7f7f640Sschwarze.Fa "ASN1_OBJECT *policy" 145b7f7f640Sschwarze.Fc 146b7f7f640Sschwarze.Ft int 147b7f7f640Sschwarze.Fo X509_VERIFY_PARAM_set1_policies 148b7f7f640Sschwarze.Fa "X509_VERIFY_PARAM *param" 149b7f7f640Sschwarze.Fa "STACK_OF(ASN1_OBJECT) *policies" 150b7f7f640Sschwarze.Fc 151b7f7f640Sschwarze.Ft void 152b7f7f640Sschwarze.Fo X509_VERIFY_PARAM_set_depth 153b7f7f640Sschwarze.Fa "X509_VERIFY_PARAM *param" 154b7f7f640Sschwarze.Fa "int depth" 155b7f7f640Sschwarze.Fc 156b7f7f640Sschwarze.Ft int 157b7f7f640Sschwarze.Fo X509_VERIFY_PARAM_get_depth 158b7f7f640Sschwarze.Fa "const X509_VERIFY_PARAM *param" 159b7f7f640Sschwarze.Fc 1608b174191Sschwarze.Ft void 1618b174191Sschwarze.Fo X509_VERIFY_PARAM_set_auth_level 1628b174191Sschwarze.Fa "X509_VERIFY_PARAM *param" 1638b174191Sschwarze.Fa "int auth_level" 1648b174191Sschwarze.Fc 165c4dcc0bcSschwarze.Ft int 166c4dcc0bcSschwarze.Fo X509_VERIFY_PARAM_set1_host 167c4dcc0bcSschwarze.Fa "X509_VERIFY_PARAM *param" 168c4dcc0bcSschwarze.Fa "const char *name" 169c4dcc0bcSschwarze.Fa "size_t namelen" 170c4dcc0bcSschwarze.Fc 171c4dcc0bcSschwarze.Ft int 172c4dcc0bcSschwarze.Fo X509_VERIFY_PARAM_add1_host 173c4dcc0bcSschwarze.Fa "X509_VERIFY_PARAM *param" 174c4dcc0bcSschwarze.Fa "const char *name" 175c4dcc0bcSschwarze.Fa "size_t namelen" 176c4dcc0bcSschwarze.Fc 177c4dcc0bcSschwarze.Ft void 178c4dcc0bcSschwarze.Fo X509_VERIFY_PARAM_set_hostflags 179c4dcc0bcSschwarze.Fa "X509_VERIFY_PARAM *param" 180c4dcc0bcSschwarze.Fa "unsigned int flags" 181c4dcc0bcSschwarze.Fc 182c4dcc0bcSschwarze.Ft char * 183c4dcc0bcSschwarze.Fo X509_VERIFY_PARAM_get0_peername 184c4dcc0bcSschwarze.Fa "X509_VERIFY_PARAM *param" 185c4dcc0bcSschwarze.Fc 186c4dcc0bcSschwarze.Ft int 187c4dcc0bcSschwarze.Fo X509_VERIFY_PARAM_set1_email 188c4dcc0bcSschwarze.Fa "X509_VERIFY_PARAM *param" 189c4dcc0bcSschwarze.Fa "const char *email" 190c4dcc0bcSschwarze.Fa "size_t emaillen" 191c4dcc0bcSschwarze.Fc 192c4dcc0bcSschwarze.Ft int 193c4dcc0bcSschwarze.Fo X509_VERIFY_PARAM_set1_ip 194c4dcc0bcSschwarze.Fa "X509_VERIFY_PARAM *param" 195c4dcc0bcSschwarze.Fa "const unsigned char *ip" 196c4dcc0bcSschwarze.Fa "size_t iplen" 197c4dcc0bcSschwarze.Fc 198c4dcc0bcSschwarze.Ft int 199c4dcc0bcSschwarze.Fo X509_VERIFY_PARAM_set1_ip_asc 200c4dcc0bcSschwarze.Fa "X509_VERIFY_PARAM *param" 201c4dcc0bcSschwarze.Fa "const char *ipasc" 202c4dcc0bcSschwarze.Fc 203b7f7f640Sschwarze.Sh DESCRIPTION 204471f033cSschwarzeThese functions manipulate an 205b7f7f640Sschwarze.Vt X509_VERIFY_PARAM 206471f033cSschwarzeobject associated with a certificate verification operation. 207b7f7f640Sschwarze.Pp 208471f033cSschwarze.Fn X509_VERIFY_PARAM_get0_name 209471f033cSschwarzereturns the name of the given 210471f033cSschwarze.Fa param 211471f033cSschwarzeobject, usually describing its purpose, for example 212471f033cSschwarze.Qq default , 213471f033cSschwarze.Qq pkcs7 , 214471f033cSschwarze.Qq smime_sign , 215471f033cSschwarze.Qq ssl_client , 216471f033cSschwarzeor 217471f033cSschwarze.Qq ssl_server . 218471f033cSschwarzeFor user-defined objects, the returned pointer may be 219471f033cSschwarze.Dv NULL 220471f033cSschwarzeeven if the object is otherwise valid. 221471f033cSschwarze.Pp 222471f033cSschwarze.Fn X509_VERIFY_PARAM_set1_name 223471f033cSschwarzesets the name of 224471f033cSschwarze.Fa param 225471f033cSschwarzeto a copy of 226471f033cSschwarze.Fa name , 227471f033cSschwarzeor to 228471f033cSschwarze.Dv NULL 229471f033cSschwarzeif 230471f033cSschwarze.Fa name 231471f033cSschwarzeis 232471f033cSschwarze.Dv NULL . 233471f033cSschwarze.Pp 234b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_set_flags 235471f033cSschwarzesets the flags in 236b7f7f640Sschwarze.Fa param 237b7f7f640Sschwarzeby OR'ing it with 238b7f7f640Sschwarze.Fa flags . 239b7f7f640SschwarzeSee the 240b7f7f640Sschwarze.Sx VERIFICATION FLAGS 241b7f7f640Sschwarzesection for a complete description of values the 242b7f7f640Sschwarze.Fa flags 243b7f7f640Sschwarzeparameter can take. 244b7f7f640Sschwarze.Pp 2455be47371SschwarzeIf the 2465be47371Sschwarze.Fa flags 2475be47371Sschwarzeargument includes any of the flags contained in 2485be47371Sschwarze.Dv X509_V_FLAG_POLICY_MASK , 2495be47371Sschwarzethat is, any of 2505be47371Sschwarze.Dv X509_V_FLAG_POLICY_CHECK , 2515be47371Sschwarze.Dv X509_V_FLAG_EXPLICIT_POLICY , 2525be47371Sschwarze.Dv X509_V_FLAG_INHIBIT_ANY , 2535be47371Sschwarzeand 2545be47371Sschwarze.Dv X509_V_FLAG_INHIBIT_MAP , 2555be47371Sschwarzethen 2565be47371Sschwarze.Dv X509_V_FLAG_POLICY_CHECK 2575be47371Sschwarzeis set in addition to the flags contained in the 2585be47371Sschwarze.Fa flags 2595be47371Sschwarzeargument. 2605be47371Sschwarze.Pp 261b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_get_flags 262b7f7f640Sschwarzereturns the flags in 263b7f7f640Sschwarze.Fa param . 264b7f7f640Sschwarze.Pp 265b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_clear_flags 2665be47371Sschwarzeclears the specified 267b7f7f640Sschwarze.Fa flags 268b7f7f640Sschwarzein 269b7f7f640Sschwarze.Fa param . 270b7f7f640Sschwarze.Pp 271d59240dbSjsgCalling this function can result in unusual internal states of the 2725be47371Sschwarze.Fa param 2735be47371Sschwarzeobject, for example having a verification time configured but having 2745be47371Sschwarze.Dv X509_V_FLAG_USE_CHECK_TIME 2755be47371Sschwarzeunset, or having 2765be47371Sschwarze.Dv X509_V_FLAG_EXPLICIT_POLICY 2775be47371Sschwarzeset but 2785be47371Sschwarze.Dv X509_V_FLAG_POLICY_CHECK 2795be47371Sschwarzeunset, which may have surprising effects. 2805be47371Sschwarze.Pp 281b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_set_purpose 282d3e4a707Sschwarzesets the verification 283d3e4a707Sschwarze.Fa purpose 284d3e4a707Sschwarzeidentifier in 285d3e4a707Sschwarze.Fa param . 286d3e4a707SschwarzeThis determines the acceptable purpose of the certificate chain, for example 287d3e4a707Sschwarze.Dv X509_PURPOSE_SSL_CLIENT 288d3e4a707Sschwarzeor 289d3e4a707Sschwarze.Dv X509_PURPOSE_SSL_SERVER . 290d3e4a707SschwarzeStandard purposes are listed in 291d3e4a707Sschwarze.Xr X509_check_purpose 3 , 292d3e4a707Sschwarzeand additional purposes can be defined with 293d3e4a707Sschwarze.Xr X509_PURPOSE_add 3 . 294b7f7f640Sschwarze.Pp 295b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_set_trust 296b7f7f640Sschwarzesets the trust setting in 297b7f7f640Sschwarze.Fa param 298b7f7f640Sschwarzeto 299b7f7f640Sschwarze.Fa trust . 300b7f7f640Sschwarze.Pp 301b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_set_time 3025be47371Sschwarzesets the flag 3035be47371Sschwarze.Dv X509_V_FLAG_USE_CHECK_TIME 3045be47371Sschwarzein 305b7f7f640Sschwarze.Fa param 3065be47371Sschwarzein addition to the flags already set and sets the verification time to 307b7f7f640Sschwarze.Fa t . 3085be47371SschwarzeIf this function is not called, the current time is used instead, 3095be47371Sschwarzeor the UNIX Epoch (January 1, 1970) if 3105be47371Sschwarze.Dv X509_V_FLAG_USE_CHECK_TIME 3115be47371Sschwarzeis manually set using 3125be47371Sschwarze.Fn X509_VERIFY_PARAM_set_flags . 313b7f7f640Sschwarze.Pp 314b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_add0_policy 315b7f7f640Sschwarzeenables policy checking (it is disabled by default) and adds 316b7f7f640Sschwarze.Fa policy 317b7f7f640Sschwarzeto the acceptable policy set. 318b7f7f640Sschwarze.Pp 319b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_set1_policies 320b7f7f640Sschwarzeenables policy checking (it is disabled by default) and sets the 321b7f7f640Sschwarzeacceptable policy set to 322b7f7f640Sschwarze.Fa policies . 323b7f7f640SschwarzeAny existing policy set is cleared. 324b7f7f640SschwarzeThe 325b7f7f640Sschwarze.Fa policies 326b7f7f640Sschwarzeparameter can be 327b7f7f640Sschwarze.Dv NULL 328b7f7f640Sschwarzeto clear an existing policy set. 329b7f7f640Sschwarze.Pp 330b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_set_depth 331b7f7f640Sschwarzesets the maximum verification depth to 332b7f7f640Sschwarze.Fa depth . 333b7f7f640SschwarzeThat is the maximum number of untrusted CA certificates that can appear 334b7f7f640Sschwarzein a chain. 335c4dcc0bcSschwarze.Pp 3368b174191Sschwarze.Fn X509_VERIFY_PARAM_set_auth_level 3378b174191Sschwarzesets the security level as defined in 3388b174191Sschwarze.Xr SSL_CTX_set_security_level 3 3398b174191Sschwarzefor certificate chain validation. 3408b174191SschwarzeFor a certificate chain to validate, the public keys of all the 3418b174191Sschwarzecertificates must meet the specified security level. 3428b174191SschwarzeThe signature algorithm security level is not enforced for the 3438b174191Sschwarzechain's trust anchor certificate, which is either directly trusted 3448b174191Sschwarzeor validated by means other than its signature. 3458b174191Sschwarze.Pp 3468b174191SschwarzeFrom the point of view of the X.509 library, 3478b174191Sschwarzethe default security level is 0. 3488b174191SschwarzeHowever, the SSL library 3498b174191Sschwarzeuses a different default security level of 1 and calls 3508b174191Sschwarze.Fn X509_VERIFY_PARAM_set_auth_level 3518b174191Sschwarzewith its own level before validating a certificate chain. 3528b174191Sschwarze.Pp 353c4dcc0bcSschwarze.Fn X509_VERIFY_PARAM_set1_host 354c4dcc0bcSschwarzesets the expected DNS hostname to 355c4dcc0bcSschwarze.Fa name 356c4dcc0bcSschwarzeclearing any previously specified hostname or names. 357c4dcc0bcSschwarzeIf 358c4dcc0bcSschwarze.Fa name 359c4dcc0bcSschwarzeis 360c4dcc0bcSschwarze.Dv NULL 361c4dcc0bcSschwarzeor empty, the list of hostnames is cleared, and name checks are not 362c4dcc0bcSschwarzeperformed on the peer certificate. 3632a5239c0Sbeck.Fa namelen 3642a5239c0Sbeckshould be set to the length of 3652a5239c0Sbeck.Fa name . 3662a5239c0SbeckFor historical compatibility, if 367c4dcc0bcSschwarze.Fa name 368c4dcc0bcSschwarzeis NUL-terminated, 369c4dcc0bcSschwarze.Fa namelen 3702a5239c0Sbeckmay be specified as zero. 371c4dcc0bcSschwarzeWhen a hostname is specified, certificate verification automatically 372c4dcc0bcSschwarzeinvokes 373c4dcc0bcSschwarze.Xr X509_check_host 3 374c4dcc0bcSschwarzewith flags equal to the 375c4dcc0bcSschwarze.Fa flags 376c4dcc0bcSschwarzeargument given to 377c4dcc0bcSschwarze.Fn X509_VERIFY_PARAM_set_hostflags 378c4dcc0bcSschwarze(default zero). 3792a5239c0Sbeck.Fn X509_VERIFY_PARAM_set1_host 3802a5239c0Sbeckwill fail if 3812a5239c0Sbeck.Fa name 3822a5239c0Sbeckcontains any embedded 0 bytes. 383c4dcc0bcSschwarze.Pp 384c4dcc0bcSschwarze.Fn X509_VERIFY_PARAM_add1_host 385c4dcc0bcSschwarzeadds 386c4dcc0bcSschwarze.Fa name 387c4dcc0bcSschwarzeas an additional reference identifier that can match the peer's 388c4dcc0bcSschwarzecertificate. 389c4dcc0bcSschwarzeAny previous names set via 390c4dcc0bcSschwarze.Fn X509_VERIFY_PARAM_set1_host 391c4dcc0bcSschwarzeand 392c4dcc0bcSschwarze.Fn X509_VERIFY_PARAM_add1_host 393c4dcc0bcSschwarzeare retained. 394c4dcc0bcSschwarzeNo change is made if 395c4dcc0bcSschwarze.Fa name 396c4dcc0bcSschwarzeis 397c4dcc0bcSschwarze.Dv NULL 398c4dcc0bcSschwarzeor empty. 3992a5239c0Sbeck.Fa namelen 4002a5239c0Sbeckshould be set to the length of 4012a5239c0Sbeck.Fa name . 4022a5239c0SbeckFor historical compatibility, if 4032a5239c0Sbeck.Fa name 4042a5239c0Sbeckis NUL-terminated, 4052a5239c0Sbeck.Fa namelen 4062a5239c0Sbeckmay be specified as zero. 4072a5239c0Sbeck.Fn X509_VERIFY_PARAM_add1_host 4082a5239c0Sbeckwill fail if 4092a5239c0Sbeck.Fa name 4102a5239c0Sbeckcontains any embedded 0 bytes. 411c4dcc0bcSschwarzeWhen multiple names are configured, the peer is considered verified when 412c4dcc0bcSschwarzeany name matches. 413c4dcc0bcSschwarze.Pp 414c4dcc0bcSschwarze.Fn X509_VERIFY_PARAM_get0_peername 415c4dcc0bcSschwarzereturns the DNS hostname or subject CommonName from the peer certificate 416c4dcc0bcSschwarzethat matched one of the reference identifiers. 417c4dcc0bcSschwarzeWhen wildcard matching is not disabled, or when a reference identifier 418c4dcc0bcSschwarzespecifies a parent domain (starts with ".") rather than a hostname, the 419c4dcc0bcSschwarzepeer name may be a wildcard name or a sub-domain of the reference 420c4dcc0bcSschwarzeidentifier respectively. 421c4dcc0bcSschwarze.Pp 422c4dcc0bcSschwarze.Fn X509_VERIFY_PARAM_set1_email 423c4dcc0bcSschwarzesets the expected RFC 822 email address to 424c4dcc0bcSschwarze.Fa email . 4252a5239c0Sbeck.Fa emaillen 4262a5239c0Sbeckshould be set to the length of 4272a5239c0Sbeck.Fa email . 4282a5239c0SbeckFor historical compatibility, if 429c4dcc0bcSschwarze.Fa email 430c4dcc0bcSschwarzeis NUL-terminated, 431c4dcc0bcSschwarze.Fa emaillen 4322a5239c0Sbeckmay be specified as zero, 4332a5239c0Sbeck.Fn X509_VERIFY_PARAM_set1_email 4342a5239c0Sbeckwill fail if 4352a5239c0Sbeck.Fa email 4362a5239c0Sbeckis NULL, an empty string, or contains embedded 0 bytes. 437c4dcc0bcSschwarzeWhen an email address is specified, certificate verification 438c4dcc0bcSschwarzeautomatically invokes 439c4dcc0bcSschwarze.Xr X509_check_email 3 . 440c4dcc0bcSschwarze.Pp 441c4dcc0bcSschwarze.Fn X509_VERIFY_PARAM_set1_ip 442c4dcc0bcSschwarzesets the expected IP address to 443c4dcc0bcSschwarze.Fa ip . 444c4dcc0bcSschwarzeThe 445c4dcc0bcSschwarze.Fa ip 446c4dcc0bcSschwarzeargument is in binary format, in network byte-order, and 447c4dcc0bcSschwarze.Fa iplen 448c4dcc0bcSschwarzemust be set to 4 for IPv4 and 16 for IPv6. 4492a5239c0Sbeck.Fn X509_VERIFY_PARAM_set1_ip 4502a5239c0Sbeckwill fail if 4512a5239c0Sbeck.Fa ip 4522a5239c0Sbeckis NULL or if 4532a5239c0Sbeck.Fa iplen 4542a5239c0Sbeckis not 4 or 16. 455c4dcc0bcSschwarzeWhen an IP address is specified, 456c4dcc0bcSschwarzecertificate verification automatically invokes 457c4dcc0bcSschwarze.Xr X509_check_ip 3 . 458c4dcc0bcSschwarze.Pp 459c4dcc0bcSschwarze.Fn X509_VERIFY_PARAM_set1_ip_asc 460c4dcc0bcSschwarzesets the expected IP address to 461c4dcc0bcSschwarze.Fa ipasc . 462c4dcc0bcSschwarzeThe 463c4dcc0bcSschwarze.Fa ipasc 464c4dcc0bcSschwarzeargument is a NUL-terminal ASCII string: 465c4dcc0bcSschwarzedotted decimal quad for IPv4 and colon-separated hexadecimal for IPv6. 466c4dcc0bcSschwarzeThe condensed "::" notation is supported for IPv6 addresses. 4672a5239c0Sbeck.Fn X509_VERIFY_PARAM_set1_ip_asc 4682a5239c0Sbeckwill fail if 4692a5239c0Sbeck.Fa ipasc 4702a5239c0Sbeckis unparsable. 471b7f7f640Sschwarze.Sh RETURN VALUES 472471f033cSschwarze.Fn X509_VERIFY_PARAM_set1_name , 473b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_set_flags , 474b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_clear_flags , 475b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_set_purpose , 476b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_set_trust , 477b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_add0_policy , 4782a5239c0Sbeckand 47989fa9988Sschwarze.Fn X509_VERIFY_PARAM_set1_policies 4802a5239c0Sbeckreturn 1 for success or 0 for failure. 4812a5239c0Sbeck.Pp 482c4dcc0bcSschwarze.Fn X509_VERIFY_PARAM_set1_host , 483c4dcc0bcSschwarze.Fn X509_VERIFY_PARAM_add1_host , 484c4dcc0bcSschwarze.Fn X509_VERIFY_PARAM_set1_email , 485c4dcc0bcSschwarze.Fn X509_VERIFY_PARAM_set1_ip , 486b7f7f640Sschwarzeand 48789fa9988Sschwarze.Fn X509_VERIFY_PARAM_set1_ip_asc 488b7f7f640Sschwarzereturn 1 for success or 0 for failure. 4892a5239c0SbeckA failure from these routines will poison 4902a5239c0Sbeckthe 4912a5239c0Sbeck.Vt X509_VERIFY_PARAM 4922a5239c0Sbeckobject so that future calls to 493d46a5467Sjmc.Xr X509_verify_cert 3 4942a5239c0Sbeckusing the poisoned object will fail. 495b7f7f640Sschwarze.Pp 496b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_get_flags 497b7f7f640Sschwarzereturns the current verification flags. 498b7f7f640Sschwarze.Pp 4998b174191Sschwarze.Fn X509_VERIFY_PARAM_get_time 5008b174191Sschwarzealways returns the configured verification time. 5018b174191SschwarzeIt does so even if the returned time will not be used because the flag 5028b174191Sschwarze.Dv X509_V_FLAG_USE_CHECK_TIME 5038b174191Sschwarzeis unset. 5048b174191Sschwarze.Pp 505b7f7f640Sschwarze.Fn X509_VERIFY_PARAM_get_depth 506b7f7f640Sschwarzereturns the current verification depth. 507471f033cSschwarze.Pp 508471f033cSschwarze.Fn X509_VERIFY_PARAM_get0_name 509471f033cSschwarzeand 510471f033cSschwarze.Fn X509_VERIFY_PARAM_get0_peername 511471f033cSschwarzereturn pointers to strings that are only valid 512471f033cSschwarzeduring the lifetime of the given 513471f033cSschwarze.Fa param 514471f033cSschwarzeobject and that must not be freed by the application program. 515b7f7f640Sschwarze.Sh VERIFICATION FLAGS 516b7f7f640SschwarzeThe verification flags consists of zero or more of the following 517b7f7f640Sschwarzeflags OR'ed together. 518b7f7f640Sschwarze.Pp 519b7f7f640Sschwarze.Dv X509_V_FLAG_CRL_CHECK 520b7f7f640Sschwarzeenables CRL checking for the certificate chain leaf certificate. 521b7f7f640SschwarzeAn error occurs if a suitable CRL cannot be found. 522b7f7f640Sschwarze.Pp 523b7f7f640Sschwarze.Dv X509_V_FLAG_CRL_CHECK_ALL 524b7f7f640Sschwarzeenables CRL checking for the entire certificate chain. 525b7f7f640Sschwarze.Pp 526b7f7f640Sschwarze.Dv X509_V_FLAG_IGNORE_CRITICAL 5271a92b4a1Sjmcdisables critical extension checking. 528b7f7f640SschwarzeBy default any unhandled critical extensions in certificates or (if 529b7f7f640Sschwarzechecked) CRLs results in a fatal error. 53041ce3b17SnaddyIf this flag is set, unhandled critical extensions are ignored. 531b7f7f640Sschwarze.Sy WARNING : 532b7f7f640Sschwarzesetting this option for anything other than debugging purposes can be a 533b7f7f640Sschwarzesecurity risk. 534b7f7f640SschwarzeFiner control over which extensions are supported can be performed in 535b7f7f640Sschwarzethe verification callback. 536b7f7f640Sschwarze.Pp 537b7f7f640SschwarzeThe 538b7f7f640Sschwarze.Dv X509_V_FLAG_X509_STRICT 539b7f7f640Sschwarzeflag disables workarounds for some broken certificates and makes the 540b7f7f640Sschwarzeverification strictly apply X509 rules. 541b7f7f640Sschwarze.Pp 542b7f7f640Sschwarze.Dv X509_V_FLAG_ALLOW_PROXY_CERTS 543*07bab3e1Stbdeprecated flag that used to 544*07bab3e1Stbenable proxy certificate verification. 545*07bab3e1StbIn LibreSSL, this flag has no effect. 546b7f7f640Sschwarze.Pp 547b7f7f640Sschwarze.Dv X509_V_FLAG_POLICY_CHECK 5481a92b4a1Sjmcenables certificate policy checking; by default no policy checking is 549b7f7f640Sschwarzeperformed. 550b7f7f640SschwarzeAdditional information is sent to the verification callback relating to 551b7f7f640Sschwarzepolicy checking. 552b7f7f640Sschwarze.Pp 553b7f7f640Sschwarze.Dv X509_V_FLAG_EXPLICIT_POLICY , 554b7f7f640Sschwarze.Dv X509_V_FLAG_INHIBIT_ANY , 555b7f7f640Sschwarzeand 556b7f7f640Sschwarze.Dv X509_V_FLAG_INHIBIT_MAP 557b7f7f640Sschwarzeset the 558b7f7f640Sschwarze.Dq require explicit policy , 559b7f7f640Sschwarze.Dq inhibit any policy , 560b7f7f640Sschwarzeand 561b7f7f640Sschwarze.Dq inhibit policy mapping 562b7f7f640Sschwarzeflags, respectively, as defined in RFC 3280. 5635be47371SschwarzeThese three flags are ignored unless 5645be47371Sschwarze.Dv X509_V_FLAG_POLICY_CHECK 5655be47371Sschwarzeis also set. 566b7f7f640Sschwarze.Pp 567b7f7f640SschwarzeIf 568b7f7f640Sschwarze.Dv X509_V_FLAG_NOTIFY_POLICY 5695be47371Sschwarzeis set and policy checking is successful, a special status code is 5705be47371Sschwarzesent to the verification callback. 571b7f7f640Sschwarze.Pp 572b7f7f640SschwarzeBy default some additional features such as indirect CRLs and CRLs 573b7f7f640Sschwarzesigned by different keys are disabled. 574b7f7f640SschwarzeIf 575b7f7f640Sschwarze.Dv X509_V_FLAG_EXTENDED_CRL_SUPPORT 57641ce3b17Snaddyis set, they are enabled. 577b7f7f640Sschwarze.Pp 578b7f7f640SschwarzeIf 579b7f7f640Sschwarze.Dv X509_V_FLAG_USE_DELTAS 580b7f7f640Sschwarzeis set, delta CRLs (if present) are used to determine certificate 581b7f7f640Sschwarzestatus. 582b7f7f640SschwarzeIf not set, deltas are ignored. 583b7f7f640Sschwarze.Pp 584b7f7f640Sschwarze.Dv X509_V_FLAG_CHECK_SS_SIGNATURE 585b7f7f640Sschwarzeenables checking of the root CA self signed certificate signature. 586b7f7f640SschwarzeBy default this check is disabled because it doesn't add any additional 587b7f7f640Sschwarzesecurity but in some cases applications might want to check the 588b7f7f640Sschwarzesignature anyway. 589b7f7f640SschwarzeA side effect of not checking the root CA signature is that disabled or 590b7f7f640Sschwarzeunsupported message digests on the root CA are not treated as fatal 591b7f7f640Sschwarzeerrors. 592b7f7f640Sschwarze.Pp 5938a0b2fe2StbThe deprecated 594b7f7f640Sschwarze.Dv X509_V_FLAG_CB_ISSUER_CHECK 5958a0b2fe2Stbflag used to enable debugging of certificate issuer checks. 5968a0b2fe2StbIt is provided for binary backwards compatibility and has no effect. 597c4dcc0bcSschwarze.Pp 598c4dcc0bcSschwarzeWhen 599c4dcc0bcSschwarze.Dv X509_V_FLAG_TRUSTED_FIRST 600c4dcc0bcSschwarzeis set, construction of the certificate chain in 601c4dcc0bcSschwarze.Xr X509_verify_cert 3 602c4dcc0bcSschwarzewill search the trust store for issuer certificates before searching the 603c4dcc0bcSschwarzeprovided untrusted certificates. 604c4dcc0bcSschwarzeLocal issuer certificates are often more likely to satisfy local 605c4dcc0bcSschwarzesecurity requirements and lead to a locally trusted root. 606c4dcc0bcSschwarzeThis is especially important when some certificates in the trust store 607c4dcc0bcSschwarzehave explicit trust settings; see the trust settings options of the 608c4dcc0bcSschwarze.Cm x509 609c4dcc0bcSschwarzecommand in 610c4dcc0bcSschwarze.Xr openssl 1 . 611c4dcc0bcSschwarze.Pp 612c4dcc0bcSschwarzeThe 613c4dcc0bcSschwarze.Dv X509_V_FLAG_NO_ALT_CHAINS 614c4dcc0bcSschwarzeflag suppresses checking for alternative chains. 615c4dcc0bcSschwarzeBy default, unless 616c4dcc0bcSschwarze.Dv X509_V_FLAG_TRUSTED_FIRST 617c4dcc0bcSschwarzeis set, when building a certificate chain, if the first certificate 618c4dcc0bcSschwarzechain found is not trusted, then OpenSSL will attempt to replace 619c4dcc0bcSschwarzeuntrusted certificates supplied by the peer with certificates from the 620c4dcc0bcSschwarzetrust store to see if an alternative chain can be found that is trusted. 621c4dcc0bcSschwarze.Pp 622c4dcc0bcSschwarzeThe 623c4dcc0bcSschwarze.Dv X509_V_FLAG_PARTIAL_CHAIN 624c4dcc0bcSschwarzeflag causes intermediate certificates in the trust store to be treated 625c4dcc0bcSschwarzeas trust-anchors, in the same way as the self-signed root CA 626c4dcc0bcSschwarzecertificates. 627c4dcc0bcSschwarzeThis makes it possible to trust certificates issued by an intermediate 628c4dcc0bcSschwarzeCA without having to trust its ancestor root CA. 629c4dcc0bcSschwarze.Pp 63061583fc4SschwarzeIf 63161583fc4Sschwarze.Dv X509_V_FLAG_USE_CHECK_TIME 63261583fc4Sschwarzeis set, the validity period of certificates and CRLs is checked. 63361583fc4SschwarzeIn this case, 634c4dcc0bcSschwarze.Dv X509_V_FLAG_NO_CHECK_TIME 63561583fc4Sschwarzeis ignored. 63661583fc4SschwarzeIf the validation time was set with 63761583fc4Sschwarze.Fn X509_VERIFY_PARAM_set_time , 63861583fc4Sschwarzethat time is used. 639c4dcc0bcSschwarzeIf 640c4dcc0bcSschwarze.Fn X509_VERIFY_PARAM_set_time 64161583fc4Sschwarzewas not called, the UNIX Epoch (January 1, 1970) is used. 64261583fc4Sschwarze.Pp 64361583fc4SschwarzeIf neither 64461583fc4Sschwarze.Dv X509_V_FLAG_USE_CHECK_TIME 64561583fc4Sschwarzenor 64661583fc4Sschwarze.Dv X509_V_FLAG_NO_CHECK_TIME 64761583fc4Sschwarzeis set, the validity period of certificates and CRLs is checked 64861583fc4Sschwarzeusing the current time. 6492235fd3cSjsgThis is the default behaviour. 65061583fc4SschwarzeIn this case, if a validation time was set with 65161583fc4Sschwarze.Fn X509_VERIFY_PARAM_set_time 65261583fc4Sschwarzebut 65361583fc4Sschwarze.Dv X509_V_FLAG_USE_CHECK_TIME 65461583fc4Sschwarzewas later cleared with 65561583fc4Sschwarze.Fn X509_VERIFY_PARAM_clear_flags , 65661583fc4Sschwarzethe configured validation time is ignored 65761583fc4Sschwarzeand the current time is used anyway. 65861583fc4Sschwarze.Pp 65961583fc4SschwarzeIf 66061583fc4Sschwarze.Dv X509_V_FLAG_USE_CHECK_TIME 66161583fc4Sschwarzeis not set but 66261583fc4Sschwarze.Dv X509_V_FLAG_NO_CHECK_TIME 66361583fc4Sschwarzeis set, the validity period of certificates and CRLs is not checked 66461583fc4Sschwarzeat all, and like in the previous case, any configured validation 66561583fc4Sschwarzetime is ignored. 666b7f7f640Sschwarze.Sh EXAMPLES 667b7f7f640SschwarzeEnable CRL checking when performing certificate verification during 668b7f7f640SschwarzeSSL connections associated with an 669b7f7f640Sschwarze.Vt SSL_CTX 670b7f7f640Sschwarzestructure 671b7f7f640Sschwarze.Fa ctx : 6721a92b4a1Sjmc.Bd -literal -offset indent 673b7f7f640SschwarzeX509_VERIFY_PARAM *param; 674c4dcc0bcSschwarze 675b7f7f640Sschwarzeparam = X509_VERIFY_PARAM_new(); 676b7f7f640SschwarzeX509_VERIFY_PARAM_set_flags(param, X509_V_FLAG_CRL_CHECK); 677b7f7f640SschwarzeSSL_CTX_set1_param(ctx, param); 678b7f7f640SschwarzeX509_VERIFY_PARAM_free(param); 679b7f7f640Sschwarze.Ed 680b7f7f640Sschwarze.Sh SEE ALSO 6811bfa9420Sschwarze.Xr SSL_set1_host 3 , 682e349b5c6Sschwarze.Xr SSL_set1_param 3 , 683c4dcc0bcSschwarze.Xr X509_check_host 3 , 684491f2bffSschwarze.Xr X509_STORE_CTX_new 3 , 685491f2bffSschwarze.Xr X509_STORE_new 3 , 68689fa9988Sschwarze.Xr X509_verify_cert 3 , 68789fa9988Sschwarze.Xr X509_VERIFY_PARAM_new 3 6882c07bb3bSschwarze.Sh HISTORY 6892c07bb3bSschwarze.Fn X509_VERIFY_PARAM_set1_name , 6902c07bb3bSschwarze.Fn X509_VERIFY_PARAM_set_flags , 6912c07bb3bSschwarze.Fn X509_VERIFY_PARAM_set_purpose , 6922c07bb3bSschwarze.Fn X509_VERIFY_PARAM_set_trust , 6932c07bb3bSschwarze.Fn X509_VERIFY_PARAM_set_time , 6942c07bb3bSschwarze.Fn X509_VERIFY_PARAM_add0_policy , 6952c07bb3bSschwarze.Fn X509_VERIFY_PARAM_set1_policies , 6962c07bb3bSschwarze.Fn X509_VERIFY_PARAM_set_depth , 6972c07bb3bSschwarzeand 69889fa9988Sschwarze.Fn X509_VERIFY_PARAM_get_depth 69975db2bcaSschwarzefirst appeared in OpenSSL 0.9.8. 70075db2bcaSschwarze.Fn X509_VERIFY_PARAM_clear_flags 70175db2bcaSschwarzeand 70275db2bcaSschwarze.Fn X509_VERIFY_PARAM_get_flags 70375db2bcaSschwarzefirst appeared in OpenSSL 0.9.8a. 70475db2bcaSschwarzeAll these functions have been available since 7052c07bb3bSschwarze.Ox 4.5 . 7067fe7dbf7Sschwarze.Pp 7073fd951e6Snaddy.Fn X509_VERIFY_PARAM_get0_name , 7087fe7dbf7Sschwarze.Fn X509_VERIFY_PARAM_set1_host , 7097fe7dbf7Sschwarze.Fn X509_VERIFY_PARAM_add1_host , 7107fe7dbf7Sschwarze.Fn X509_VERIFY_PARAM_set_hostflags , 7117fe7dbf7Sschwarze.Fn X509_VERIFY_PARAM_get0_peername , 7127fe7dbf7Sschwarze.Fn X509_VERIFY_PARAM_set1_email , 7137fe7dbf7Sschwarze.Fn X509_VERIFY_PARAM_set1_ip , 7147fe7dbf7Sschwarzeand 71589fa9988Sschwarze.Fn X509_VERIFY_PARAM_set1_ip_asc 7167fe7dbf7Sschwarzefirst appeared in OpenSSL 1.0.2 and have been available since 7177fe7dbf7Sschwarze.Ox 6.3 . 7188b174191Sschwarze.Pp 7198b174191Sschwarze.Fn X509_VERIFY_PARAM_set_auth_level 7208b174191Sschwarzefirst appeared in OpenSSL 1.1.0 and 7218b174191Sschwarze.Fn X509_VERIFY_PARAM_get_time 7228b174191Sschwarzein OpenSSL 1.1.0d. 7238b174191SschwarzeBoth functions have been available since 7248b174191Sschwarze.Ox 7.2 . 725b7f7f640Sschwarze.Sh BUGS 726b7f7f640SschwarzeDelta CRL checking is currently primitive. 727b7f7f640SschwarzeOnly a single delta can be used and (partly due to limitations of 728b7f7f640Sschwarze.Vt X509_STORE ) 729b7f7f640Sschwarzeconstructed CRLs are not maintained. 730b7f7f640Sschwarze.Pp 731b7f7f640SschwarzeIf CRLs checking is enabled, CRLs are expected to be available in 732b7f7f640Sschwarzethe corresponding 733b7f7f640Sschwarze.Vt X509_STORE 734b7f7f640Sschwarzestructure. 735b7f7f640SschwarzeNo attempt is made to download CRLs from the CRL distribution points 736b7f7f640Sschwarzeextension. 737