~ubuntu-branches/ubuntu/utopic/openssl/utopic

« back to all changes in this revision

Viewing changes to doc/crypto/EVP_PKEY_decrypt.pod

  • Committer: Bazaar Package Importer
  • Author(s): Kurt Roeckx
  • Date: 2011-04-02 13:19:19 UTC
  • mfrom: (1.2.1 upstream) (11.2.2 experimental)
  • mto: This revision was merged to the branch mainline in revision 55.
  • Revision ID: james.westby@ubuntu.com-20110402131919-anszuslper64ey9e
Tags: 1.0.0d-1
* New upstream version
  - Fixes CVE-2011-0014
* Make libssl-doc Replaces/Breaks with old libssl-dev packages
  (Closes: #607609)
* Only export the symbols we should, instead of all.
* Add symbol file.
* Upload to unstable

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
=pod
 
2
 
 
3
=head1 NAME
 
4
 
 
5
EVP_PKEY_decrypt_init, EVP_PKEY_decrypt - decrypt using a public key algorithm
 
6
 
 
7
=head1 SYNOPSIS
 
8
 
 
9
 #include <openssl/evp.h>
 
10
 
 
11
 int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx);
 
12
 int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx,
 
13
                        unsigned char *out, size_t *outlen,
 
14
                        const unsigned char *in, size_t inlen);
 
15
 
 
16
=head1 DESCRIPTION
 
17
 
 
18
The EVP_PKEY_decrypt_init() function initializes a public key algorithm
 
19
context using key B<pkey> for a decryption operation.
 
20
 
 
21
The EVP_PKEY_decrypt() function performs a public key decryption operation
 
22
using B<ctx>. The data to be decrypted is specified using the B<in> and
 
23
B<inlen> parameters. If B<out> is B<NULL> then the maximum size of the output
 
24
buffer is written to the B<outlen> parameter. If B<out> is not B<NULL> then
 
25
before the call the B<outlen> parameter should contain the length of the
 
26
B<out> buffer, if the call is successful the decrypted data is written to
 
27
B<out> and the amount of data written to B<outlen>.
 
28
 
 
29
=head1 NOTES
 
30
 
 
31
After the call to EVP_PKEY_decrypt_init() algorithm specific control
 
32
operations can be performed to set any appropriate parameters for the
 
33
operation.
 
34
 
 
35
The function EVP_PKEY_decrypt() can be called more than once on the same
 
36
context if several operations are performed using the same parameters.
 
37
 
 
38
=head1 RETURN VALUES
 
39
 
 
40
EVP_PKEY_decrypt_init() and EVP_PKEY_decrypt() return 1 for success and 0
 
41
or a negative value for failure. In particular a return value of -2
 
42
indicates the operation is not supported by the public key algorithm.
 
43
 
 
44
=head1 EXAMPLE
 
45
 
 
46
Decrypt data using OAEP (for RSA keys):
 
47
 
 
48
 #include <openssl/evp.h>
 
49
 #include <openssl/rsa.h>
 
50
 
 
51
 EVP_PKEY_CTX *ctx;
 
52
 unsigned char *out, *in;
 
53
 size_t outlen, inlen; 
 
54
 EVP_PKEY *key;
 
55
 /* NB: assumes key in, inlen are already set up
 
56
  * and that key is an RSA private key
 
57
  */
 
58
 ctx = EVP_PKEY_CTX_new(key);
 
59
 if (!ctx)
 
60
        /* Error occurred */
 
61
 if (EVP_PKEY_decrypt_init(ctx) <= 0)
 
62
        /* Error */
 
63
 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_OAEP_PADDING) <= 0)
 
64
        /* Error */
 
65
 
 
66
 /* Determine buffer length */
 
67
 if (EVP_PKEY_decrypt(ctx, NULL, &outlen, in, inlen) <= 0)
 
68
        /* Error */
 
69
 
 
70
 out = OPENSSL_malloc(outlen);
 
71
 
 
72
 if (!out)
 
73
        /* malloc failure */
 
74
 
 
75
 if (EVP_PKEY_decrypt(ctx, out, &outlen, in, inlen) <= 0)
 
76
        /* Error */
 
77
 
 
78
 /* Decrypted data is outlen bytes written to buffer out */
 
79
 
 
80
=head1 SEE ALSO
 
81
 
 
82
L<EVP_PKEY_CTX_new(3)|EVP_PKEY_CTX_new(3)>,
 
83
L<EVP_PKEY_encrypt(3)|EVP_PKEY_encrypt(3)>,
 
84
L<EVP_PKEY_sign(3)|EVP_PKEY_sign(3)>,
 
85
L<EVP_PKEY_verify(3)|EVP_PKEY_verify(3)>,
 
86
L<EVP_PKEY_verifyrecover(3)|EVP_PKEY_verifyrecover(3)>,
 
87
L<EVP_PKEY_derive(3)|EVP_PKEY_derive(3)> 
 
88
 
 
89
=head1 HISTORY
 
90
 
 
91
These functions were first added to OpenSSL 1.0.0.
 
92
 
 
93
=cut