]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man3/EVP_PKEY_verify.pod
Update copyright year
[thirdparty/openssl.git] / doc / man3 / EVP_PKEY_verify.pod
CommitLineData
6535bd42
DSH
1=pod
2
3=head1 NAME
4
ee22fca5 5EVP_PKEY_verify_init, EVP_PKEY_verify_init_ex, EVP_PKEY_verify
11031468 6- signature verification using a public key algorithm
6535bd42
DSH
7
8=head1 SYNOPSIS
9
10 #include <openssl/evp.h>
11
12 int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx);
ee22fca5 13 int EVP_PKEY_verify_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
6535bd42 14 int EVP_PKEY_verify(EVP_PKEY_CTX *ctx,
e9b77246
BB
15 const unsigned char *sig, size_t siglen,
16 const unsigned char *tbs, size_t tbslen);
6535bd42
DSH
17
18=head1 DESCRIPTION
19
0e521004
RL
20EVP_PKEY_verify_init() initializes a public key algorithm context I<ctx> for
21signing using the algorithm given when the context was created
22using L<EVP_PKEY_CTX_new(3)> or variants thereof. The algorithm is used to
23fetch a B<EVP_SIGNATURE> method implicitly, see L<provider(7)/Implicit fetch>
8c1cbc72 24for more information about implicit fetches.
6535bd42 25
ee22fca5
P
26EVP_PKEY_verify_init_ex() is the same as EVP_PKEY_verify_init() but additionally
27sets the passed parameters I<params> on the context before returning.
28
6535bd42 29The EVP_PKEY_verify() function performs a public key verification operation
0e521004
RL
30using I<ctx>. The signature is specified using the I<sig> and
31I<siglen> parameters. The verified data (i.e. the data believed originally
32signed) is specified using the I<tbs> and I<tbslen> parameters.
6535bd42
DSH
33
34=head1 NOTES
35
36After the call to EVP_PKEY_verify_init() algorithm specific control
37operations can be performed to set any appropriate parameters for the
38operation.
39
40The function EVP_PKEY_verify() can be called more than once on the same
41context if several operations are performed using the same parameters.
42
43=head1 RETURN VALUES
44
29cf84c6
DSH
45EVP_PKEY_verify_init() and EVP_PKEY_verify() return 1 if the verification was
46successful and 0 if it failed. Unlike other functions the return value 0 from
a970b14f 47EVP_PKEY_verify() only indicates that the signature did not verify
29cf84c6
DSH
48successfully (that is tbs did not match the original data or the signature was
49of invalid form) it is not an indication of a more serious error.
6535bd42
DSH
50
51A negative value indicates an error other that signature verification failure.
52In particular a return value of -2 indicates the operation is not supported by
53the public key algorithm.
54
cda77422 55=head1 EXAMPLES
6535bd42
DSH
56
57Verify signature using PKCS#1 and SHA256 digest:
58
43636910
DSH
59 #include <openssl/evp.h>
60 #include <openssl/rsa.h>
61
62 EVP_PKEY_CTX *ctx;
63 unsigned char *md, *sig;
1bc74519 64 size_t mdlen, siglen;
43636910 65 EVP_PKEY *verify_key;
e9b77246 66
2947af32
BB
67 /*
68 * NB: assumes verify_key, sig, siglen md and mdlen are already set up
43636910
DSH
69 * and that verify_key is an RSA public key
70 */
9db6673e 71 ctx = EVP_PKEY_CTX_new(verify_key, NULL /* no engine */);
43636910 72 if (!ctx)
2947af32 73 /* Error occurred */
43636910 74 if (EVP_PKEY_verify_init(ctx) <= 0)
2947af32 75 /* Error */
43636910 76 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING) <= 0)
2947af32 77 /* Error */
43636910 78 if (EVP_PKEY_CTX_set_signature_md(ctx, EVP_sha256()) <= 0)
2947af32 79 /* Error */
43636910
DSH
80
81 /* Perform operation */
6f413ef4 82 ret = EVP_PKEY_verify(ctx, sig, siglen, md, mdlen);
43636910 83
2947af32
BB
84 /*
85 * ret == 1 indicates success, 0 verify failure and < 0 for some
43636910
DSH
86 * other error.
87 */
6535bd42
DSH
88
89=head1 SEE ALSO
90
9b86974e
RS
91L<EVP_PKEY_CTX_new(3)>,
92L<EVP_PKEY_encrypt(3)>,
93L<EVP_PKEY_decrypt(3)>,
94L<EVP_PKEY_sign(3)>,
95L<EVP_PKEY_verify_recover(3)>,
1bc74519 96L<EVP_PKEY_derive(3)>
6535bd42
DSH
97
98=head1 HISTORY
99
ee22fca5
P
100The EVP_PKEY_verify_init() and EVP_PKEY_verify() functions were added in
101OpenSSL 1.0.0.
102
103The EVP_PKEY_verify_init_ex() function was added in OpenSSL 3.0.
6535bd42 104
e2f92610
RS
105=head1 COPYRIGHT
106
3c2bdd7d 107Copyright 2006-2021 The OpenSSL Project Authors. All Rights Reserved.
e2f92610 108
4746f25a 109Licensed under the Apache License 2.0 (the "License"). You may not use
e2f92610
RS
110this file except in compliance with the License. You can obtain a copy
111in the file LICENSE in the source distribution or at
112L<https://www.openssl.org/source/license.html>.
113
114=cut