summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp/pmeth_fn.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/evp/pmeth_fn.c')
-rw-r--r--src/lib/libcrypto/evp/pmeth_fn.c67
1 files changed, 25 insertions, 42 deletions
diff --git a/src/lib/libcrypto/evp/pmeth_fn.c b/src/lib/libcrypto/evp/pmeth_fn.c
index 4cf18a0be1..c9117eedd4 100644
--- a/src/lib/libcrypto/evp/pmeth_fn.c
+++ b/src/lib/libcrypto/evp/pmeth_fn.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: pmeth_fn.c,v 1.5 2014/07/12 16:03:37 miod Exp $ */ 1/* $OpenBSD: pmeth_fn.c,v 1.6 2017/01/29 17:49:23 beck Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2006. 3 * project 2006.
4 */ 4 */
@@ -76,7 +76,7 @@
76 } \ 76 } \
77 else if (*arglen < pksize) \ 77 else if (*arglen < pksize) \
78 { \ 78 { \
79 EVPerr(err, EVP_R_BUFFER_TOO_SMALL); /*ckerr_ignore*/\ 79 EVPerror(EVP_R_BUFFER_TOO_SMALL); /*ckerr_ignore*/\
80 return 0; \ 80 return 0; \
81 } \ 81 } \
82 } 82 }
@@ -87,8 +87,7 @@ EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx)
87 int ret; 87 int ret;
88 88
89 if (!ctx || !ctx->pmeth || !ctx->pmeth->sign) { 89 if (!ctx || !ctx->pmeth || !ctx->pmeth->sign) {
90 EVPerr(EVP_F_EVP_PKEY_SIGN_INIT, 90 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
91 EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
92 return -2; 91 return -2;
93 } 92 }
94 ctx->operation = EVP_PKEY_OP_SIGN; 93 ctx->operation = EVP_PKEY_OP_SIGN;
@@ -105,12 +104,11 @@ EVP_PKEY_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,
105 const unsigned char *tbs, size_t tbslen) 104 const unsigned char *tbs, size_t tbslen)
106{ 105{
107 if (!ctx || !ctx->pmeth || !ctx->pmeth->sign) { 106 if (!ctx || !ctx->pmeth || !ctx->pmeth->sign) {
108 EVPerr(EVP_F_EVP_PKEY_SIGN, 107 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
109 EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
110 return -2; 108 return -2;
111 } 109 }
112 if (ctx->operation != EVP_PKEY_OP_SIGN) { 110 if (ctx->operation != EVP_PKEY_OP_SIGN) {
113 EVPerr(EVP_F_EVP_PKEY_SIGN, EVP_R_OPERATON_NOT_INITIALIZED); 111 EVPerror(EVP_R_OPERATON_NOT_INITIALIZED);
114 return -1; 112 return -1;
115 } 113 }
116 M_check_autoarg(ctx, sig, siglen, EVP_F_EVP_PKEY_SIGN) 114 M_check_autoarg(ctx, sig, siglen, EVP_F_EVP_PKEY_SIGN)
@@ -123,8 +121,7 @@ EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx)
123 int ret; 121 int ret;
124 122
125 if (!ctx || !ctx->pmeth || !ctx->pmeth->verify) { 123 if (!ctx || !ctx->pmeth || !ctx->pmeth->verify) {
126 EVPerr(EVP_F_EVP_PKEY_VERIFY_INIT, 124 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
127 EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
128 return -2; 125 return -2;
129 } 126 }
130 ctx->operation = EVP_PKEY_OP_VERIFY; 127 ctx->operation = EVP_PKEY_OP_VERIFY;
@@ -141,12 +138,11 @@ EVP_PKEY_verify(EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen,
141 const unsigned char *tbs, size_t tbslen) 138 const unsigned char *tbs, size_t tbslen)
142{ 139{
143 if (!ctx || !ctx->pmeth || !ctx->pmeth->verify) { 140 if (!ctx || !ctx->pmeth || !ctx->pmeth->verify) {
144 EVPerr(EVP_F_EVP_PKEY_VERIFY, 141 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
145 EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
146 return -2; 142 return -2;
147 } 143 }
148 if (ctx->operation != EVP_PKEY_OP_VERIFY) { 144 if (ctx->operation != EVP_PKEY_OP_VERIFY) {
149 EVPerr(EVP_F_EVP_PKEY_VERIFY, EVP_R_OPERATON_NOT_INITIALIZED); 145 EVPerror(EVP_R_OPERATON_NOT_INITIALIZED);
150 return -1; 146 return -1;
151 } 147 }
152 return ctx->pmeth->verify(ctx, sig, siglen, tbs, tbslen); 148 return ctx->pmeth->verify(ctx, sig, siglen, tbs, tbslen);
@@ -158,8 +154,7 @@ EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx)
158 int ret; 154 int ret;
159 155
160 if (!ctx || !ctx->pmeth || !ctx->pmeth->verify_recover) { 156 if (!ctx || !ctx->pmeth || !ctx->pmeth->verify_recover) {
161 EVPerr(EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT, 157 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
162 EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
163 return -2; 158 return -2;
164 } 159 }
165 ctx->operation = EVP_PKEY_OP_VERIFYRECOVER; 160 ctx->operation = EVP_PKEY_OP_VERIFYRECOVER;
@@ -176,13 +171,11 @@ EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, unsigned char *rout, size_t *routlen,
176 const unsigned char *sig, size_t siglen) 171 const unsigned char *sig, size_t siglen)
177{ 172{
178 if (!ctx || !ctx->pmeth || !ctx->pmeth->verify_recover) { 173 if (!ctx || !ctx->pmeth || !ctx->pmeth->verify_recover) {
179 EVPerr(EVP_F_EVP_PKEY_VERIFY_RECOVER, 174 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
180 EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
181 return -2; 175 return -2;
182 } 176 }
183 if (ctx->operation != EVP_PKEY_OP_VERIFYRECOVER) { 177 if (ctx->operation != EVP_PKEY_OP_VERIFYRECOVER) {
184 EVPerr(EVP_F_EVP_PKEY_VERIFY_RECOVER, 178 EVPerror(EVP_R_OPERATON_NOT_INITIALIZED);
185 EVP_R_OPERATON_NOT_INITIALIZED);
186 return -1; 179 return -1;
187 } 180 }
188 M_check_autoarg(ctx, rout, routlen, EVP_F_EVP_PKEY_VERIFY_RECOVER) 181 M_check_autoarg(ctx, rout, routlen, EVP_F_EVP_PKEY_VERIFY_RECOVER)
@@ -195,8 +188,7 @@ EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx)
195 int ret; 188 int ret;
196 189
197 if (!ctx || !ctx->pmeth || !ctx->pmeth->encrypt) { 190 if (!ctx || !ctx->pmeth || !ctx->pmeth->encrypt) {
198 EVPerr(EVP_F_EVP_PKEY_ENCRYPT_INIT, 191 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
199 EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
200 return -2; 192 return -2;
201 } 193 }
202 ctx->operation = EVP_PKEY_OP_ENCRYPT; 194 ctx->operation = EVP_PKEY_OP_ENCRYPT;
@@ -213,12 +205,11 @@ EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
213 const unsigned char *in, size_t inlen) 205 const unsigned char *in, size_t inlen)
214{ 206{
215 if (!ctx || !ctx->pmeth || !ctx->pmeth->encrypt) { 207 if (!ctx || !ctx->pmeth || !ctx->pmeth->encrypt) {
216 EVPerr(EVP_F_EVP_PKEY_ENCRYPT, 208 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
217 EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
218 return -2; 209 return -2;
219 } 210 }
220 if (ctx->operation != EVP_PKEY_OP_ENCRYPT) { 211 if (ctx->operation != EVP_PKEY_OP_ENCRYPT) {
221 EVPerr(EVP_F_EVP_PKEY_ENCRYPT, EVP_R_OPERATON_NOT_INITIALIZED); 212 EVPerror(EVP_R_OPERATON_NOT_INITIALIZED);
222 return -1; 213 return -1;
223 } 214 }
224 M_check_autoarg(ctx, out, outlen, EVP_F_EVP_PKEY_ENCRYPT) 215 M_check_autoarg(ctx, out, outlen, EVP_F_EVP_PKEY_ENCRYPT)
@@ -231,8 +222,7 @@ EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx)
231 int ret; 222 int ret;
232 223
233 if (!ctx || !ctx->pmeth || !ctx->pmeth->decrypt) { 224 if (!ctx || !ctx->pmeth || !ctx->pmeth->decrypt) {
234 EVPerr(EVP_F_EVP_PKEY_DECRYPT_INIT, 225 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
235 EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
236 return -2; 226 return -2;
237 } 227 }
238 ctx->operation = EVP_PKEY_OP_DECRYPT; 228 ctx->operation = EVP_PKEY_OP_DECRYPT;
@@ -249,12 +239,11 @@ EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
249 const unsigned char *in, size_t inlen) 239 const unsigned char *in, size_t inlen)
250{ 240{
251 if (!ctx || !ctx->pmeth || !ctx->pmeth->decrypt) { 241 if (!ctx || !ctx->pmeth || !ctx->pmeth->decrypt) {
252 EVPerr(EVP_F_EVP_PKEY_DECRYPT, 242 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
253 EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
254 return -2; 243 return -2;
255 } 244 }
256 if (ctx->operation != EVP_PKEY_OP_DECRYPT) { 245 if (ctx->operation != EVP_PKEY_OP_DECRYPT) {
257 EVPerr(EVP_F_EVP_PKEY_DECRYPT, EVP_R_OPERATON_NOT_INITIALIZED); 246 EVPerror(EVP_R_OPERATON_NOT_INITIALIZED);
258 return -1; 247 return -1;
259 } 248 }
260 M_check_autoarg(ctx, out, outlen, EVP_F_EVP_PKEY_DECRYPT) 249 M_check_autoarg(ctx, out, outlen, EVP_F_EVP_PKEY_DECRYPT)
@@ -267,8 +256,7 @@ EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx)
267 int ret; 256 int ret;
268 257
269 if (!ctx || !ctx->pmeth || !ctx->pmeth->derive) { 258 if (!ctx || !ctx->pmeth || !ctx->pmeth->derive) {
270 EVPerr(EVP_F_EVP_PKEY_DERIVE_INIT, 259 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
271 EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
272 return -2; 260 return -2;
273 } 261 }
274 ctx->operation = EVP_PKEY_OP_DERIVE; 262 ctx->operation = EVP_PKEY_OP_DERIVE;
@@ -288,15 +276,13 @@ EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer)
288 if (!ctx || !ctx->pmeth || !(ctx->pmeth->derive || 276 if (!ctx || !ctx->pmeth || !(ctx->pmeth->derive ||
289 ctx->pmeth->encrypt || ctx->pmeth->decrypt) || 277 ctx->pmeth->encrypt || ctx->pmeth->decrypt) ||
290 !ctx->pmeth->ctrl) { 278 !ctx->pmeth->ctrl) {
291 EVPerr(EVP_F_EVP_PKEY_DERIVE_SET_PEER, 279 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
292 EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
293 return -2; 280 return -2;
294 } 281 }
295 if (ctx->operation != EVP_PKEY_OP_DERIVE && 282 if (ctx->operation != EVP_PKEY_OP_DERIVE &&
296 ctx->operation != EVP_PKEY_OP_ENCRYPT && 283 ctx->operation != EVP_PKEY_OP_ENCRYPT &&
297 ctx->operation != EVP_PKEY_OP_DECRYPT) { 284 ctx->operation != EVP_PKEY_OP_DECRYPT) {
298 EVPerr(EVP_F_EVP_PKEY_DERIVE_SET_PEER, 285 EVPerror(EVP_R_OPERATON_NOT_INITIALIZED);
299 EVP_R_OPERATON_NOT_INITIALIZED);
300 return -1; 286 return -1;
301 } 287 }
302 288
@@ -309,13 +295,12 @@ EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer)
309 return 1; 295 return 1;
310 296
311 if (!ctx->pkey) { 297 if (!ctx->pkey) {
312 EVPerr(EVP_F_EVP_PKEY_DERIVE_SET_PEER, EVP_R_NO_KEY_SET); 298 EVPerror(EVP_R_NO_KEY_SET);
313 return -1; 299 return -1;
314 } 300 }
315 301
316 if (ctx->pkey->type != peer->type) { 302 if (ctx->pkey->type != peer->type) {
317 EVPerr(EVP_F_EVP_PKEY_DERIVE_SET_PEER, 303 EVPerror(EVP_R_DIFFERENT_KEY_TYPES);
318 EVP_R_DIFFERENT_KEY_TYPES);
319 return -1; 304 return -1;
320 } 305 }
321 306
@@ -326,8 +311,7 @@ EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer)
326 * -2 is OK for us here, as well as 1, so we can check for 0 only. */ 311 * -2 is OK for us here, as well as 1, so we can check for 0 only. */
327 if (!EVP_PKEY_missing_parameters(peer) && 312 if (!EVP_PKEY_missing_parameters(peer) &&
328 !EVP_PKEY_cmp_parameters(ctx->pkey, peer)) { 313 !EVP_PKEY_cmp_parameters(ctx->pkey, peer)) {
329 EVPerr(EVP_F_EVP_PKEY_DERIVE_SET_PEER, 314 EVPerror(EVP_R_DIFFERENT_PARAMETERS);
330 EVP_R_DIFFERENT_PARAMETERS);
331 return -1; 315 return -1;
332 } 316 }
333 317
@@ -349,12 +333,11 @@ int
349EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *pkeylen) 333EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *pkeylen)
350{ 334{
351 if (!ctx || !ctx->pmeth || !ctx->pmeth->derive) { 335 if (!ctx || !ctx->pmeth || !ctx->pmeth->derive) {
352 EVPerr(EVP_F_EVP_PKEY_DERIVE, 336 EVPerror(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
353 EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
354 return -2; 337 return -2;
355 } 338 }
356 if (ctx->operation != EVP_PKEY_OP_DERIVE) { 339 if (ctx->operation != EVP_PKEY_OP_DERIVE) {
357 EVPerr(EVP_F_EVP_PKEY_DERIVE, EVP_R_OPERATON_NOT_INITIALIZED); 340 EVPerror(EVP_R_OPERATON_NOT_INITIALIZED);
358 return -1; 341 return -1;
359 } 342 }
360 M_check_autoarg(ctx, key, pkeylen, EVP_F_EVP_PKEY_DERIVE) 343 M_check_autoarg(ctx, key, pkeylen, EVP_F_EVP_PKEY_DERIVE)