summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3
diff options
context:
space:
mode:
authorschwarze <>2019-11-01 12:02:58 +0000
committerschwarze <>2019-11-01 12:02:58 +0000
commitfbb97d76023f4ba8673003591e0bebf11559971b (patch)
tree1f232c188891f67b6d0a83b05dded6fdc2d84581 /src/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3
parentaa6bf6cdd35969680ddc4295131946553be74e62 (diff)
downloadopenbsd-fbb97d76023f4ba8673003591e0bebf11559971b.tar.gz
openbsd-fbb97d76023f4ba8673003591e0bebf11559971b.tar.bz2
openbsd-fbb97d76023f4ba8673003591e0bebf11559971b.zip
The EVP_PKEY_CTX_ctrl(3) manual page requires additions for RSA-PSS
but it is growing to excessive size, so split out RSA_pkey_ctx_ctrl(3).
Diffstat (limited to 'src/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3')
-rw-r--r--src/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3271
1 files changed, 7 insertions, 264 deletions
diff --git a/src/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3 b/src/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3
index b9332a7ec1..2bb6a3fd3b 100644
--- a/src/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3
+++ b/src/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3
@@ -1,6 +1,7 @@
1.\" $OpenBSD: EVP_PKEY_CTX_ctrl.3,v 1.20 2019/10/31 14:29:41 schwarze Exp $ 1.\" $OpenBSD: EVP_PKEY_CTX_ctrl.3,v 1.21 2019/11/01 12:02:58 schwarze Exp $
2.\" full merge up to: OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400 2.\" full merge up to: OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400
3.\" selective merge up to: OpenSSL df75c2bf Dec 9 01:02:36 2018 +0100 3.\" selective merge up to: OpenSSL df75c2bf Dec 9 01:02:36 2018 +0100
4.\" Parts were split out into RSA_pkey_ctx_ctrl(3).
4.\" 5.\"
5.\" This file was written by Dr. Stephen Henson <steve@openssl.org> 6.\" This file was written by Dr. Stephen Henson <steve@openssl.org>
6.\" and Antoine Salon <asalon@vmware.com>. 7.\" and Antoine Salon <asalon@vmware.com>.
@@ -51,7 +52,7 @@
51.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 52.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
52.\" OF THE POSSIBILITY OF SUCH DAMAGE. 53.\" OF THE POSSIBILITY OF SUCH DAMAGE.
53.\" 54.\"
54.Dd $Mdocdate: October 31 2019 $ 55.Dd $Mdocdate: November 1 2019 $
55.Dt EVP_PKEY_CTX_CTRL 3 56.Dt EVP_PKEY_CTX_CTRL 3
56.Os 57.Os
57.Sh NAME 58.Sh NAME
@@ -59,19 +60,6 @@
59.Nm EVP_PKEY_CTX_ctrl_str , 60.Nm EVP_PKEY_CTX_ctrl_str ,
60.Nm EVP_PKEY_CTX_set_signature_md , 61.Nm EVP_PKEY_CTX_set_signature_md ,
61.Nm EVP_PKEY_CTX_get_signature_md , 62.Nm EVP_PKEY_CTX_get_signature_md ,
62.Nm RSA_pkey_ctx_ctrl ,
63.Nm EVP_PKEY_CTX_set_rsa_padding ,
64.Nm EVP_PKEY_CTX_get_rsa_padding ,
65.Nm EVP_PKEY_CTX_set_rsa_pss_saltlen ,
66.Nm EVP_PKEY_CTX_get_rsa_pss_saltlen ,
67.Nm EVP_PKEY_CTX_set_rsa_keygen_bits ,
68.Nm EVP_PKEY_CTX_set_rsa_keygen_pubexp ,
69.Nm EVP_PKEY_CTX_set_rsa_mgf1_md ,
70.Nm EVP_PKEY_CTX_get_rsa_mgf1_md ,
71.Nm EVP_PKEY_CTX_set_rsa_oaep_md ,
72.Nm EVP_PKEY_CTX_get_rsa_oaep_md ,
73.Nm EVP_PKEY_CTX_set0_rsa_oaep_label ,
74.Nm EVP_PKEY_CTX_get0_rsa_oaep_label ,
75.Nm EVP_PKEY_CTX_set_dsa_paramgen_bits , 63.Nm EVP_PKEY_CTX_set_dsa_paramgen_bits ,
76.Nm EVP_PKEY_CTX_set_dh_paramgen_prime_len , 64.Nm EVP_PKEY_CTX_set_dh_paramgen_prime_len ,
77.Nm EVP_PKEY_CTX_set_dh_paramgen_generator , 65.Nm EVP_PKEY_CTX_set_dh_paramgen_generator ,
@@ -118,76 +106,6 @@
118.Fa "EVP_PKEY_CTX *ctx" 106.Fa "EVP_PKEY_CTX *ctx"
119.Fa "const EVP_MD **pmd" 107.Fa "const EVP_MD **pmd"
120.Fc 108.Fc
121.In openssl/rsa.h
122.Ft int
123.Fo RSA_pkey_ctx_ctrl
124.Fa "EVP_PKEY_CTX *ctx"
125.Fa "int optype"
126.Fa "int cmd"
127.Fa "int p1"
128.Fa "void *p2"
129.Fc
130.Ft int
131.Fo EVP_PKEY_CTX_set_rsa_padding
132.Fa "EVP_PKEY_CTX *ctx"
133.Fa "int pad"
134.Fc
135.Ft int
136.Fo EVP_PKEY_CTX_get_rsa_padding
137.Fa "EVP_PKEY_CTX *ctx"
138.Fa "int *ppad"
139.Fc
140.Ft int
141.Fo EVP_PKEY_CTX_set_rsa_pss_saltlen
142.Fa "EVP_PKEY_CTX *ctx"
143.Fa "int len"
144.Fc
145.Ft int
146.Fo EVP_PKEY_CTX_get_rsa_pss_saltlen
147.Fa "EVP_PKEY_CTX *ctx"
148.Fa "int *plen"
149.Fc
150.Ft int
151.Fo EVP_PKEY_CTX_set_rsa_keygen_bits
152.Fa "EVP_PKEY_CTX *ctx"
153.Fa "int mbits"
154.Fc
155.Ft int
156.Fo EVP_PKEY_CTX_set_rsa_keygen_pubexp
157.Fa "EVP_PKEY_CTX *ctx"
158.Fa "BIGNUM *pubexp"
159.Fc
160.Ft int
161.Fo EVP_PKEY_CTX_set_rsa_mgf1_md
162.Fa "EVP_PKEY_CTX *ctx"
163.Fa "const EVP_MD *md"
164.Fc
165.Ft int
166.Fo EVP_PKEY_CTX_get_rsa_mgf1_md
167.Fa "EVP_PKEY_CTX *ctx"
168.Fa "const EVP_MD **pmd"
169.Fc
170.Ft int
171.Fo EVP_PKEY_CTX_set_rsa_oaep_md
172.Fa "EVP_PKEY_CTX *ctx"
173.Fa "const EVP_MD *md"
174.Fc
175.Ft int
176.Fo EVP_PKEY_CTX_get_rsa_oaep_md
177.Fa "EVP_PKEY_CTX *ctx"
178.Fa "const EVP_MD **pmd"
179.Fc
180.Ft int
181.Fo EVP_PKEY_CTX_set0_rsa_oaep_label
182.Fa "EVP_PKEY_CTX *ctx"
183.Fa "unsigned char *label"
184.Fa "int len"
185.Fc
186.Ft int
187.Fo EVP_PKEY_CTX_get0_rsa_oaep_label
188.Fa "EVP_PKEY_CTX *ctx"
189.Fa "unsigned char **plabel"
190.Fc
191.In openssl/dsa.h 109.In openssl/dsa.h
192.Ft int 110.Ft int
193.Fo EVP_PKEY_CTX_set_dsa_paramgen_bits 111.Fo EVP_PKEY_CTX_set_dsa_paramgen_bits
@@ -302,7 +220,8 @@ and
302Applications will not normally call 220Applications will not normally call
303.Fn EVP_PKEY_CTX_ctrl 221.Fn EVP_PKEY_CTX_ctrl
304directly but will instead call one of the algorithm specific macros 222directly but will instead call one of the algorithm specific macros
305below. 223described below and in
224.Xr RSA_pkey_ctx_ctrl 3 .
306.Pp 225.Pp
307The function 226The function
308.Fn EVP_PKEY_CTX_ctrl_str 227.Fn EVP_PKEY_CTX_ctrl_str
@@ -331,156 +250,6 @@ and
331.Fn EVP_PKEY_CTX_get_signature_md 250.Fn EVP_PKEY_CTX_get_signature_md
332macros set and get the message digest type used in a signature. 251macros set and get the message digest type used in a signature.
333They can be used with the RSA, DSA, and ECDSA algorithms. 252They can be used with the RSA, DSA, and ECDSA algorithms.
334.Ss RSA parameters
335The
336.Fn RSA_pkey_ctx_ctrl
337function is a shallow wrapper around
338.Fn EVP_PKEY_CTX_ctrl
339which only succeeds if
340.Fa ctx
341matches either
342.Dv EVP_PKEY_RSA
343or
344.Dv EVP_PKEY_RSA_PSS .
345.Pp
346The
347.Fn EVP_PKEY_CTX_set_rsa_padding
348macro sets the RSA padding mode for
349.Fa ctx .
350The
351.Fa pad
352parameter can take the value
353.Dv RSA_PKCS1_PADDING
354for PKCS#1 padding,
355.Dv RSA_NO_PADDING
356for no padding,
357.Dv RSA_PKCS1_OAEP_PADDING
358for OAEP padding (encrypt and decrypt only),
359.Dv RSA_X931_PADDING
360for X9.31 padding (signature operations only) and
361.Dv RSA_PKCS1_PSS_PADDING
362(sign and verify only).
363.Pp
364Two RSA padding modes behave differently if
365.Fn EVP_PKEY_CTX_set_signature_md
366is used.
367If this macro is called for PKCS#1 padding, the plaintext buffer is an
368actual digest value and is encapsulated in a
369.Vt DigestInfo
370structure according to PKCS#1 when signing and this structure is
371expected (and stripped off) when verifying.
372If this control is not used with RSA and PKCS#1 padding then the
373supplied data is used directly and not encapsulated.
374In the case of X9.31 padding for RSA the algorithm identifier byte is
375added or checked and removed if this control is called.
376If it is not called then the first byte of the plaintext buffer is
377expected to be the algorithm identifier byte.
378.Pp
379The
380.Fn EVP_PKEY_CTX_get_rsa_padding
381macro retrieves the RSA padding mode for
382.Fa ctx .
383.Pp
384The
385.Fn EVP_PKEY_CTX_set_rsa_pss_saltlen
386macro sets the RSA PSS salt length to
387.Fa len .
388As its name implies, it is only supported for PSS padding.
389Two special values are supported: -1 sets the salt length to the digest
390length.
391When signing -2 sets the salt length to the maximum permissible value.
392When verifying -2 causes the salt length to be automatically determined
393based on the PSS block structure.
394If this macro is not called a salt length value of -2 is used by
395default.
396.Pp
397The
398.Fn EVP_PKEY_CTX_get_rsa_pss_saltlen
399macro retrieves the RSA PSS salt length for
400.Fa ctx .
401The padding mode must have been set to
402.Dv RSA_PKCS1_PSS_PADDING .
403.Pp
404The
405.Fn EVP_PKEY_CTX_set_rsa_keygen_bits
406macro sets the RSA key length for RSA key generation to
407.Fa mbits .
408The smallest supported value is 512 bits.
409If not specified, 1024 bits is used.
410.Pp
411The
412.Fn EVP_PKEY_CTX_set_rsa_keygen_pubexp
413macro sets the public exponent value for RSA key generation to
414.Fa pubexp .
415Currently, it should be an odd integer.
416The
417.Fa pubexp
418pointer is used internally by this function, so it should not be modified
419or freed after the call.
420If this macro is not called, then 65537 is used.
421.Pp
422The
423.Fn EVP_PKEY_CTX_set_rsa_mgf1_md
424macro sets the MGF1 digest for RSA padding schemes to
425.Fa md .
426Unless explicitly specified, the signing digest is used.
427The padding mode must have been set to
428.Dv RSA_PKCS1_OAEP_PADDING
429or
430.Dv RSA_PKCS1_PSS_PADDING .
431.Pp
432The
433.Fn EVP_PKEY_CTX_get_rsa_mgf1_md
434macro retrieves the MGF1 digest for
435.Fa ctx .
436Unless explicitly specified, the signing digest is used.
437The padding mode must have been set to
438.Dv RSA_PKCS1_OAEP_PADDING
439or
440.Dv RSA_PKCS1_PSS_PADDING .
441.Pp
442The
443.Fn EVP_PKEY_CTX_set_rsa_oaep_md
444macro sets the message digest type used in RSA OAEP to
445.Fa md .
446The padding mode must have been set to
447.Dv RSA_PKCS1_OAEP_PADDING .
448.Pp
449The
450.Fn EVP_PKEY_CTX_get_rsa_oaep_md
451macro gets the message digest type used in RSA OAEP to
452.Pf * Fa md .
453The padding mode must have been set to
454.Dv RSA_PKCS1_OAEP_PADDING .
455.Pp
456The
457.Fn EVP_PKEY_CTX_set0_rsa_oaep_label
458macro sets the RSA OAEP label to
459.Fa label
460and its length to
461.Fa len .
462If
463.Fa label
464is
465.Dv NULL
466or
467.Fa len
468is 0, the label is cleared.
469The library takes ownership of the label so the caller should not
470free the original memory pointed to by
471.Fa label .
472The padding mode must have been set to
473.Dv RSA_PKCS1_OAEP_PADDING .
474.Pp
475The
476.Fn EVP_PKEY_CTX_get0_rsa_oaep_label
477macro gets the RSA OAEP label to
478.Pf * Fa plabel .
479The return value is the label length.
480The padding mode must have been set to
481.Dv RSA_PKCS1_OAEP_PADDING .
482The resulting pointer is owned by the library and should not be
483freed by the caller.
484.Ss DSA parameters 253.Ss DSA parameters
485The macro 254The macro
486.Fn EVP_PKEY_CTX_set_dsa_paramgen_bits 255.Fn EVP_PKEY_CTX_set_dsa_paramgen_bits
@@ -652,16 +421,13 @@ supported by the public key algorithm.
652.Xr EVP_PKEY_meth_set_ctrl 3 , 421.Xr EVP_PKEY_meth_set_ctrl 3 ,
653.Xr EVP_PKEY_sign 3 , 422.Xr EVP_PKEY_sign 3 ,
654.Xr EVP_PKEY_verify 3 , 423.Xr EVP_PKEY_verify 3 ,
655.Xr EVP_PKEY_verify_recover 3 424.Xr EVP_PKEY_verify_recover 3 ,
425.Xr RSA_pkey_ctx_ctrl 3
656.Sh HISTORY 426.Sh HISTORY
657The functions 427The functions
658.Fn EVP_PKEY_CTX_ctrl , 428.Fn EVP_PKEY_CTX_ctrl ,
659.Fn EVP_PKEY_CTX_ctrl_str , 429.Fn EVP_PKEY_CTX_ctrl_str ,
660.Fn EVP_PKEY_CTX_set_signature_md , 430.Fn EVP_PKEY_CTX_set_signature_md ,
661.Fn EVP_PKEY_CTX_set_rsa_padding ,
662.Fn EVP_PKEY_CTX_set_rsa_pss_saltlen ,
663.Fn EVP_PKEY_CTX_set_rsa_keygen_bits ,
664.Fn EVP_PKEY_CTX_set_rsa_keygen_pubexp ,
665.Fn EVP_PKEY_CTX_set_dsa_paramgen_bits , 431.Fn EVP_PKEY_CTX_set_dsa_paramgen_bits ,
666.Fn EVP_PKEY_CTX_set_dh_paramgen_prime_len , 432.Fn EVP_PKEY_CTX_set_dh_paramgen_prime_len ,
667.Fn EVP_PKEY_CTX_set_dh_paramgen_generator , 433.Fn EVP_PKEY_CTX_set_dh_paramgen_generator ,
@@ -671,15 +437,6 @@ first appeared in OpenSSL 1.0.0 and have been available since
671.Ox 4.9 . 437.Ox 4.9 .
672.Pp 438.Pp
673The functions 439The functions
674.Fn EVP_PKEY_CTX_get_rsa_padding ,
675.Fn EVP_PKEY_CTX_get_rsa_pss_saltlen ,
676.Fn EVP_PKEY_CTX_set_rsa_mgf1_md ,
677and
678.Fn EVP_PKEY_CTX_get_rsa_mgf1_md
679first appeared in OpenSSL 1.0.1 and have been available since
680.Ox 5.3 .
681.Pp
682The functions
683.Fn EVP_PKEY_CTX_get_signature_md , 440.Fn EVP_PKEY_CTX_get_signature_md ,
684.Fn EVP_PKEY_CTX_set_ec_param_enc , 441.Fn EVP_PKEY_CTX_set_ec_param_enc ,
685.Fn EVP_PKEY_CTX_set_ecdh_cofactor_mode , 442.Fn EVP_PKEY_CTX_set_ecdh_cofactor_mode ,
@@ -703,17 +460,3 @@ and
703.Fn EVP_PKEY_CTX_get1_id_len 460.Fn EVP_PKEY_CTX_get1_id_len
704first appeared in OpenSSL 1.1.1 and have been available since 461first appeared in OpenSSL 1.1.1 and have been available since
705.Ox 6.6 . 462.Ox 6.6 .
706.Pp
707The functions
708.Fn EVP_PKEY_CTX_set_rsa_oaep_md ,
709.Fn EVP_PKEY_CTX_get_rsa_oaep_md ,
710.Fn EVP_PKEY_CTX_set0_rsa_oaep_label ,
711and
712.Fn EVP_PKEY_CTX_get0_rsa_oaep_label
713first appeared in OpenSSL 1.0.2 and have been available since
714.Ox 6.7 .
715.Pp
716The function
717.Fn RSA_pkey_ctx_ctrl
718first appeared in OpenSSL 1.1.1 and has been available since
719.Ox 6.7 .