@@ -200,11 +200,8 @@ static int rimage_sign(EVP_PKEY *privkey, struct image *image, enum manver ver,
200
200
unsigned char * digest , unsigned char * signature )
201
201
{
202
202
EVP_PKEY_CTX * ctx = NULL ;
203
- EVP_PKEY_CTX * ctx2 = NULL ;
204
- unsigned char sig [MAN_RSA_SIGNATURE_LEN_2_5 ];
205
203
size_t siglen = MAN_RSA_SIGNATURE_LEN ;
206
204
size_t sig_in = MAN_RSA_SIGNATURE_LEN_2_5 ;
207
- size_t sig_out = MAN_RSA_SIGNATURE_LEN_2_5 ;
208
205
int ret ;
209
206
210
207
ctx = EVP_PKEY_CTX_new (privkey , NULL /* no engine */ );
@@ -234,30 +231,11 @@ static int rimage_sign(EVP_PKEY *privkey, struct image *image, enum manver ver,
234
231
goto out ;
235
232
}
236
233
237
- ret = EVP_PKEY_sign (ctx , sig , & sig_in , digest , SHA384_DIGEST_LENGTH );
234
+ ret = EVP_PKEY_sign (ctx , signature , & sig_in , digest , SHA384_DIGEST_LENGTH );
238
235
if (ret <= 0 ) {
239
236
fprintf (stderr , "error: failed to sign manifest\n" );
240
237
goto out ;
241
238
}
242
-
243
- /* encryption done with different context */
244
- ctx2 = EVP_PKEY_CTX_new (privkey , NULL /* no engine */ );
245
- if (!ctx )
246
- return - ENOMEM ;
247
-
248
- ret = EVP_PKEY_encrypt_init (ctx2 );
249
- if (ret <= 0 )
250
- goto out ;
251
-
252
- ret = EVP_PKEY_CTX_set_rsa_padding (ctx2 , RSA_NO_PADDING );
253
- if (ret <= 0 ) {
254
- fprintf (stderr , "error: failed to set 0 padding \n" );
255
- goto out ;
256
- }
257
-
258
- ret = EVP_PKEY_encrypt (ctx2 , signature , & sig_out , sig , sig_in );
259
- if (ret <= 0 )
260
- fprintf (stderr , "error: failed to encrypt signature\n" );
261
239
}
262
240
else {
263
241
ret = EVP_PKEY_CTX_set_signature_md (ctx , EVP_sha256 ());
@@ -273,8 +251,6 @@ static int rimage_sign(EVP_PKEY *privkey, struct image *image, enum manver ver,
273
251
274
252
out :
275
253
EVP_PKEY_CTX_free (ctx );
276
- if (ctx2 )
277
- EVP_PKEY_CTX_free (ctx2 );
278
254
279
255
return ret ;
280
256
}
@@ -331,9 +307,7 @@ static int rimage_verify(EVP_PKEY *privkey, struct image *image, enum manver ver
331
307
unsigned char * digest , unsigned char * signature )
332
308
{
333
309
EVP_PKEY_CTX * ctx = NULL ;
334
- EVP_PKEY_CTX * ctx2 = NULL ;
335
310
size_t siglen = MAN_RSA_SIGNATURE_LEN ;
336
- unsigned char sig [MAN_RSA_SIGNATURE_LEN_2_5 ];
337
311
size_t siglen25 = MAN_RSA_SIGNATURE_LEN_2_5 ;
338
312
char err_buf [256 ];
339
313
int ret ;
@@ -369,34 +343,15 @@ static int rimage_verify(EVP_PKEY *privkey, struct image *image, enum manver ver
369
343
if (ret <= 0 )
370
344
goto out ;
371
345
372
- ret = EVP_PKEY_CTX_set_signature_md (ctx , EVP_sha384 () );
346
+ ret = EVP_PKEY_CTX_set_rsa_pss_saltlen (ctx , 32 );
373
347
if (ret <= 0 )
374
348
goto out ;
375
349
376
- /* decrypt signature */
377
- ctx2 = EVP_PKEY_CTX_new (privkey , NULL /* no engine */ );
378
- if (!ctx )
379
- return - ENOMEM ;
380
-
381
- ret = EVP_PKEY_decrypt_init (ctx2 );
350
+ ret = EVP_PKEY_CTX_set_signature_md (ctx , EVP_sha384 ());
382
351
if (ret <= 0 )
383
352
goto out ;
384
353
385
- ret = EVP_PKEY_CTX_set_rsa_padding (ctx2 , RSA_NO_PADDING );
386
- if (ret <= 0 ) {
387
- ERR_error_string (ERR_get_error (), err_buf );
388
- fprintf (stderr , "error: set padding %s\n" , err_buf );
389
- goto out ;
390
- }
391
-
392
- ret = EVP_PKEY_decrypt (ctx2 , sig , & siglen25 , signature , siglen25 );
393
- if (ret <= 0 ) {
394
- ERR_error_string (ERR_get_error (), err_buf );
395
- fprintf (stderr , "error: decrypt %s\n" , err_buf );
396
- goto out ;
397
- }
398
-
399
- ret = EVP_PKEY_verify (ctx , sig , siglen25 , digest , SHA384_DIGEST_LENGTH );
354
+ ret = EVP_PKEY_verify (ctx , signature , siglen25 , digest , SHA384_DIGEST_LENGTH );
400
355
if (ret <= 0 ) {
401
356
ERR_error_string (ERR_get_error (), err_buf );
402
357
fprintf (stderr , "error: verify %s\n" , err_buf );
@@ -409,8 +364,6 @@ static int rimage_verify(EVP_PKEY *privkey, struct image *image, enum manver ver
409
364
410
365
out :
411
366
EVP_PKEY_CTX_free (ctx );
412
- if (ctx2 )
413
- EVP_PKEY_CTX_free (ctx2 );
414
367
415
368
return ret ;
416
369
}
0 commit comments