1*9732eb29Stb.\" $OpenBSD: X509_sign.3,v 1.11 2024/03/06 02:34:14 tb Exp $ 23da77284Sschwarze.\" full merge up to: OpenSSL df75c2bf Dec 9 01:02:36 2018 +0100 3561ae957Sschwarze.\" 4561ae957Sschwarze.\" This file was written by Dr. Stephen Henson <steve@openssl.org>. 5561ae957Sschwarze.\" Copyright (c) 2015, 2016 The OpenSSL Project. All rights reserved. 6561ae957Sschwarze.\" 7561ae957Sschwarze.\" Redistribution and use in source and binary forms, with or without 8561ae957Sschwarze.\" modification, are permitted provided that the following conditions 9561ae957Sschwarze.\" are met: 10561ae957Sschwarze.\" 11561ae957Sschwarze.\" 1. Redistributions of source code must retain the above copyright 12561ae957Sschwarze.\" notice, this list of conditions and the following disclaimer. 13561ae957Sschwarze.\" 14561ae957Sschwarze.\" 2. Redistributions in binary form must reproduce the above copyright 15561ae957Sschwarze.\" notice, this list of conditions and the following disclaimer in 16561ae957Sschwarze.\" the documentation and/or other materials provided with the 17561ae957Sschwarze.\" distribution. 18561ae957Sschwarze.\" 19561ae957Sschwarze.\" 3. All advertising materials mentioning features or use of this 20561ae957Sschwarze.\" software must display the following acknowledgment: 21561ae957Sschwarze.\" "This product includes software developed by the OpenSSL Project 22561ae957Sschwarze.\" for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 23561ae957Sschwarze.\" 24561ae957Sschwarze.\" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 25561ae957Sschwarze.\" endorse or promote products derived from this software without 26561ae957Sschwarze.\" prior written permission. For written permission, please contact 27561ae957Sschwarze.\" openssl-core@openssl.org. 28561ae957Sschwarze.\" 29561ae957Sschwarze.\" 5. Products derived from this software may not be called "OpenSSL" 30561ae957Sschwarze.\" nor may "OpenSSL" appear in their names without prior written 31561ae957Sschwarze.\" permission of the OpenSSL Project. 32561ae957Sschwarze.\" 33561ae957Sschwarze.\" 6. Redistributions of any form whatsoever must retain the following 34561ae957Sschwarze.\" acknowledgment: 35561ae957Sschwarze.\" "This product includes software developed by the OpenSSL Project 36561ae957Sschwarze.\" for use in the OpenSSL Toolkit (http://www.openssl.org/)" 37561ae957Sschwarze.\" 38561ae957Sschwarze.\" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 39561ae957Sschwarze.\" EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 40561ae957Sschwarze.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 41561ae957Sschwarze.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 42561ae957Sschwarze.\" ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 43561ae957Sschwarze.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 44561ae957Sschwarze.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 45561ae957Sschwarze.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 46561ae957Sschwarze.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 47561ae957Sschwarze.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 48561ae957Sschwarze.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 49561ae957Sschwarze.\" OF THE POSSIBILITY OF SUCH DAMAGE. 50561ae957Sschwarze.\" 51*9732eb29Stb.Dd $Mdocdate: March 6 2024 $ 52561ae957Sschwarze.Dt X509_SIGN 3 53561ae957Sschwarze.Os 54561ae957Sschwarze.Sh NAME 55561ae957Sschwarze.Nm X509_sign , 56561ae957Sschwarze.Nm X509_sign_ctx , 57561ae957Sschwarze.Nm X509_verify , 58561ae957Sschwarze.Nm X509_REQ_sign , 59561ae957Sschwarze.Nm X509_REQ_sign_ctx , 60561ae957Sschwarze.Nm X509_REQ_verify , 61561ae957Sschwarze.Nm X509_CRL_sign , 62561ae957Sschwarze.Nm X509_CRL_sign_ctx , 63561ae957Sschwarze.Nm X509_CRL_verify 64561ae957Sschwarze.Nd sign or verify certificate, certificate request, or CRL signature 65561ae957Sschwarze.Sh SYNOPSIS 66561ae957Sschwarze.In openssl/x509.h 67561ae957Sschwarze.Ft int 68561ae957Sschwarze.Fo X509_sign 69561ae957Sschwarze.Fa "X509 *x" 70561ae957Sschwarze.Fa "EVP_PKEY *pkey" 71561ae957Sschwarze.Fa "const EVP_MD *md" 72561ae957Sschwarze.Fc 73561ae957Sschwarze.Ft int 74561ae957Sschwarze.Fo X509_sign_ctx 75561ae957Sschwarze.Fa "X509 *x" 76561ae957Sschwarze.Fa "EVP_MD_CTX *ctx" 77561ae957Sschwarze.Fc 78561ae957Sschwarze.Ft int 79561ae957Sschwarze.Fo X509_verify 80561ae957Sschwarze.Fa "X509 *a" 81561ae957Sschwarze.Fa "EVP_PKEY *r" 82561ae957Sschwarze.Fc 83561ae957Sschwarze.Ft int 84561ae957Sschwarze.Fo X509_REQ_sign 85561ae957Sschwarze.Fa "X509_REQ *x" 86561ae957Sschwarze.Fa "EVP_PKEY *pkey" 87561ae957Sschwarze.Fa "const EVP_MD *md" 88561ae957Sschwarze.Fc 89561ae957Sschwarze.Ft int 90561ae957Sschwarze.Fo X509_REQ_sign_ctx 91561ae957Sschwarze.Fa "X509_REQ *x" 92561ae957Sschwarze.Fa "EVP_MD_CTX *ctx" 93561ae957Sschwarze.Fc 94561ae957Sschwarze.Ft int 95561ae957Sschwarze.Fo X509_REQ_verify 96561ae957Sschwarze.Fa "X509_REQ *a" 97561ae957Sschwarze.Fa "EVP_PKEY *r" 98561ae957Sschwarze.Fc 99561ae957Sschwarze.Ft int 100561ae957Sschwarze.Fo X509_CRL_sign 101561ae957Sschwarze.Fa "X509_CRL *x" 102561ae957Sschwarze.Fa "EVP_PKEY *pkey" 103561ae957Sschwarze.Fa "const EVP_MD *md" 104561ae957Sschwarze.Fc 105561ae957Sschwarze.Ft int 106561ae957Sschwarze.Fo X509_CRL_sign_ctx 107561ae957Sschwarze.Fa "X509_CRL *x" 108561ae957Sschwarze.Fa "EVP_MD_CTX *ctx" 109561ae957Sschwarze.Fc 110561ae957Sschwarze.Ft int 111561ae957Sschwarze.Fo X509_CRL_verify 112561ae957Sschwarze.Fa "X509_CRL *a" 113561ae957Sschwarze.Fa "EVP_PKEY *r" 114561ae957Sschwarze.Fc 115561ae957Sschwarze.Sh DESCRIPTION 116561ae957Sschwarze.Fn X509_sign 117561ae957Sschwarzesigns the certificate 118561ae957Sschwarze.Fa x 119561ae957Sschwarzeusing the private key 120561ae957Sschwarze.Fa pkey 121561ae957Sschwarzeand the message digest 122561ae957Sschwarze.Fa md 123561ae957Sschwarzeand sets the signature in 124561ae957Sschwarze.Fa x . 125561ae957Sschwarze.Fn X509_sign_ctx 126561ae957Sschwarzealso signs the certificate 127561ae957Sschwarze.Fa x 128561ae957Sschwarzebut uses the parameters contained in digest context 129561ae957Sschwarze.Fa ctx . 130561ae957Sschwarze.Pp 131561ae957Sschwarze.Fn X509_verify 132561ae957Sschwarzeverifies the signature of certificate 133561ae957Sschwarze.Fa x 134561ae957Sschwarzeusing the public key 135561ae957Sschwarze.Fa pkey . 136561ae957SschwarzeOnly the signature is checked: no other checks (such as certificate 137561ae957Sschwarzechain validity) are performed. 138561ae957Sschwarze.Pp 139561ae957Sschwarze.Fn X509_REQ_sign , 140561ae957Sschwarze.Fn X509_REQ_sign_ctx , 141561ae957Sschwarze.Fn X509_REQ_verify , 142561ae957Sschwarze.Fn X509_CRL_sign , 143561ae957Sschwarze.Fn X509_CRL_sign_ctx , 144561ae957Sschwarzeand 145561ae957Sschwarze.Fn X509_CRL_verify 146561ae957Sschwarzesign and verify certificate requests and CRLs, respectively. 147561ae957Sschwarze.Pp 148561ae957Sschwarze.Fn X509_sign_ctx 149561ae957Sschwarzeis used where the default parameters for the corresponding public key 150561ae957Sschwarzeand digest are not suitable. 151561ae957SschwarzeIt can be used to sign keys using RSA-PSS for example. 152561ae957Sschwarze.Sh RETURN VALUES 153561ae957Sschwarze.Fn X509_sign , 154561ae957Sschwarze.Fn X509_sign_ctx , 155561ae957Sschwarze.Fn X509_REQ_sign , 156561ae957Sschwarze.Fn X509_REQ_sign_ctx , 157561ae957Sschwarze.Fn X509_CRL_sign , 158561ae957Sschwarzeand 159561ae957Sschwarze.Fn X509_CRL_sign_ctx 160561ae957Sschwarzereturn the size of the signature in bytes for success or 0 for failure. 161561ae957Sschwarze.Pp 162561ae957Sschwarze.Fn X509_verify , 163561ae957Sschwarze.Fn X509_REQ_verify , 164561ae957Sschwarzeand 165561ae957Sschwarze.Fn X509_CRL_verify 166561ae957Sschwarzereturn 1 if the signature is valid or 0 if the signature check fails. 167561ae957SschwarzeIf the signature could not be checked at all because it was invalid or 168561ae957Sschwarzesome other error occurred, then -1 is returned. 169e94cb126Sschwarze.Pp 170e94cb126SschwarzeIn some cases of failure, the reason can be determined with 171e94cb126Sschwarze.Xr ERR_get_error 3 . 172561ae957Sschwarze.Sh SEE ALSO 173561ae957Sschwarze.Xr d2i_X509 3 , 17455c851a1Sschwarze.Xr EVP_DigestInit 3 , 175561ae957Sschwarze.Xr X509_CRL_get0_by_serial 3 , 176c4c55c71Sschwarze.Xr X509_CRL_new 3 , 177561ae957Sschwarze.Xr X509_get_pubkey 3 , 178561ae957Sschwarze.Xr X509_get_subject_name 3 , 179561ae957Sschwarze.Xr X509_get_version 3 , 180561ae957Sschwarze.Xr X509_NAME_add_entry_by_txt 3 , 181561ae957Sschwarze.Xr X509_NAME_ENTRY_get_object 3 , 182561ae957Sschwarze.Xr X509_NAME_get_index_by_NID 3 , 183561ae957Sschwarze.Xr X509_NAME_print_ex 3 , 184561ae957Sschwarze.Xr X509_new 3 , 185c4c55c71Sschwarze.Xr X509_REQ_new 3 , 186561ae957Sschwarze.Xr X509_verify_cert 3 , 187561ae957Sschwarze.Xr X509V3_get_d2i 3 188561ae957Sschwarze.Sh HISTORY 18910e00d17Sschwarze.Fn X509_verify 19010e00d17Sschwarzeappeared in SSLeay 0.4 or earlier. 19110e00d17Sschwarze.Fn X509_sign 19210e00d17Sschwarzeand 19310e00d17Sschwarze.Fn X509_REQ_sign 19410e00d17Sschwarzefirst appeared in SSLeay 0.4.4. 19510e00d17Sschwarze.Fn X509_REQ_verify 196561ae957Sschwarzeand 197d9d184f2Sschwarze.Fn X509_CRL_verify 19810e00d17Sschwarzefirst appeared in SSLeay 0.4.5b. 19910e00d17Sschwarze.Fn X509_CRL_sign 20010e00d17Sschwarzefirst appeared in SSLeay 0.5.1. 20110e00d17SschwarzeThese functions have been available since 202d9d184f2Sschwarze.Ox 2.4 . 203561ae957Sschwarze.Pp 204561ae957Sschwarze.Fn X509_sign_ctx , 205561ae957Sschwarze.Fn X509_REQ_sign_ctx , 206561ae957Sschwarzeand 207561ae957Sschwarze.Fn X509_CRL_sign_ctx 208df23f274Sschwarzefirst appeared in OpenSSL 1.0.1 and have been available since 209df23f274Sschwarze.Ox 5.3 . 210