diff options
Diffstat (limited to 'src/lib/libcrypto/man')
-rw-r--r-- | src/lib/libcrypto/man/Makefile | 32 | ||||
-rw-r--r-- | src/lib/libcrypto/man/RSA_blinding_on.3 | 46 | ||||
-rw-r--r-- | src/lib/libcrypto/man/RSA_check_key.3 | 97 | ||||
-rw-r--r-- | src/lib/libcrypto/man/RSA_generate_key.3 | 105 | ||||
-rw-r--r-- | src/lib/libcrypto/man/RSA_get_ex_new_index.3 | 227 | ||||
-rw-r--r-- | src/lib/libcrypto/man/RSA_new.3 | 46 | ||||
-rw-r--r-- | src/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3 | 197 | ||||
-rw-r--r-- | src/lib/libcrypto/man/RSA_print.3 | 91 | ||||
-rw-r--r-- | src/lib/libcrypto/man/RSA_private_encrypt.3 | 97 | ||||
-rw-r--r-- | src/lib/libcrypto/man/RSA_public_encrypt.3 | 108 | ||||
-rw-r--r-- | src/lib/libcrypto/man/RSA_set_method.3 | 339 | ||||
-rw-r--r-- | src/lib/libcrypto/man/RSA_sign.3 | 103 | ||||
-rw-r--r-- | src/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3 | 81 | ||||
-rw-r--r-- | src/lib/libcrypto/man/RSA_size.3 | 27 | ||||
-rw-r--r-- | src/lib/libcrypto/man/d2i_RSAPublicKey.3 | 101 | ||||
-rw-r--r-- | src/lib/libcrypto/man/rsa.3 | 238 |
16 files changed, 1919 insertions, 16 deletions
diff --git a/src/lib/libcrypto/man/Makefile b/src/lib/libcrypto/man/Makefile index 0b3a08a7d3..8bc8ffb6aa 100644 --- a/src/lib/libcrypto/man/Makefile +++ b/src/lib/libcrypto/man/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: Makefile,v 1.44 2016/11/03 15:48:22 schwarze Exp $ | 1 | # $OpenBSD: Makefile,v 1.45 2016/11/04 10:17:17 schwarze Exp $ |
2 | 2 | ||
3 | .include <bsd.own.mk> # for NOMAN | 3 | .include <bsd.own.mk> # for NOMAN |
4 | 4 | ||
@@ -137,6 +137,19 @@ MAN= \ | |||
137 | RAND_cleanup.3 \ | 137 | RAND_cleanup.3 \ |
138 | RAND_load_file.3 \ | 138 | RAND_load_file.3 \ |
139 | RAND_set_rand_method.3 \ | 139 | RAND_set_rand_method.3 \ |
140 | RSA_blinding_on.3 \ | ||
141 | RSA_check_key.3 \ | ||
142 | RSA_generate_key.3 \ | ||
143 | RSA_get_ex_new_index.3 \ | ||
144 | RSA_new.3 \ | ||
145 | RSA_padding_add_PKCS1_type_1.3 \ | ||
146 | RSA_print.3 \ | ||
147 | RSA_private_encrypt.3 \ | ||
148 | RSA_public_encrypt.3 \ | ||
149 | RSA_set_method.3 \ | ||
150 | RSA_sign.3 \ | ||
151 | RSA_sign_ASN1_OCTET_STRING.3 \ | ||
152 | RSA_size.3 \ | ||
140 | SMIME_read_PKCS7.3 \ | 153 | SMIME_read_PKCS7.3 \ |
141 | SMIME_write_PKCS7.3 \ | 154 | SMIME_write_PKCS7.3 \ |
142 | UI_new.3 \ | 155 | UI_new.3 \ |
@@ -144,27 +157,16 @@ MAN= \ | |||
144 | crypto.3 \ | 157 | crypto.3 \ |
145 | d2i_ASN1_OBJECT.3 \ | 158 | d2i_ASN1_OBJECT.3 \ |
146 | d2i_PKCS8PrivateKey_bio.3 \ | 159 | d2i_PKCS8PrivateKey_bio.3 \ |
160 | d2i_RSAPublicKey.3 \ | ||
147 | des_read_pw.3 \ | 161 | des_read_pw.3 \ |
148 | evp.3 \ | 162 | evp.3 \ |
149 | i2d_PKCS7_bio_stream.3 \ | 163 | i2d_PKCS7_bio_stream.3 \ |
150 | lh_new.3 \ | 164 | lh_new.3 \ |
165 | rsa.3 \ | ||
151 | 166 | ||
152 | GENMAN= \ | 167 | GENMAN= \ |
153 | RC4.3 \ | 168 | RC4.3 \ |
154 | RIPEMD160.3 \ | 169 | RIPEMD160.3 \ |
155 | RSA_blinding_on.3 \ | ||
156 | RSA_check_key.3 \ | ||
157 | RSA_generate_key.3 \ | ||
158 | RSA_get_ex_new_index.3 \ | ||
159 | RSA_new.3 \ | ||
160 | RSA_padding_add_PKCS1_type_1.3 \ | ||
161 | RSA_print.3 \ | ||
162 | RSA_private_encrypt.3 \ | ||
163 | RSA_public_encrypt.3 \ | ||
164 | RSA_set_method.3 \ | ||
165 | RSA_sign.3 \ | ||
166 | RSA_sign_ASN1_OCTET_STRING.3 \ | ||
167 | RSA_size.3 \ | ||
168 | SHA1.3 \ | 170 | SHA1.3 \ |
169 | X509_NAME_ENTRY_get_object.3 \ | 171 | X509_NAME_ENTRY_get_object.3 \ |
170 | X509_NAME_add_entry_by_txt.3 \ | 172 | X509_NAME_add_entry_by_txt.3 \ |
@@ -182,7 +184,6 @@ GENMAN= \ | |||
182 | d2i_DHparams.3 \ | 184 | d2i_DHparams.3 \ |
183 | d2i_DSAPublicKey.3 \ | 185 | d2i_DSAPublicKey.3 \ |
184 | d2i_ECPKParameters.3 \ | 186 | d2i_ECPKParameters.3 \ |
185 | d2i_RSAPublicKey.3 \ | ||
186 | d2i_X509.3 \ | 187 | d2i_X509.3 \ |
187 | d2i_X509_ALGOR.3 \ | 188 | d2i_X509_ALGOR.3 \ |
188 | d2i_X509_CRL.3 \ | 189 | d2i_X509_CRL.3 \ |
@@ -194,7 +195,6 @@ GENMAN= \ | |||
194 | ec.3 \ | 195 | ec.3 \ |
195 | engine.3 \ | 196 | engine.3 \ |
196 | lh_stats.3 \ | 197 | lh_stats.3 \ |
197 | rsa.3 \ | ||
198 | x509.3 \ | 198 | x509.3 \ |
199 | 199 | ||
200 | MAN+= ${GENMAN} | 200 | MAN+= ${GENMAN} |
diff --git a/src/lib/libcrypto/man/RSA_blinding_on.3 b/src/lib/libcrypto/man/RSA_blinding_on.3 new file mode 100644 index 0000000000..a2d22c9093 --- /dev/null +++ b/src/lib/libcrypto/man/RSA_blinding_on.3 | |||
@@ -0,0 +1,46 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt RSA_BLINDING_ON 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm RSA_blinding_on , | ||
6 | .Nm RSA_blinding_off | ||
7 | .Nd protect the RSA operation from timing attacks | ||
8 | .Sh SYNOPSIS | ||
9 | .In openssl/rsa.h | ||
10 | .Ft int | ||
11 | .Fo RSA_blinding_on | ||
12 | .Fa "RSA *rsa" | ||
13 | .Fa "BN_CTX *ctx" | ||
14 | .Fc | ||
15 | .Ft void | ||
16 | .Fo RSA_blinding_off | ||
17 | .Fa "RSA *rsa" | ||
18 | .Fc | ||
19 | .Sh DESCRIPTION | ||
20 | RSA is vulnerable to timing attacks. | ||
21 | In a setup where attackers can measure the time of RSA decryption or | ||
22 | signature operations, blinding must be used to protect the RSA operation | ||
23 | from that attack. | ||
24 | .Pp | ||
25 | .Fn RSA_blinding_on | ||
26 | turns blinding on for key | ||
27 | .Fa rsa | ||
28 | and generates a random blinding factor. | ||
29 | .Fa ctx | ||
30 | is | ||
31 | .Dv NULL | ||
32 | or a pre-allocated and initialized | ||
33 | .Vt BN_CTX . | ||
34 | .Pp | ||
35 | .Fn RSA_blinding_off | ||
36 | turns blinding off and frees the memory used for the blinding factor. | ||
37 | .Sh RETURN VALUES | ||
38 | .Fn RSA_blinding_on | ||
39 | returns 1 on success, and 0 if an error occurred. | ||
40 | .Sh SEE ALSO | ||
41 | .Xr rsa 3 | ||
42 | .Sh HISTORY | ||
43 | .Fn RSA_blinding_on | ||
44 | and | ||
45 | .Fn RSA_blinding_off | ||
46 | appeared in SSLeay 0.9.0. | ||
diff --git a/src/lib/libcrypto/man/RSA_check_key.3 b/src/lib/libcrypto/man/RSA_check_key.3 new file mode 100644 index 0000000000..c57ed4b4db --- /dev/null +++ b/src/lib/libcrypto/man/RSA_check_key.3 | |||
@@ -0,0 +1,97 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt RSA_CHECK_KEY 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm RSA_check_key | ||
6 | .Nd validate private RSA keys | ||
7 | .Sh SYNOPSIS | ||
8 | .In openssl/rsa.h | ||
9 | .Ft int | ||
10 | .Fo RSA_check_key | ||
11 | .Fa "RSA *rsa" | ||
12 | .Fc | ||
13 | .Sh DESCRIPTION | ||
14 | This function validates RSA keys. | ||
15 | It checks that | ||
16 | .Fa rsa->p | ||
17 | and | ||
18 | .Fa rsa->q | ||
19 | are in fact prime, and that | ||
20 | .Fa rsa->n | ||
21 | satifies n = p*q. | ||
22 | .Pp | ||
23 | It also checks that | ||
24 | .Fa rsa->d | ||
25 | and | ||
26 | .Fa rsa->e | ||
27 | satisfy d*e = 1 mod ((p-1)*(q-1)), | ||
28 | and that | ||
29 | .Fa rsa->dmp1 , | ||
30 | .Fa rsa->dmq1 , | ||
31 | and | ||
32 | .Fa resa->iqmp | ||
33 | are set correctly or are | ||
34 | .Dv NULL . | ||
35 | .Pp | ||
36 | As such, this function cannot be used with any arbitrary | ||
37 | .Vt RSA | ||
38 | key object, even if it is otherwise fit for regular RSA operation. | ||
39 | .Pp | ||
40 | This function does not work on RSA public keys that have only the | ||
41 | modulus and public exponent elements populated. | ||
42 | It performs integrity checks on all the RSA key material, so the | ||
43 | .Vt RSA | ||
44 | key structure must contain all the private key data too. | ||
45 | .Pp | ||
46 | Unlike most other RSA functions, this function does | ||
47 | .Sy not | ||
48 | work transparently with any underlying | ||
49 | .Vt ENGINE | ||
50 | implementation because it uses the key data in the | ||
51 | .Vt RSA | ||
52 | structure directly. | ||
53 | An | ||
54 | .Vt ENGINE | ||
55 | implementation can override the way key data is stored and handled, | ||
56 | and can even provide support for HSM keys - in which case the | ||
57 | .Vt RSA | ||
58 | structure may contain | ||
59 | .Sy no | ||
60 | key data at all! | ||
61 | If the | ||
62 | .Vt ENGINE | ||
63 | in question is only being used for acceleration or analysis purposes, | ||
64 | then in all likelihood the RSA key data is complete and untouched, | ||
65 | but this can't be assumed in the general case. | ||
66 | .Sh RETURN VALUE | ||
67 | .Fn RSA_check_key | ||
68 | returns 1 if | ||
69 | .Fa rsa | ||
70 | is a valid RSA key, and 0 otherwise. | ||
71 | -1 is returned if an error occurs while checking the key. | ||
72 | .Pp | ||
73 | If the key is invalid or an error occurred, the reason code can be | ||
74 | obtained using | ||
75 | .Xr ERR_get_error 3 . | ||
76 | .Sh SEE ALSO | ||
77 | .Xr ERR_get_error 3 , | ||
78 | .Xr rsa 3 | ||
79 | .Sh HISTORY | ||
80 | .Fn RSA_check_key | ||
81 | appeared in OpenSSL 0.9.4. | ||
82 | .Sh BUGS | ||
83 | A method of verifying the RSA key using opaque RSA API functions might | ||
84 | need to be considered. | ||
85 | Right now | ||
86 | .Fn RSA_check_key | ||
87 | simply uses the | ||
88 | .Vt RSA | ||
89 | structure elements directly, bypassing the | ||
90 | .Vt RSA_METHOD | ||
91 | table altogether (and completely violating encapsulation and | ||
92 | object-orientation in the process). | ||
93 | The best fix will probably be to introduce a check_key() handler | ||
94 | to the | ||
95 | .Vt RSA_METHOD | ||
96 | function table so that alternative implementations can also provide | ||
97 | their own verifiers. | ||
diff --git a/src/lib/libcrypto/man/RSA_generate_key.3 b/src/lib/libcrypto/man/RSA_generate_key.3 new file mode 100644 index 0000000000..a9e72c6594 --- /dev/null +++ b/src/lib/libcrypto/man/RSA_generate_key.3 | |||
@@ -0,0 +1,105 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt RSA_GENERATE_KEY 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm RSA_generate_key_ex , | ||
6 | .Nm RSA_generate_key | ||
7 | .Nd generate RSA key pair | ||
8 | .Sh SYNOPSIS | ||
9 | .In openssl/rsa.h | ||
10 | .Ft int | ||
11 | .Fo RSA_generate_key_ex | ||
12 | .Fa "RSA *rsa" | ||
13 | .Fa "int bits" | ||
14 | .Fa "BIGNUM *e" | ||
15 | .Fa "BN_GENCB *cb" | ||
16 | .Fc | ||
17 | .Pp | ||
18 | Deprecated: | ||
19 | .Pp | ||
20 | .Ft RSA * | ||
21 | .Fo RSA_generate_key | ||
22 | .Fa "int num" | ||
23 | .Fa "unsigned long e" | ||
24 | .Fa "void (*callback)(int, int, void *)" | ||
25 | .Fa "void *cb_arg" | ||
26 | .Fc | ||
27 | .Sh DESCRIPTION | ||
28 | .Fn RSA_generate_key_ex | ||
29 | generates a key pair and stores it in | ||
30 | .Fa rsa . | ||
31 | .Pp | ||
32 | The modulus size will be of length | ||
33 | .Fa bits , | ||
34 | and the public exponent will be | ||
35 | .Fa e . | ||
36 | Key sizes with | ||
37 | .Fa num | ||
38 | < 1024 should be considered insecure. | ||
39 | The exponent is an odd number, typically 3, 17 or 65537. | ||
40 | .Pp | ||
41 | A callback function may be used to provide feedback about the progress | ||
42 | of the key generation. | ||
43 | If | ||
44 | .Fa cb | ||
45 | is not | ||
46 | .Dv NULL , | ||
47 | it will be called as follows using the | ||
48 | .Xr BN_GENCB_call 3 | ||
49 | function: | ||
50 | .Bl -bullet | ||
51 | .It | ||
52 | While a random prime number is generated, it is called as described in | ||
53 | .Xr BN_generate_prime 3 . | ||
54 | .It | ||
55 | When the | ||
56 | .Fa n Ns -th | ||
57 | randomly generated prime is rejected as not suitable for | ||
58 | the key, | ||
59 | .Fn BN_GENCB_call cb 2 n | ||
60 | is called. | ||
61 | .It | ||
62 | When a random p has been found with p-1 relatively prime to | ||
63 | .Fa e , | ||
64 | it is called as | ||
65 | .Fn BN_GENCB_call cb 3 0 . | ||
66 | .El | ||
67 | .Pp | ||
68 | The process is then repeated for prime q with | ||
69 | .Fn BN_GENCB_call cb 3 1 . | ||
70 | .Pp | ||
71 | .Fn RSA_generate_key | ||
72 | is deprecated. | ||
73 | New applications should use | ||
74 | .Fn RSA_generate_key_ex | ||
75 | instead. | ||
76 | .Fn RSA_generate_key | ||
77 | works in the same was as | ||
78 | .Fn RSA_generate_key_ex | ||
79 | except it uses "old style" call backs. | ||
80 | See | ||
81 | .Xr BN_generate_prime 3 | ||
82 | for further details. | ||
83 | .Sh RETURN VALUE | ||
84 | If key generation fails, | ||
85 | .Fn RSA_generate_key | ||
86 | returns | ||
87 | .Dv NULL . | ||
88 | .Pp | ||
89 | The error codes can be obtained by | ||
90 | .Xr ERR_get_error 3 . | ||
91 | .Sh SEE ALSO | ||
92 | .Xr BN_generate_prime 3 , | ||
93 | .Xr ERR_get_error 3 , | ||
94 | .Xr rsa 3 , | ||
95 | .Xr RSA_free 3 | ||
96 | .Sh HISTORY | ||
97 | The | ||
98 | .Fa cb_arg | ||
99 | argument was added in SSLeay 0.9.0. | ||
100 | .Sh BUGS | ||
101 | .Fn BN_GENCB_call cb 2 x | ||
102 | is used with two different meanings. | ||
103 | .Pp | ||
104 | .Fn RSA_generate_key | ||
105 | goes into an infinite loop for illegal input values. | ||
diff --git a/src/lib/libcrypto/man/RSA_get_ex_new_index.3 b/src/lib/libcrypto/man/RSA_get_ex_new_index.3 new file mode 100644 index 0000000000..b61084a18e --- /dev/null +++ b/src/lib/libcrypto/man/RSA_get_ex_new_index.3 | |||
@@ -0,0 +1,227 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt RSA_GET_EX_NEW_INDEX 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm RSA_get_ex_new_index , | ||
6 | .Nm RSA_set_ex_data , | ||
7 | .Nm RSA_get_ex_data | ||
8 | .Nd add application specific data to RSA structures | ||
9 | .Sh SYNOPSIS | ||
10 | .In openssl/rsa.h | ||
11 | .Ft int | ||
12 | .Fo RSA_get_ex_new_index | ||
13 | .Fa "long argl" | ||
14 | .Fa "void *argp" | ||
15 | .Fa "CRYPTO_EX_new *new_func" | ||
16 | .Fa "CRYPTO_EX_dup *dup_func" | ||
17 | .Fa "CRYPTO_EX_free *free_func" | ||
18 | .Fc | ||
19 | .Ft int | ||
20 | .Fo RSA_set_ex_data | ||
21 | .Fa "RSA *r" | ||
22 | .Fa "int idx" | ||
23 | .Fa "void *arg" | ||
24 | .Fc | ||
25 | .Ft void * | ||
26 | .Fo RSA_get_ex_data | ||
27 | .Fa "RSA *r" | ||
28 | .Fa "int idx" | ||
29 | .Fc | ||
30 | .Ft typedef int | ||
31 | .Fo CRYPTO_EX_new | ||
32 | .Fa "void *parent" | ||
33 | .Fa "void *ptr" | ||
34 | .Fa "CRYPTO_EX_DATA *ad" | ||
35 | .Fa "int idx" | ||
36 | .Fa "long argl" | ||
37 | .Fa "void *argp" | ||
38 | .Fc | ||
39 | .Ft typedef void | ||
40 | .Fo CRYPTO_EX_free | ||
41 | .Fa "void *parent" | ||
42 | .Fa "void *ptr" | ||
43 | .Fa "CRYPTO_EX_DATA *ad" | ||
44 | .Fa "int idx" | ||
45 | .Fa "long argl" | ||
46 | .Fa "void *argp" | ||
47 | .Fc | ||
48 | .Ft typedef int | ||
49 | .Fo CRYPTO_EX_dup | ||
50 | .Fa "CRYPTO_EX_DATA *to" | ||
51 | .Fa "CRYPTO_EX_DATA *from" | ||
52 | .Fa "void *from_d" | ||
53 | .Fa "int idx" | ||
54 | .Fa "long argl" | ||
55 | .Fa "void *argp" | ||
56 | .Fc | ||
57 | .Sh DESCRIPTION | ||
58 | Several OpenSSL structures can have application specific data attached | ||
59 | to them. | ||
60 | This has several potential uses, it can be used to cache data associated | ||
61 | with a structure (for example the hash of some part of the structure) or | ||
62 | some additional data (for example a handle to the data in an external | ||
63 | library). | ||
64 | .Pp | ||
65 | Since the application data can be anything at all it is passed and | ||
66 | retrieved as a | ||
67 | .Vt void * | ||
68 | type. | ||
69 | .Pp | ||
70 | The | ||
71 | .Fn RSA_get_ex_new_index | ||
72 | function is initially called to "register" some new application specific | ||
73 | data. | ||
74 | It takes three optional function pointers which are called when the | ||
75 | parent structure (in this case an RSA structure) is initially created, | ||
76 | when it is copied and when it is freed up. | ||
77 | If any or all of these function pointer arguments are not used, they | ||
78 | should be set to | ||
79 | .Dv NULL . | ||
80 | The precise manner in which these function pointers are called is | ||
81 | described in more detail below. | ||
82 | .Fn RSA_get_ex_new_index | ||
83 | also takes additional long and pointer parameters which will be passed | ||
84 | to the supplied functions but which otherwise have no special meaning. | ||
85 | It returns an index which should be stored (typically in a static | ||
86 | variable) and passed as the | ||
87 | .Fa idx | ||
88 | parameter in the remaining functions. | ||
89 | Each successful call to | ||
90 | .Fn RSA_get_ex_new_index | ||
91 | will return an index greater than any previously returned. | ||
92 | This is | ||
93 | important because the optional functions are called in order of | ||
94 | increasing index value. | ||
95 | .Pp | ||
96 | .Fn RSA_set_ex_data | ||
97 | is used to set application specific data, the data is supplied in the | ||
98 | .Fa arg | ||
99 | parameter and its precise meaning is up to the application. | ||
100 | .Pp | ||
101 | .Fn RSA_get_ex_data | ||
102 | is used to retrieve application specific data. | ||
103 | The data is returned to the application, this will be the same value as | ||
104 | supplied to a previous | ||
105 | .Fn RSA_set_ex_data | ||
106 | call. | ||
107 | .Pp | ||
108 | .Fa new_func | ||
109 | is called when a structure is initially allocated (for example with | ||
110 | .Xr RSA_new 3 . | ||
111 | The parent structure members will not have any meaningful values at this | ||
112 | point. | ||
113 | This function will typically be used to allocate any application | ||
114 | specific structure. | ||
115 | .Pp | ||
116 | .Fa free_func | ||
117 | is called when a structure is being freed up. | ||
118 | The dynamic parent structure members should not be accessed because they | ||
119 | will be freed up when this function is called. | ||
120 | .Pp | ||
121 | .Fa new_func | ||
122 | and | ||
123 | .Fa free_func | ||
124 | take the same parameters. | ||
125 | .Fa parent | ||
126 | is a pointer to the parent | ||
127 | .Vt RSA | ||
128 | structure. | ||
129 | .Fa ptr | ||
130 | is the application specific data (this won't be of much use in | ||
131 | .Fa new_func ) . | ||
132 | .Fa ad | ||
133 | is a pointer to the | ||
134 | .Vt CRYPTO_EX_DATA | ||
135 | structure from the parent | ||
136 | .Vt RSA | ||
137 | structure: the functions | ||
138 | .Fn CRYPTO_get_ex_data | ||
139 | and | ||
140 | .Fn CRYPTO_set_ex_data | ||
141 | can be called to manipulate it. | ||
142 | The | ||
143 | .Fa idx | ||
144 | parameter is the index: this will be the same value returned by | ||
145 | .Fn RSA_get_ex_new_index | ||
146 | when the functions were initially registered. | ||
147 | Finally the | ||
148 | .Fa argl | ||
149 | and | ||
150 | .Fa argp | ||
151 | parameters are the values originally passed to the same corresponding | ||
152 | parameters when | ||
153 | .Fn RSA_get_ex_new_index | ||
154 | was called. | ||
155 | .Pp | ||
156 | .Fa dup_func | ||
157 | is called when a structure is being copied. | ||
158 | Pointers to the destination and source | ||
159 | .Vt CRYPTO_EX_DATA | ||
160 | structures are passed in the | ||
161 | .Fa to | ||
162 | and | ||
163 | .Fa from | ||
164 | parameters, respectively. | ||
165 | The | ||
166 | .Fa from_d | ||
167 | parameter is passed a pointer to the source application data when the | ||
168 | function is called. | ||
169 | When the function returns, the value is copied to the destination: | ||
170 | the application can thus modify the data pointed to by | ||
171 | .Fa from_d | ||
172 | and have different values in the source and destination. | ||
173 | The | ||
174 | .Fa idx , | ||
175 | .Fa argl , | ||
176 | and | ||
177 | .Fa argp | ||
178 | parameters are the same as those in | ||
179 | .Fa new_func | ||
180 | and | ||
181 | .Fa free_func . | ||
182 | .Sh RETURN VALUES | ||
183 | .Fn RSA_get_ex_new_index | ||
184 | returns a new index or -1 on failure. | ||
185 | Note that 0 is a valid index value. | ||
186 | .Pp | ||
187 | .Fn RSA_set_ex_data | ||
188 | returns 1 on success or 0 on failure. | ||
189 | .Pp | ||
190 | .Fn RSA_get_ex_data | ||
191 | returns the application data or | ||
192 | .Dv NULL | ||
193 | on failure. | ||
194 | .Dv NULL | ||
195 | may also be valid application data, but currently it can only fail if | ||
196 | given an invalid | ||
197 | .Fa idx | ||
198 | parameter. | ||
199 | .Pp | ||
200 | .Fa new_func | ||
201 | and | ||
202 | .Fa dup_func | ||
203 | should return 0 for failure and 1 for success. | ||
204 | .Pp | ||
205 | On failure an error code can be obtained from | ||
206 | .Xr ERR_get_error 3 . | ||
207 | .Sh SEE ALSO | ||
208 | .Xr CRYPTO_set_ex_data 3 , | ||
209 | .Xr rsa 3 | ||
210 | .Sh HISTORY | ||
211 | .Fn RSA_get_ex_new_index , | ||
212 | .Fn RSA_set_ex_data , | ||
213 | and | ||
214 | .Fn RSA_get_ex_data | ||
215 | are available since SSLeay 0.9.0. | ||
216 | .Sh BUGS | ||
217 | .Fa dup_func | ||
218 | is currently never called. | ||
219 | .Pp | ||
220 | The return value of | ||
221 | .Fa new_func | ||
222 | is ignored. | ||
223 | .Pp | ||
224 | The | ||
225 | .Fa new_func | ||
226 | function isn't very useful because no meaningful values are present in | ||
227 | the parent RSA structure when it is called. | ||
diff --git a/src/lib/libcrypto/man/RSA_new.3 b/src/lib/libcrypto/man/RSA_new.3 new file mode 100644 index 0000000000..b01c8cd089 --- /dev/null +++ b/src/lib/libcrypto/man/RSA_new.3 | |||
@@ -0,0 +1,46 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt RSA_NEW 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm RSA_new , | ||
6 | .Nm RSA_free | ||
7 | .Nd allocate and free RSA objects | ||
8 | .Sh SYNOPSIS | ||
9 | .In openssl/rsa.h | ||
10 | .Ft RSA * | ||
11 | .Fn RSA_new void | ||
12 | .Ft void | ||
13 | .Fo RSA_free | ||
14 | .Fa "RSA *rsa" | ||
15 | .Fc | ||
16 | .Sh DESCRIPTION | ||
17 | .Fn RSA_new | ||
18 | allocates and initializes an | ||
19 | .Vt RSA | ||
20 | structure. | ||
21 | It is equivalent to calling | ||
22 | .Fn RSA_new_method NULL . | ||
23 | .Pp | ||
24 | .Fn RSA_free | ||
25 | frees the | ||
26 | .Vt RSA | ||
27 | structure and its components. | ||
28 | The key is erased before the memory is returned to the system. | ||
29 | .Sh RETURN VALUES | ||
30 | If the allocation fails, | ||
31 | .Fn RSA_new | ||
32 | returns | ||
33 | .Dv NULL | ||
34 | and sets an error code that can be obtained by | ||
35 | .Xr ERR_get_error 3 . | ||
36 | Otherwise it returns a pointer to the newly allocated structure. | ||
37 | .Sh SEE ALSO | ||
38 | .Xr ERR_get_error 3 , | ||
39 | .Xr rsa 3 , | ||
40 | .Xr RSA_generate_key 3 , | ||
41 | .Xr RSA_new_method 3 | ||
42 | .Sh HISTORY | ||
43 | .Fn RSA_new | ||
44 | and | ||
45 | .Fn RSA_free | ||
46 | are available in all versions of SSLeay and OpenSSL. | ||
diff --git a/src/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3 b/src/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3 new file mode 100644 index 0000000000..7724f45970 --- /dev/null +++ b/src/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3 | |||
@@ -0,0 +1,197 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt RSA_PADDING_ADD_PKCS1_TYPE_1 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm RSA_padding_add_PKCS1_type_1 , | ||
6 | .Nm RSA_padding_check_PKCS1_type_1 , | ||
7 | .Nm RSA_padding_add_PKCS1_type_2 , | ||
8 | .Nm RSA_padding_check_PKCS1_type_2 , | ||
9 | .Nm RSA_padding_add_PKCS1_OAEP , | ||
10 | .Nm RSA_padding_check_PKCS1_OAEP , | ||
11 | .Nm RSA_padding_add_SSLv23 , | ||
12 | .Nm RSA_padding_check_SSLv23 , | ||
13 | .Nm RSA_padding_add_none , | ||
14 | .Nm RSA_padding_check_none | ||
15 | .Nd asymmetric encryption padding | ||
16 | .Sh SYNOPSIS | ||
17 | .In openssl/rsa.h | ||
18 | .Ft int | ||
19 | .Fo RSA_padding_add_PKCS1_type_1 | ||
20 | .Fa "unsigned char *to" | ||
21 | .Fa "int tlen" | ||
22 | .Fa "unsigned char *f" | ||
23 | .Fa "int fl" | ||
24 | .Fc | ||
25 | .Ft int | ||
26 | .Fo RSA_padding_check_PKCS1_type_1 | ||
27 | .Fa "unsigned char *to" | ||
28 | .Fa "int tlen" | ||
29 | .Fa "unsigned char *f" | ||
30 | .Fa "int fl" | ||
31 | .Fa "int rsa_len" | ||
32 | .Fc | ||
33 | .Ft int | ||
34 | .Fo RSA_padding_add_PKCS1_type_2 | ||
35 | .Fa "unsigned char *to" | ||
36 | .Fa "int tlen" | ||
37 | .Fa "unsigned char *f" | ||
38 | .Fa "int fl" | ||
39 | .Fc | ||
40 | .Ft int | ||
41 | .Fo RSA_padding_check_PKCS1_type_2 | ||
42 | .Fa "unsigned char *to" | ||
43 | .Fa "int tlen" | ||
44 | .Fa "unsigned char *f" | ||
45 | .Fa "int fl" | ||
46 | .Fa "int rsa_len" | ||
47 | .Fc | ||
48 | .Ft int | ||
49 | .Fo RSA_padding_add_PKCS1_OAEP | ||
50 | .Fa "unsigned char *to" | ||
51 | .Fa "int tlen" | ||
52 | .Fa "unsigned char *f" | ||
53 | .Fa "int fl" | ||
54 | .Fa "unsigned char *p" | ||
55 | .Fa "int pl" | ||
56 | .Fc | ||
57 | .Ft int | ||
58 | .Fo RSA_padding_check_PKCS1_OAEP | ||
59 | .Fa "unsigned char *to" | ||
60 | .Fa "int tlen" | ||
61 | .Fa "unsigned char *f" | ||
62 | .Fa "int fl" | ||
63 | .Fa "int rsa_len" | ||
64 | .Fa "unsigned char *p" | ||
65 | .Fa "int pl" | ||
66 | .Fc | ||
67 | .Ft int | ||
68 | .Fo RSA_padding_add_SSLv23 | ||
69 | .Fa "unsigned char *to" | ||
70 | .Fa "int tlen" | ||
71 | .Fa "unsigned char *f" | ||
72 | .Fa "int fl" | ||
73 | .Fc | ||
74 | .Ft int | ||
75 | .Fo RSA_padding_check_SSLv23 | ||
76 | .Fa "unsigned char *to" | ||
77 | .Fa "int tlen" | ||
78 | .Fa "unsigned char *f" | ||
79 | .Fa "int fl" | ||
80 | .Fa "int rsa_len" | ||
81 | .Fc | ||
82 | .Ft int | ||
83 | .Fo RSA_padding_add_none | ||
84 | .Fa "unsigned char *to" | ||
85 | .Fa "int tlen" | ||
86 | .Fa "unsigned char *f" | ||
87 | .Fa "int fl" | ||
88 | .Fc | ||
89 | .Ft int | ||
90 | .Fo RSA_padding_check_none | ||
91 | .Fa "unsigned char *to" | ||
92 | .Fa "int tlen" | ||
93 | .Fa "unsigned char *f" | ||
94 | .Fa "int fl" | ||
95 | .Fa "int rsa_len" | ||
96 | .Fc | ||
97 | .Sh DESCRIPTION | ||
98 | These functions are called from the RSA encrypt, decrypt, sign, and | ||
99 | verify functions. | ||
100 | Normally they should not be called from application programs. | ||
101 | .Pp | ||
102 | However, they can also be called directly to implement padding for other | ||
103 | asymmetric ciphers. | ||
104 | .Fn RSA_padding_add_PKCS1_OAEP | ||
105 | and | ||
106 | .Fn RSA_padding_check_PKCS1_OAEP | ||
107 | may be used in an application combined with | ||
108 | .Dv RSA_NO_PADDING | ||
109 | in order to implement OAEP with an encoding parameter. | ||
110 | .Pp | ||
111 | .Fn RSA_padding_add_* | ||
112 | encodes | ||
113 | .Fa fl | ||
114 | bytes from | ||
115 | .Fa f | ||
116 | so as to fit into | ||
117 | .Fa tlen | ||
118 | bytes and stores the result at | ||
119 | .Fa to . | ||
120 | An error occurs if | ||
121 | .Fa fl | ||
122 | does not meet the size requirements of the encoding method. | ||
123 | .Pp | ||
124 | The following encoding methods are implemented: | ||
125 | .Pp | ||
126 | .Bl -tag -width PKCS1_type_2 -compact | ||
127 | .It PKCS1_type_1 | ||
128 | PKCS #1 v2.0 EMSA-PKCS1-v1_5 (PKCS #1 v1.5 block type 1); | ||
129 | used for signatures | ||
130 | .It PKCS1_type_2 | ||
131 | PKCS #1 v2.0 EME-PKCS1-v1_5 (PKCS #1 v1.5 block type 2) | ||
132 | .It PKCS1_OAEP | ||
133 | PKCS #1 v2.0 EME-OAEP | ||
134 | .It SSLv23 | ||
135 | PKCS #1 EME-PKCS1-v1_5 with SSL-specific modification | ||
136 | .It none | ||
137 | simply copy the data | ||
138 | .El | ||
139 | .Pp | ||
140 | .Fn RSA_padding_check_* | ||
141 | verifies that the | ||
142 | .Fa fl | ||
143 | bytes at | ||
144 | .Fa f | ||
145 | contain a valid encoding for a | ||
146 | .Fa rsa_len | ||
147 | byte RSA key in the respective encoding method and stores the recovered | ||
148 | data of at most | ||
149 | .Fa tlen | ||
150 | bytes (for | ||
151 | .Dv RSA_NO_PADDING : | ||
152 | of size | ||
153 | .Fa tlen ) | ||
154 | at | ||
155 | .Fa to . | ||
156 | .Pp | ||
157 | For | ||
158 | .Fn RSA_padding_*_OAEP , | ||
159 | .Fa p | ||
160 | points to the encoding parameter of length | ||
161 | .Fa pl . | ||
162 | .Fa p | ||
163 | may be | ||
164 | .Dv NULL | ||
165 | if | ||
166 | .Fa pl | ||
167 | is 0. | ||
168 | .Sh RETURN VALUES | ||
169 | The | ||
170 | .Fn RSA_padding_add_* | ||
171 | functions return 1 on success or 0 on error. | ||
172 | The | ||
173 | .Fn RSA_padding_check_* | ||
174 | functions return the length of the recovered data or -1 on error. | ||
175 | Error codes can be obtained by calling | ||
176 | .Xr ERR_get_error 3 . | ||
177 | .Sh SEE ALSO | ||
178 | .Xr RSA_private_decrypt 3 , | ||
179 | .Xr RSA_public_encrypt 3 , | ||
180 | .Xr RSA_sign 3 , | ||
181 | .Xr RSA_verify 3 | ||
182 | .Sh HISTORY | ||
183 | .Fn RSA_padding_add_PKCS1_type_1 , | ||
184 | .Fn RSA_padding_check_PKCS1_type_1 , | ||
185 | .Fn RSA_padding_add_PKCS1_type_2 , | ||
186 | .Fn RSA_padding_check_PKCS1_type_2 , | ||
187 | .Fn RSA_padding_add_SSLv23 , | ||
188 | .Fn RSA_padding_check_SSLv23 , | ||
189 | .Fn RSA_padding_add_none , | ||
190 | and | ||
191 | .Fn RSA_padding_check_none | ||
192 | appeared in SSLeay 0.9.0. | ||
193 | .Pp | ||
194 | .Fn RSA_padding_add_PKCS1_OAEP | ||
195 | and | ||
196 | .Fn RSA_padding_check_PKCS1_OAEP | ||
197 | were added in OpenSSL 0.9.2b. | ||
diff --git a/src/lib/libcrypto/man/RSA_print.3 b/src/lib/libcrypto/man/RSA_print.3 new file mode 100644 index 0000000000..986dce2eb4 --- /dev/null +++ b/src/lib/libcrypto/man/RSA_print.3 | |||
@@ -0,0 +1,91 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt RSA_PRINT 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm RSA_print , | ||
6 | .Nm RSA_print_fp , | ||
7 | .Nm DSAparams_print , | ||
8 | .Nm DSAparams_print_fp , | ||
9 | .Nm DSA_print , | ||
10 | .Nm DSA_print_fp , | ||
11 | .Nm DHparams_print , | ||
12 | .Nm DHparams_print_fp | ||
13 | .Nd print cryptographic parameters | ||
14 | .Sh SYNOPSIS | ||
15 | .In openssl/rsa.h | ||
16 | .Ft int | ||
17 | .Fo RSA_print | ||
18 | .Fa "BIO *bp" | ||
19 | .Fa "RSA *x" | ||
20 | .Fa "int offset" | ||
21 | .Fc | ||
22 | .Ft int | ||
23 | .Fo RSA_print_fp | ||
24 | .Fa "FILE *fp" | ||
25 | .Fa "RSA *x" | ||
26 | .Fa "int offset" | ||
27 | .Fc | ||
28 | .In openssl/dsa.h | ||
29 | .Ft int | ||
30 | .Fo DSAparams_print | ||
31 | .Fa "BIO *bp" | ||
32 | .Fa "DSA *x" | ||
33 | .Fc | ||
34 | .Ft int | ||
35 | .Fo DSAparams_print_fp | ||
36 | .Fa "FILE *fp" | ||
37 | .Fa "DSA *x" | ||
38 | .Fc | ||
39 | .Ft int | ||
40 | .Fo DSA_print | ||
41 | .Fa "BIO *bp" | ||
42 | .Fa "DSA *x" | ||
43 | .Fa "int offset" | ||
44 | .Fc | ||
45 | .Ft int | ||
46 | .Fo DSA_print_fp | ||
47 | .Fa "FILE *fp" | ||
48 | .Fa "DSA *x" | ||
49 | .Fa "int offset" | ||
50 | .Fc | ||
51 | .In openssl/dh.h | ||
52 | .Ft int | ||
53 | .Fo DHparams_print | ||
54 | .Fa "BIO *bp" | ||
55 | .Fa "DH *x" | ||
56 | .Fc | ||
57 | .Ft int | ||
58 | .Fo DHparams_print_fp | ||
59 | .Fa "FILE *fp" | ||
60 | .Fa "DH *x" | ||
61 | .Fc | ||
62 | .Sh DESCRIPTION | ||
63 | A human-readable hexadecimal output of the components of the RSA key, | ||
64 | DSA parameters or key or DH parameters is printed to | ||
65 | .Fa bp | ||
66 | or | ||
67 | .Fa fp . | ||
68 | .Pp | ||
69 | The output lines are indented by | ||
70 | .Fa offset | ||
71 | spaces. | ||
72 | .Sh RETURN VALUES | ||
73 | These functions return 1 on success or 0 on error. | ||
74 | .Sh SEE ALSO | ||
75 | .Xr BN_bn2bin 3 , | ||
76 | .Xr dh 3 , | ||
77 | .Xr dsa 3 , | ||
78 | .Xr rsa 3 | ||
79 | .Sh HISTORY | ||
80 | .Fn RSA_print , | ||
81 | .Fn RSA_print_fp , | ||
82 | .Fn DSA_print , | ||
83 | .Fn DSA_print_fp , | ||
84 | .Fn DHparams_print , | ||
85 | and | ||
86 | .Fn DHparams_print_fp | ||
87 | are available in all versions of SSLeay and OpenSSL. | ||
88 | .Fn DSAparams_print | ||
89 | and | ||
90 | .Fn DSAparams_print_fp | ||
91 | were added in SSLeay 0.8. | ||
diff --git a/src/lib/libcrypto/man/RSA_private_encrypt.3 b/src/lib/libcrypto/man/RSA_private_encrypt.3 new file mode 100644 index 0000000000..ff59e66f6a --- /dev/null +++ b/src/lib/libcrypto/man/RSA_private_encrypt.3 | |||
@@ -0,0 +1,97 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt RSA_PRIVATE_ENCRYPT 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm RSA_private_encrypt , | ||
6 | .Nm RSA_public_decrypt | ||
7 | .Nd low level signature operations | ||
8 | .Sh SYNOPSIS | ||
9 | .In openssl/rsa.h | ||
10 | .Ft int | ||
11 | .Fo RSA_private_encrypt | ||
12 | .Fa "int flen" | ||
13 | .Fa "unsigned char *from" | ||
14 | .Fa "unsigned char *to" | ||
15 | .Fa "RSA *rsa" | ||
16 | .Fa "int padding" | ||
17 | .Fc | ||
18 | .Ft int | ||
19 | .Fo RSA_public_decrypt | ||
20 | .Fa "int flen" | ||
21 | .Fa "unsigned char *from" | ||
22 | .Fa "unsigned char *to" | ||
23 | .Fa "RSA *rsa" | ||
24 | .Fa "int padding" | ||
25 | .Fc | ||
26 | .Sh DESCRIPTION | ||
27 | These functions handle RSA signatures at a low level. | ||
28 | .Pp | ||
29 | .Fn RSA_private_encrypt | ||
30 | signs the | ||
31 | .Fa flen | ||
32 | bytes at | ||
33 | .Fa from | ||
34 | (usually a message digest with an algorithm identifier) using the | ||
35 | private key | ||
36 | .Fa rsa | ||
37 | and stores the signature in | ||
38 | .Fa to . | ||
39 | .Fa to | ||
40 | must point to | ||
41 | .Fn RSA_size rsa | ||
42 | bytes of memory. | ||
43 | .Pp | ||
44 | .Fa padding | ||
45 | denotes one of the following modes: | ||
46 | .Bl -tag -width Ds | ||
47 | .It Dv RSA_PKCS1_PADDING | ||
48 | PKCS #1 v1.5 padding. | ||
49 | This function does not handle the | ||
50 | .Sy algorithmIdentifier | ||
51 | specified in PKCS #1. | ||
52 | When generating or verifying PKCS #1 signatures, | ||
53 | .Xr RSA_sign 3 | ||
54 | and | ||
55 | .Xr RSA_verify 3 | ||
56 | should be used. | ||
57 | .It Dv RSA_NO_PADDING | ||
58 | Raw RSA signature. | ||
59 | This mode should only be used to implement cryptographically sound | ||
60 | padding modes in the application code. | ||
61 | Signing user data directly with RSA is insecure. | ||
62 | .El | ||
63 | .Pp | ||
64 | .Fn RSA_public_decrypt | ||
65 | recovers the message digest from the | ||
66 | .Fa flen | ||
67 | bytes long signature at | ||
68 | .Fa from | ||
69 | using the signer's public key | ||
70 | .Fa rsa . | ||
71 | .Fa to | ||
72 | must point to a memory section large enough to hold the message digest | ||
73 | (which is smaller than | ||
74 | .Fn RSA_size rsa | ||
75 | - 11). | ||
76 | .Fa padding | ||
77 | is the padding mode that was used to sign the data. | ||
78 | .Sh RETURN VALUES | ||
79 | .Fn RSA_private_encrypt | ||
80 | returns the size of the signature (i.e., | ||
81 | .Fn RSA_size rsa ) . | ||
82 | .Fn RSA_public_decrypt | ||
83 | returns the size of the recovered message digest. | ||
84 | .Pp | ||
85 | On error, -1 is returned; the error codes can be obtained by | ||
86 | .Xr ERR_get_error 3 . | ||
87 | .Sh SEE ALSO | ||
88 | .Xr ERR_get_error 3 , | ||
89 | .Xr rsa 3 , | ||
90 | .Xr RSA_sign 3 , | ||
91 | .Xr RSA_verify 3 | ||
92 | .Sh HISTORY | ||
93 | The | ||
94 | .Fa padding | ||
95 | argument was added in SSLeay 0.8. | ||
96 | .Dv RSA_NO_PADDING | ||
97 | is available since SSLeay 0.9.0. | ||
diff --git a/src/lib/libcrypto/man/RSA_public_encrypt.3 b/src/lib/libcrypto/man/RSA_public_encrypt.3 new file mode 100644 index 0000000000..c2c81019c6 --- /dev/null +++ b/src/lib/libcrypto/man/RSA_public_encrypt.3 | |||
@@ -0,0 +1,108 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt RSA_PUBLIC_ENCRYPT 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm RSA_public_encrypt , | ||
6 | .Nm RSA_private_decrypt | ||
7 | .Nd RSA public key cryptography | ||
8 | .Sh SYNOPSIS | ||
9 | .In openssl/rsa.h | ||
10 | .Ft int | ||
11 | .Fo RSA_public_encrypt | ||
12 | .Fa "int flen" | ||
13 | .Fa "unsigned char *from" | ||
14 | .Fa "unsigned char *to" | ||
15 | .Fa "RSA *rsa" | ||
16 | .Fa "int padding" | ||
17 | .Fc | ||
18 | .Ft int | ||
19 | .Fo RSA_private_decrypt | ||
20 | .Fa "int flen" | ||
21 | .Fa "unsigned char *from" | ||
22 | .Fa "unsigned char *to" | ||
23 | .Fa "RSA *rsa" | ||
24 | .Fa "int padding" | ||
25 | .Fc | ||
26 | .Sh DESCRIPTION | ||
27 | .Fn RSA_public_encrypt | ||
28 | encrypts the | ||
29 | .Fa flen | ||
30 | bytes at | ||
31 | .Fa from | ||
32 | (usually a session key) using the public key | ||
33 | .Fa rsa | ||
34 | and stores the ciphertext in | ||
35 | .Fa to . | ||
36 | .Fa to | ||
37 | must point to | ||
38 | .Fn RSA_size rsa | ||
39 | bytes of memory. | ||
40 | .Pp | ||
41 | .Fa padding | ||
42 | denotes one of the following modes: | ||
43 | .Bl -tag -width Ds | ||
44 | .It Dv RSA_PKCS1_PADDING | ||
45 | PKCS #1 v1.5 padding. | ||
46 | This currently is the most widely used mode. | ||
47 | .It Dv RSA_PKCS1_OAEP_PADDING | ||
48 | EME-OAEP as defined in PKCS #1 v2.0 with SHA-1, MGF1 and an empty | ||
49 | encoding parameter. | ||
50 | This mode is recommended for all new applications. | ||
51 | .It Dv RSA_SSLV23_PADDING | ||
52 | PKCS #1 v1.5 padding with an SSL-specific modification that denotes that | ||
53 | the server is SSL3 capable. | ||
54 | .It Dv RSA_NO_PADDING | ||
55 | Raw RSA encryption. | ||
56 | This mode should only be used to implement cryptographically sound | ||
57 | padding modes in the application code. | ||
58 | Encrypting user data directly with RSA is insecure. | ||
59 | .El | ||
60 | .Pp | ||
61 | .Fa flen | ||
62 | must be less than | ||
63 | .Fn RSA_size rsa | ||
64 | - 11 for the PKCS #1 v1.5 based padding modes, less than | ||
65 | .Fn RSA_size rsa | ||
66 | - 41 for | ||
67 | .Dv RSA_PKCS1_OAEP_PADDING | ||
68 | and exactly | ||
69 | .Fn RSA_size rsa | ||
70 | for | ||
71 | .Dv RSA_NO_PADDING . | ||
72 | .Pp | ||
73 | .Fn RSA_private_decrypt | ||
74 | decrypts the | ||
75 | .Fa flen | ||
76 | bytes at | ||
77 | .Fa from | ||
78 | using the private key | ||
79 | .Fa rsa | ||
80 | and stores the plaintext in | ||
81 | .Fa to . | ||
82 | .Fa to | ||
83 | must point to a memory section large enough to hold the decrypted data | ||
84 | (which is smaller than | ||
85 | .Fn RSA_size rsa ) . | ||
86 | .Fa padding | ||
87 | is the padding mode that was used to encrypt the data. | ||
88 | .Sh RETURN VALUES | ||
89 | .Fn RSA_public_encrypt | ||
90 | returns the size of the encrypted data (i.e., | ||
91 | .Fn RSA_size rsa ) . | ||
92 | .Fn RSA_private_decrypt | ||
93 | returns the size of the recovered plaintext. | ||
94 | .Pp | ||
95 | On error, -1 is returned; the error codes can be obtained by | ||
96 | .Xr ERR_get_error 3 . | ||
97 | .Sh SEE ALSO | ||
98 | .Xr ERR_get_error 3 , | ||
99 | .Xr rsa 3 , | ||
100 | .Xr RSA_size 3 | ||
101 | .Sh STANDARDS | ||
102 | SSL, PKCS #1 v2.0 | ||
103 | .Sh HISTORY | ||
104 | The | ||
105 | .Fa padding | ||
106 | argument was added in SSLeay 0.8. | ||
107 | .Dv RSA_NO_PADDING is available since SSLeay 0.9.0. | ||
108 | OAEP was added in OpenSSL 0.9.2b. | ||
diff --git a/src/lib/libcrypto/man/RSA_set_method.3 b/src/lib/libcrypto/man/RSA_set_method.3 new file mode 100644 index 0000000000..d7a2756b70 --- /dev/null +++ b/src/lib/libcrypto/man/RSA_set_method.3 | |||
@@ -0,0 +1,339 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt RSA_SET_METHOD 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm RSA_set_default_method , | ||
6 | .Nm RSA_get_default_method , | ||
7 | .Nm RSA_set_method , | ||
8 | .Nm RSA_get_method , | ||
9 | .Nm RSA_PKCS1_SSLeay , | ||
10 | .Nm RSA_null_method , | ||
11 | .Nm RSA_flags , | ||
12 | .Nm RSA_new_method , | ||
13 | .Nm RSA_get_default_openssl_method , | ||
14 | .Nm RSA_set_default_openssl_method | ||
15 | .Nd select RSA method | ||
16 | .Sh SYNOPSIS | ||
17 | .In openssl/rsa.h | ||
18 | .Ft void | ||
19 | .Fo RSA_set_default_method | ||
20 | .Fa "const RSA_METHOD *meth" | ||
21 | .Fc | ||
22 | .Ft RSA_METHOD * | ||
23 | .Fn RSA_get_default_method void | ||
24 | .Ft int | ||
25 | .Fo RSA_set_method | ||
26 | .Fa "RSA *rsa" | ||
27 | .Fa "const RSA_METHOD *meth" | ||
28 | .Fc | ||
29 | .Ft RSA_METHOD * | ||
30 | .Fo RSA_get_method | ||
31 | .Fa "const RSA *rsa" | ||
32 | .Fc | ||
33 | .Ft RSA_METHOD * | ||
34 | .Fn RSA_PKCS1_SSLeay void | ||
35 | .Ft RSA_METHOD * | ||
36 | .Fn RSA_null_method void | ||
37 | .Ft int | ||
38 | .Fo RSA_flags | ||
39 | .Fa "const RSA *rsa" | ||
40 | .Fc | ||
41 | .Ft RSA * | ||
42 | .Fo RSA_new_method | ||
43 | .Fa "RSA_METHOD *meth" | ||
44 | .Fc | ||
45 | .Sh DESCRIPTION | ||
46 | An | ||
47 | .Vt RSA_METHOD | ||
48 | specifies the functions that OpenSSL uses for RSA operations. | ||
49 | By modifying the method, alternative implementations such as hardware | ||
50 | accelerators may be used. | ||
51 | See the | ||
52 | .Sx CAVEATS | ||
53 | section for how these RSA API functions are affected by the use of | ||
54 | .Xr engine 3 | ||
55 | API calls. | ||
56 | .Pp | ||
57 | Initially, the default | ||
58 | .Vt RSA_METHOD | ||
59 | is the OpenSSL internal implementation, as returned by | ||
60 | .Fn RSA_PKCS1_SSLeay . | ||
61 | .Pp | ||
62 | .Fn RSA_set_default_method | ||
63 | makes | ||
64 | .Fa meth | ||
65 | the default method for all | ||
66 | .Vt RSA | ||
67 | structures created later. | ||
68 | .Sy NB : | ||
69 | This is true only whilst no | ||
70 | .Vt ENGINE | ||
71 | has been set as a default for RSA, so this function is no longer | ||
72 | recommended. | ||
73 | .Pp | ||
74 | .Fn RSA_get_default_method | ||
75 | returns a pointer to the current default | ||
76 | .Vt RSA_METHOD . | ||
77 | However, the meaningfulness of this result is dependent on whether | ||
78 | the | ||
79 | .Xr engine 3 | ||
80 | API is being used, so this function is no longer recommended. | ||
81 | .Pp | ||
82 | .Fn RSA_set_method | ||
83 | selects | ||
84 | .Fa meth | ||
85 | to perform all operations using the key | ||
86 | .Fa rsa . | ||
87 | This will replace the | ||
88 | .Vt RSA_METHOD | ||
89 | used by the RSA key, and if the previous method was supplied by an | ||
90 | .Vt ENGINE , | ||
91 | the handle to that | ||
92 | .Vt ENGINE | ||
93 | will be released during the change. | ||
94 | It is possible to have RSA keys that only work with certain | ||
95 | .Vt RSA_METHOD | ||
96 | implementations (eg. from an | ||
97 | .Vt ENGINE | ||
98 | module that supports embedded hardware-protected keys), | ||
99 | and in such cases attempting to change the | ||
100 | .Vt RSA_METHOD | ||
101 | for the key can have unexpected results. | ||
102 | .Pp | ||
103 | .Fn RSA_get_method | ||
104 | returns a pointer to the | ||
105 | .Vt RSA_METHOD | ||
106 | being used by | ||
107 | .Fa rsa . | ||
108 | This method may or may not be supplied by an | ||
109 | .Vt ENGINE | ||
110 | implementation, but if it is, the return value can only be guaranteed | ||
111 | to be valid as long as the RSA key itself is valid and does not | ||
112 | have its implementation changed by | ||
113 | .Fn RSA_set_method . | ||
114 | .Pp | ||
115 | .Fn RSA_flags | ||
116 | returns the flags that are set for the current | ||
117 | .Vt RSA_METHOD | ||
118 | of | ||
119 | .Fa rsa . | ||
120 | See the | ||
121 | .Sx BUGS | ||
122 | section. | ||
123 | .Pp | ||
124 | .Fn RSA_new_method | ||
125 | allocates and initializes an | ||
126 | .Vt RSA | ||
127 | structure so that | ||
128 | .Fa meth | ||
129 | will be used for the RSA operations. | ||
130 | If | ||
131 | .Sy engine | ||
132 | is NULL, the default ENGINE for RSA operations is used, and if no | ||
133 | default ENGINE is set, the RSA_METHOD controlled by | ||
134 | .Fn RSA_set_default_method | ||
135 | is used. | ||
136 | .Pp | ||
137 | .Fn RSA_flags | ||
138 | returns the | ||
139 | .Sy flags | ||
140 | that are set for | ||
141 | .Fa rsa Ns 's | ||
142 | current method. | ||
143 | .Pp | ||
144 | .Fn RSA_new_method | ||
145 | allocates and initializes an | ||
146 | .Vt RSA | ||
147 | structure so that | ||
148 | .Fa meth | ||
149 | will be used for the RSA operations. | ||
150 | If | ||
151 | .Fa meth | ||
152 | is | ||
153 | .Dv NULL , | ||
154 | the default method is used. | ||
155 | .Sh THE RSA_METHOD STRUCTURE | ||
156 | .Bd -literal | ||
157 | typedef struct rsa_meth_st | ||
158 | { | ||
159 | /* name of the implementation */ | ||
160 | const char *name; | ||
161 | |||
162 | /* encrypt */ | ||
163 | int (*rsa_pub_enc)(int flen, unsigned char *from, | ||
164 | unsigned char *to, RSA *rsa, int padding); | ||
165 | |||
166 | /* verify arbitrary data */ | ||
167 | int (*rsa_pub_dec)(int flen, unsigned char *from, | ||
168 | unsigned char *to, RSA *rsa, int padding); | ||
169 | |||
170 | /* sign arbitrary data */ | ||
171 | int (*rsa_priv_enc)(int flen, unsigned char *from, | ||
172 | unsigned char *to, RSA *rsa, int padding); | ||
173 | |||
174 | /* decrypt */ | ||
175 | int (*rsa_priv_dec)(int flen, unsigned char *from, | ||
176 | unsigned char *to, RSA *rsa, int padding); | ||
177 | |||
178 | /* compute r0 = r0 ^ I mod rsa->n (May be NULL for some | ||
179 | implementations) */ | ||
180 | int (*rsa_mod_exp)(BIGNUM *r0, BIGNUM *I, RSA *rsa); | ||
181 | |||
182 | /* compute r = a ^ p mod m (May be NULL for some implementations) */ | ||
183 | int (*bn_mod_exp)(BIGNUM *r, BIGNUM *a, const BIGNUM *p, | ||
184 | const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); | ||
185 | |||
186 | /* called at RSA_new */ | ||
187 | int (*init)(RSA *rsa); | ||
188 | |||
189 | /* called at RSA_free */ | ||
190 | int (*finish)(RSA *rsa); | ||
191 | |||
192 | /* RSA_FLAG_EXT_PKEY - rsa_mod_exp is called for private key | ||
193 | * operations, even if p,q,dmp1,dmq1,iqmp | ||
194 | * are NULL | ||
195 | * RSA_FLAG_SIGN_VER - enable rsa_sign and rsa_verify | ||
196 | * RSA_METHOD_FLAG_NO_CHECK - don't check pub/private match | ||
197 | */ | ||
198 | int flags; | ||
199 | |||
200 | char *app_data; /* ?? */ | ||
201 | |||
202 | /* sign. For backward compatibility, this is used only | ||
203 | * if (flags & RSA_FLAG_SIGN_VER) | ||
204 | */ | ||
205 | int (*rsa_sign)(int type, unsigned char *m, unsigned int m_len, | ||
206 | unsigned char *sigret, unsigned int *siglen, RSA *rsa); | ||
207 | |||
208 | /* verify. For backward compatibility, this is used only | ||
209 | * if (flags & RSA_FLAG_SIGN_VER) | ||
210 | */ | ||
211 | int (*rsa_verify)(int type, unsigned char *m, unsigned int m_len, | ||
212 | unsigned char *sigbuf, unsigned int siglen, RSA *rsa); | ||
213 | |||
214 | } RSA_METHOD; | ||
215 | .Ed | ||
216 | .Sh RETURN VALUES | ||
217 | .Fn RSA_PKCS1_SSLeay , | ||
218 | .Fn RSA_null_method , | ||
219 | .Fn RSA_get_default_method | ||
220 | and | ||
221 | .Fn RSA_get_method | ||
222 | return pointers to the respective | ||
223 | .Vt RSA_METHOD . | ||
224 | .Pp | ||
225 | .Fn RSA_set_method | ||
226 | returns a pointer to the old | ||
227 | .Vt RSA_METHOD | ||
228 | implementation that was replaced. | ||
229 | However, this return value should probably be ignored because if it was | ||
230 | supplied by an | ||
231 | .Vt ENGINE , | ||
232 | the pointer could be invalidated at any time if the | ||
233 | .Vt ENGINE | ||
234 | is unloaded. | ||
235 | In fact, it could be unloaded as a result of the | ||
236 | .Fn RSA_set_method | ||
237 | function releasing its handle to the | ||
238 | .Vt ENGINE . | ||
239 | For this reason, the return type may be replaced with a | ||
240 | .Vt void | ||
241 | declaration in a future release. | ||
242 | .Pp | ||
243 | .Fn RSA_new_method | ||
244 | returns | ||
245 | .Dv NULL | ||
246 | and sets an error code that can be obtained by | ||
247 | .Xr ERR_get_error 3 | ||
248 | if the allocation fails. | ||
249 | Otherwise it returns a pointer to the newly allocated structure. | ||
250 | .Sh SEE ALSO | ||
251 | .Xr rsa 3 , | ||
252 | .Xr RSA_new 3 | ||
253 | .Sh HISTORY | ||
254 | .Fn RSA_new_method | ||
255 | and | ||
256 | .Fn RSA_set_default_method | ||
257 | appeared in SSLeay 0.8. | ||
258 | .Fn RSA_get_default_method , | ||
259 | .Fn RSA_set_method , | ||
260 | and | ||
261 | .Fn RSA_get_method | ||
262 | as well as the | ||
263 | .Fa rsa_sign | ||
264 | and | ||
265 | .Fa rsa_verify | ||
266 | components of | ||
267 | .Vt RSA_METHOD | ||
268 | were added in OpenSSL 0.9.4. | ||
269 | .Pp | ||
270 | .Fn RSA_set_default_openssl_method | ||
271 | and | ||
272 | .Fn RSA_get_default_openssl_method | ||
273 | replaced | ||
274 | .Fn RSA_set_default_method | ||
275 | and | ||
276 | .Fn RSA_get_default_method | ||
277 | respectively, and | ||
278 | .Fn RSA_set_method | ||
279 | and | ||
280 | .Fn RSA_new_method | ||
281 | were altered to use | ||
282 | .Vt ENGINE Ns s | ||
283 | rather than | ||
284 | .Vt RSA_METHOD Ns s | ||
285 | during development of the | ||
286 | .Xr engine 3 | ||
287 | version of OpenSSL 0.9.6. | ||
288 | For 0.9.7, the handling of defaults in the | ||
289 | .Xr engine 3 | ||
290 | API was restructured so that this change was reversed, and behaviour | ||
291 | of the other functions resembled more closely the previous behaviour. | ||
292 | The behaviour of defaults in the | ||
293 | .Xr engine 3 | ||
294 | API now transparently overrides the behaviour of defaults in the | ||
295 | RSA API without requiring changing these function prototypes. | ||
296 | .Sh CAVEATS | ||
297 | As of version 0.9.7, | ||
298 | .Vt RSA_METHOD | ||
299 | implementations are grouped together with other algorithmic APIs (eg.\& | ||
300 | .Vt DSA_METHOD , | ||
301 | .Vt EVP_CIPHER , | ||
302 | etc.) into | ||
303 | .Vt ENGINE | ||
304 | modules. | ||
305 | If a default | ||
306 | .Vt ENGINE | ||
307 | is specified for RSA functionality using an | ||
308 | .Xr engine 3 | ||
309 | API function, that will override any RSA defaults set using the RSA | ||
310 | API, ie.\& | ||
311 | .Fn RSA_set_default_method . | ||
312 | For this reason, the | ||
313 | .Xr engine 3 | ||
314 | API is the recommended way to control default implementations for | ||
315 | use in RSA and other cryptographic algorithms. | ||
316 | .Sh BUGS | ||
317 | The behaviour of | ||
318 | .Fn RSA_flags | ||
319 | is a mis-feature that is left as-is for now to avoid creating | ||
320 | compatibility problems. | ||
321 | RSA functionality, such as the encryption functions, are controlled by | ||
322 | the | ||
323 | .Fa flags | ||
324 | value in the | ||
325 | .Vt RSA | ||
326 | key itself, not by the | ||
327 | .Fa flags | ||
328 | value in the | ||
329 | .Vt RSA_METHOD | ||
330 | attached to the RSA key (which is what this function returns). | ||
331 | If the flags element of an | ||
332 | .Vt RSA | ||
333 | key is changed, the changes will be honoured by RSA functionality | ||
334 | but will not be reflected in the return value of the | ||
335 | .Fn RSA_flags | ||
336 | function - in effect | ||
337 | .Fn RSA_flags | ||
338 | behaves more like a RSA_default_flags() function, which does not | ||
339 | currently exist. | ||
diff --git a/src/lib/libcrypto/man/RSA_sign.3 b/src/lib/libcrypto/man/RSA_sign.3 new file mode 100644 index 0000000000..2b9e5eb6f1 --- /dev/null +++ b/src/lib/libcrypto/man/RSA_sign.3 | |||
@@ -0,0 +1,103 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt RSA_SIGN 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm RSA_sign , | ||
6 | .Nm RSA_verify | ||
7 | .Nd RSA signatures | ||
8 | .Sh SYNOPSIS | ||
9 | .In openssl/rsa.h | ||
10 | .Ft int | ||
11 | .Fo RSA_sign | ||
12 | .Fa "int type" | ||
13 | .Fa "const unsigned char *m" | ||
14 | .Fa "unsigned int m_len" | ||
15 | .Fa "unsigned char *sigret" | ||
16 | .Fa "unsigned int *siglen" | ||
17 | .Fa "RSA *rsa" | ||
18 | .Fc | ||
19 | .Ft int | ||
20 | .Fo RSA_verify | ||
21 | .Fa "int type" | ||
22 | .Fa "const unsigned char *m" | ||
23 | .Fa "unsigned int m_len" | ||
24 | .Fa "unsigned char *sigbuf" | ||
25 | .Fa "unsigned int siglen" | ||
26 | .Fa "RSA *rsa" | ||
27 | .Fc | ||
28 | .Sh DESCRIPTION | ||
29 | .Fn RSA_sign | ||
30 | signs the message digest | ||
31 | .Fa m | ||
32 | of size | ||
33 | .Fa m_len | ||
34 | using the private key | ||
35 | .Fa rsa | ||
36 | as specified in PKCS #1 v2.0. | ||
37 | It stores the signature in | ||
38 | .Fa sigret | ||
39 | and the signature size in | ||
40 | .Fa siglen . | ||
41 | .Fa sigret | ||
42 | must point to | ||
43 | .Fn RSA_size rsa | ||
44 | bytes of memory. | ||
45 | Note that PKCS #1 adds meta-data, placing limits on the size of the key | ||
46 | that can be used. | ||
47 | See | ||
48 | .Xr RSA_private_encrypt 3 | ||
49 | for lower-level operations. | ||
50 | .Pp | ||
51 | .Fa type | ||
52 | denotes the message digest algorithm that was used to generate | ||
53 | .Fa m . | ||
54 | It usually is one of | ||
55 | .Dv NID_sha1 , | ||
56 | .Dv NID_ripemd160 , | ||
57 | or | ||
58 | .Dv NID_md5 ; | ||
59 | see | ||
60 | .Xr OBJ_nid2obj 3 | ||
61 | for details. | ||
62 | If | ||
63 | .Fa type | ||
64 | is | ||
65 | .Sy NID_md5_sha1 , | ||
66 | an SSL signature (MD5 and SHA1 message digests with PKCS #1 padding and | ||
67 | no algorithm identifier) is created. | ||
68 | .Pp | ||
69 | .Fn RSA_verify | ||
70 | verifies that the signature | ||
71 | .Fa sigbuf | ||
72 | of size | ||
73 | .Fa siglen | ||
74 | matches a given message digest | ||
75 | .Fa m | ||
76 | of size | ||
77 | .Fa m_len . | ||
78 | .Fa type | ||
79 | denotes the message digest algorithm that was used to generate the | ||
80 | signature. | ||
81 | .Fa rsa | ||
82 | is the signer's public key. | ||
83 | .Sh RETURN VALUES | ||
84 | .Fn RSA_sign | ||
85 | returns 1 on success or 0 otherwise. | ||
86 | .Fn RSA_verify | ||
87 | returns 1 on successful verification or 0 otherwise. | ||
88 | .Pp | ||
89 | The error codes can be obtained by | ||
90 | .Xr ERR_get_error 3 . | ||
91 | .Sh SEE ALSO | ||
92 | .Xr ERR_get_error 3 , | ||
93 | .Xr objects 3 , | ||
94 | .Xr rsa 3 , | ||
95 | .Xr RSA_private_encrypt 3 , | ||
96 | .Xr RSA_public_decrypt 3 | ||
97 | .Sh STANDARDS | ||
98 | SSL, PKCS #1 v2.0 | ||
99 | .Sh HISTORY | ||
100 | .Fn RSA_sign | ||
101 | and | ||
102 | .Fn RSA_verify | ||
103 | are available in all versions of SSLeay and OpenSSL. | ||
diff --git a/src/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3 b/src/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3 new file mode 100644 index 0000000000..7398a294c9 --- /dev/null +++ b/src/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3 | |||
@@ -0,0 +1,81 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt RSA_SIGN_ASN1_OCTET_STRING 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm RSA_sign_ASN1_OCTET_STRING , | ||
6 | .Nm RSA_verify_ASN1_OCTET_STRING | ||
7 | .Nd RSA signatures | ||
8 | .Sh SYNOPSIS | ||
9 | .In openssl/rsa.h | ||
10 | .Ft int | ||
11 | .Fo RSA_sign_ASN1_OCTET_STRING | ||
12 | .Fa "int dummy" | ||
13 | .Fa "unsigned char *m" | ||
14 | .Fa "unsigned int m_len" | ||
15 | .Fa "unsigned char *sigret" | ||
16 | .Fa "unsigned int *siglen" | ||
17 | .Fa "RSA *rsa" | ||
18 | .Fc | ||
19 | .Ft int | ||
20 | .Fo RSA_verify_ASN1_OCTET_STRING | ||
21 | .Fa "int dummy" | ||
22 | .Fa "unsigned char *m" | ||
23 | .Fa "unsigned int m_len" | ||
24 | .Fa "unsigned char *sigbuf" | ||
25 | .Fa "unsigned int siglen" | ||
26 | .Fa "RSA *rsa" | ||
27 | .Fc | ||
28 | .Sh DESCRIPTION | ||
29 | .Fn RSA_sign_ASN1_OCTET_STRING | ||
30 | signs the octet string | ||
31 | .Fa m | ||
32 | of size | ||
33 | .Fa m_len | ||
34 | using the private key | ||
35 | .Fa rsa | ||
36 | represented in DER using PKCS #1 padding. | ||
37 | It stores the signature in | ||
38 | .Fa sigret | ||
39 | and the signature size in | ||
40 | .Fa siglen . | ||
41 | .Fa sigret | ||
42 | must point to | ||
43 | .Fn RSA_size rsa | ||
44 | bytes of memory. | ||
45 | .Pp | ||
46 | .Fa dummy | ||
47 | is ignored. | ||
48 | .Pp | ||
49 | .Fn RSA_verify_ASN1_OCTET_STRING | ||
50 | verifies that the signature | ||
51 | .Fa sigbuf | ||
52 | of size | ||
53 | .Fa siglen | ||
54 | is the DER representation of a given octet string | ||
55 | .Fa m | ||
56 | of size | ||
57 | .Fa m_len . | ||
58 | .Fa dummy | ||
59 | is ignored. | ||
60 | .Fa rsa | ||
61 | is the signer's public key. | ||
62 | .Sh RETURN VALUES | ||
63 | .Fn RSA_sign_ASN1_OCTET_STRING | ||
64 | returns 1 on success or 0 otherwise. | ||
65 | .Fn RSA_verify_ASN1_OCTET_STRING | ||
66 | returns 1 on successful verification or 0 otherwise. | ||
67 | .Pp | ||
68 | The error codes can be obtained by | ||
69 | .Xr ERR_get_error 3 . | ||
70 | .Sh SEE ALSO | ||
71 | .Xr ERR_get_error 3 , | ||
72 | .Xr rsa 3 , | ||
73 | .Xr RSA_sign 3 , | ||
74 | .Xr RSA_verify 3 | ||
75 | .Sh HISTORY | ||
76 | .Fn RSA_sign_ASN1_OCTET_STRING | ||
77 | and | ||
78 | .Fn RSA_verify_ASN1_OCTET_STRING | ||
79 | were added in SSLeay 0.8. | ||
80 | .Sh BUGS | ||
81 | These functions serve no recognizable purpose. | ||
diff --git a/src/lib/libcrypto/man/RSA_size.3 b/src/lib/libcrypto/man/RSA_size.3 new file mode 100644 index 0000000000..8b9a4d0552 --- /dev/null +++ b/src/lib/libcrypto/man/RSA_size.3 | |||
@@ -0,0 +1,27 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt RSA_SIZE 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm RSA_size | ||
6 | .Nd get RSA modulus size | ||
7 | .Sh SYNOPSIS | ||
8 | .In openssl/rsa.h | ||
9 | .Ft int | ||
10 | .Fo RSA_size | ||
11 | .Fa "const RSA *rsa" | ||
12 | .Fc | ||
13 | .Sh DESCRIPTION | ||
14 | This function returns the RSA modulus size in bytes. | ||
15 | It can be used to determine how much memory must be allocated for an RSA | ||
16 | encrypted value. | ||
17 | .Pp | ||
18 | .Fa rsa->n | ||
19 | must not be | ||
20 | .Dv NULL . | ||
21 | .Sh RETURN VALUE | ||
22 | The size in bytes. | ||
23 | .Sh SEE ALSO | ||
24 | .Xr rsa 3 | ||
25 | .Sh HISTORY | ||
26 | .Fn RSA_size | ||
27 | is available in all versions of SSLeay and OpenSSL. | ||
diff --git a/src/lib/libcrypto/man/d2i_RSAPublicKey.3 b/src/lib/libcrypto/man/d2i_RSAPublicKey.3 new file mode 100644 index 0000000000..b54487a621 --- /dev/null +++ b/src/lib/libcrypto/man/d2i_RSAPublicKey.3 | |||
@@ -0,0 +1,101 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt D2I_RSAPUBLICKEY 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm d2i_RSAPublicKey , | ||
6 | .Nm i2d_RSAPublicKey , | ||
7 | .Nm d2i_RSAPrivateKey , | ||
8 | .Nm i2d_RSAPrivateKey , | ||
9 | .Nm d2i_RSA_PUBKEY , | ||
10 | .Nm i2d_RSA_PUBKEY , | ||
11 | .Nm i2d_Netscape_RSA , | ||
12 | .Nm d2i_Netscape_RSA | ||
13 | .Nd RSA public and private key encoding functions | ||
14 | .Sh SYNOPSIS | ||
15 | .In openssl/rsa.h | ||
16 | .In openssl/x509.h | ||
17 | .Ft RSA * | ||
18 | .Fo d2i_RSAPublicKey | ||
19 | .Fa "RSA **a" | ||
20 | .Fa "const unsigned char **pp" | ||
21 | .Fa "long length" | ||
22 | .Fc | ||
23 | .Ft int | ||
24 | .Fo i2d_RSAPublicKey | ||
25 | .Fa "RSA *a" | ||
26 | .Fa "unsigned char **pp" | ||
27 | .Fc | ||
28 | .Ft RSA * | ||
29 | .Fo d2i_RSA_PUBKEY | ||
30 | .Fa "RSA **a" | ||
31 | .Fa "const unsigned char **pp" | ||
32 | .Fa "long length" | ||
33 | .Fc | ||
34 | .Ft int | ||
35 | .Fo i2d_RSA_PUBKEY | ||
36 | .Fa "RSA *a" | ||
37 | .Fa "unsigned char **pp" | ||
38 | .Fc | ||
39 | .Ft RSA * | ||
40 | .Fo d2i_RSAPrivateKey | ||
41 | .Fa "RSA **a" | ||
42 | .Fa "const unsigned char **pp" | ||
43 | .Fa "long length" | ||
44 | .Fc | ||
45 | .Ft int | ||
46 | .Fo i2d_RSAPrivateKey | ||
47 | .Fa "RSA *a" | ||
48 | .Fa "unsigned char **pp" | ||
49 | .Fc | ||
50 | .Ft int | ||
51 | .Fo i2d_Netscape_RSA | ||
52 | .Fa "RSA *a" | ||
53 | .Fa "unsigned char **pp" | ||
54 | .Fa "int (*cb)()" | ||
55 | .Fc | ||
56 | .Ft RSA * | ||
57 | .Fo d2i_Netscape_RSA | ||
58 | .Fa "RSA **a" | ||
59 | .Fa "const unsigned char **pp" | ||
60 | .Fa "long length" | ||
61 | .Fa "int (*cb)()" | ||
62 | .Fc | ||
63 | .Sh DESCRIPTION | ||
64 | .Fn d2i_RSAPublicKey | ||
65 | and | ||
66 | .Fn i2d_RSAPublicKey | ||
67 | decode and encode a PKCS#1 RSAPublicKey structure. | ||
68 | .Pp | ||
69 | .Fn d2i_RSA_PUBKEY | ||
70 | and | ||
71 | .Fn i2d_RSA_PUBKEY | ||
72 | decode and encode an RSA public key using a SubjectPublicKeyInfo | ||
73 | (certificate public key) structure. | ||
74 | .Pp | ||
75 | .Fn d2i_RSAPrivateKey , | ||
76 | .Fn i2d_RSAPrivateKey | ||
77 | decode and encode a PKCS#1 RSAPrivateKey structure. | ||
78 | .Pp | ||
79 | .Fn d2i_Netscape_RSA , | ||
80 | .Fn i2d_Netscape_RSA | ||
81 | decode and encode an RSA private key in NET format. | ||
82 | .Pp | ||
83 | The usage of all of these functions is similar to | ||
84 | .Xr d2i_X509 3 | ||
85 | and | ||
86 | .Xr i2d_X509 3 . | ||
87 | .Pp | ||
88 | The | ||
89 | .Vt RSA | ||
90 | structure passed to the private key encoding functions should have all | ||
91 | the PKCS#1 private key components present. | ||
92 | .Pp | ||
93 | The data encoded by the private key functions is unencrypted and | ||
94 | therefore offers no private key security. | ||
95 | .Pp | ||
96 | The NET format functions are present to provide compatibility with | ||
97 | certain very old software. | ||
98 | This format has some severe security weaknesses and should be avoided if | ||
99 | possible. | ||
100 | .Sh SEE ALSO | ||
101 | .Xr d2i_X509 3 | ||
diff --git a/src/lib/libcrypto/man/rsa.3 b/src/lib/libcrypto/man/rsa.3 new file mode 100644 index 0000000000..7c34f3595b --- /dev/null +++ b/src/lib/libcrypto/man/rsa.3 | |||
@@ -0,0 +1,238 @@ | |||
1 | .Dd $Mdocdate: November 4 2016 $ | ||
2 | .Dt RSA 3 | ||
3 | .Os | ||
4 | .Sh NAME | ||
5 | .Nm rsa | ||
6 | .Nd RSA public key cryptosystem | ||
7 | .Sh SYNOPSIS | ||
8 | .In openssl/rsa.h | ||
9 | .In openssl/engine.h | ||
10 | .Ft RSA * | ||
11 | .Fn RSA_new void | ||
12 | .Ft void | ||
13 | .Fo RSA_free | ||
14 | .Fa "RSA *rsa" | ||
15 | .Fc | ||
16 | .Ft int | ||
17 | .Fo RSA_public_encrypt | ||
18 | .Fa "int flen" | ||
19 | .Fa "unsigned char *from" | ||
20 | .Fa "unsigned char *to" | ||
21 | .Fa "RSA *rsa" | ||
22 | .Fa "int padding" | ||
23 | .Fc | ||
24 | .Ft int | ||
25 | .Fo RSA_private_decrypt | ||
26 | .Fa "int flen" | ||
27 | .Fa "unsigned char *from" | ||
28 | .Fa "unsigned char *to" | ||
29 | .Fa "RSA *rsa" | ||
30 | .Fa "int padding" | ||
31 | .Fc | ||
32 | .Ft int | ||
33 | .Fo RSA_private_encrypt | ||
34 | .Fa "int flen" | ||
35 | .Fa "unsigned char *from" | ||
36 | .Fa "unsigned char *to" | ||
37 | .Fa "RSA *rsa" | ||
38 | .Fa "int padding" | ||
39 | .Fc | ||
40 | .Ft int | ||
41 | .Fo RSA_public_decrypt | ||
42 | .Fa "int flen" | ||
43 | .Fa "unsigned char *from" | ||
44 | .Fa "unsigned char *to" | ||
45 | .Fa "RSA *rsa" | ||
46 | .Fa "int padding" | ||
47 | .Fc | ||
48 | .Ft int | ||
49 | .Fo RSA_sign | ||
50 | .Fa "int type" | ||
51 | .Fa "unsigned char *m" | ||
52 | .Fa "unsigned int m_len" | ||
53 | .Fa "unsigned char *sigret" | ||
54 | .Fa "unsigned int *siglen" | ||
55 | .Fa "RSA *rsa" | ||
56 | .Fc | ||
57 | .Ft int | ||
58 | .Fo RSA_verify | ||
59 | .Fa "int type" | ||
60 | .Fa "unsigned char *m" | ||
61 | .Fa "unsigned int m_len" | ||
62 | .Fa "unsigned char *sigbuf" | ||
63 | .Fa "unsigned int siglen" | ||
64 | .Fa "RSA *rsa" | ||
65 | .Fc | ||
66 | .Ft int | ||
67 | .Fo RSA_size | ||
68 | .Fa "const RSA *rsa" | ||
69 | .Fc | ||
70 | .Ft RSA * | ||
71 | .Fo RSA_generate_key | ||
72 | .Fa "int num" | ||
73 | .Fa "unsigned long e" | ||
74 | .Fa "void (*callback)(int, int, void *)" | ||
75 | .Fa "void *cb_arg" | ||
76 | .Fc | ||
77 | .Ft int | ||
78 | .Fo RSA_check_key | ||
79 | .Fa "RSA *rsa" | ||
80 | .Fc | ||
81 | .Ft int | ||
82 | .Fo RSA_blinding_on | ||
83 | .Fa "RSA *rsa" | ||
84 | .Fa "BN_CTX *ctx" | ||
85 | .Fc | ||
86 | .Ft void | ||
87 | .Fo RSA_blinding_off | ||
88 | .Fa "RSA *rsa" | ||
89 | .Fc | ||
90 | .Ft void | ||
91 | .Fo RSA_set_default_method | ||
92 | .Fa "const RSA_METHOD *meth" | ||
93 | .Fc | ||
94 | .Ft const RSA_METHOD * | ||
95 | .Fn RSA_get_default_method void | ||
96 | .Ft int | ||
97 | .Fo RSA_set_method | ||
98 | .Fa "RSA *rsa" | ||
99 | .Fa "const RSA_METHOD *meth" | ||
100 | .Fc | ||
101 | .Ft const RSA_METHOD * | ||
102 | .Fo RSA_get_method | ||
103 | .Fa "const RSA *rsa" | ||
104 | .Fc | ||
105 | .Ft RSA_METHOD * | ||
106 | .Fn RSA_PKCS1_SSLeay void | ||
107 | .Ft RSA_METHOD * | ||
108 | .Fn RSA_null_method void | ||
109 | .Ft int | ||
110 | .Fo RSA_flags | ||
111 | .Fa "const RSA *rsa" | ||
112 | .Fc | ||
113 | .Ft RSA * | ||
114 | .Fo RSA_new_method | ||
115 | .Fa "ENGINE *engine" | ||
116 | .Fc | ||
117 | .Ft int | ||
118 | .Fo RSA_print | ||
119 | .Fa "BIO *bp" | ||
120 | .Fa "RSA *x" | ||
121 | .Fa "int offset" | ||
122 | .Fc | ||
123 | .Ft int | ||
124 | .Fo RSA_print_fp | ||
125 | .Fa "FILE *fp" | ||
126 | .Fa "RSA *x" | ||
127 | .Fa "int offset" | ||
128 | .Fc | ||
129 | .Ft int | ||
130 | .Fo RSA_get_ex_new_index | ||
131 | .Fa "long argl" | ||
132 | .Fa "char *argp" | ||
133 | .Fa "int (*new_func)()" | ||
134 | .Fa "int (*dup_func)()" | ||
135 | .Fa "void (*free_func)()" | ||
136 | .Fc | ||
137 | .Ft int | ||
138 | .Fo RSA_set_ex_data | ||
139 | .Fa "RSA *r" | ||
140 | .Fa "int idx" | ||
141 | .Fa "char *arg" | ||
142 | .Fc | ||
143 | .Ft char * | ||
144 | .Fo RSA_get_ex_data | ||
145 | .Fa "RSA *r" | ||
146 | .Fa "int idx" | ||
147 | .Fc | ||
148 | .Ft int | ||
149 | .Fo RSA_sign_ASN1_OCTET_STRING | ||
150 | .Fa "int dummy" | ||
151 | .Fa "unsigned char *m" | ||
152 | .Fa "unsigned int m_len" | ||
153 | .Fa "unsigned char *sigret" | ||
154 | .Fa "unsigned int *siglen" | ||
155 | .Fa "RSA *rsa" | ||
156 | .Fc | ||
157 | .Ft int | ||
158 | .Fo RSA_verify_ASN1_OCTET_STRING | ||
159 | .Fa "int dummy" | ||
160 | .Fa "unsigned char *m" | ||
161 | .Fa "unsigned int m_len" | ||
162 | .Fa "unsigned char *sigbuf" | ||
163 | .Fa "unsigned int siglen" | ||
164 | .Fa "RSA *rsa" | ||
165 | .Fc | ||
166 | .Sh DESCRIPTION | ||
167 | These functions implement RSA public key encryption and signatures as | ||
168 | defined in PKCS #1 v2.0 [RFC 2437]. | ||
169 | .Pp | ||
170 | The | ||
171 | .Vt RSA | ||
172 | structure consists of several BIGNUM components. | ||
173 | It can contain public as well as private RSA keys: | ||
174 | .Bd -literal | ||
175 | typdef struct { | ||
176 | BIGNUM *n; // public modulus | ||
177 | BIGNUM *e; // public exponent | ||
178 | BIGNUM *d; // private exponent | ||
179 | BIGNUM *p; // secret prime factor | ||
180 | BIGNUM *q; // secret prime factor | ||
181 | BIGNUM *dmp1; // d mod (p-1) | ||
182 | BIGNUM *dmq1; // d mod (q-1) | ||
183 | BIGNUM *iqmp; // q^-1 mod p | ||
184 | // ... | ||
185 | } RSA; | ||
186 | .Ed | ||
187 | .Pp | ||
188 | In public keys, the private exponent and the related secret values are | ||
189 | .Dv NULL . | ||
190 | .Pp | ||
191 | .Fa p , | ||
192 | .Fa q , | ||
193 | .Fa dmp1 , | ||
194 | .Fa dmq1 , | ||
195 | and | ||
196 | .Fa iqmp | ||
197 | may be | ||
198 | .Dv NULL | ||
199 | in private keys, but the RSA operations are much faster when these | ||
200 | values are available. | ||
201 | .Pp | ||
202 | Note that RSA keys may use non-standard | ||
203 | .Vt RSA_METHOD | ||
204 | implementations, either directly or by the use of | ||
205 | .Vt ENGINE | ||
206 | modules. | ||
207 | In some cases (eg. an | ||
208 | .Vt ENGINE | ||
209 | providing support for hardware-embedded keys), these | ||
210 | .Vt BIGNUM | ||
211 | values will not be used by the implementation or may be used for | ||
212 | alternative data storage. | ||
213 | For this reason, applications should generally avoid using | ||
214 | .Vt RSA | ||
215 | structure elements directly and instead use API functions to query | ||
216 | or modify keys. | ||
217 | .Sh SEE ALSO | ||
218 | .Xr bn 3 , | ||
219 | .Xr dh 3 , | ||
220 | .Xr dsa 3 , | ||
221 | .Xr engine 3 , | ||
222 | .Xr RSA_blinding_on 3 , | ||
223 | .Xr RSA_check_key 3 , | ||
224 | .Xr RSA_generate_key 3 , | ||
225 | .Xr RSA_get_ex_new_index 3 , | ||
226 | .Xr RSA_new 3 , | ||
227 | .Xr RSA_padding_add_PKCS1_type_1 3 , | ||
228 | .Xr RSA_print 3 , | ||
229 | .Xr RSA_private_encrypt 3 , | ||
230 | .Xr RSA_public_encrypt 3 , | ||
231 | .Xr RSA_set_method 3 , | ||
232 | .Xr RSA_sign 3 , | ||
233 | .Xr RSA_sign_ASN1_OCTET_STRING 3 , | ||
234 | .Xr RSA_size 3 | ||
235 | .Sh STANDARDS | ||
236 | SSL, PKCS #1 v2.0 | ||
237 | .Pp | ||
238 | RSA was covered by a US patent which expired in September 2000. | ||